diff --git a/src/raw_stream.rs b/src/raw_stream.rs index a3c5ae5..356c145 100644 --- a/src/raw_stream.rs +++ b/src/raw_stream.rs @@ -139,9 +139,16 @@ impl RawDevice { let props = { let mut props = AttributeSet::::new(); - unsafe { sys::eviocgprop(fd.as_raw_fd(), props.as_mut_raw_slice())? }; - props - }; // FIXME: handle old kernel + + match unsafe { sys::eviocgprop(fd.as_raw_fd(), props.as_mut_raw_slice()) } { + Ok(_) => props, + + // Kernel 2.6.x does not implement this ioctl, return empty props + Err(nix::errno::Errno::EINVAL) => props, + + Err(e) => return Err(e.into()), + } + }; let supported_keys = if ty.contains(EventType::KEY) { let mut keys = AttributeSet::::new();