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 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313
|
#include "SDL.h"
#ifdef main
#undef main
#endif
-----------------------------------------------------------------------------
-- |
-- Module : Graphics.UI.SDL.Keysym
-- Copyright : (c) David Himmelstrup 2005
-- License : BSD-like
--
-- Maintainer : lemmih@gmail.com
-- Stability : provisional
-- Portability : portable
--
-----------------------------------------------------------------------------
module Graphics.UI.SDL.Keysym where
import Foreign (Word16, Word32,
Storable(poke, sizeOf, alignment, peekByteOff, pokeByteOff, peek))
import Data.Char (chr, ord)
import Prelude hiding (Enum(..))
import Graphics.UI.SDL.Utilities (Enum(..), toBitmask, fromBitmask)
data Keysym
= Keysym
{ symKey :: SDLKey,
symModifiers :: [Modifier],
symUnicode :: Char}
deriving (Show,Eq)
instance Storable Keysym where
sizeOf = const #{size SDL_keysym}
alignment = const 4
poke ptr (Keysym key mods unicode)
= do #{poke SDL_keysym, sym} ptr (fromEnum key)
#{poke SDL_keysym, mod} ptr (toBitmask mods)
#{poke SDL_keysym, unicode} ptr (fromIntegral (ord unicode) :: Word16)
peek ptr
= do sym <- #{peek SDL_keysym, sym} ptr
mods <- #{peek SDL_keysym, mod} ptr
uni <- #{peek SDL_keysym, unicode} ptr
return $! Keysym (toEnum sym) (fromBitmask mods) (chr $ fromIntegral (uni::Word16))
data Modifier = KeyModNone
| KeyModLeftShift
| KeyModRightShift
| KeyModLeftCtrl
| KeyModRightCtrl
| KeyModLeftAlt
| KeyModRightAlt
| KeyModLeftMeta
| KeyModRightMeta
| KeyModNum
| KeyModCaps
| KeyModMode
| KeyModCtrl
| KeyModShift
| KeyModAlt
| KeyModMeta
deriving (Eq, Ord, Show)
instance Bounded Modifier where
minBound = KeyModNone
maxBound = KeyModMode
instance Enum Modifier #{type SDLMod} where
fromEnum KeyModNone = 0
fromEnum KeyModLeftShift = 1
fromEnum KeyModRightShift = 2
fromEnum KeyModLeftCtrl = 64
fromEnum KeyModRightCtrl = 128
fromEnum KeyModLeftAlt = 256
fromEnum KeyModRightAlt = 512
fromEnum KeyModLeftMeta = 1024
fromEnum KeyModRightMeta = 2048
fromEnum KeyModNum = 4096
fromEnum KeyModCaps = 8192
fromEnum KeyModMode = 16384
fromEnum KeyModCtrl = 192
fromEnum KeyModShift = 3
fromEnum KeyModAlt = 768
fromEnum KeyModMeta = 3072
toEnum 0 = KeyModNone
toEnum 1 = KeyModLeftShift
toEnum 2 = KeyModRightShift
toEnum 64 = KeyModLeftCtrl
toEnum 128 = KeyModRightCtrl
toEnum 256 = KeyModLeftAlt
toEnum 512 = KeyModRightAlt
toEnum 1024 = KeyModLeftMeta
toEnum 2048 = KeyModRightMeta
toEnum 4096 = KeyModNum
toEnum 8192 = KeyModCaps
toEnum 16384 = KeyModMode
toEnum 192 = KeyModCtrl
toEnum 3 = KeyModShift
toEnum 768 = KeyModAlt
toEnum 3072 = KeyModMeta
toEnum _ = error "Graphics.UI.SDL.Keysym.toEnum: bad argument"
succ KeyModNone = KeyModLeftShift
succ KeyModLeftShift = KeyModRightShift
succ KeyModRightShift = KeyModLeftCtrl
succ KeyModLeftCtrl = KeyModRightCtrl
succ KeyModRightCtrl = KeyModLeftAlt
succ KeyModLeftAlt = KeyModRightAlt
succ KeyModRightAlt = KeyModLeftMeta
succ KeyModLeftMeta = KeyModRightMeta
succ KeyModRightMeta = KeyModNum
succ KeyModNum = KeyModCaps
succ KeyModCaps = KeyModMode
succ KeyModMode = KeyModCtrl
succ KeyModCtrl = KeyModShift
succ KeyModShift = KeyModAlt
succ KeyModAlt = KeyModMeta
succ _ = error "Graphics.UI.SDL.Keysym.succ: bad argument"
pred KeyModLeftShift = KeyModNone
pred KeyModRightShift = KeyModLeftShift
pred KeyModLeftCtrl = KeyModRightShift
pred KeyModRightCtrl = KeyModLeftCtrl
pred KeyModLeftAlt = KeyModRightCtrl
pred KeyModRightAlt = KeyModLeftAlt
pred KeyModLeftMeta = KeyModRightAlt
pred KeyModRightMeta = KeyModLeftMeta
pred KeyModNum = KeyModRightMeta
pred KeyModCaps = KeyModNum
pred KeyModMode = KeyModCaps
pred KeyModCtrl = KeyModMode
pred KeyModShift = KeyModCtrl
pred KeyModAlt = KeyModShift
pred KeyModMeta = KeyModAlt
pred _ = error "Graphics.UI.SDL.Keysym.pred: bad argument"
enumFromTo x y | x > y = []
| x == y = [y]
| True = x : enumFromTo (succ x) y
data SDLKey = SDLK_UNKNOWN
| SDLK_FIRST
| SDLK_BACKSPACE
| SDLK_TAB
| SDLK_CLEAR
| SDLK_RETURN
| SDLK_PAUSE
| SDLK_ESCAPE
| SDLK_SPACE
| SDLK_EXCLAIM
| SDLK_QUOTEDBL
| SDLK_HASH
| SDLK_DOLLAR
| SDLK_AMPERSAND
| SDLK_QUOTE
| SDLK_LEFTPAREN
| SDLK_RIGHTPAREN
| SDLK_ASTERISK
| SDLK_PLUS
| SDLK_COMMA
| SDLK_MINUS
| SDLK_PERIOD
| SDLK_SLASH
| SDLK_0
| SDLK_1
| SDLK_2
| SDLK_3
| SDLK_4
| SDLK_5
| SDLK_6
| SDLK_7
| SDLK_8
| SDLK_9
| SDLK_COLON
| SDLK_SEMICOLON
| SDLK_LESS
| SDLK_EQUALS
| SDLK_GREATER
| SDLK_QUESTION
| SDLK_AT
| SDLK_LEFTBRACKET
| SDLK_BACKSLASH
| SDLK_RIGHTBRACKET
| SDLK_CARET
| SDLK_UNDERSCORE
| SDLK_BACKQUOTE
| SDLK_a
| SDLK_b
| SDLK_c
| SDLK_d
| SDLK_e
| SDLK_f
| SDLK_g
| SDLK_h
| SDLK_i
| SDLK_j
| SDLK_k
| SDLK_l
| SDLK_m
| SDLK_n
| SDLK_o
| SDLK_p
| SDLK_q
| SDLK_r
| SDLK_s
| SDLK_t
| SDLK_u
| SDLK_v
| SDLK_w
| SDLK_x
| SDLK_y
| SDLK_z
| SDLK_DELETE
| SDLK_WORLD_0
| SDLK_WORLD_1
| SDLK_WORLD_2
| SDLK_WORLD_3
| SDLK_WORLD_4
| SDLK_WORLD_5
| SDLK_WORLD_6
| SDLK_WORLD_7
| SDLK_WORLD_8
| SDLK_WORLD_9
| SDLK_WORLD_10
| SDLK_WORLD_11
| SDLK_WORLD_12
| SDLK_WORLD_13
| SDLK_WORLD_14
| SDLK_WORLD_15
| SDLK_WORLD_16
| SDLK_WORLD_17
| SDLK_WORLD_18
| SDLK_WORLD_19
| SDLK_WORLD_20
| SDLK_WORLD_21
| SDLK_WORLD_22
| SDLK_WORLD_23
| SDLK_WORLD_24
| SDLK_WORLD_25
| SDLK_WORLD_26
| SDLK_WORLD_27
| SDLK_WORLD_28
| SDLK_WORLD_29
| SDLK_WORLD_30
| SDLK_WORLD_31
| SDLK_WORLD_32
| SDLK_WORLD_33
| SDLK_WORLD_34
| SDLK_WORLD_35
| SDLK_WORLD_36
| SDLK_WORLD_37
| SDLK_WORLD_38
| SDLK_WORLD_39
| SDLK_WORLD_40
| SDLK_WORLD_41
| SDLK_WORLD_42
| SDLK_WORLD_43
| SDLK_WORLD_44
| SDLK_WORLD_45
| SDLK_WORLD_46
| SDLK_WORLD_47
| SDLK_WORLD_48
| SDLK_WORLD_49
| SDLK_WORLD_50
| SDLK_WORLD_51
| SDLK_WORLD_52
| SDLK_WORLD_53
| SDLK_WORLD_54
| SDLK_WORLD_55
| SDLK_WORLD_56
| SDLK_WORLD_57
| SDLK_WORLD_58
| SDLK_WORLD_59
| SDLK_WORLD_60
| SDLK_WORLD_61
| SDLK_WORLD_62
| SDLK_WORLD_63
| SDLK_WORLD_64
| SDLK_WORLD_65
| SDLK_WORLD_66
| SDLK_WORLD_67
| SDLK_WORLD_68
| SDLK_WORLD_69
| SDLK_WORLD_70
| SDLK_WORLD_71
| SDLK_WORLD_72
| SDLK_WORLD_73
| SDLK_WORLD_74
| SDLK_WORLD_75
| SDLK_WORLD_76
| SDLK_WORLD_77
| SDLK_WORLD_78
| SDLK_WORLD_79
| SDLK_WORLD_80
| SDLK_WORLD_81
| SDLK_WORLD_82
| SDLK_WORLD_83
| SDLK_WORLD_84
| SDLK_WORLD_85
| SDLK_WORLD_86
| SDLK_WORLD_87
| SDLK_WORLD_88
| SDLK_WORLD_89
| SDLK_WORLD_90
| SDLK_WORLD_91
| SDLK_WORLD_92
| SDLK_WORLD_93
| SDLK_WORLD_94
| SDLK_WORLD_95
| SDLK_KP0
| SDLK_KP1
| SDLK_KP2
| SDLK_KP3
| SDLK_KP4
| SDLK_KP5
| SDLK_KP6
| SDLK_KP7
| SDLK_KP8
| SDLK_KP9
| SDLK_KP_PERIOD
| SDLK_KP_DIVIDE
| SDLK_KP_MULTIPLY
| SDLK_KP_MINUS
| SDLK_KP_PLUS
| SDLK_KP_ENTER
| SDLK_KP_EQUALS
| SDLK_UP
| SDLK_DOWN
| SDLK_RIGHT
| SDLK_LEFT
| SDLK_INSERT
| SDLK_HOME
| SDLK_END
| SDLK_PAGEUP
| SDLK_PAGEDOWN
| SDLK_F1
| SDLK_F2
| SDLK_F3
| SDLK_F4
| SDLK_F5
| SDLK_F6
| SDLK_F7
| SDLK_F8
| SDLK_F9
| SDLK_F10
| SDLK_F11
| SDLK_F12
| SDLK_F13
| SDLK_F14
| SDLK_F15
| SDLK_NUMLOCK
| SDLK_CAPSLOCK
| SDLK_SCROLLOCK
| SDLK_RSHIFT
| SDLK_LSHIFT
| SDLK_RCTRL
| SDLK_LCTRL
| SDLK_RALT
| SDLK_LALT
| SDLK_RMETA
| SDLK_LMETA
| SDLK_LSUPER
| SDLK_RSUPER
| SDLK_MODE
| SDLK_COMPOSE
| SDLK_HELP
| SDLK_PRINT
| SDLK_SYSREQ
| SDLK_BREAK
| SDLK_MENU
| SDLK_POWER
| SDLK_EURO
| SDLK_UNDO
| SDLK_LAST
deriving (Eq, Ord, Show)
instance Bounded SDLKey where
minBound = SDLK_UNKNOWN
maxBound = SDLK_LAST
instance Enum SDLKey #{type SDLMod} where
fromEnum SDLK_UNKNOWN = 0
fromEnum SDLK_FIRST = 0
fromEnum SDLK_BACKSPACE = 8
fromEnum SDLK_TAB = 9
fromEnum SDLK_CLEAR = 12
fromEnum SDLK_RETURN = 13
fromEnum SDLK_PAUSE = 19
fromEnum SDLK_ESCAPE = 27
fromEnum SDLK_SPACE = 32
fromEnum SDLK_EXCLAIM = 33
fromEnum SDLK_QUOTEDBL = 34
fromEnum SDLK_HASH = 35
fromEnum SDLK_DOLLAR = 36
fromEnum SDLK_AMPERSAND = 38
fromEnum SDLK_QUOTE = 39
fromEnum SDLK_LEFTPAREN = 40
fromEnum SDLK_RIGHTPAREN = 41
fromEnum SDLK_ASTERISK = 42
fromEnum SDLK_PLUS = 43
fromEnum SDLK_COMMA = 44
fromEnum SDLK_MINUS = 45
fromEnum SDLK_PERIOD = 46
fromEnum SDLK_SLASH = 47
fromEnum SDLK_0 = 48
fromEnum SDLK_1 = 49
fromEnum SDLK_2 = 50
fromEnum SDLK_3 = 51
fromEnum SDLK_4 = 52
fromEnum SDLK_5 = 53
fromEnum SDLK_6 = 54
fromEnum SDLK_7 = 55
fromEnum SDLK_8 = 56
fromEnum SDLK_9 = 57
fromEnum SDLK_COLON = 58
fromEnum SDLK_SEMICOLON = 59
fromEnum SDLK_LESS = 60
fromEnum SDLK_EQUALS = 61
fromEnum SDLK_GREATER = 62
fromEnum SDLK_QUESTION = 63
fromEnum SDLK_AT = 64
fromEnum SDLK_LEFTBRACKET = 91
fromEnum SDLK_BACKSLASH = 92
fromEnum SDLK_RIGHTBRACKET = 93
fromEnum SDLK_CARET = 94
fromEnum SDLK_UNDERSCORE = 95
fromEnum SDLK_BACKQUOTE = 96
fromEnum SDLK_a = 97
fromEnum SDLK_b = 98
fromEnum SDLK_c = 99
fromEnum SDLK_d = 100
fromEnum SDLK_e = 101
fromEnum SDLK_f = 102
fromEnum SDLK_g = 103
fromEnum SDLK_h = 104
fromEnum SDLK_i = 105
fromEnum SDLK_j = 106
fromEnum SDLK_k = 107
fromEnum SDLK_l = 108
fromEnum SDLK_m = 109
fromEnum SDLK_n = 110
fromEnum SDLK_o = 111
fromEnum SDLK_p = 112
fromEnum SDLK_q = 113
fromEnum SDLK_r = 114
fromEnum SDLK_s = 115
fromEnum SDLK_t = 116
fromEnum SDLK_u = 117
fromEnum SDLK_v = 118
fromEnum SDLK_w = 119
fromEnum SDLK_x = 120
fromEnum SDLK_y = 121
fromEnum SDLK_z = 122
fromEnum SDLK_DELETE = 127
fromEnum SDLK_WORLD_0 = 160
fromEnum SDLK_WORLD_1 = 161
fromEnum SDLK_WORLD_2 = 162
fromEnum SDLK_WORLD_3 = 163
fromEnum SDLK_WORLD_4 = 164
fromEnum SDLK_WORLD_5 = 165
fromEnum SDLK_WORLD_6 = 166
fromEnum SDLK_WORLD_7 = 167
fromEnum SDLK_WORLD_8 = 168
fromEnum SDLK_WORLD_9 = 169
fromEnum SDLK_WORLD_10 = 170
fromEnum SDLK_WORLD_11 = 171
fromEnum SDLK_WORLD_12 = 172
fromEnum SDLK_WORLD_13 = 173
fromEnum SDLK_WORLD_14 = 174
fromEnum SDLK_WORLD_15 = 175
fromEnum SDLK_WORLD_16 = 176
fromEnum SDLK_WORLD_17 = 177
fromEnum SDLK_WORLD_18 = 178
fromEnum SDLK_WORLD_19 = 179
fromEnum SDLK_WORLD_20 = 180
fromEnum SDLK_WORLD_21 = 181
fromEnum SDLK_WORLD_22 = 182
fromEnum SDLK_WORLD_23 = 183
fromEnum SDLK_WORLD_24 = 184
fromEnum SDLK_WORLD_25 = 185
fromEnum SDLK_WORLD_26 = 186
fromEnum SDLK_WORLD_27 = 187
fromEnum SDLK_WORLD_28 = 188
fromEnum SDLK_WORLD_29 = 189
fromEnum SDLK_WORLD_30 = 190
fromEnum SDLK_WORLD_31 = 191
fromEnum SDLK_WORLD_32 = 192
fromEnum SDLK_WORLD_33 = 193
fromEnum SDLK_WORLD_34 = 194
fromEnum SDLK_WORLD_35 = 195
fromEnum SDLK_WORLD_36 = 196
fromEnum SDLK_WORLD_37 = 197
fromEnum SDLK_WORLD_38 = 198
fromEnum SDLK_WORLD_39 = 199
fromEnum SDLK_WORLD_40 = 200
fromEnum SDLK_WORLD_41 = 201
fromEnum SDLK_WORLD_42 = 202
fromEnum SDLK_WORLD_43 = 203
fromEnum SDLK_WORLD_44 = 204
fromEnum SDLK_WORLD_45 = 205
fromEnum SDLK_WORLD_46 = 206
fromEnum SDLK_WORLD_47 = 207
fromEnum SDLK_WORLD_48 = 208
fromEnum SDLK_WORLD_49 = 209
fromEnum SDLK_WORLD_50 = 210
fromEnum SDLK_WORLD_51 = 211
fromEnum SDLK_WORLD_52 = 212
fromEnum SDLK_WORLD_53 = 213
fromEnum SDLK_WORLD_54 = 214
fromEnum SDLK_WORLD_55 = 215
fromEnum SDLK_WORLD_56 = 216
fromEnum SDLK_WORLD_57 = 217
fromEnum SDLK_WORLD_58 = 218
fromEnum SDLK_WORLD_59 = 219
fromEnum SDLK_WORLD_60 = 220
fromEnum SDLK_WORLD_61 = 221
fromEnum SDLK_WORLD_62 = 222
fromEnum SDLK_WORLD_63 = 223
fromEnum SDLK_WORLD_64 = 224
fromEnum SDLK_WORLD_65 = 225
fromEnum SDLK_WORLD_66 = 226
fromEnum SDLK_WORLD_67 = 227
fromEnum SDLK_WORLD_68 = 228
fromEnum SDLK_WORLD_69 = 229
fromEnum SDLK_WORLD_70 = 230
fromEnum SDLK_WORLD_71 = 231
fromEnum SDLK_WORLD_72 = 232
fromEnum SDLK_WORLD_73 = 233
fromEnum SDLK_WORLD_74 = 234
fromEnum SDLK_WORLD_75 = 235
fromEnum SDLK_WORLD_76 = 236
fromEnum SDLK_WORLD_77 = 237
fromEnum SDLK_WORLD_78 = 238
fromEnum SDLK_WORLD_79 = 239
fromEnum SDLK_WORLD_80 = 240
fromEnum SDLK_WORLD_81 = 241
fromEnum SDLK_WORLD_82 = 242
fromEnum SDLK_WORLD_83 = 243
fromEnum SDLK_WORLD_84 = 244
fromEnum SDLK_WORLD_85 = 245
fromEnum SDLK_WORLD_86 = 246
fromEnum SDLK_WORLD_87 = 247
fromEnum SDLK_WORLD_88 = 248
fromEnum SDLK_WORLD_89 = 249
fromEnum SDLK_WORLD_90 = 250
fromEnum SDLK_WORLD_91 = 251
fromEnum SDLK_WORLD_92 = 252
fromEnum SDLK_WORLD_93 = 253
fromEnum SDLK_WORLD_94 = 254
fromEnum SDLK_WORLD_95 = 255
fromEnum SDLK_KP0 = 256
fromEnum SDLK_KP1 = 257
fromEnum SDLK_KP2 = 258
fromEnum SDLK_KP3 = 259
fromEnum SDLK_KP4 = 260
fromEnum SDLK_KP5 = 261
fromEnum SDLK_KP6 = 262
fromEnum SDLK_KP7 = 263
fromEnum SDLK_KP8 = 264
fromEnum SDLK_KP9 = 265
fromEnum SDLK_KP_PERIOD = 266
fromEnum SDLK_KP_DIVIDE = 267
fromEnum SDLK_KP_MULTIPLY = 268
fromEnum SDLK_KP_MINUS = 269
fromEnum SDLK_KP_PLUS = 270
fromEnum SDLK_KP_ENTER = 271
fromEnum SDLK_KP_EQUALS = 272
fromEnum SDLK_UP = 273
fromEnum SDLK_DOWN = 274
fromEnum SDLK_RIGHT = 275
fromEnum SDLK_LEFT = 276
fromEnum SDLK_INSERT = 277
fromEnum SDLK_HOME = 278
fromEnum SDLK_END = 279
fromEnum SDLK_PAGEUP = 280
fromEnum SDLK_PAGEDOWN = 281
fromEnum SDLK_F1 = 282
fromEnum SDLK_F2 = 283
fromEnum SDLK_F3 = 284
fromEnum SDLK_F4 = 285
fromEnum SDLK_F5 = 286
fromEnum SDLK_F6 = 287
fromEnum SDLK_F7 = 288
fromEnum SDLK_F8 = 289
fromEnum SDLK_F9 = 290
fromEnum SDLK_F10 = 291
fromEnum SDLK_F11 = 292
fromEnum SDLK_F12 = 293
fromEnum SDLK_F13 = 294
fromEnum SDLK_F14 = 295
fromEnum SDLK_F15 = 296
fromEnum SDLK_NUMLOCK = 300
fromEnum SDLK_CAPSLOCK = 301
fromEnum SDLK_SCROLLOCK = 302
fromEnum SDLK_RSHIFT = 303
fromEnum SDLK_LSHIFT = 304
fromEnum SDLK_RCTRL = 305
fromEnum SDLK_LCTRL = 306
fromEnum SDLK_RALT = 307
fromEnum SDLK_LALT = 308
fromEnum SDLK_RMETA = 309
fromEnum SDLK_LMETA = 310
fromEnum SDLK_LSUPER = 311
fromEnum SDLK_RSUPER = 312
fromEnum SDLK_MODE = 313
fromEnum SDLK_COMPOSE = 314
fromEnum SDLK_HELP = 315
fromEnum SDLK_PRINT = 316
fromEnum SDLK_SYSREQ = 317
fromEnum SDLK_BREAK = 318
fromEnum SDLK_MENU = 319
fromEnum SDLK_POWER = 320
fromEnum SDLK_EURO = 321
fromEnum SDLK_UNDO = 322
fromEnum SDLK_LAST = 323
toEnum 0 = SDLK_UNKNOWN
toEnum 8 = SDLK_BACKSPACE
toEnum 9 = SDLK_TAB
toEnum 12 = SDLK_CLEAR
toEnum 13 = SDLK_RETURN
toEnum 19 = SDLK_PAUSE
toEnum 27 = SDLK_ESCAPE
toEnum 32 = SDLK_SPACE
toEnum 33 = SDLK_EXCLAIM
toEnum 34 = SDLK_QUOTEDBL
toEnum 35 = SDLK_HASH
toEnum 36 = SDLK_DOLLAR
toEnum 38 = SDLK_AMPERSAND
toEnum 39 = SDLK_QUOTE
toEnum 40 = SDLK_LEFTPAREN
toEnum 41 = SDLK_RIGHTPAREN
toEnum 42 = SDLK_ASTERISK
toEnum 43 = SDLK_PLUS
toEnum 44 = SDLK_COMMA
toEnum 45 = SDLK_MINUS
toEnum 46 = SDLK_PERIOD
toEnum 47 = SDLK_SLASH
toEnum 48 = SDLK_0
toEnum 49 = SDLK_1
toEnum 50 = SDLK_2
toEnum 51 = SDLK_3
toEnum 52 = SDLK_4
toEnum 53 = SDLK_5
toEnum 54 = SDLK_6
toEnum 55 = SDLK_7
toEnum 56 = SDLK_8
toEnum 57 = SDLK_9
toEnum 58 = SDLK_COLON
toEnum 59 = SDLK_SEMICOLON
toEnum 60 = SDLK_LESS
toEnum 61 = SDLK_EQUALS
toEnum 62 = SDLK_GREATER
toEnum 63 = SDLK_QUESTION
toEnum 64 = SDLK_AT
toEnum 91 = SDLK_LEFTBRACKET
toEnum 92 = SDLK_BACKSLASH
toEnum 93 = SDLK_RIGHTBRACKET
toEnum 94 = SDLK_CARET
toEnum 95 = SDLK_UNDERSCORE
toEnum 96 = SDLK_BACKQUOTE
toEnum 97 = SDLK_a
toEnum 98 = SDLK_b
toEnum 99 = SDLK_c
toEnum 100 = SDLK_d
toEnum 101 = SDLK_e
toEnum 102 = SDLK_f
toEnum 103 = SDLK_g
toEnum 104 = SDLK_h
toEnum 105 = SDLK_i
toEnum 106 = SDLK_j
toEnum 107 = SDLK_k
toEnum 108 = SDLK_l
toEnum 109 = SDLK_m
toEnum 110 = SDLK_n
toEnum 111 = SDLK_o
toEnum 112 = SDLK_p
toEnum 113 = SDLK_q
toEnum 114 = SDLK_r
toEnum 115 = SDLK_s
toEnum 116 = SDLK_t
toEnum 117 = SDLK_u
toEnum 118 = SDLK_v
toEnum 119 = SDLK_w
toEnum 120 = SDLK_x
toEnum 121 = SDLK_y
toEnum 122 = SDLK_z
toEnum 127 = SDLK_DELETE
toEnum 160 = SDLK_WORLD_0
toEnum 161 = SDLK_WORLD_1
toEnum 162 = SDLK_WORLD_2
toEnum 163 = SDLK_WORLD_3
toEnum 164 = SDLK_WORLD_4
toEnum 165 = SDLK_WORLD_5
toEnum 166 = SDLK_WORLD_6
toEnum 167 = SDLK_WORLD_7
toEnum 168 = SDLK_WORLD_8
toEnum 169 = SDLK_WORLD_9
toEnum 170 = SDLK_WORLD_10
toEnum 171 = SDLK_WORLD_11
toEnum 172 = SDLK_WORLD_12
toEnum 173 = SDLK_WORLD_13
toEnum 174 = SDLK_WORLD_14
toEnum 175 = SDLK_WORLD_15
toEnum 176 = SDLK_WORLD_16
toEnum 177 = SDLK_WORLD_17
toEnum 178 = SDLK_WORLD_18
toEnum 179 = SDLK_WORLD_19
toEnum 180 = SDLK_WORLD_20
toEnum 181 = SDLK_WORLD_21
toEnum 182 = SDLK_WORLD_22
toEnum 183 = SDLK_WORLD_23
toEnum 184 = SDLK_WORLD_24
toEnum 185 = SDLK_WORLD_25
toEnum 186 = SDLK_WORLD_26
toEnum 187 = SDLK_WORLD_27
toEnum 188 = SDLK_WORLD_28
toEnum 189 = SDLK_WORLD_29
toEnum 190 = SDLK_WORLD_30
toEnum 191 = SDLK_WORLD_31
toEnum 192 = SDLK_WORLD_32
toEnum 193 = SDLK_WORLD_33
toEnum 194 = SDLK_WORLD_34
toEnum 195 = SDLK_WORLD_35
toEnum 196 = SDLK_WORLD_36
toEnum 197 = SDLK_WORLD_37
toEnum 198 = SDLK_WORLD_38
toEnum 199 = SDLK_WORLD_39
toEnum 200 = SDLK_WORLD_40
toEnum 201 = SDLK_WORLD_41
toEnum 202 = SDLK_WORLD_42
toEnum 203 = SDLK_WORLD_43
toEnum 204 = SDLK_WORLD_44
toEnum 205 = SDLK_WORLD_45
toEnum 206 = SDLK_WORLD_46
toEnum 207 = SDLK_WORLD_47
toEnum 208 = SDLK_WORLD_48
toEnum 209 = SDLK_WORLD_49
toEnum 210 = SDLK_WORLD_50
toEnum 211 = SDLK_WORLD_51
toEnum 212 = SDLK_WORLD_52
toEnum 213 = SDLK_WORLD_53
toEnum 214 = SDLK_WORLD_54
toEnum 215 = SDLK_WORLD_55
toEnum 216 = SDLK_WORLD_56
toEnum 217 = SDLK_WORLD_57
toEnum 218 = SDLK_WORLD_58
toEnum 219 = SDLK_WORLD_59
toEnum 220 = SDLK_WORLD_60
toEnum 221 = SDLK_WORLD_61
toEnum 222 = SDLK_WORLD_62
toEnum 223 = SDLK_WORLD_63
toEnum 224 = SDLK_WORLD_64
toEnum 225 = SDLK_WORLD_65
toEnum 226 = SDLK_WORLD_66
toEnum 227 = SDLK_WORLD_67
toEnum 228 = SDLK_WORLD_68
toEnum 229 = SDLK_WORLD_69
toEnum 230 = SDLK_WORLD_70
toEnum 231 = SDLK_WORLD_71
toEnum 232 = SDLK_WORLD_72
toEnum 233 = SDLK_WORLD_73
toEnum 234 = SDLK_WORLD_74
toEnum 235 = SDLK_WORLD_75
toEnum 236 = SDLK_WORLD_76
toEnum 237 = SDLK_WORLD_77
toEnum 238 = SDLK_WORLD_78
toEnum 239 = SDLK_WORLD_79
toEnum 240 = SDLK_WORLD_80
toEnum 241 = SDLK_WORLD_81
toEnum 242 = SDLK_WORLD_82
toEnum 243 = SDLK_WORLD_83
toEnum 244 = SDLK_WORLD_84
toEnum 245 = SDLK_WORLD_85
toEnum 246 = SDLK_WORLD_86
toEnum 247 = SDLK_WORLD_87
toEnum 248 = SDLK_WORLD_88
toEnum 249 = SDLK_WORLD_89
toEnum 250 = SDLK_WORLD_90
toEnum 251 = SDLK_WORLD_91
toEnum 252 = SDLK_WORLD_92
toEnum 253 = SDLK_WORLD_93
toEnum 254 = SDLK_WORLD_94
toEnum 255 = SDLK_WORLD_95
toEnum 256 = SDLK_KP0
toEnum 257 = SDLK_KP1
toEnum 258 = SDLK_KP2
toEnum 259 = SDLK_KP3
toEnum 260 = SDLK_KP4
toEnum 261 = SDLK_KP5
toEnum 262 = SDLK_KP6
toEnum 263 = SDLK_KP7
toEnum 264 = SDLK_KP8
toEnum 265 = SDLK_KP9
toEnum 266 = SDLK_KP_PERIOD
toEnum 267 = SDLK_KP_DIVIDE
toEnum 268 = SDLK_KP_MULTIPLY
toEnum 269 = SDLK_KP_MINUS
toEnum 270 = SDLK_KP_PLUS
toEnum 271 = SDLK_KP_ENTER
toEnum 272 = SDLK_KP_EQUALS
toEnum 273 = SDLK_UP
toEnum 274 = SDLK_DOWN
toEnum 275 = SDLK_RIGHT
toEnum 276 = SDLK_LEFT
toEnum 277 = SDLK_INSERT
toEnum 278 = SDLK_HOME
toEnum 279 = SDLK_END
toEnum 280 = SDLK_PAGEUP
toEnum 281 = SDLK_PAGEDOWN
toEnum 282 = SDLK_F1
toEnum 283 = SDLK_F2
toEnum 284 = SDLK_F3
toEnum 285 = SDLK_F4
toEnum 286 = SDLK_F5
toEnum 287 = SDLK_F6
toEnum 288 = SDLK_F7
toEnum 289 = SDLK_F8
toEnum 290 = SDLK_F9
toEnum 291 = SDLK_F10
toEnum 292 = SDLK_F11
toEnum 293 = SDLK_F12
toEnum 294 = SDLK_F13
toEnum 295 = SDLK_F14
toEnum 296 = SDLK_F15
toEnum 300 = SDLK_NUMLOCK
toEnum 301 = SDLK_CAPSLOCK
toEnum 302 = SDLK_SCROLLOCK
toEnum 303 = SDLK_RSHIFT
toEnum 304 = SDLK_LSHIFT
toEnum 305 = SDLK_RCTRL
toEnum 306 = SDLK_LCTRL
toEnum 307 = SDLK_RALT
toEnum 308 = SDLK_LALT
toEnum 309 = SDLK_RMETA
toEnum 310 = SDLK_LMETA
toEnum 311 = SDLK_LSUPER
toEnum 312 = SDLK_RSUPER
toEnum 313 = SDLK_MODE
toEnum 314 = SDLK_COMPOSE
toEnum 315 = SDLK_HELP
toEnum 316 = SDLK_PRINT
toEnum 317 = SDLK_SYSREQ
toEnum 318 = SDLK_BREAK
toEnum 319 = SDLK_MENU
toEnum 320 = SDLK_POWER
toEnum 321 = SDLK_EURO
toEnum 322 = SDLK_UNDO
toEnum 323 = SDLK_LAST
toEnum _ = error "Graphics.UI.SDL.Keysym.toEnum: bad argument"
succ SDLK_UNKNOWN = SDLK_FIRST
succ SDLK_FIRST = SDLK_BACKSPACE
succ SDLK_BACKSPACE = SDLK_TAB
succ SDLK_TAB = SDLK_CLEAR
succ SDLK_CLEAR = SDLK_RETURN
succ SDLK_RETURN = SDLK_PAUSE
succ SDLK_PAUSE = SDLK_ESCAPE
succ SDLK_ESCAPE = SDLK_SPACE
succ SDLK_SPACE = SDLK_EXCLAIM
succ SDLK_EXCLAIM = SDLK_QUOTEDBL
succ SDLK_QUOTEDBL = SDLK_HASH
succ SDLK_HASH = SDLK_DOLLAR
succ SDLK_DOLLAR = SDLK_AMPERSAND
succ SDLK_AMPERSAND = SDLK_QUOTE
succ SDLK_QUOTE = SDLK_LEFTPAREN
succ SDLK_LEFTPAREN = SDLK_RIGHTPAREN
succ SDLK_RIGHTPAREN = SDLK_ASTERISK
succ SDLK_ASTERISK = SDLK_PLUS
succ SDLK_PLUS = SDLK_COMMA
succ SDLK_COMMA = SDLK_MINUS
succ SDLK_MINUS = SDLK_PERIOD
succ SDLK_PERIOD = SDLK_SLASH
succ SDLK_SLASH = SDLK_0
succ SDLK_0 = SDLK_1
succ SDLK_1 = SDLK_2
succ SDLK_2 = SDLK_3
succ SDLK_3 = SDLK_4
succ SDLK_4 = SDLK_5
succ SDLK_5 = SDLK_6
succ SDLK_6 = SDLK_7
succ SDLK_7 = SDLK_8
succ SDLK_8 = SDLK_9
succ SDLK_9 = SDLK_COLON
succ SDLK_COLON = SDLK_SEMICOLON
succ SDLK_SEMICOLON = SDLK_LESS
succ SDLK_LESS = SDLK_EQUALS
succ SDLK_EQUALS = SDLK_GREATER
succ SDLK_GREATER = SDLK_QUESTION
succ SDLK_QUESTION = SDLK_AT
succ SDLK_AT = SDLK_LEFTBRACKET
succ SDLK_LEFTBRACKET = SDLK_BACKSLASH
succ SDLK_BACKSLASH = SDLK_RIGHTBRACKET
succ SDLK_RIGHTBRACKET = SDLK_CARET
succ SDLK_CARET = SDLK_UNDERSCORE
succ SDLK_UNDERSCORE = SDLK_BACKQUOTE
succ SDLK_BACKQUOTE = SDLK_a
succ SDLK_a = SDLK_b
succ SDLK_b = SDLK_c
succ SDLK_c = SDLK_d
succ SDLK_d = SDLK_e
succ SDLK_e = SDLK_f
succ SDLK_f = SDLK_g
succ SDLK_g = SDLK_h
succ SDLK_h = SDLK_i
succ SDLK_i = SDLK_j
succ SDLK_j = SDLK_k
succ SDLK_k = SDLK_l
succ SDLK_l = SDLK_m
succ SDLK_m = SDLK_n
succ SDLK_n = SDLK_o
succ SDLK_o = SDLK_p
succ SDLK_p = SDLK_q
succ SDLK_q = SDLK_r
succ SDLK_r = SDLK_s
succ SDLK_s = SDLK_t
succ SDLK_t = SDLK_u
succ SDLK_u = SDLK_v
succ SDLK_v = SDLK_w
succ SDLK_w = SDLK_x
succ SDLK_x = SDLK_y
succ SDLK_y = SDLK_z
succ SDLK_z = SDLK_DELETE
succ SDLK_DELETE = SDLK_WORLD_0
succ SDLK_WORLD_0 = SDLK_WORLD_1
succ SDLK_WORLD_1 = SDLK_WORLD_2
succ SDLK_WORLD_2 = SDLK_WORLD_3
succ SDLK_WORLD_3 = SDLK_WORLD_4
succ SDLK_WORLD_4 = SDLK_WORLD_5
succ SDLK_WORLD_5 = SDLK_WORLD_6
succ SDLK_WORLD_6 = SDLK_WORLD_7
succ SDLK_WORLD_7 = SDLK_WORLD_8
succ SDLK_WORLD_8 = SDLK_WORLD_9
succ SDLK_WORLD_9 = SDLK_WORLD_10
succ SDLK_WORLD_10 = SDLK_WORLD_11
succ SDLK_WORLD_11 = SDLK_WORLD_12
succ SDLK_WORLD_12 = SDLK_WORLD_13
succ SDLK_WORLD_13 = SDLK_WORLD_14
succ SDLK_WORLD_14 = SDLK_WORLD_15
succ SDLK_WORLD_15 = SDLK_WORLD_16
succ SDLK_WORLD_16 = SDLK_WORLD_17
succ SDLK_WORLD_17 = SDLK_WORLD_18
succ SDLK_WORLD_18 = SDLK_WORLD_19
succ SDLK_WORLD_19 = SDLK_WORLD_20
succ SDLK_WORLD_20 = SDLK_WORLD_21
succ SDLK_WORLD_21 = SDLK_WORLD_22
succ SDLK_WORLD_22 = SDLK_WORLD_23
succ SDLK_WORLD_23 = SDLK_WORLD_24
succ SDLK_WORLD_24 = SDLK_WORLD_25
succ SDLK_WORLD_25 = SDLK_WORLD_26
succ SDLK_WORLD_26 = SDLK_WORLD_27
succ SDLK_WORLD_27 = SDLK_WORLD_28
succ SDLK_WORLD_28 = SDLK_WORLD_29
succ SDLK_WORLD_29 = SDLK_WORLD_30
succ SDLK_WORLD_30 = SDLK_WORLD_31
succ SDLK_WORLD_31 = SDLK_WORLD_32
succ SDLK_WORLD_32 = SDLK_WORLD_33
succ SDLK_WORLD_33 = SDLK_WORLD_34
succ SDLK_WORLD_34 = SDLK_WORLD_35
succ SDLK_WORLD_35 = SDLK_WORLD_36
succ SDLK_WORLD_36 = SDLK_WORLD_37
succ SDLK_WORLD_37 = SDLK_WORLD_38
succ SDLK_WORLD_38 = SDLK_WORLD_39
succ SDLK_WORLD_39 = SDLK_WORLD_40
succ SDLK_WORLD_40 = SDLK_WORLD_41
succ SDLK_WORLD_41 = SDLK_WORLD_42
succ SDLK_WORLD_42 = SDLK_WORLD_43
succ SDLK_WORLD_43 = SDLK_WORLD_44
succ SDLK_WORLD_44 = SDLK_WORLD_45
succ SDLK_WORLD_45 = SDLK_WORLD_46
succ SDLK_WORLD_46 = SDLK_WORLD_47
succ SDLK_WORLD_47 = SDLK_WORLD_48
succ SDLK_WORLD_48 = SDLK_WORLD_49
succ SDLK_WORLD_49 = SDLK_WORLD_50
succ SDLK_WORLD_50 = SDLK_WORLD_51
succ SDLK_WORLD_51 = SDLK_WORLD_52
succ SDLK_WORLD_52 = SDLK_WORLD_53
succ SDLK_WORLD_53 = SDLK_WORLD_54
succ SDLK_WORLD_54 = SDLK_WORLD_55
succ SDLK_WORLD_55 = SDLK_WORLD_56
succ SDLK_WORLD_56 = SDLK_WORLD_57
succ SDLK_WORLD_57 = SDLK_WORLD_58
succ SDLK_WORLD_58 = SDLK_WORLD_59
succ SDLK_WORLD_59 = SDLK_WORLD_60
succ SDLK_WORLD_60 = SDLK_WORLD_61
succ SDLK_WORLD_61 = SDLK_WORLD_62
succ SDLK_WORLD_62 = SDLK_WORLD_63
succ SDLK_WORLD_63 = SDLK_WORLD_64
succ SDLK_WORLD_64 = SDLK_WORLD_65
succ SDLK_WORLD_65 = SDLK_WORLD_66
succ SDLK_WORLD_66 = SDLK_WORLD_67
succ SDLK_WORLD_67 = SDLK_WORLD_68
succ SDLK_WORLD_68 = SDLK_WORLD_69
succ SDLK_WORLD_69 = SDLK_WORLD_70
succ SDLK_WORLD_70 = SDLK_WORLD_71
succ SDLK_WORLD_71 = SDLK_WORLD_72
succ SDLK_WORLD_72 = SDLK_WORLD_73
succ SDLK_WORLD_73 = SDLK_WORLD_74
succ SDLK_WORLD_74 = SDLK_WORLD_75
succ SDLK_WORLD_75 = SDLK_WORLD_76
succ SDLK_WORLD_76 = SDLK_WORLD_77
succ SDLK_WORLD_77 = SDLK_WORLD_78
succ SDLK_WORLD_78 = SDLK_WORLD_79
succ SDLK_WORLD_79 = SDLK_WORLD_80
succ SDLK_WORLD_80 = SDLK_WORLD_81
succ SDLK_WORLD_81 = SDLK_WORLD_82
succ SDLK_WORLD_82 = SDLK_WORLD_83
succ SDLK_WORLD_83 = SDLK_WORLD_84
succ SDLK_WORLD_84 = SDLK_WORLD_85
succ SDLK_WORLD_85 = SDLK_WORLD_86
succ SDLK_WORLD_86 = SDLK_WORLD_87
succ SDLK_WORLD_87 = SDLK_WORLD_88
succ SDLK_WORLD_88 = SDLK_WORLD_89
succ SDLK_WORLD_89 = SDLK_WORLD_90
succ SDLK_WORLD_90 = SDLK_WORLD_91
succ SDLK_WORLD_91 = SDLK_WORLD_92
succ SDLK_WORLD_92 = SDLK_WORLD_93
succ SDLK_WORLD_93 = SDLK_WORLD_94
succ SDLK_WORLD_94 = SDLK_WORLD_95
succ SDLK_WORLD_95 = SDLK_KP0
succ SDLK_KP0 = SDLK_KP1
succ SDLK_KP1 = SDLK_KP2
succ SDLK_KP2 = SDLK_KP3
succ SDLK_KP3 = SDLK_KP4
succ SDLK_KP4 = SDLK_KP5
succ SDLK_KP5 = SDLK_KP6
succ SDLK_KP6 = SDLK_KP7
succ SDLK_KP7 = SDLK_KP8
succ SDLK_KP8 = SDLK_KP9
succ SDLK_KP9 = SDLK_KP_PERIOD
succ SDLK_KP_PERIOD = SDLK_KP_DIVIDE
succ SDLK_KP_DIVIDE = SDLK_KP_MULTIPLY
succ SDLK_KP_MULTIPLY = SDLK_KP_MINUS
succ SDLK_KP_MINUS = SDLK_KP_PLUS
succ SDLK_KP_PLUS = SDLK_KP_ENTER
succ SDLK_KP_ENTER = SDLK_KP_EQUALS
succ SDLK_KP_EQUALS = SDLK_UP
succ SDLK_UP = SDLK_DOWN
succ SDLK_DOWN = SDLK_RIGHT
succ SDLK_RIGHT = SDLK_LEFT
succ SDLK_LEFT = SDLK_INSERT
succ SDLK_INSERT = SDLK_HOME
succ SDLK_HOME = SDLK_END
succ SDLK_END = SDLK_PAGEUP
succ SDLK_PAGEUP = SDLK_PAGEDOWN
succ SDLK_PAGEDOWN = SDLK_F1
succ SDLK_F1 = SDLK_F2
succ SDLK_F2 = SDLK_F3
succ SDLK_F3 = SDLK_F4
succ SDLK_F4 = SDLK_F5
succ SDLK_F5 = SDLK_F6
succ SDLK_F6 = SDLK_F7
succ SDLK_F7 = SDLK_F8
succ SDLK_F8 = SDLK_F9
succ SDLK_F9 = SDLK_F10
succ SDLK_F10 = SDLK_F11
succ SDLK_F11 = SDLK_F12
succ SDLK_F12 = SDLK_F13
succ SDLK_F13 = SDLK_F14
succ SDLK_F14 = SDLK_F15
succ SDLK_F15 = SDLK_NUMLOCK
succ SDLK_NUMLOCK = SDLK_CAPSLOCK
succ SDLK_CAPSLOCK = SDLK_SCROLLOCK
succ SDLK_SCROLLOCK = SDLK_RSHIFT
succ SDLK_RSHIFT = SDLK_LSHIFT
succ SDLK_LSHIFT = SDLK_RCTRL
succ SDLK_RCTRL = SDLK_LCTRL
succ SDLK_LCTRL = SDLK_RALT
succ SDLK_RALT = SDLK_LALT
succ SDLK_LALT = SDLK_RMETA
succ SDLK_RMETA = SDLK_LMETA
succ SDLK_LMETA = SDLK_LSUPER
succ SDLK_LSUPER = SDLK_RSUPER
succ SDLK_RSUPER = SDLK_MODE
succ SDLK_MODE = SDLK_COMPOSE
succ SDLK_COMPOSE = SDLK_HELP
succ SDLK_HELP = SDLK_PRINT
succ SDLK_PRINT = SDLK_SYSREQ
succ SDLK_SYSREQ = SDLK_BREAK
succ SDLK_BREAK = SDLK_MENU
succ SDLK_MENU = SDLK_POWER
succ SDLK_POWER = SDLK_EURO
succ SDLK_EURO = SDLK_UNDO
succ SDLK_UNDO = SDLK_LAST
succ _ = error "Graphics.UI.SDL.Keysym.succ: bad argument"
pred SDLK_FIRST = SDLK_UNKNOWN
pred SDLK_BACKSPACE = SDLK_FIRST
pred SDLK_TAB = SDLK_BACKSPACE
pred SDLK_CLEAR = SDLK_TAB
pred SDLK_RETURN = SDLK_CLEAR
pred SDLK_PAUSE = SDLK_RETURN
pred SDLK_ESCAPE = SDLK_PAUSE
pred SDLK_SPACE = SDLK_ESCAPE
pred SDLK_EXCLAIM = SDLK_SPACE
pred SDLK_QUOTEDBL = SDLK_EXCLAIM
pred SDLK_HASH = SDLK_QUOTEDBL
pred SDLK_DOLLAR = SDLK_HASH
pred SDLK_AMPERSAND = SDLK_DOLLAR
pred SDLK_QUOTE = SDLK_AMPERSAND
pred SDLK_LEFTPAREN = SDLK_QUOTE
pred SDLK_RIGHTPAREN = SDLK_LEFTPAREN
pred SDLK_ASTERISK = SDLK_RIGHTPAREN
pred SDLK_PLUS = SDLK_ASTERISK
pred SDLK_COMMA = SDLK_PLUS
pred SDLK_MINUS = SDLK_COMMA
pred SDLK_PERIOD = SDLK_MINUS
pred SDLK_SLASH = SDLK_PERIOD
pred SDLK_0 = SDLK_SLASH
pred SDLK_1 = SDLK_0
pred SDLK_2 = SDLK_1
pred SDLK_3 = SDLK_2
pred SDLK_4 = SDLK_3
pred SDLK_5 = SDLK_4
pred SDLK_6 = SDLK_5
pred SDLK_7 = SDLK_6
pred SDLK_8 = SDLK_7
pred SDLK_9 = SDLK_8
pred SDLK_COLON = SDLK_9
pred SDLK_SEMICOLON = SDLK_COLON
pred SDLK_LESS = SDLK_SEMICOLON
pred SDLK_EQUALS = SDLK_LESS
pred SDLK_GREATER = SDLK_EQUALS
pred SDLK_QUESTION = SDLK_GREATER
pred SDLK_AT = SDLK_QUESTION
pred SDLK_LEFTBRACKET = SDLK_AT
pred SDLK_BACKSLASH = SDLK_LEFTBRACKET
pred SDLK_RIGHTBRACKET = SDLK_BACKSLASH
pred SDLK_CARET = SDLK_RIGHTBRACKET
pred SDLK_UNDERSCORE = SDLK_CARET
pred SDLK_BACKQUOTE = SDLK_UNDERSCORE
pred SDLK_a = SDLK_BACKQUOTE
pred SDLK_b = SDLK_a
pred SDLK_c = SDLK_b
pred SDLK_d = SDLK_c
pred SDLK_e = SDLK_d
pred SDLK_f = SDLK_e
pred SDLK_g = SDLK_f
pred SDLK_h = SDLK_g
pred SDLK_i = SDLK_h
pred SDLK_j = SDLK_i
pred SDLK_k = SDLK_j
pred SDLK_l = SDLK_k
pred SDLK_m = SDLK_l
pred SDLK_n = SDLK_m
pred SDLK_o = SDLK_n
pred SDLK_p = SDLK_o
pred SDLK_q = SDLK_p
pred SDLK_r = SDLK_q
pred SDLK_s = SDLK_r
pred SDLK_t = SDLK_s
pred SDLK_u = SDLK_t
pred SDLK_v = SDLK_u
pred SDLK_w = SDLK_v
pred SDLK_x = SDLK_w
pred SDLK_y = SDLK_x
pred SDLK_z = SDLK_y
pred SDLK_DELETE = SDLK_z
pred SDLK_WORLD_0 = SDLK_DELETE
pred SDLK_WORLD_1 = SDLK_WORLD_0
pred SDLK_WORLD_2 = SDLK_WORLD_1
pred SDLK_WORLD_3 = SDLK_WORLD_2
pred SDLK_WORLD_4 = SDLK_WORLD_3
pred SDLK_WORLD_5 = SDLK_WORLD_4
pred SDLK_WORLD_6 = SDLK_WORLD_5
pred SDLK_WORLD_7 = SDLK_WORLD_6
pred SDLK_WORLD_8 = SDLK_WORLD_7
pred SDLK_WORLD_9 = SDLK_WORLD_8
pred SDLK_WORLD_10 = SDLK_WORLD_9
pred SDLK_WORLD_11 = SDLK_WORLD_10
pred SDLK_WORLD_12 = SDLK_WORLD_11
pred SDLK_WORLD_13 = SDLK_WORLD_12
pred SDLK_WORLD_14 = SDLK_WORLD_13
pred SDLK_WORLD_15 = SDLK_WORLD_14
pred SDLK_WORLD_16 = SDLK_WORLD_15
pred SDLK_WORLD_17 = SDLK_WORLD_16
pred SDLK_WORLD_18 = SDLK_WORLD_17
pred SDLK_WORLD_19 = SDLK_WORLD_18
pred SDLK_WORLD_20 = SDLK_WORLD_19
pred SDLK_WORLD_21 = SDLK_WORLD_20
pred SDLK_WORLD_22 = SDLK_WORLD_21
pred SDLK_WORLD_23 = SDLK_WORLD_22
pred SDLK_WORLD_24 = SDLK_WORLD_23
pred SDLK_WORLD_25 = SDLK_WORLD_24
pred SDLK_WORLD_26 = SDLK_WORLD_25
pred SDLK_WORLD_27 = SDLK_WORLD_26
pred SDLK_WORLD_28 = SDLK_WORLD_27
pred SDLK_WORLD_29 = SDLK_WORLD_28
pred SDLK_WORLD_30 = SDLK_WORLD_29
pred SDLK_WORLD_31 = SDLK_WORLD_30
pred SDLK_WORLD_32 = SDLK_WORLD_31
pred SDLK_WORLD_33 = SDLK_WORLD_32
pred SDLK_WORLD_34 = SDLK_WORLD_33
pred SDLK_WORLD_35 = SDLK_WORLD_34
pred SDLK_WORLD_36 = SDLK_WORLD_35
pred SDLK_WORLD_37 = SDLK_WORLD_36
pred SDLK_WORLD_38 = SDLK_WORLD_37
pred SDLK_WORLD_39 = SDLK_WORLD_38
pred SDLK_WORLD_40 = SDLK_WORLD_39
pred SDLK_WORLD_41 = SDLK_WORLD_40
pred SDLK_WORLD_42 = SDLK_WORLD_41
pred SDLK_WORLD_43 = SDLK_WORLD_42
pred SDLK_WORLD_44 = SDLK_WORLD_43
pred SDLK_WORLD_45 = SDLK_WORLD_44
pred SDLK_WORLD_46 = SDLK_WORLD_45
pred SDLK_WORLD_47 = SDLK_WORLD_46
pred SDLK_WORLD_48 = SDLK_WORLD_47
pred SDLK_WORLD_49 = SDLK_WORLD_48
pred SDLK_WORLD_50 = SDLK_WORLD_49
pred SDLK_WORLD_51 = SDLK_WORLD_50
pred SDLK_WORLD_52 = SDLK_WORLD_51
pred SDLK_WORLD_53 = SDLK_WORLD_52
pred SDLK_WORLD_54 = SDLK_WORLD_53
pred SDLK_WORLD_55 = SDLK_WORLD_54
pred SDLK_WORLD_56 = SDLK_WORLD_55
pred SDLK_WORLD_57 = SDLK_WORLD_56
pred SDLK_WORLD_58 = SDLK_WORLD_57
pred SDLK_WORLD_59 = SDLK_WORLD_58
pred SDLK_WORLD_60 = SDLK_WORLD_59
pred SDLK_WORLD_61 = SDLK_WORLD_60
pred SDLK_WORLD_62 = SDLK_WORLD_61
pred SDLK_WORLD_63 = SDLK_WORLD_62
pred SDLK_WORLD_64 = SDLK_WORLD_63
pred SDLK_WORLD_65 = SDLK_WORLD_64
pred SDLK_WORLD_66 = SDLK_WORLD_65
pred SDLK_WORLD_67 = SDLK_WORLD_66
pred SDLK_WORLD_68 = SDLK_WORLD_67
pred SDLK_WORLD_69 = SDLK_WORLD_68
pred SDLK_WORLD_70 = SDLK_WORLD_69
pred SDLK_WORLD_71 = SDLK_WORLD_70
pred SDLK_WORLD_72 = SDLK_WORLD_71
pred SDLK_WORLD_73 = SDLK_WORLD_72
pred SDLK_WORLD_74 = SDLK_WORLD_73
pred SDLK_WORLD_75 = SDLK_WORLD_74
pred SDLK_WORLD_76 = SDLK_WORLD_75
pred SDLK_WORLD_77 = SDLK_WORLD_76
pred SDLK_WORLD_78 = SDLK_WORLD_77
pred SDLK_WORLD_79 = SDLK_WORLD_78
pred SDLK_WORLD_80 = SDLK_WORLD_79
pred SDLK_WORLD_81 = SDLK_WORLD_80
pred SDLK_WORLD_82 = SDLK_WORLD_81
pred SDLK_WORLD_83 = SDLK_WORLD_82
pred SDLK_WORLD_84 = SDLK_WORLD_83
pred SDLK_WORLD_85 = SDLK_WORLD_84
pred SDLK_WORLD_86 = SDLK_WORLD_85
pred SDLK_WORLD_87 = SDLK_WORLD_86
pred SDLK_WORLD_88 = SDLK_WORLD_87
pred SDLK_WORLD_89 = SDLK_WORLD_88
pred SDLK_WORLD_90 = SDLK_WORLD_89
pred SDLK_WORLD_91 = SDLK_WORLD_90
pred SDLK_WORLD_92 = SDLK_WORLD_91
pred SDLK_WORLD_93 = SDLK_WORLD_92
pred SDLK_WORLD_94 = SDLK_WORLD_93
pred SDLK_WORLD_95 = SDLK_WORLD_94
pred SDLK_KP0 = SDLK_WORLD_95
pred SDLK_KP1 = SDLK_KP0
pred SDLK_KP2 = SDLK_KP1
pred SDLK_KP3 = SDLK_KP2
pred SDLK_KP4 = SDLK_KP3
pred SDLK_KP5 = SDLK_KP4
pred SDLK_KP6 = SDLK_KP5
pred SDLK_KP7 = SDLK_KP6
pred SDLK_KP8 = SDLK_KP7
pred SDLK_KP9 = SDLK_KP8
pred SDLK_KP_PERIOD = SDLK_KP9
pred SDLK_KP_DIVIDE = SDLK_KP_PERIOD
pred SDLK_KP_MULTIPLY = SDLK_KP_DIVIDE
pred SDLK_KP_MINUS = SDLK_KP_MULTIPLY
pred SDLK_KP_PLUS = SDLK_KP_MINUS
pred SDLK_KP_ENTER = SDLK_KP_PLUS
pred SDLK_KP_EQUALS = SDLK_KP_ENTER
pred SDLK_UP = SDLK_KP_EQUALS
pred SDLK_DOWN = SDLK_UP
pred SDLK_RIGHT = SDLK_DOWN
pred SDLK_LEFT = SDLK_RIGHT
pred SDLK_INSERT = SDLK_LEFT
pred SDLK_HOME = SDLK_INSERT
pred SDLK_END = SDLK_HOME
pred SDLK_PAGEUP = SDLK_END
pred SDLK_PAGEDOWN = SDLK_PAGEUP
pred SDLK_F1 = SDLK_PAGEDOWN
pred SDLK_F2 = SDLK_F1
pred SDLK_F3 = SDLK_F2
pred SDLK_F4 = SDLK_F3
pred SDLK_F5 = SDLK_F4
pred SDLK_F6 = SDLK_F5
pred SDLK_F7 = SDLK_F6
pred SDLK_F8 = SDLK_F7
pred SDLK_F9 = SDLK_F8
pred SDLK_F10 = SDLK_F9
pred SDLK_F11 = SDLK_F10
pred SDLK_F12 = SDLK_F11
pred SDLK_F13 = SDLK_F12
pred SDLK_F14 = SDLK_F13
pred SDLK_F15 = SDLK_F14
pred SDLK_NUMLOCK = SDLK_F15
pred SDLK_CAPSLOCK = SDLK_NUMLOCK
pred SDLK_SCROLLOCK = SDLK_CAPSLOCK
pred SDLK_RSHIFT = SDLK_SCROLLOCK
pred SDLK_LSHIFT = SDLK_RSHIFT
pred SDLK_RCTRL = SDLK_LSHIFT
pred SDLK_LCTRL = SDLK_RCTRL
pred SDLK_RALT = SDLK_LCTRL
pred SDLK_LALT = SDLK_RALT
pred SDLK_RMETA = SDLK_LALT
pred SDLK_LMETA = SDLK_RMETA
pred SDLK_LSUPER = SDLK_LMETA
pred SDLK_RSUPER = SDLK_LSUPER
pred SDLK_MODE = SDLK_RSUPER
pred SDLK_COMPOSE = SDLK_MODE
pred SDLK_HELP = SDLK_COMPOSE
pred SDLK_PRINT = SDLK_HELP
pred SDLK_SYSREQ = SDLK_PRINT
pred SDLK_BREAK = SDLK_SYSREQ
pred SDLK_MENU = SDLK_BREAK
pred SDLK_POWER = SDLK_MENU
pred SDLK_EURO = SDLK_POWER
pred SDLK_UNDO = SDLK_EURO
pred SDLK_LAST = SDLK_UNDO
pred _ = error "Graphics.UI.SDL.Keysym.pred: bad argument"
enumFromTo x y | x > y = []
| x == y = [y]
| True = x : enumFromTo (succ x) y
|