! Copyright (C) 2004, 2005 Slava Pestov. ! See http://factor.sf.net/license.txt for BSD license. IN: sdl USING: namespaces ; ! Here we smash left/right control/shift/alt for convinience. ! Later, something better needs to be done. SYMBOL: modifiers [ [[ "SHIFT" HEX: 0001 ]] [[ "SHIFT" HEX: 0002 ]] [[ "CTRL" HEX: 0040 ]] [[ "CTRL" HEX: 0080 ]] [[ "ALT" HEX: 0100 ]] [[ "ALT" HEX: 0200 ]] [[ "META" HEX: 0400 ]] [[ "META" HEX: 0800 ]] ! We ignore these two modifiers since they're mighty useless ! [[ "NUM" HEX: 1000 ]] ! [[ "CAPS" HEX: 2000 ]] [[ "MODE" HEX: 4000 ]] ] modifiers set SYMBOL: keysyms {{ ! The keyboard syms have been cleverly chosen to map to ASCII [[ 0 "UNKNOWN" ]] ! [[ 0 "FIRST" ]] [[ 8 "BACKSPACE" ]] [[ 9 "TAB" ]] [[ 12 "CLEAR" ]] [[ 13 "RETURN" ]] [[ 19 "PAUSE" ]] [[ 27 "ESCAPE" ]] [[ 32 "SPACE" ]] [[ 33 "EXCLAIM" ]] [[ 34 "QUOTEDBL" ]] [[ 35 "HASH" ]] [[ 36 "DOLLAR" ]] [[ 38 "AMPERSAND" ]] [[ 39 "QUOTE" ]] [[ 40 "LEFTPAREN" ]] [[ 41 "RIGHTPAREN" ]] [[ 42 "ASTERISK" ]] [[ 43 "PLUS" ]] [[ 44 "COMMA" ]] [[ 45 "MINUS" ]] [[ 46 "PERIOD" ]] [[ 47 "SLASH" ]] [[ 48 0 ]] [[ 49 1 ]] [[ 50 2 ]] [[ 51 3 ]] [[ 52 4 ]] [[ 53 5 ]] [[ 54 6 ]] [[ 55 7 ]] [[ 56 8 ]] [[ 57 9 ]] [[ 58 "COLON" ]] [[ 59 "SEMICOLON" ]] [[ 60 "LESS" ]] [[ 61 "EQUALS" ]] [[ 62 "GREATER" ]] [[ 63 "QUESTION" ]] [[ 64 "AT" ]] ! Skip uppercase letters [[ 91 "LEFTBRACKET" ]] [[ 92 "BACKSLASH" ]] [[ 93 "RIGHTBRACKET" ]] [[ 94 "CARET" ]] [[ 95 "UNDERSCORE" ]] [[ 96 "BACKQUOTE" ]] [[ 97 "a" ]] [[ 98 "b" ]] [[ 99 "c" ]] [[ 100 "d" ]] [[ 101 "e" ]] [[ 102 "f" ]] [[ 103 "g" ]] [[ 104 "h" ]] [[ 105 "i" ]] [[ 106 "j" ]] [[ 107 "k" ]] [[ 108 "l" ]] [[ 109 "m" ]] [[ 110 "n" ]] [[ 111 "o" ]] [[ 112 "p" ]] [[ 113 "q" ]] [[ 114 "r" ]] [[ 115 "s" ]] [[ 116 "t" ]] [[ 117 "u" ]] [[ 118 "v" ]] [[ 119 "w" ]] [[ 120 "x" ]] [[ 121 "y" ]] [[ 122 "z" ]] [[ 127 "DELETE" ]] ! End of ASCII mapped keysyms ! International keyboard syms [[ 160 "WORLD_0" ]] ! 0xA0 [[ 161 "WORLD_1" ]] [[ 162 "WORLD_2" ]] [[ 163 "WORLD_3" ]] [[ 164 "WORLD_4" ]] [[ 165 "WORLD_5" ]] [[ 166 "WORLD_6" ]] [[ 167 "WORLD_7" ]] [[ 168 "WORLD_8" ]] [[ 169 "WORLD_9" ]] [[ 170 "WORLD_10" ]] [[ 171 "WORLD_11" ]] [[ 172 "WORLD_12" ]] [[ 173 "WORLD_13" ]] [[ 174 "WORLD_14" ]] [[ 175 "WORLD_15" ]] [[ 176 "WORLD_16" ]] [[ 177 "WORLD_17" ]] [[ 178 "WORLD_18" ]] [[ 179 "WORLD_19" ]] [[ 180 "WORLD_20" ]] [[ 181 "WORLD_21" ]] [[ 182 "WORLD_22" ]] [[ 183 "WORLD_23" ]] [[ 184 "WORLD_24" ]] [[ 185 "WORLD_25" ]] [[ 186 "WORLD_26" ]] [[ 187 "WORLD_27" ]] [[ 188 "WORLD_28" ]] [[ 189 "WORLD_29" ]] [[ 190 "WORLD_30" ]] [[ 191 "WORLD_31" ]] [[ 192 "WORLD_32" ]] [[ 193 "WORLD_33" ]] [[ 194 "WORLD_34" ]] [[ 195 "WORLD_35" ]] [[ 196 "WORLD_36" ]] [[ 197 "WORLD_37" ]] [[ 198 "WORLD_38" ]] [[ 199 "WORLD_39" ]] [[ 200 "WORLD_40" ]] [[ 201 "WORLD_41" ]] [[ 202 "WORLD_42" ]] [[ 203 "WORLD_43" ]] [[ 204 "WORLD_44" ]] [[ 205 "WORLD_45" ]] [[ 206 "WORLD_46" ]] [[ 207 "WORLD_47" ]] [[ 208 "WORLD_48" ]] [[ 209 "WORLD_49" ]] [[ 210 "WORLD_50" ]] [[ 211 "WORLD_51" ]] [[ 212 "WORLD_52" ]] [[ 213 "WORLD_53" ]] [[ 214 "WORLD_54" ]] [[ 215 "WORLD_55" ]] [[ 216 "WORLD_56" ]] [[ 217 "WORLD_57" ]] [[ 218 "WORLD_58" ]] [[ 219 "WORLD_59" ]] [[ 220 "WORLD_60" ]] [[ 221 "WORLD_61" ]] [[ 222 "WORLD_62" ]] [[ 223 "WORLD_63" ]] [[ 224 "WORLD_64" ]] [[ 225 "WORLD_65" ]] [[ 226 "WORLD_66" ]] [[ 227 "WORLD_67" ]] [[ 228 "WORLD_68" ]] [[ 229 "WORLD_69" ]] [[ 230 "WORLD_70" ]] [[ 231 "WORLD_71" ]] [[ 232 "WORLD_72" ]] [[ 233 "WORLD_73" ]] [[ 234 "WORLD_74" ]] [[ 235 "WORLD_75" ]] [[ 236 "WORLD_76" ]] [[ 237 "WORLD_77" ]] [[ 238 "WORLD_78" ]] [[ 239 "WORLD_79" ]] [[ 240 "WORLD_80" ]] [[ 241 "WORLD_81" ]] [[ 242 "WORLD_82" ]] [[ 243 "WORLD_83" ]] [[ 244 "WORLD_84" ]] [[ 245 "WORLD_85" ]] [[ 246 "WORLD_86" ]] [[ 247 "WORLD_87" ]] [[ 248 "WORLD_88" ]] [[ 249 "WORLD_89" ]] [[ 250 "WORLD_90" ]] [[ 251 "WORLD_91" ]] [[ 252 "WORLD_92" ]] [[ 253 "WORLD_93" ]] [[ 254 "WORLD_94" ]] [[ 255 "WORLD_95" ]] ! 0xFF ! Numeric keypad [[ 256 "KP0" ]] [[ 257 "KP1" ]] [[ 258 "KP2" ]] [[ 259 "KP3" ]] [[ 260 "KP4" ]] [[ 261 "KP5" ]] [[ 262 "KP6" ]] [[ 263 "KP7" ]] [[ 264 "KP8" ]] [[ 265 "KP9" ]] [[ 266 "KP_PERIOD" ]] [[ 267 "KP_DIVIDE" ]] [[ 268 "KP_MULTIPLY" ]] [[ 269 "KP_MINUS" ]] [[ 270 "KP_PLUS" ]] [[ 271 "KP_ENTER" ]] [[ 272 "KP_EQUALS" ]] ! Arrows + Home/End pad [[ 273 "UP" ]] [[ 274 "DOWN" ]] [[ 275 "RIGHT" ]] [[ 276 "LEFT" ]] [[ 277 "INSERT" ]] [[ 278 "HOME" ]] [[ 279 "END" ]] [[ 280 "PAGEUP" ]] [[ 281 "PAGEDOWN" ]] ! Function keys [[ 282 "F1" ]] [[ 283 "F2" ]] [[ 284 "F3" ]] [[ 285 "F4" ]] [[ 286 "F5" ]] [[ 287 "F6" ]] [[ 288 "F7" ]] [[ 289 "F8" ]] [[ 290 "F9" ]] [[ 291 "F10" ]] [[ 292 "F11" ]] [[ 293 "F12" ]] [[ 294 "F13" ]] [[ 295 "F14" ]] [[ 296 "F15" ]] ! Key state modifier keys [[ 300 "NUMLOCK" ]] [[ 301 "CAPSLOCK" ]] [[ 302 "SCROLLOCK" ]] [[ 303 "RSHIFT" ]] [[ 304 "LSHIFT" ]] [[ 305 "RCTRL" ]] [[ 306 "LCTRL" ]] [[ 307 "RALT" ]] [[ 308 "LALT" ]] [[ 309 "RMETA" ]] [[ 310 "LMETA" ]] [[ 311 "LSUPER" ]] ! Left "Windows" key [[ 312 "RSUPER" ]] ! Right "Windows" key [[ 313 "MODE" ]] ! "Alt Gr" key [[ 314 "COMPOSE" ]] ! Multi-key compose key ! Miscellaneous function keys [[ 315 "HELP" ]] [[ 316 "PRINT" ]] [[ 317 "SYSREQ" ]] [[ 318 "BREAK" ]] [[ 319 "MENU" ]] [[ 320 "POWER" ]] ! Power Macintosh power key [[ 321 "EURO" ]] ! Some european keyboards [[ 322 "UNDO" ]] ! Atari keyboard has Undo ! Add any other keys here }} keysyms set