Skip to content

Instantly share code, notes, and snippets.

@yuji314159
Last active April 29, 2018 12:28
Show Gist options
  • Save yuji314159/bdbf821ec2351ac07accd9ac39c34405 to your computer and use it in GitHub Desktop.
Save yuji314159/bdbf821ec2351ac07accd9ac39c34405 to your computer and use it in GitHub Desktop.
#define __WAIT 0xf1
#define __EXT 0xe0
#define __MAKE(code) code
#define __BREAK(code) 0xf0, code
#define __TYPE(code) __MAKE(code), __BREAK(code), __WAIT
#define __TYPE_EXT(code) __EXT, __MAKE(code), __EXT, __BREAK(code), __WAIT
#define __SCANCODE_SHIFT 0x12
#define __SCANCODE_CTRL 0x14
#define __SCANCODE_ALT 0x11
#define __SCANCODE_WIN 0xe0, 0x1f
#define __SCANCODE_COMMAND __SCANCODE_WIN
#define __SHIFT(...) __MAKE(__SCANCODE_SHIFT), __VA_ARGS__, __BREAK(__SCANCODE_SHIFT)
#define __CTRL(...) __MAKE(__SCANCODE_CTRL), __VA_ARGS__, __BREAK(__SCANCODE_CTRL)
#define __CONTROL(...) __CTRL(__VA_ARGS__)
#define __ALT(...) __MAKE(__SCANCODE_ALT), __VA_ARGS__, __BREAK(__SCANCODE_ALT)
#define __WIN(...) __MAKE(__SCANCODE_WIN), __VA_ARGS__, __BREAK(__SCANCODE_WIN)
#define __COMMAND(...) __WIN(__VA_ARGS__)
#define __BACKSPACE __TYPE(0x66)
#define __RETURN __TYPE(0x5a)
#define __ENTER __RETURN
#define __SPACE __TYPE(0x29)
#define __ESCAPE __TYPE(0x76)
#define __TAB __TYPE(0x0d)
#define __CAPSLOCK __TYPE(0x58)
#define __UP __TYPE_EXT(0x75)
#define __DOWN __TYPE_EXT(0x72)
#define __LEFT __TYPE_EXT(0x6b)
#define __RIGHT __TYPE_EXT(0x74)
#define __PAGEUP __TYPE_EXT(0x7d)
#define __PAGEDOWN __TYPE_EXT(0x7a)
#define __HOME __TYPE_EXT(0x6c)
#define __END __TYPE_EXT(0x69)
#define __DELETE __TYPE_EXT(0x71)
#define __INSERT __TYPE_EXT(0x70)
// #define __PRINTSCREEN __TYPE_EXT(0x)
// #define __PAUSE __TYPE_EXT(0x)
#define __SCROLLLOCK __TYPE_(0x7e)
#define __F1 __TYPE(0x05)
#define __F2 __TYPE(0x06)
#define __F3 __TYPE(0x04)
#define __F4 __TYPE(0x0c)
#define __F5 __TYPE(0x03)
#define __F6 __TYPE(0x0b)
#define __F7 __TYPE(0x83)
#define __F8 __TYPE(0x0a)
#define __F9 __TYPE(0x01)
#define __F10 __TYPE(0x09)
#define __F11 __TYPE(0x78)
#define __F12 __TYPE(0x07)
#define __1 __TYPE(0x16)
#define __2 __TYPE(0x1E)
#define __3 __TYPE(0x26)
#define __4 __TYPE(0x25)
#define __5 __TYPE(0x2E)
#define __6 __TYPE(0x36)
#define __7 __TYPE(0x3D)
#define __8 __TYPE(0x3E)
#define __9 __TYPE(0x46)
#define __0 __TYPE(0x45)
#define __a __TYPE(0x1C)
#define __b __TYPE(0x32)
#define __c __TYPE(0x21)
#define __d __TYPE(0x23)
#define __e __TYPE(0x24)
#define __f __TYPE(0x2B)
#define __g __TYPE(0x34)
#define __h __TYPE(0x33)
#define __i __TYPE(0x43)
#define __j __TYPE(0x3B)
#define __k __TYPE(0x42)
#define __l __TYPE(0x4B)
#define __m __TYPE(0x3A)
#define __n __TYPE(0x31)
#define __o __TYPE(0x44)
#define __p __TYPE(0x4D)
#define __q __TYPE(0x15)
#define __r __TYPE(0x2D)
#define __s __TYPE(0x1B)
#define __t __TYPE(0x2C)
#define __u __TYPE(0x3C)
#define __v __TYPE(0x2A)
#define __w __TYPE(0x1D)
#define __x __TYPE(0x22)
#define __y __TYPE(0x35)
#define __z __TYPE(0x1A)
#define __A __SHIFT(__a)
#define __B __SHIFT(__b)
#define __C __SHIFT(__c)
#define __D __SHIFT(__d)
#define __E __SHIFT(__e)
#define __F __SHIFT(__f)
#define __G __SHIFT(__g)
#define __H __SHIFT(__h)
#define __I __SHIFT(__i)
#define __J __SHIFT(__j)
#define __K __SHIFT(__k)
#define __L __SHIFT(__l)
#define __M __SHIFT(__m)
#define __N __SHIFT(__n)
#define __O __SHIFT(__o)
#define __P __SHIFT(__p)
#define __Q __SHIFT(__q)
#define __R __SHIFT(__r)
#define __S __SHIFT(__s)
#define __T __SHIFT(__t)
#define __U __SHIFT(__u)
#define __V __SHIFT(__v)
#define __W __SHIFT(__w)
#define __X __SHIFT(__x)
#define __Y __SHIFT(__y)
#define __Z __SHIFT(__z)
#define __MINUS __TYPE(0x4e)
#define __CARET __TYPE(0x55)
#define __BACKSLASH __TYPE(0x6a)
#define __AT __TYPE(0x54)
#define __LEFTBRACKET __TYPE(0x5b)
#define __SEMICOLON __TYPE(0x4c)
#define __COLON __TYPE(0x52)
#define __RIGHTBRACKET __TYPE(0x5d)
#define __COMMA __TYPE(0x41)
#define __PERIOD __TYPE(0x49)
#define __SLASH __TYPE(0x4a)
#define __UNDERSCORE __TYPE(0x51)
#define __EXCLAIM __SHIFT(__1)
#define __QUOTEDBL __SHIFT(__2)
#define __HASH __SHIFT(__3)
#define __DOLLAR __SHIFT(__4)
#define __PERCENT __SHIFT(__5)
#define __AMPERSAND __SHIFT(__6)
#define __QUOTE __SHIFT(__7)
#define __LEFTPAREN __SHIFT(__8)
#define __RIGHTPAREN __SHIFT(__9)
#define __EQUALS __SHIFT(__MINUS)
#define __TILDE __SHIFT(__CARET)
#define __VERTICALBAR __SHIFT(__BACKSLASH)
#define __BACKQUOTE __SHIFT(__AT)
#define __LEFTBRACE __SHIFT(__LEFTBRACKET)
#define __PLUS __SHIFT(__SEMICOLON)
#define __ASTERISK __SHIFT(__COLON)
#define __RIGHTBRACE __SHIFT(__RIGHTBRACKET)
#define __LESS __SHIFT(__COMMA)
#define __GREATER __SHIFT(__PERIOD)
#define __QUESTION __SHIFT(__SLASH)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment