Recent input changes

Ben Gamari bgamari at gmail.com
Sat Jan 24 15:25:08 PST 2009


As it turns out, you're absolutely right. After rebuilding xserver
with xnest disabled, evdev built fine. However, it looks like keyboard
input severely regressed with these changes.

For some reason modifiers are behaving very strangely. Ctrl-R and
Ctrl-L for some reason functions as Caps Lock whereas Alt-L, Alt-R,
and the Super keys do nothing at all. Despite this, xev seems to be
receiving the correct keysyms:

==== After Pressing Ctrl-L ===
KeyPress event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1155811, (536,187), root:(539,258),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1155959, (560,213), root:(563,284),
    state 0x3, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

=== After Pressing Alt-L ===
KeyPress event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1208780, (214,389), root:(217,460),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1208896, (214,389), root:(217,460),
    state 0x3, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

=== After Pressing Windows-L ===
KeyPress event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1208225, (214,389), root:(217,460),
    state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1000001,
    root 0x98, subw 0x0, time 1208358, (214,389), root:(217,460),
    state 0x5, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False



Besides the obvious issues, if one reads the above xev dump carefully,
one will notice that the KeyPress event is reported as the Alt_L
keysym whereas the KeyRelease event is reported as Meta_L. This struck
me as a little strange. I can submit a bug or bisect if this will
help. Thanks,

- Ben


On Sat, Jan 24, 2009 at 4:15 PM, Dan Nicholson <dbn.lists at gmail.com> wrote:
> On Sat, Jan 24, 2009 at 12:47 PM, Ben Gamari <bgamari at gmail.com> wrote:
>> Hey all,
>>
>> Recent xserver master has been failing to build. In particular, it looks
>> like someone might have forgotten to commit a header file,
>>
>>> Keyboard.c: In function 'xnestKeyboardProc':
>>> Keyboard.c:177: warning: passing argument 1 of 'XkbSetRulesDflts' from incompatible pointer type
>>> Keyboard.c:177: error: too many arguments to function 'XkbSetRulesDflts'
>>> Keyboard.c:178: warning: implicit declaration of function 'XkbInitKeyboardDeviceStruct'
>>> Keyboard.c:178: warning: nested extern declaration of 'XkbInitKeyboardDeviceStruct'
>>> Keyboard.c:206: warning: passing argument 1 of 'InitKeyboardDeviceStruct' from incompatible pointer type
>>> Keyboard.c:206: warning: passing argument 2 of 'InitKeyboardDeviceStruct' from incompatible pointer type
>>> Keyboard.c:122: warning: unused variable 'j'
>>> Keyboard.c:117: warning: unused variable 'modifier_keymap'
>>> Keyboard.c: In function 'xnestUpdateModifierState':
>>> Keyboard.c:227: error: 'struct _KeyClassRec' has no member named 'state'
>>> Keyboard.c:235: error: 'struct _KeyClassRec' has no member named 'state'
>>> Keyboard.c:256: error: 'struct _KeyClassRec' has no member named 'state'
>
> Workaround with --disable-xnest for now. Daniel just tore a ton of
> crap out of XKB, and there are some things in bad shape.
>
>> Moreover, it seems that evdev is also having issues, being unbuildable
>> since Peter Hutterer's commit 1906e4d5 based on the patch he sent out on
>> 19 Jan 2009 ("[PATCH] Xi: define a default range of axis labels").
>> Again, the patch he sent out includes the necessary changes to the
>> include files so it seems that they just never made it into the commit:
>>
>>> evdev.c: In function 'EvdevInitProperty':
>>> evdev.c:1745: error: 'AXIS_LABEL_PROP' undeclared (first use in this function)
>>> evdev.c:1745: error: (Each undeclared identifier is reported only once
>>> evdev.c:1745: error: for each function it appears in.)
>>> evdev.c:1751: error: 'AXIS_LABEL_PROP_REL_X' undeclared (first use in this function)
>>> evdev.c:1756: error: 'AXIS_LABEL_PROP_ABS_X' undeclared (first use in this function)
>>> evdev.c:1763: error: 'AXIS_LABEL_PROP_REL_Y' undeclared (first use in this function)
>>> evdev.c:1768: error: 'AXIS_LABEL_PROP_ABS_Y' undeclared (first use in this function)
>>> evdev.c:1775: error: 'AXIS_LABEL_PROP_ABS_PRESSURE' undeclared (first use in this function)
>>
>> Just figured I'd make sure this was known. Thanks,
>
> Peter pushed his patch to get those defined in xserver-properties.h.
> Should be fixed on xserver HEAD.
>
> --
> Dan
>



More information about the xorg mailing list