Joined: 01 Dec 2007
|Posted: Wed Apr 23, 2008 6:25 pm Post subject: Making X cooperate with fsc-btns/fscd
I’m using an FSC Lifebook T4215 machine, which is a convertible notebook, i. e. the display can be rotated to make it a tablet. Rotation functionality for X and several keys along the screen are supported by fscd, which comprises a userspace daemon (fscd) and a kernel module (fsc-btns). The module represents the hardware as a keyboard via the kernel input infrastructure and provides /dev/input/input8 and /dev/input/event6 (numbers vary). This is what I see in /proc/bus/input/devices:
I: Bus=0019 Vendor=1734 Product=0001 Version=0101
N: Name="fsc tablet buttons"
H: Handlers=kbd event6
B: KEY=10000 0 0 0 10000300000c00 6000002301040 0 100000010000000
So far, so good. All fscd functionality is dependent on X, so I’ve put it in my .xinitrc. It is supposed to open the module’s /dev/input/event... file, read keystrokes (or rotation events) and do things like rotate the display and the tablet pointer or pass scrolling events when I press the relevant keys. However, fscd never receives any input from the device; its select() call times out even if I press buttons. evtest never reports any input, either.
On the other hand, I see the button events in xev and /var/log/Xorg.0.log contains
(**) fsc tablet buttons: always reports core events
(II) XINPUT: Adding extended input device "fsc tablet buttons" (type: KEYBOARD)
evdev: leds are 0x0 for device 8
(II) fsc tablet buttons: Init
(II) fsc tablet buttons: On
When X is not running, evtest correctly reports button events from the device.
My hypothesis is that X opens the device and eats all input before other applications can get to it. I see no need for X to read from this device, so I’d like to tell it not to touch it. Can somebody please tell me how to do that?
Miscellaneous data: ~amd64 system, 2.6.24-hardened kernel, xorg-server-126.96.36.199-r3