oden/src/input.ts

214 lines
3.3 KiB
TypeScript

import * as core from "input-core";
// NOTE: This is derived from rust's winit VirtualKeyCode as of 2023/07/07
export const Key = {
/// The '1' key over the letters.
Key1: 1,
/// The '2' key over the letters.
Key2: 2,
/// The '3' key over the letters.
Key3: 3,
/// The '4' key over the letters.
Key4: 4,
/// The '5' key over the letters.
Key5: 5,
/// The '6' key over the letters.
Key6: 6,
/// The '7' key over the letters.
Key7: 7,
/// The '8' key over the letters.
Key8: 8,
/// The '9' key over the letters.
Key9: 9,
/// The '0' key over the 'O' and 'P' keys.
Key0: 10,
A: 11,
B: 12,
C: 13,
D: 14,
E: 15,
F: 16,
G: 17,
H: 18,
I: 19,
J: 20,
K: 21,
L: 22,
M: 23,
N: 24,
O: 25,
P: 26,
Q: 27,
R: 28,
S: 29,
T: 30,
U: 31,
V: 32,
W: 33,
X: 34,
Y: 35,
Z: 36,
/// The Escape key, next to F1.
Escape: 37,
F1: 38,
F2: 39,
F3: 40,
F4: 41,
F5: 42,
F6: 43,
F7: 44,
F8: 45,
F9: 46,
F10: 47,
F11: 48,
F12: 49,
F13: 50,
F14: 51,
F15: 52,
F16: 53,
F17: 54,
F18: 55,
F19: 56,
F20: 57,
F21: 58,
F22: 59,
F23: 60,
F24: 61,
/// Print Screen/SysRq.
Snapshot: 62,
/// Scroll Lock.
Scroll: 63,
/// Pause/Break key, next to Scroll lock.
Pause: 64,
/// `Insert`, next to Backspace.
Insert: 65,
Home: 66,
Delete: 67,
End: 68,
PageDown: 69,
PageUp: 70,
Left: 71,
Up: 72,
Right: 73,
Down: 74,
/// The Backspace key, right over Enter.
// TODO: rename
Back: 75,
/// The Enter key.
Return: 76,
/// The space bar.
Space: 77,
/// The "Compose" key on Linux.
Compose: 78,
Caret: 79,
Numlock: 80,
Numpad0: 81,
Numpad1: 82,
Numpad2: 83,
Numpad3: 84,
Numpad4: 85,
Numpad5: 86,
Numpad6: 87,
Numpad7: 88,
Numpad8: 89,
Numpad9: 90,
NumpadAdd: 91,
NumpadDivide: 92,
NumpadDecimal: 93,
NumpadComma: 94,
NumpadEnter: 95,
NumpadEquals: 96,
NumpadMultiply: 97,
NumpadSubtract: 98,
AbntC1: 99,
AbntC2: 100,
Apostrophe: 101,
Apps: 102,
Asterisk: 103,
At: 104,
Ax: 105,
Backslash: 106,
Calculator: 107,
Capital: 108,
Colon: 109,
Comma: 110,
Convert: 111,
Equals: 112,
Grave: 113,
Kana: 114,
Kanji: 115,
LAlt: 116,
LBracket: 117,
LControl: 118,
LShift: 119,
LWin: 120,
Mail: 121,
MediaSelect: 122,
MediaStop: 123,
Minus: 124,
Mute: 125,
MyComputer: 126,
// also called "Next"
NavigateForward: 127,
// also called "Prior"
NavigateBackward: 128,
NextTrack: 129,
NoConvert: 130,
OEM102: 131,
Period: 132,
PlayPause: 133,
Plus: 134,
Power: 135,
PrevTrack: 136,
RAlt: 137,
RBracket: 138,
RControl: 139,
RShift: 140,
RWin: 141,
Semicolon: 142,
Slash: 143,
Sleep: 144,
Stop: 145,
Sysrq: 146,
Tab: 147,
Underline: 148,
Unlabeled: 149,
VolumeDown: 150,
VolumeUp: 151,
Wake: 152,
WebBack: 153,
WebFavorites: 154,
WebForward: 155,
WebHome: 156,
WebRefresh: 157,
WebSearch: 158,
WebStop: 159,
Yen: 160,
Copy: 161,
Paste: 162,
Cut: 163,
} as const;
// NOTE: This must match the definition in input.rs.
export const Button = {
Up: core.BUTTON_UP,
Down: core.BUTTON_DOWN,
Left: core.BUTTON_LEFT,
Right: core.BUTTON_RIGHT,
} as const;
type Button = (typeof Button)[keyof typeof Button];
export function btn(b: Button): boolean {
return core.btn(b);
}