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