diff --git a/examples/list.rs b/examples/list.rs new file mode 100644 index 0000000..ca7634b --- /dev/null +++ b/examples/list.rs @@ -0,0 +1,5 @@ +fn main() { + for device in ctap::get_devices().unwrap() { + println!("{device:?}"); + } +} diff --git a/src/hid_linux.rs b/src/hid_linux.rs index 0612cbd..81bca52 100644 --- a/src/hid_linux.rs +++ b/src/hid_linux.rs @@ -58,10 +58,12 @@ fn path_to_device(path: &PathBuf) -> io::Result { } if key & REPORT_DESCRIPTOR_KEY_MASK == USAGE { - if size != 2 { - usage = u16::from(rd[pos + 1]) - } else { - usage = LittleEndian::read_u16(&rd[(pos + 1)..(pos + 1 + (size as usize))]); + if usage == 0 { + if size != 2 { + usage = u16::from(rd[pos + 1]) + } else { + usage = LittleEndian::read_u16(&rd[(pos + 1)..(pos + 1 + (size as usize))]); + } } } diff --git a/src/lib.rs b/src/lib.rs index 7be3529..854712e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -77,7 +77,7 @@ pub fn get_devices() -> FidoResult> { hid::enumerate() .context(FidoErrorKind::Io) .map(|devices| { - devices.filter(|dev| dev.usage_page == 0xf1d0 && dev.usage == 0x21) + devices.filter(|dev| dev.usage_page == 0xf1d0 && dev.usage == 0x01) }) .map_err(From::from) }