28#define DEFINE_KEYBD_BUTTON_HANDLE(KeyName) \
29 static ButtonHandle _##KeyName; \
30 ButtonHandle KeyboardButton::KeyName() { return _##KeyName; }
32DEFINE_KEYBD_BUTTON_HANDLE(space)
33DEFINE_KEYBD_BUTTON_HANDLE(backspace)
34DEFINE_KEYBD_BUTTON_HANDLE(tab)
35DEFINE_KEYBD_BUTTON_HANDLE(enter)
36DEFINE_KEYBD_BUTTON_HANDLE(escape)
37DEFINE_KEYBD_BUTTON_HANDLE(f1)
38DEFINE_KEYBD_BUTTON_HANDLE(f2)
39DEFINE_KEYBD_BUTTON_HANDLE(f3)
40DEFINE_KEYBD_BUTTON_HANDLE(f4)
41DEFINE_KEYBD_BUTTON_HANDLE(f5)
42DEFINE_KEYBD_BUTTON_HANDLE(f6)
43DEFINE_KEYBD_BUTTON_HANDLE(f7)
44DEFINE_KEYBD_BUTTON_HANDLE(f8)
45DEFINE_KEYBD_BUTTON_HANDLE(f9)
46DEFINE_KEYBD_BUTTON_HANDLE(f10)
47DEFINE_KEYBD_BUTTON_HANDLE(f11)
48DEFINE_KEYBD_BUTTON_HANDLE(f12)
49DEFINE_KEYBD_BUTTON_HANDLE(f13)
50DEFINE_KEYBD_BUTTON_HANDLE(f14)
51DEFINE_KEYBD_BUTTON_HANDLE(f15)
52DEFINE_KEYBD_BUTTON_HANDLE(f16)
53DEFINE_KEYBD_BUTTON_HANDLE(left)
54DEFINE_KEYBD_BUTTON_HANDLE(right)
55DEFINE_KEYBD_BUTTON_HANDLE(up)
56DEFINE_KEYBD_BUTTON_HANDLE(down)
57DEFINE_KEYBD_BUTTON_HANDLE(page_up)
58DEFINE_KEYBD_BUTTON_HANDLE(page_down)
59DEFINE_KEYBD_BUTTON_HANDLE(home)
60DEFINE_KEYBD_BUTTON_HANDLE(end)
61DEFINE_KEYBD_BUTTON_HANDLE(insert)
62DEFINE_KEYBD_BUTTON_HANDLE(del)
63DEFINE_KEYBD_BUTTON_HANDLE(help)
64DEFINE_KEYBD_BUTTON_HANDLE(meta)
65DEFINE_KEYBD_BUTTON_HANDLE(caps_lock)
66DEFINE_KEYBD_BUTTON_HANDLE(shift_lock)
67DEFINE_KEYBD_BUTTON_HANDLE(scroll_lock)
68DEFINE_KEYBD_BUTTON_HANDLE(num_lock)
69DEFINE_KEYBD_BUTTON_HANDLE(print_screen)
70DEFINE_KEYBD_BUTTON_HANDLE(pause)
71DEFINE_KEYBD_BUTTON_HANDLE(menu)
72DEFINE_KEYBD_BUTTON_HANDLE(shift)
73DEFINE_KEYBD_BUTTON_HANDLE(control)
74DEFINE_KEYBD_BUTTON_HANDLE(alt)
75DEFINE_KEYBD_BUTTON_HANDLE(lshift)
76DEFINE_KEYBD_BUTTON_HANDLE(rshift)
77DEFINE_KEYBD_BUTTON_HANDLE(lcontrol)
78DEFINE_KEYBD_BUTTON_HANDLE(rcontrol)
79DEFINE_KEYBD_BUTTON_HANDLE(lalt)
80DEFINE_KEYBD_BUTTON_HANDLE(ralt)
81DEFINE_KEYBD_BUTTON_HANDLE(lmeta)
82DEFINE_KEYBD_BUTTON_HANDLE(rmeta)
90init_keyboard_buttons() {
92 ButtonHandle::none(),
' ');
94 ButtonHandle::none(),
'\x08');
96 ButtonHandle::none(),
'\x09');
98 ButtonHandle::none(),
'\x0d');
100 ButtonHandle::none(),
'\x1b');
102 ButtonHandle::none(),
'\x7f');
155 for (
int i = 32; i < 127; i++) {
159 ButtonHandle::none(), i);