On 10/16/2014 08:12 AM, Peter Hutterer wrote:
On Thu, Oct 16, 2014 at 04:48:37AM +0200, arne.ad...@t-online.de wrote:
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);
add a XFlush() here, that should do the trick.
XNextEvent implicitly flushes.
Cheers,
Peter
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);
}
--
Aaron
_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s