There are typically 3 events; these are the first two:
(gdb) p *keybd $3 = {public = {devicePrivate = 0x293eda0, processInputProc = 0x57b60f <ProcessKeyboardEvent>, realInputProc = 0x57b60f <ProcessKeyboardEvent>, enqueueInputProc = 0x43f8a8 <EnqueueEvent>, on = 1}, next = 0x2947720, startup = 1, deviceProc = 0x7f72a978eaf0 <EvdevProc>, inited = 1, enabled = 1, coreEvents = 4, deviceGrab = {grabTime = {months = 0, milliseconds = 14844647}, fromPassiveGrab = 0, implicitGrab = 0, activeGrab = {next = 0x0, resource = 0, device = 0x0, window = 0x0, ownerEvents = 0, keyboardMode = 0, pointerMode = 0, grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0, pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0}, confineTo = 0x0, cursor = 0x0, eventMask = 0, deviceMask = 0, xi2mask = { "\000\000" <repeats 42 times>}}, grab = 0x0, activatingKey = 0 '\000', ActivateGrab = 0x440887 <ActivateKeyboardGrab>, DeactivateGrab = 0x440a46 <DeactivateKeyboardGrab>, sync = {frozen = 0, state = 0, other = 0x0, event = 0x0}}, type = 3, xinput_type = 74, name = 0x293fd90 "AT Translated Set 2 keyboard", id = 7, key = 0x2940a70, valuator = 0x0, button = 0x0, focus = 0x2945c70, proximity = 0x0, absolute = 0x0, kbdfeed = 0x2940af0, ptrfeed = 0x0, intfeed = 0x0, stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x0, config_info = 0x2945d70 "hal:/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input", devPrivates = 0x2940640, nPrivates = 0, unwrapProc = 0x577004 <xkbUnwrapProc>, spriteInfo = 0x2940618, u = { master = 0x2615ab0, lastSlave = 0x2615ab0}, last = {valuators = { ---Type <return> to continue, or q <return> to quit--- 0 <repeats 36 times>}, remainder = {0 <repeats 36 times>}, numValuators = 0, slave = 0x0}, properties = {properties = 0x2945ce0, handlers = 0x2945d10}} (gdb) p *event $4 = {header = 255 '\377', type = ET_KeyPress, length = 408, time = 18332074, deviceid = 7, sourceid = 7, detail = {button = 43, key = 43}, root_x = 0, root_x_frac = 0, root_y = 0, root_y_frac = 0, buttons = '\000' <repeats 31 times>, valuators = {mask = "\000\000\000\000", mode = "\000\000\000\000", data = {0 <repeats 36 times>}, data_frac = { 0 <repeats 36 times>}}, mods = {base = 0, latched = 0, locked = 0, effective = 0}, group = {base = 0 '\000', latched = 0 '\000', locked = 0 '\000', effective = 0 '\000'}, root = 0, corestate = 0, key_repeat = 0}
(gdb) p *keybd $5 = {public = {devicePrivate = 0x293eda0, processInputProc = 0x57b60f <ProcessKeyboardEvent>, realInputProc = 0x57b60f <ProcessKeyboardEvent>, enqueueInputProc = 0x43f8a8 <EnqueueEvent>, on = 0}, next = 0x2617560, startup = 1, deviceProc = 0x42757b <CoreKeyboardProc>, inited = 1, enabled = 1, coreEvents = 1, deviceGrab = {grabTime = {months = 0, milliseconds = 18283658}, fromPassiveGrab = 0, implicitGrab = 0, activeGrab = {next = 0x0, resource = 12582912, device = 0x2615ab0, window = 0x296b9f0, ownerEvents = 0, keyboardMode = 1, pointerMode = 1, grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0, pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0}, confineTo = 0x0, cursor = 0x0, eventMask = 3, deviceMask = 0, xi2mask = { "\000\000" <repeats 42 times>}}, grab = 0x0, activatingKey = 23 '\027', ActivateGrab = 0x440887 <ActivateKeyboardGrab>, DeactivateGrab = 0x440a46 <DeactivateKeyboardGrab>, sync = {frozen = 0, state = 0, other = 0x0, event = 0x33463d0}}, type = 2, xinput_type = 0, name = 0x2615ed0 "Virtual core keyboard", id = 3, key = 0x264ad00, valuator = 0x0, button = 0x0, focus = 0x2656d50, proximity = 0x0, absolute = 0x0, kbdfeed = 0x264ad80, ptrfeed = 0x0, intfeed = 0x0, stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x31c60b0, config_info = 0x0, devPrivates = 0x2615f10, nPrivates = 0, unwrapProc = 0x577004 <xkbUnwrapProc>, spriteInfo = 0x2615e28, u = { master = 0x29402a0, lastSlave = 0x29402a0}, last = {valuators = { 0 <repeats 36 times>}, remainder = {0 <repeats 36 times>}, ---Type <return> to continue, or q <return> to quit--- numValuators = 0, slave = 0x29402a0}, properties = { properties = 0x2615e50, handlers = 0x2615ea0}} (gdb) p *event $6 = {header = 255 '\377', type = ET_KeyPress, length = 408, time = 18332074, deviceid = 3, sourceid = 7, detail = {button = 43, key = 43}, root_x = 0, root_x_frac = 0, root_y = 0, root_y_frac = 0, buttons = '\000' <repeats 31 times>, valuators = {mask = "\000\000\000\000", mode = "\000\000\000\000", data = {0 <repeats 36 times>}, data_frac = { 0 <repeats 36 times>}}, mods = {base = 0, latched = 0, locked = 0, effective = 0}, group = {base = 0 '\000', latched = 0 '\000', locked = 0 '\000', effective = 0 '\000'}, root = 0, corestate = 0, key_repeat = 0}
There are typically 3 events; these are the first two:
(gdb) p *keybd tProc = 0x57b60f <ProcessKeyboar dEvent> , dEvent> , tProc = 0x43f8a8 <EnqueueEvent>, on = 1}, next = 0x2947720, rdGrab> , oardGrab> , sync = {frozen = 0, freedesktop/ Hal/devices/ platform_ i8042_i8042_ KBD_port_ logicaldev_ input", devPrivates = 0x2940640, nPrivates = 0,
$3 = {public = {devicePrivate = 0x293eda0,
processInpu
realInputProc = 0x57b60f <ProcessKeyboar
enqueueInpu
startup = 1, deviceProc = 0x7f72a978eaf0 <EvdevProc>, inited = 1,
enabled = 1, coreEvents = 4, deviceGrab = {grabTime = {months = 0,
milliseconds = 14844647}, fromPassiveGrab = 0, implicitGrab = 0,
activeGrab = {next = 0x0, resource = 0, device = 0x0, window = 0x0,
ownerEvents = 0, keyboardMode = 0, pointerMode = 0,
grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0,
pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0},
confineTo = 0x0, cursor = 0x0, eventMask = 0, deviceMask = 0, xi2mask = {
"\000\000" <repeats 42 times>}}, grab = 0x0, activatingKey = 0 '\000',
ActivateGrab = 0x440887 <ActivateKeyboa
DeactivateGrab = 0x440a46 <DeactivateKeyb
state = 0, other = 0x0, event = 0x0}}, type = 3, xinput_type = 74,
name = 0x293fd90 "AT Translated Set 2 keyboard", id = 7, key = 0x2940a70,
valuator = 0x0, button = 0x0, focus = 0x2945c70, proximity = 0x0,
absolute = 0x0, kbdfeed = 0x2940af0, ptrfeed = 0x0, intfeed = 0x0,
stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x0,
config_info = 0x2945d70 "hal:/org/
unwrapProc = 0x577004 <xkbUnwrapProc>, spriteInfo = 0x2940618, u = {
master = 0x2615ab0, lastSlave = 0x2615ab0}, last = {valuators = {
---Type <return> to continue, or q <return> to quit---
0 <repeats 36 times>}, remainder = {0 <repeats 36 times>},
numValuators = 0, slave = 0x0}, properties = {properties = 0x2945ce0,
handlers = 0x2945d10}}
(gdb) p *event
$4 = {header = 255 '\377', type = ET_KeyPress, length = 408, time = 18332074,
deviceid = 7, sourceid = 7, detail = {button = 43, key = 43}, root_x = 0,
root_x_frac = 0, root_y = 0, root_y_frac = 0,
buttons = '\000' <repeats 31 times>, valuators = {mask = "\000\000\000\000",
mode = "\000\000\000\000", data = {0 <repeats 36 times>}, data_frac = {
0 <repeats 36 times>}}, mods = {base = 0, latched = 0, locked = 0,
effective = 0}, group = {base = 0 '\000', latched = 0 '\000',
locked = 0 '\000', effective = 0 '\000'}, root = 0, corestate = 0,
key_repeat = 0}
(gdb) p *keybd tProc = 0x57b60f <ProcessKeyboar dEvent> , dEvent> , tProc = 0x43f8a8 <EnqueueEvent>, on = 0}, next = 0x2617560, rdGrab> , oardGrab> , sync = {frozen = 0,
$5 = {public = {devicePrivate = 0x293eda0,
processInpu
realInputProc = 0x57b60f <ProcessKeyboar
enqueueInpu
startup = 1, deviceProc = 0x42757b <CoreKeyboardProc>, inited = 1,
enabled = 1, coreEvents = 1, deviceGrab = {grabTime = {months = 0,
milliseconds = 18283658}, fromPassiveGrab = 0, implicitGrab = 0,
activeGrab = {next = 0x0, resource = 12582912, device = 0x2615ab0,
window = 0x296b9f0, ownerEvents = 0, keyboardMode = 1, pointerMode = 1,
grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0,
pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0},
confineTo = 0x0, cursor = 0x0, eventMask = 3, deviceMask = 0, xi2mask = {
"\000\000" <repeats 42 times>}}, grab = 0x0,
activatingKey = 23 '\027', ActivateGrab = 0x440887 <ActivateKeyboa
DeactivateGrab = 0x440a46 <DeactivateKeyb
state = 0, other = 0x0, event = 0x33463d0}}, type = 2, xinput_type = 0,
name = 0x2615ed0 "Virtual core keyboard", id = 3, key = 0x264ad00,
valuator = 0x0, button = 0x0, focus = 0x2656d50, proximity = 0x0,
absolute = 0x0, kbdfeed = 0x264ad80, ptrfeed = 0x0, intfeed = 0x0,
stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x31c60b0,
config_info = 0x0, devPrivates = 0x2615f10, nPrivates = 0,
unwrapProc = 0x577004 <xkbUnwrapProc>, spriteInfo = 0x2615e28, u = {
master = 0x29402a0, lastSlave = 0x29402a0}, last = {valuators = {
0 <repeats 36 times>}, remainder = {0 <repeats 36 times>},
---Type <return> to continue, or q <return> to quit---
numValuators = 0, slave = 0x29402a0}, properties = {
properties = 0x2615e50, handlers = 0x2615ea0}}
(gdb) p *event
$6 = {header = 255 '\377', type = ET_KeyPress, length = 408, time = 18332074,
deviceid = 3, sourceid = 7, detail = {button = 43, key = 43}, root_x = 0,
root_x_frac = 0, root_y = 0, root_y_frac = 0,
buttons = '\000' <repeats 31 times>, valuators = {mask = "\000\000\000\000",
mode = "\000\000\000\000", data = {0 <repeats 36 times>}, data_frac = {
0 <repeats 36 times>}}, mods = {base = 0, latched = 0, locked = 0,
effective = 0}, group = {base = 0 '\000', latched = 0 '\000',
locked = 0 '\000', effective = 0 '\000'}, root = 0, corestate = 0,
key_repeat = 0}