AllowEmptyInput and HAL

Peter Hutterer peter.hutterer at who-t.net
Wed May 6 15:45:45 PDT 2009


On Wed, May 06, 2009 at 10:32:53PM +0100, Phil Endecott wrote:
> (gdb) where
> #0  XkbHandleActions (dev=0x82bf838, kbd=0x82bf838, event=0x83097a8) at xkbActions.c:1183
> #1  0x08118fc1 in XkbProcessKeyboardEvent (event=0x83097a8, 
> keybd=0x82bf838) at xkbPrKeyEv.c:159
> #2  0x08106289 in AccessXFilterPressEvent (event=0x83097a8, 
> keybd=0x82bf838) at xkbAccessX.c:561
> #3  0x08119373 in ProcessKeyboardEvent (ev=0x83097a8, keybd=0x82bf838) 
> at xkbPrKeyEv.c:195
> #4  0x0809b08d in mieqProcessDeviceEvent (dev=0x82bf838, 
> event=0x83097a8, screen=0x8201650) at mieq.c:367
> #5  0x0809b22f in mieqProcessInputEvents () at mieq.c:427
> #6  0x080be0c7 in ProcessInputEvents () at xf86Events.c:172
> #7  0x080960cc in Dispatch () at dispatch.c:358
> #8  0x0806394a in main (argc=5, argv=0xbfb0d634, envp=0x82c1ed0) at main.c:283
> 
> (gdb) print event.detail
> $24 = {button = 38, key = 38}
> (gdb) print xkbi->desc->server->key_acts[38]
> $25 = 56
> (gdb) print xkbi->desc->server->acts[56]
> $28 = {any = {type = 3 '\003', data = "\000\001\000\000\001\000"}, mods 
> = {type = 3 '\003', flags = 0 '\0',
>      mask = 1 '\001', real_mods = 0 '\0', vmods = 256}, group = {type = 
> 3 '\003', flags = 0 '\0',
>      group_XXX = 1 '\001'}, iso = {type = 3 '\003', flags = 0 '\0', mask 
> = 1 '\001', real_mods = 0 '\0',
>      group_XXX = 0 '\0', affect = 1 '\001', vmods = 137109200}, ptr = 
> {type = 3 '\003', flags = 0 '\0', x = 256,
>      y = 137109200}, btn = {type = 3 '\003', flags = 0 '\0', count = 1 
> '\001', button = 0 '\0'}, dflt = {
>      type = 3 '\003', flags = 0 '\0', affect = 1 '\001', valueXXX = 0 
> '\0'}, screen = {type = 3 '\003',
>      flags = 0 '\0', screenXXX = 1 '\001'}, ctrls = {type = 3 '\003', 
> flags = 0 '\0', ctrls = 256}, msg = {
>      type = 3 '\003', flags = 0 '\0', message = "\001\000\000\001\000"}, 
> redirect = {type = 3 '\003',
>      new_key = 0 '\0', mods_mask = 1 '\001', mods = 0 '\0', vmods_mask = 
> 256, vmods = 137109200}, devbtn = {
>      type = 3 '\003', flags = 0 '\0', count = 1 '\001', button = 0 '\0', 
> device = 0 '\0'}, devval = {
>      type = 3 '\003', device = 0 '\0', v1_what = 1 '\001', v1_ndx = 0 
> '\0', v1_value = 0 '\0',
>      v2_what = 1 '\001', v2_ndx = 0 '\0', v2_value = 0 '\0'}, type = 3 '\003'}
> 
> This is when I press 'a'.  Note that mods.mask is 1; it should surely 
> be 0.

actions are things to be triggered when the matching key combo has been
pressed. the action you're looking at is to be triggered when shift is
down, but it does not describe the current state of the keyboard.

the current state is in dev->key->xkbInfo->desc->state, and the current
modifiers are a binary OR of the base/latched/locked_mods in that state
field.

> In a HAL environment with no xorg.conf, how does X know what keymap to use?

built-in defaults, "us", "pc105", "base".
 
Cheers,
  Peter



More information about the xorg mailing list