JavaScriptDude/python-uinput
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Libsuinput
==========
Uinput is a Linux kernel module which allows attaching user-space
device drivers into the Linux kernel. However, it is pretty low level
from the application developers perspective. This library provides a
set of helper functions for making the usage of uinput easier.
Usage example
-------------
Create and use a new uinput device with key-capabilities:
int uinput_fd;
int keys[] = {KEY_E, KEY_H, KEY_L, KEY_O};
struct uinput_user_dev user_dev;
memset(&user_dev, 0, sizeof(struct uinput_user_dev));
strcpy(user_dev.name, "libsuinput-example-keyboard");
uinput_fd = suinput_open();
suinput_set_capabilities(uinput_fd, EV_KEY, keys, 4);
suinput_create(uinput_fd, &user_dev);
suinput_write(uinput_fd, EV_KEY, KEY_H, 1); /* Press. */
suinput_syn(uinput_fd); /* "Flushes" events written so far. */
suinput_write(uinput_fd, EV_KEY, KEY_H, 0); /* Release */
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_E, 1);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_E, 0);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_L, 1);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_L, 0);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_L, 1);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_L, 0);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_O, 1);
suinput_syn(uinput_fd);
suinput_write(uinput_fd, EV_KEY, KEY_O, 0);
suinput_syn(uinput_fd);
suinput_destroy(uinput_fd);
General information
-------------------
- Author: Tuomas Jorma Juhani Räsänen <tuomas.rasanen@tjjr.fi>
- Homepage: <http://tjjr.fi/sw/libsuinput>
- License: GPLv3+ (see COPYING for details)
- Version: 0.4
- Repository: <http://github.com/tuos/libsuinput>
- Bugs: <http://github.com/tuos/libsuinput/issues>
- Tarballs: <http://github.com/tuos/libsuinput/downloads>
Build requirements
------------------
- libudev-dev
Runtime requirements
--------------------
- libudev0
- uinput-module installed
- write permissions to `/dev/uinput`