-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathinput.fs
More file actions
249 lines (247 loc) · 9.44 KB
/
input.fs
File metadata and controls
249 lines (247 loc) · 9.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
0 ( 0x000 ) CONSTANT SCANCODE_UNKNOWN
4 ( 0x004 ) CONSTANT SCANCODE_A
5 ( 0x005 ) CONSTANT SCANCODE_B
6 ( 0x006 ) CONSTANT SCANCODE_C
7 ( 0x007 ) CONSTANT SCANCODE_D
8 ( 0x008 ) CONSTANT SCANCODE_E
9 ( 0x009 ) CONSTANT SCANCODE_F
10 ( 0x00A ) CONSTANT SCANCODE_G
11 ( 0x00B ) CONSTANT SCANCODE_H
12 ( 0x00C ) CONSTANT SCANCODE_I
13 ( 0x00D ) CONSTANT SCANCODE_J
14 ( 0x00E ) CONSTANT SCANCODE_K
15 ( 0x00F ) CONSTANT SCANCODE_L
16 ( 0x010 ) CONSTANT SCANCODE_M
17 ( 0x011 ) CONSTANT SCANCODE_N
18 ( 0x012 ) CONSTANT SCANCODE_O
19 ( 0x013 ) CONSTANT SCANCODE_P
20 ( 0x014 ) CONSTANT SCANCODE_Q
21 ( 0x015 ) CONSTANT SCANCODE_R
22 ( 0x016 ) CONSTANT SCANCODE_S
23 ( 0x017 ) CONSTANT SCANCODE_T
24 ( 0x018 ) CONSTANT SCANCODE_U
25 ( 0x019 ) CONSTANT SCANCODE_V
26 ( 0x01A ) CONSTANT SCANCODE_W
27 ( 0x01B ) CONSTANT SCANCODE_X
28 ( 0x01C ) CONSTANT SCANCODE_Y
29 ( 0x01D ) CONSTANT SCANCODE_Z
30 ( 0x01E ) CONSTANT SCANCODE_1
31 ( 0x01F ) CONSTANT SCANCODE_2
32 ( 0x020 ) CONSTANT SCANCODE_3
33 ( 0x021 ) CONSTANT SCANCODE_4
34 ( 0x022 ) CONSTANT SCANCODE_5
35 ( 0x023 ) CONSTANT SCANCODE_6
36 ( 0x024 ) CONSTANT SCANCODE_7
37 ( 0x025 ) CONSTANT SCANCODE_8
38 ( 0x026 ) CONSTANT SCANCODE_9
39 ( 0x027 ) CONSTANT SCANCODE_0
40 ( 0x028 ) CONSTANT SCANCODE_RETURN
41 ( 0x029 ) CONSTANT SCANCODE_ESCAPE
42 ( 0x02A ) CONSTANT SCANCODE_BACKSPACE
43 ( 0x02B ) CONSTANT SCANCODE_TAB
44 ( 0x02C ) CONSTANT SCANCODE_SPACE
45 ( 0x02D ) CONSTANT SCANCODE_MINUS
46 ( 0x02E ) CONSTANT SCANCODE_EQUALS
47 ( 0x02F ) CONSTANT SCANCODE_LEFTBRACKET
48 ( 0x030 ) CONSTANT SCANCODE_RIGHTBRACKET
49 ( 0x031 ) CONSTANT SCANCODE_BACKSLASH
50 ( 0x032 ) CONSTANT SCANCODE_NONUSHASH
51 ( 0x033 ) CONSTANT SCANCODE_SEMICOLON
52 ( 0x034 ) CONSTANT SCANCODE_APOSTROPHE
53 ( 0x035 ) CONSTANT SCANCODE_GRAVE
54 ( 0x036 ) CONSTANT SCANCODE_COMMA
55 ( 0x037 ) CONSTANT SCANCODE_PERIOD
56 ( 0x038 ) CONSTANT SCANCODE_SLASH
57 ( 0x039 ) CONSTANT SCANCODE_CAPSLOCK
58 ( 0x03A ) CONSTANT SCANCODE_F1
59 ( 0x03B ) CONSTANT SCANCODE_F2
60 ( 0x03C ) CONSTANT SCANCODE_F3
61 ( 0x03D ) CONSTANT SCANCODE_F4
62 ( 0x03E ) CONSTANT SCANCODE_F5
63 ( 0x03F ) CONSTANT SCANCODE_F6
64 ( 0x040 ) CONSTANT SCANCODE_F7
65 ( 0x041 ) CONSTANT SCANCODE_F8
66 ( 0x042 ) CONSTANT SCANCODE_F9
67 ( 0x043 ) CONSTANT SCANCODE_F10
68 ( 0x044 ) CONSTANT SCANCODE_F11
69 ( 0x045 ) CONSTANT SCANCODE_F12
70 ( 0x046 ) CONSTANT SCANCODE_PRINTSCREEN
71 ( 0x047 ) CONSTANT SCANCODE_SCROLLLOCK
72 ( 0x048 ) CONSTANT SCANCODE_PAUSE
73 ( 0x049 ) CONSTANT SCANCODE_INSERT
74 ( 0x04A ) CONSTANT SCANCODE_HOME
75 ( 0x04B ) CONSTANT SCANCODE_PAGEUP
76 ( 0x04C ) CONSTANT SCANCODE_DELETE
77 ( 0x04D ) CONSTANT SCANCODE_END
78 ( 0x04E ) CONSTANT SCANCODE_PAGEDOWN
79 ( 0x04F ) CONSTANT SCANCODE_RIGHT
80 ( 0x050 ) CONSTANT SCANCODE_LEFT
81 ( 0x051 ) CONSTANT SCANCODE_DOWN
82 ( 0x052 ) CONSTANT SCANCODE_UP
83 ( 0x053 ) CONSTANT SCANCODE_NUMLOCKCLEAR
84 ( 0x054 ) CONSTANT SCANCODE_KP_DIVIDE
85 ( 0x055 ) CONSTANT SCANCODE_KP_MULTIPLY
86 ( 0x056 ) CONSTANT SCANCODE_KP_MINUS
87 ( 0x057 ) CONSTANT SCANCODE_KP_PLUS
88 ( 0x058 ) CONSTANT SCANCODE_KP_ENTER
89 ( 0x059 ) CONSTANT SCANCODE_KP_1
90 ( 0x05A ) CONSTANT SCANCODE_KP_2
91 ( 0x05B ) CONSTANT SCANCODE_KP_3
92 ( 0x05C ) CONSTANT SCANCODE_KP_4
93 ( 0x05D ) CONSTANT SCANCODE_KP_5
94 ( 0x05E ) CONSTANT SCANCODE_KP_6
95 ( 0x05F ) CONSTANT SCANCODE_KP_7
96 ( 0x060 ) CONSTANT SCANCODE_KP_8
97 ( 0x061 ) CONSTANT SCANCODE_KP_9
98 ( 0x062 ) CONSTANT SCANCODE_KP_0
99 ( 0x063 ) CONSTANT SCANCODE_KP_PERIOD
100 ( 0x064 ) CONSTANT SCANCODE_NONUSBACKSLASH
101 ( 0x065 ) CONSTANT SCANCODE_APPLICATION
102 ( 0x066 ) CONSTANT SCANCODE_POWER
103 ( 0x067 ) CONSTANT SCANCODE_KP_EQUALS
104 ( 0x068 ) CONSTANT SCANCODE_F13
105 ( 0x069 ) CONSTANT SCANCODE_F14
106 ( 0x06A ) CONSTANT SCANCODE_F15
107 ( 0x06B ) CONSTANT SCANCODE_F16
108 ( 0x06C ) CONSTANT SCANCODE_F17
109 ( 0x06D ) CONSTANT SCANCODE_F18
110 ( 0x06E ) CONSTANT SCANCODE_F19
111 ( 0x06F ) CONSTANT SCANCODE_F20
112 ( 0x070 ) CONSTANT SCANCODE_F21
113 ( 0x071 ) CONSTANT SCANCODE_F22
114 ( 0x072 ) CONSTANT SCANCODE_F23
115 ( 0x073 ) CONSTANT SCANCODE_F24
116 ( 0x074 ) CONSTANT SCANCODE_EXECUTE
117 ( 0x075 ) CONSTANT SCANCODE_HELP
118 ( 0x076 ) CONSTANT SCANCODE_MENU
119 ( 0x077 ) CONSTANT SCANCODE_SELECT
120 ( 0x078 ) CONSTANT SCANCODE_STOP
121 ( 0x079 ) CONSTANT SCANCODE_AGAIN
122 ( 0x07A ) CONSTANT SCANCODE_UNDO
123 ( 0x07B ) CONSTANT SCANCODE_CUT
124 ( 0x07C ) CONSTANT SCANCODE_COPY
125 ( 0x07D ) CONSTANT SCANCODE_PASTE
126 ( 0x07E ) CONSTANT SCANCODE_FIND
127 ( 0x07F ) CONSTANT SCANCODE_MUTE
128 ( 0x080 ) CONSTANT SCANCODE_VOLUMEUP
129 ( 0x081 ) CONSTANT SCANCODE_VOLUMEDOWN
133 ( 0x085 ) CONSTANT SCANCODE_KP_COMMA
134 ( 0x086 ) CONSTANT SCANCODE_KP_EQUALSAS400
135 ( 0x087 ) CONSTANT SCANCODE_INTERNATIONAL1
136 ( 0x088 ) CONSTANT SCANCODE_INTERNATIONAL2
137 ( 0x089 ) CONSTANT SCANCODE_INTERNATIONAL3
138 ( 0x08A ) CONSTANT SCANCODE_INTERNATIONAL4
139 ( 0x08B ) CONSTANT SCANCODE_INTERNATIONAL5
140 ( 0x08C ) CONSTANT SCANCODE_INTERNATIONAL6
141 ( 0x08D ) CONSTANT SCANCODE_INTERNATIONAL7
142 ( 0x08E ) CONSTANT SCANCODE_INTERNATIONAL8
143 ( 0x08F ) CONSTANT SCANCODE_INTERNATIONAL9
144 ( 0x090 ) CONSTANT SCANCODE_LANG1
145 ( 0x091 ) CONSTANT SCANCODE_LANG2
146 ( 0x092 ) CONSTANT SCANCODE_LANG3
147 ( 0x093 ) CONSTANT SCANCODE_LANG4
148 ( 0x094 ) CONSTANT SCANCODE_LANG5
149 ( 0x095 ) CONSTANT SCANCODE_LANG6
150 ( 0x096 ) CONSTANT SCANCODE_LANG7
151 ( 0x097 ) CONSTANT SCANCODE_LANG8
152 ( 0x098 ) CONSTANT SCANCODE_LANG9
153 ( 0x099 ) CONSTANT SCANCODE_ALTERASE
154 ( 0x09A ) CONSTANT SCANCODE_SYSREQ
155 ( 0x09B ) CONSTANT SCANCODE_CANCEL
156 ( 0x09C ) CONSTANT SCANCODE_CLEAR
157 ( 0x09D ) CONSTANT SCANCODE_PRIOR
158 ( 0x09E ) CONSTANT SCANCODE_RETURN2
159 ( 0x09F ) CONSTANT SCANCODE_SEPARATOR
160 ( 0x0A0 ) CONSTANT SCANCODE_OUT
161 ( 0x0A1 ) CONSTANT SCANCODE_OPER
162 ( 0x0A2 ) CONSTANT SCANCODE_CLEARAGAIN
163 ( 0x0A3 ) CONSTANT SCANCODE_CRSEL
164 ( 0x0A4 ) CONSTANT SCANCODE_EXSEL
176 ( 0x0B0 ) CONSTANT SCANCODE_KP_00
177 ( 0x0B1 ) CONSTANT SCANCODE_KP_000
178 ( 0x0B2 ) CONSTANT SCANCODE_THOUSANDSSEPARATOR
179 ( 0x0B3 ) CONSTANT SCANCODE_DECIMALSEPARATOR
180 ( 0x0B4 ) CONSTANT SCANCODE_CURRENCYUNIT
181 ( 0x0B5 ) CONSTANT SCANCODE_CURRENCYSUBUNIT
182 ( 0x0B6 ) CONSTANT SCANCODE_KP_LEFTPAREN
183 ( 0x0B7 ) CONSTANT SCANCODE_KP_RIGHTPAREN
184 ( 0x0B8 ) CONSTANT SCANCODE_KP_LEFTBRACE
185 ( 0x0B9 ) CONSTANT SCANCODE_KP_RIGHTBRACE
186 ( 0x0BA ) CONSTANT SCANCODE_KP_TAB
187 ( 0x0BB ) CONSTANT SCANCODE_KP_BACKSPACE
188 ( 0x0BC ) CONSTANT SCANCODE_KP_A
189 ( 0x0BD ) CONSTANT SCANCODE_KP_B
190 ( 0x0BE ) CONSTANT SCANCODE_KP_C
191 ( 0x0BF ) CONSTANT SCANCODE_KP_D
192 ( 0x0C0 ) CONSTANT SCANCODE_KP_E
193 ( 0x0C1 ) CONSTANT SCANCODE_KP_F
194 ( 0x0C2 ) CONSTANT SCANCODE_KP_XOR
195 ( 0x0C3 ) CONSTANT SCANCODE_KP_POWER
196 ( 0x0C4 ) CONSTANT SCANCODE_KP_PERCENT
197 ( 0x0C5 ) CONSTANT SCANCODE_KP_LESS
198 ( 0x0C6 ) CONSTANT SCANCODE_KP_GREATER
199 ( 0x0C7 ) CONSTANT SCANCODE_KP_AMPERSAND
200 ( 0x0C8 ) CONSTANT SCANCODE_KP_DBLAMPERSAND
201 ( 0x0C9 ) CONSTANT SCANCODE_KP_VERTICALBAR
202 ( 0x0CA ) CONSTANT SCANCODE_KP_DBLVERTICALBAR
203 ( 0x0CB ) CONSTANT SCANCODE_KP_COLON
204 ( 0x0CC ) CONSTANT SCANCODE_KP_HASH
205 ( 0x0CD ) CONSTANT SCANCODE_KP_SPACE
206 ( 0x0CE ) CONSTANT SCANCODE_KP_AT
207 ( 0x0CF ) CONSTANT SCANCODE_KP_EXCLAM
208 ( 0x0D0 ) CONSTANT SCANCODE_KP_MEMSTORE
209 ( 0x0D1 ) CONSTANT SCANCODE_KP_MEMRECALL
210 ( 0x0D2 ) CONSTANT SCANCODE_KP_MEMCLEAR
211 ( 0x0D3 ) CONSTANT SCANCODE_KP_MEMADD
212 ( 0x0D4 ) CONSTANT SCANCODE_KP_MEMSUBTRACT
213 ( 0x0D5 ) CONSTANT SCANCODE_KP_MEMMULTIPLY
214 ( 0x0D6 ) CONSTANT SCANCODE_KP_MEMDIVIDE
215 ( 0x0D7 ) CONSTANT SCANCODE_KP_PLUSMINUS
216 ( 0x0D8 ) CONSTANT SCANCODE_KP_CLEAR
217 ( 0x0D9 ) CONSTANT SCANCODE_KP_CLEARENTRY
218 ( 0x0DA ) CONSTANT SCANCODE_KP_BINARY
219 ( 0x0DB ) CONSTANT SCANCODE_KP_OCTAL
220 ( 0x0DC ) CONSTANT SCANCODE_KP_DECIMAL
221 ( 0x0DD ) CONSTANT SCANCODE_KP_HEXADECIMAL
224 ( 0x0E0 ) CONSTANT SCANCODE_LCTRL
225 ( 0x0E1 ) CONSTANT SCANCODE_LSHIFT
226 ( 0x0E2 ) CONSTANT SCANCODE_LALT
227 ( 0x0E3 ) CONSTANT SCANCODE_LGUI
228 ( 0x0E4 ) CONSTANT SCANCODE_RCTRL
229 ( 0x0E5 ) CONSTANT SCANCODE_RSHIFT
230 ( 0x0E6 ) CONSTANT SCANCODE_RALT
231 ( 0x0E7 ) CONSTANT SCANCODE_RGUI
257 ( 0x101 ) CONSTANT SCANCODE_MODE
258 ( 0x102 ) CONSTANT SCANCODE_AUDIONEXT
259 ( 0x103 ) CONSTANT SCANCODE_AUDIOPREV
260 ( 0x104 ) CONSTANT SCANCODE_AUDIOSTOP
261 ( 0x105 ) CONSTANT SCANCODE_AUDIOPLAY
262 ( 0x106 ) CONSTANT SCANCODE_AUDIOMUTE
263 ( 0x107 ) CONSTANT SCANCODE_MEDIASELECT
264 ( 0x108 ) CONSTANT SCANCODE_WWW
265 ( 0x109 ) CONSTANT SCANCODE_MAIL
266 ( 0x10A ) CONSTANT SCANCODE_CALCULATOR
267 ( 0x10B ) CONSTANT SCANCODE_COMPUTER
268 ( 0x10C ) CONSTANT SCANCODE_AC_SEARCH
269 ( 0x10D ) CONSTANT SCANCODE_AC_HOME
270 ( 0x10E ) CONSTANT SCANCODE_AC_BACK
271 ( 0x10F ) CONSTANT SCANCODE_AC_FORWARD
272 ( 0x110 ) CONSTANT SCANCODE_AC_STOP
273 ( 0x111 ) CONSTANT SCANCODE_AC_REFRESH
274 ( 0x112 ) CONSTANT SCANCODE_AC_BOOKMARKS
275 ( 0x113 ) CONSTANT SCANCODE_BRIGHTNESSDOWN
276 ( 0x114 ) CONSTANT SCANCODE_BRIGHTNESSUP
277 ( 0x115 ) CONSTANT SCANCODE_DISPLAYSWITCH
278 ( 0x116 ) CONSTANT SCANCODE_KBDILLUMTOGGLE
279 ( 0x117 ) CONSTANT SCANCODE_KBDILLUMDOWN
280 ( 0x118 ) CONSTANT SCANCODE_KBDILLUMUP
281 ( 0x119 ) CONSTANT SCANCODE_EJECT
282 ( 0x11A ) CONSTANT SCANCODE_SLEEP
283 ( 0x11B ) CONSTANT SCANCODE_APP1
284 ( 0x11C ) CONSTANT SCANCODE_APP2
\ CREATE oldkeys 284 ALLOT
\ oldkeys 284 ERASE
\ : update-input ( -- ) KEYS oldkeys 284 CMOVE EVENTS ;
: pressed? ( c -- f ) KEYS + C@ ;
: was-pressed? ( c -- f ) OLDKEYS + C@ ;
: just-pressed? ( c -- f ) DUP pressed? IF was-pressed? NOT ELSE DROP 0 THEN ;