using uinput connect X to proprietary (TCP based) keyboard endpoint
Arne.Adams at t-online.de
Arne.Adams at t-online.de
Wed Oct 15 19:48:37 PDT 2014
Hi,
I am trying to integrate a proprietary keyboard, sending linux scancodes via TCP.
My idea is to use uinput to forward the received keycodes to locally running applications (including the x server).
In my xorg.conf I have the following section:
Section "InputDevice"
# to enable user defined virtual keyboard
Identifier "Keyboard1"
Option "Device" "/dev/input/event14"
Driver "evdev"
EndSection
where event14 is the event queue associated to the uinput simulated "device".
I do see the scancodes sent from my device with both commands:
- xinput test-xi2 --root
- showkey -s
However I am not able to intercept the keyboard events in this simple X application
int main(int argc, char** argv)
{
Display* display = XOpenDisplay(NULL);
Window window = XCreateSimpleWindow(display, RootWindow(display, 0), 1, 1, 500, 500,
0, BlackPixel(display, 0), BlackPixel(display, 0));
XSelectInput(display, window, KeyPressMask | KeyReleaseMask);
XMapWindow(display, window);
XEvent report;
while (1)
{
XNextEvent(display, &report);
switch (report.type)
{
case KeyRelease:
printf("got a KeyRelease event: %d, %d\n", report.xkey.keycode, report.xkey.state);
break;
case KeyPress:
printf("got a KeyPress event: %d, %d\n", report.xkey.keycode, report.xkey.state);
break;
default:
printf("got a %d event\n", report.type);
break;
}
}
XFlush(display);
sleep(5);
return (EXIT_SUCCESS);
}
More information about the xorg
mailing list