KarsMulder / evsieve

A utility for mapping events from Linux event devices.
GNU General Public License v2.0
199 stars 11 forks source link

Key repeat request to kernel #36

Closed mikethebos closed 11 months ago

mikethebos commented 11 months ago

I would like to know how the repeat=enable feature is implemented (https://github.com/gvalkov/python-evdev/issues/192).

I see a reference to EVIOCGREP in your libevdev binding, but that is a read syscall.

(I hope to implement this feature in my own application soon using python-evdev. Thanks! If you want my code to be licensed in a specific manner due to this inspiration, let me know.)

KarsMulder commented 11 months ago

The kernel will automatically generate repeat event when the the capabilities for the EV_REP-type events are enabled on the virtual output device. In C terms, it would require the following libevdev calls:

libevdev_enable_event_type(dev, EV_REP);
libevdev_enable_event_code(dev, EV_REP, REP_DELAY, &250);
libevdev_enable_event_code(dev, EV_REP, REP_PERIOD, &33);

Based on my personal tests:

(I hope to implement this feature in my own application soon using python-evdev. Thanks! If you want my code to be licensed in a specific manner due to this inspiration, let me know.)

I do not think that the above info passes the threshold for being copyrightable; you're free to use it however you want to.

mikethebos commented 11 months ago

Thanks for your help!