using uinput connect X to proprietary (TCP based) keyboard endpoint
Peter Hutterer
peter.hutterer at who-t.net
Thu Oct 16 08:12:17 PDT 2014
On Thu, Oct 16, 2014 at 04:48:37AM +0200, Arne.Adams at 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.
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);
> }
>
>
>
>
>
>
>
>
> _______________________________________________
> xorg at 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
>
More information about the xorg
mailing list