Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Where are these key codes and state flags coming from? #190

Open
akriegman opened this issue Jul 11, 2024 · 2 comments
Open

Where are these key codes and state flags coming from? #190

akriegman opened this issue Jul 11, 2024 · 2 comments

Comments

@akriegman
Copy link

So the keycodes don't agree with the virtual keycodes listed here https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes. Are the Interception keycodes documented or #defined anywhere? Similarly the state field contains some flags. Clearly key_stroke.state | 0x1 is down vs up, but are the other flags documented anywhere?

@akriegman
Copy link
Author

@akriegman
Copy link
Author

akriegman commented Jul 11, 2024

In case it would be useful for anyone, here's some defines for the scan codes, using the same names as in the Linux kernel headers, generated by ChatGPT. On my keyboard these are right up until the key_stroke.state | 0x2 flag is raised.

Edit: I'm an idiot, these are also the same as the values used by the linux kernel. https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h

#define KEY_ESC            0x01
#define KEY_1              0x02
#define KEY_2              0x03
#define KEY_3              0x04
#define KEY_4              0x05
#define KEY_5              0x06
#define KEY_6              0x07
#define KEY_7              0x08
#define KEY_8              0x09
#define KEY_9              0x0A
#define KEY_0              0x0B
#define KEY_MINUS          0x0C
#define KEY_EQUAL          0x0D
#define KEY_BACKSPACE      0x0E
#define KEY_TAB            0x0F
#define KEY_Q              0x10
#define KEY_W              0x11
#define KEY_E              0x12
#define KEY_R              0x13
#define KEY_T              0x14
#define KEY_Y              0x15
#define KEY_U              0x16
#define KEY_I              0x17
#define KEY_O              0x18
#define KEY_P              0x19
#define KEY_LEFTBRACE      0x1A
#define KEY_RIGHTBRACE     0x1B
#define KEY_ENTER          0x1C
#define KEY_LEFTCTRL       0x1D
#define KEY_A              0x1E
#define KEY_S              0x1F
#define KEY_D              0x20
#define KEY_F              0x21
#define KEY_G              0x22
#define KEY_H              0x23
#define KEY_J              0x24
#define KEY_K              0x25
#define KEY_L              0x26
#define KEY_SEMICOLON      0x27
#define KEY_APOSTROPHE     0x28
#define KEY_GRAVE          0x29
#define KEY_LEFTSHIFT      0x2A
#define KEY_BACKSLASH      0x2B
#define KEY_Z              0x2C
#define KEY_X              0x2D
#define KEY_C              0x2E
#define KEY_V              0x2F
#define KEY_B              0x30
#define KEY_N              0x31
#define KEY_M              0x32
#define KEY_COMMA          0x33
#define KEY_DOT            0x34
#define KEY_SLASH          0x35
#define KEY_RIGHTSHIFT     0x36
#define KEY_KPASTERISK     0x37
#define KEY_LEFTALT        0x38
#define KEY_SPACE          0x39
#define KEY_CAPSLOCK       0x3A
#define KEY_F1             0x3B
#define KEY_F2             0x3C
#define KEY_F3             0x3D
#define KEY_F4             0x3E
#define KEY_F5             0x3F
#define KEY_F6             0x40
#define KEY_F7             0x41
#define KEY_F8             0x42
#define KEY_F9             0x43
#define KEY_F10            0x44
#define KEY_NUMLOCK        0x45
#define KEY_SCROLLLOCK     0x46
#define KEY_KP7            0x47
#define KEY_KP8            0x48
#define KEY_KP9            0x49
#define KEY_KPMINUS        0x4A
#define KEY_KP4            0x4B
#define KEY_KP5            0x4C
#define KEY_KP6            0x4D
#define KEY_KPPLUS         0x4E
#define KEY_KP1            0x4F
#define KEY_KP2            0x50
#define KEY_KP3            0x51
#define KEY_KP0            0x52
#define KEY_KPDOT          0x53
#define KEY_ZENKAKUHANKAKU 0x56
#define KEY_102ND          0x56
#define KEY_F11            0x57
#define KEY_F12            0x58
#define KEY_RO             0x73
#define KEY_KATAKANA       0x70
#define KEY_HIRAGANA       0x77
#define KEY_HENKAN         0x79
#define KEY_KATAKANAHIRAGANA 0x78
#define KEY_MUHENKAN       0x7B
#define KEY_KPJPCOMMA      0x7C
#define KEY_KPENTER        0xE0
#define KEY_RIGHTCTRL      0xE4
#define KEY_KPSLASH        0xE5
#define KEY_SYSRQ          0xE6
#define KEY_RIGHTALT       0xE7
#define KEY_LINEFEED       0xE8
#define KEY_HOME           0xE9
#define KEY_UP             0xEA
#define KEY_PAGEUP         0xEB
#define KEY_LEFT           0xEC
#define KEY_RIGHT          0xED
#define KEY_END            0xEE
#define KEY_DOWN           0xEF
#define KEY_PAGEDOWN       0xF0
#define KEY_INSERT         0xF1
#define KEY_DELETE         0xF2
#define KEY_MACRO          0xF3
#define KEY_MUTE           0xF4
#define KEY_VOLUMEDOWN     0xF5
#define KEY_VOLUMEUP       0xF6
#define KEY_POWER          0xF7
#define KEY_KPEQUAL        0xF8
#define KEY_KPPLUSMINUS    0xF9
#define KEY_PAUSE          0xF9
#define KEY_SCALE          0xFA
#define KEY_KPCOMMA        0xFB
#define KEY_HANGEUL        0xFC
#define KEY_HANJA          0xFD
#define KEY_YEN            0xFE
#define KEY_LEFTMETA       0xFF
#define KEY_RIGHTMETA      0x100
#define KEY_COMPOSE        0x101

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant