开发者

Linux daemon to change user input stream?

I'd like to write a program to remap user input for stuff like changing keyboard layouts, but also more complex things like making a shorthand program (i.e. "t qk fx jmps ovr t lzy dg" outputs as "the quick fox jumps over the lazy dog"). I'd prefer to do this at the X level or below.

Can I make some kind of virtual keyboard based on actual user output? Ideally I'd like some kind of simple interface (i.e. standard input to the program is a series of real user input events, output is the user input events for the virtual keyboard), but if that's not possible I'd still be interested in pointers 开发者_Python百科to how this can be done. I don't know anything about Linux hardware devices, low-level X stuff, or the kernel right now; in fact I'm fairly new to Linux. Links to "Basics" tutorials would not be unappreciated.


You can use the Linux event subsystem to do this:

  • Use the Linux input event interface (evdev) to receive events from any input device. See also the input.h header file for more information on the actual API.

  • Use the EVIOCGRAB ioctl to grab the keyboard device, so that no other userspace applications but your daemon will receive any input events.

  • Use the uinput interface to create a new virtual keyboard with any features that you need. See also the uinput.h header file for more information on the uinput API and this for a readable walkthrough.

There are a few applications that could serve as an example, such as EvRouter, ESE Key Daemon and my own evmapd.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜