keyboard output | hex value
a
a | 0x0400
b
b | 0x0500
c
c | 0x0600
...
z
z | 0x1D00
1
1 | 0x1E00
2
2 | 0x1F00
...
9
9 | 0x2600
0
0 | 0x2700
return
return | 0x2800
esc
esc | 0x2900
backspace
backspace | 0x2A00
tab
tab | 0x2B00
space
space | 0x2C00
...
Volume Up
Volume Up | 0x8000
(XF86AudioRaiseVolume)
Volume Down
Volume Down | 0x8100
(XF86AudioLowerVolume)
...
As for the least significant byte, part of that is modifiers, applied as a mask. CtlCtl is (1 << 0)
, shiftshift is (1 << 1)
, altalt is (1 << 2)
and super/meta/windowssuper/meta/windows is (1<<3)
. So this way, shift-a shift+a (or capitalcapital A) is 0x0402
. Ctl-Alt-aCtl+Alt+a would be 0x0405
. All four modifiers give you 0x0F
for the least sig. byte. Playing around with the high nybble of the LSB, say with values like 0x0440
gives me more keys, like XF86Mute. So it seems the address space is massive.
Output | hex value
Mouse Scroll up
aMouse Scroll up | 0x0143
Mouse Scroll down
Mouse Scroll down | 0xFF43
WWW Search
WWW Search | 0x2122
WWW Back
WWW Back | 0x2422
WWW Forward
WWW Forward | 0x2522
Email
Email | 0x8A21
Internet Expl Back
Internet Expl Back | 0x8842
(presents as mouse button 8 in X11)
IE Forward
IE Forward | 0x9042
(mouse button 9)
Calculator
Calculator | 0x9221
My Computer
My Computer | 0x9421
Mute
Mute | 0xE220
Volume Up
Volume Up | 0xE920
Volume Down
Volume Down | 0xEA20
output | hex
Left ClickLeft Click | 0x8142
Right ClickRight Click | 0x8242
Wheel ClickWheel Click | 0x8442
action | hex Cycle DPI setting
Cycle DPI setting | 0x034A
DPI increaseDPI increase | 0x014A
DPI decreaseDPI decrease | 0x004A
Cycle mouse profileCycle mouse profile | 0x074A
Profile UpProfile Up | 0x054A
Profile DownProfile Down | 0x044A
I can't find any encoding schemes or keyboard mappings that might match this. Alphabetical keys? And If you notice, volume upvolume up is both 0x8000
and 0xE920
while vol downvol down is both 0x8100
and 0xEA20
. So somewhat of a light at the end of the tunnel that there is a consistent distance between those.