Here are all the keys Jwno currently supports, and the actual key codes used in the code. See the Windows documentation for more details.
Note that Jwno currently only supports US keyboard layouts. On other layouts, the VK_OEM_* key codes may map to other characters.
To use a key in a key spec, write its name directly. All key names are case-insensitive. For example:
"Win + A"
"Win + 1"
"Win + ;"
"Win + Numpad0"
Modifier Keys
About the AltGr key: The AltGr key is in fact not a single modifier, but emits Ctrl + Alt instead, so it cannot be used as a "trigger key". If you want to use AltGr as a modifier in a key spec, write Ctrl + Alt instead, e.g. AltGr + N should become Ctrl + Alt + N.
| Name | Key Code | Description |
| Win | | Win key (left or right) |
| LWin | VK_LWIN | Win key (left) |
| RWin | VK_RWIN | Win key (right) |
| Alt | | Alt key (left or right) |
| LAlt | VK_LMENU | Alt key (left) |
| RAlt | VK_RMENU | Alt key (right) |
| Ctrl | | Ctrl key (left or right) |
| LCtrl | VK_LCONTROL | Ctrl key (left) |
| RCtrl | VK_RCONTROL | Ctrl key (right) |
| Shift | | Shift key (left or right) |
| LShift | VK_LSHIFT | Shift key (left) |
| RShift | VK_RSHIFT | Shift key (right) |
Special Keys
| Name | Key Code | Description |
| Backspace | VK_BACK | |
| Tab | VK_TAB | |
| Enter | VK_RETURN | |
| Pause | VK_PAUSE | |
| CapsLock | VK_CAPITAL | |
| Esc | VK_ESCAPE | |
| Space | VK_SPACE | |
| PageUp | VK_PRIOR | |
| PageDown | VK_NEXT | |
| End | VK_END | |
| Home | VK_HOME | |
| Left | VK_LEFT | Arrow key ← |
| Up | VK_UP | Arrow key ↑ |
| Right | VK_RIGHT | Arrow key → |
| Down | VK_DOWN | Arrow key ↓ |
| Insert | VK_INSERT | |
| Delete | VK_DELETE | |
| App | VK_APPS | Menu key |
| ScrollLock | VK_SCROLL | |
Numpad Keys
| Name | Key Code | Description |
| Numpad0 | VK_NUMPAD0 | |
| Numpad1 | VK_NUMPAD1 | |
| Numpad2 | VK_NUMPAD2 | |
| Numpad3 | VK_NUMPAD3 | |
| Numpad4 | VK_NUMPAD4 | |
| Numpad5 | VK_NUMPAD5 | |
| Numpad6 | VK_NUMPAD6 | |
| Numpad7 | VK_NUMPAD7 | |
| Numpad8 | VK_NUMPAD8 | |
| Numpad9 | VK_NUMPAD9 | |
| Numpad* | VK_MULTIPLY | |
| Numpad+ | VK_ADD | |
| Numpad- | VK_SUBTRACT | |
| Numpad. | VK_DECIMAL | |
| Numpad/ | VK_DIVIDE | |
Alpha-Numeric Keys
| Name | Key Code | Description |
| A | 65 | |
| B | 66 | |
| C | 67 | |
| D | 68 | |
| E | 69 | |
| F | 70 | |
| G | 71 | |
| H | 72 | |
| I | 73 | |
| J | 74 | |
| K | 75 | |
| L | 76 | |
| M | 77 | |
| N | 78 | |
| O | 79 | |
| P | 80 | |
| Q | 81 | |
| R | 82 | |
| S | 83 | |
| T | 84 | |
| U | 85 | |
| V | 86 | |
| W | 87 | |
| X | 88 | |
| Y | 89 | |
| Z | 90 | |
| 0 | 48 | |
| 1 | 49 | |
| 2 | 50 | |
| 3 | 51 | |
| 4 | 52 | |
| 5 | 53 | |
| 6 | 54 | |
| 7 | 55 | |
| 8 | 56 | |
| 9 | 57 | |
Function Keys
| Name | Key Code | Description |
| F1 | VK_F1 | |
| F2 | VK_F2 | |
| F3 | VK_F3 | |
| F4 | VK_F4 | |
| F5 | VK_F5 | |
| F6 | VK_F6 | |
| F7 | VK_F7 | |
| F8 | VK_F8 | |
| F9 | VK_F9 | |
| F10 | VK_F10 | |
| F11 | VK_F11 | |
| F12 | VK_F12 | |
| F13 | VK_F13 | |
| F14 | VK_F14 | |
| F15 | VK_F15 | |
| F16 | VK_F16 | |
| F17 | VK_F17 | |
| F18 | VK_F18 | |
| F19 | VK_F19 | |
| F20 | VK_F20 | |
| F21 | VK_F21 | |
| F22 | VK_F22 | |
| F23 | VK_F23 | |
| F24 | VK_F24 | |
"OEM" Keys
| Name | Key Code | Description |
| , | VK_OEM_COMMA | ,< key |
| . | VK_OEM_PERIOD | .> key |
| = | VK_OEM_PLUS | =+ key |
| - | VK_OEM_MINUS | -_ key |
| ; | VK_OEM_1 | ;: key |
| / | VK_OEM_2 | /? key |
| ` | VK_OEM_3 | `~ key |
| [ | VK_OEM_4 | [{ key |
| \ | VK_OEM_5 | \| key |
] | VK_OEM_6 | ]} key |
| ' | VK_OEM_7 | '" key |