{-# LINE 1 "Graphics/UI/SDL/Keysym.hsc" #-}


{-# LINE 5 "Graphics/UI/SDL/Keysym.hsc" #-}
-----------------------------------------------------------------------------
-- |
-- 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
    { Keysym -> SDLKey
symKey :: SDLKey,
      Keysym -> [Modifier]
symModifiers :: [Modifier],
      Keysym -> Char
symUnicode :: Char}
    deriving (Int -> Keysym -> ShowS
[Keysym] -> ShowS
Keysym -> String
(Int -> Keysym -> ShowS)
-> (Keysym -> String) -> ([Keysym] -> ShowS) -> Show Keysym
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Keysym -> ShowS
showsPrec :: Int -> Keysym -> ShowS
$cshow :: Keysym -> String
show :: Keysym -> String
$cshowList :: [Keysym] -> ShowS
showList :: [Keysym] -> ShowS
Show,Keysym -> Keysym -> Bool
(Keysym -> Keysym -> Bool)
-> (Keysym -> Keysym -> Bool) -> Eq Keysym
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Keysym -> Keysym -> Bool
== :: Keysym -> Keysym -> Bool
$c/= :: Keysym -> Keysym -> Bool
/= :: Keysym -> Keysym -> Bool
Eq)

instance Storable Keysym where
    sizeOf :: Keysym -> Int
sizeOf = Int -> Keysym -> Int
forall a b. a -> b -> a
const (Int
16)
{-# LINE 34 "Graphics/UI/SDL/Keysym.hsc" #-}
    alignment = const 4
    poke :: Ptr Keysym -> Keysym -> IO ()
poke Ptr Keysym
ptr (Keysym SDLKey
key [Modifier]
mods Char
unicode)
        = do (\Ptr Keysym
hsc_ptr -> Ptr Keysym -> Int -> Word32 -> IO ()
forall b. Ptr b -> Int -> Word32 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Keysym
hsc_ptr Int
4) Ptr Keysym
ptr (SDLKey -> Word32
forall a b. Enum a b => a -> b
fromEnum SDLKey
key)
{-# LINE 37 "Graphics/UI/SDL/Keysym.hsc" #-}
             (\Ptr Keysym
hsc_ptr -> Ptr Keysym -> Int -> Word32 -> IO ()
forall b. Ptr b -> Int -> Word32 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Keysym
hsc_ptr Int
8) Ptr Keysym
ptr ([Modifier] -> Word32
forall a b. (Enum a b, Bits b, Num b) => [a] -> b
toBitmask [Modifier]
mods)
{-# LINE 38 "Graphics/UI/SDL/Keysym.hsc" #-}
             (\Ptr Keysym
hsc_ptr -> Ptr Keysym -> Int -> Word16 -> IO ()
forall b. Ptr b -> Int -> Word16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Keysym
hsc_ptr Int
12) Ptr Keysym
ptr (Int -> Word16
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Char -> Int
ord Char
unicode) :: Word16)
{-# LINE 39 "Graphics/UI/SDL/Keysym.hsc" #-}
    peek ptr
        = do sym <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 41 "Graphics/UI/SDL/Keysym.hsc" #-}
             mods <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 42 "Graphics/UI/SDL/Keysym.hsc" #-}
             uni <- (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 43 "Graphics/UI/SDL/Keysym.hsc" #-}
             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 (Modifier -> Modifier -> Bool
(Modifier -> Modifier -> Bool)
-> (Modifier -> Modifier -> Bool) -> Eq Modifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Modifier -> Modifier -> Bool
== :: Modifier -> Modifier -> Bool
$c/= :: Modifier -> Modifier -> Bool
/= :: Modifier -> Modifier -> Bool
Eq, Eq Modifier
Eq Modifier
-> (Modifier -> Modifier -> Ordering)
-> (Modifier -> Modifier -> Bool)
-> (Modifier -> Modifier -> Bool)
-> (Modifier -> Modifier -> Bool)
-> (Modifier -> Modifier -> Bool)
-> (Modifier -> Modifier -> Modifier)
-> (Modifier -> Modifier -> Modifier)
-> Ord Modifier
Modifier -> Modifier -> Bool
Modifier -> Modifier -> Ordering
Modifier -> Modifier -> Modifier
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Modifier -> Modifier -> Ordering
compare :: Modifier -> Modifier -> Ordering
$c< :: Modifier -> Modifier -> Bool
< :: Modifier -> Modifier -> Bool
$c<= :: Modifier -> Modifier -> Bool
<= :: Modifier -> Modifier -> Bool
$c> :: Modifier -> Modifier -> Bool
> :: Modifier -> Modifier -> Bool
$c>= :: Modifier -> Modifier -> Bool
>= :: Modifier -> Modifier -> Bool
$cmax :: Modifier -> Modifier -> Modifier
max :: Modifier -> Modifier -> Modifier
$cmin :: Modifier -> Modifier -> Modifier
min :: Modifier -> Modifier -> Modifier
Ord, Int -> Modifier -> ShowS
[Modifier] -> ShowS
Modifier -> String
(Int -> Modifier -> ShowS)
-> (Modifier -> String) -> ([Modifier] -> ShowS) -> Show Modifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Modifier -> ShowS
showsPrec :: Int -> Modifier -> ShowS
$cshow :: Modifier -> String
show :: Modifier -> String
$cshowList :: [Modifier] -> ShowS
showList :: [Modifier] -> ShowS
Show)
instance Bounded Modifier where
    minBound :: Modifier
minBound = Modifier
KeyModNone
    maxBound :: Modifier
maxBound = Modifier
KeyModMode
instance Enum Modifier Word32 where
{-# LINE 67 "Graphics/UI/SDL/Keysym.hsc" #-}
      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 :: Word32 -> Modifier
toEnum Word32
0 = Modifier
KeyModNone
      toEnum Word32
1 = Modifier
KeyModLeftShift
      toEnum Word32
2 = Modifier
KeyModRightShift
      toEnum Word32
64 = Modifier
KeyModLeftCtrl
      toEnum Word32
128 = Modifier
KeyModRightCtrl
      toEnum Word32
256 = Modifier
KeyModLeftAlt
      toEnum Word32
512 = Modifier
KeyModRightAlt
      toEnum Word32
1024 = Modifier
KeyModLeftMeta
      toEnum Word32
2048 = Modifier
KeyModRightMeta
      toEnum Word32
4096 = Modifier
KeyModNum
      toEnum Word32
8192 = Modifier
KeyModCaps
      toEnum Word32
16384 = Modifier
KeyModMode
      toEnum Word32
192 = Modifier
KeyModCtrl
      toEnum Word32
3 = Modifier
KeyModShift
      toEnum Word32
768 = Modifier
KeyModAlt
      toEnum Word32
3072 = Modifier
KeyModMeta
      toEnum Word32
_ = String -> Modifier
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.toEnum: bad argument"
      succ :: Modifier -> Modifier
succ Modifier
KeyModNone = Modifier
KeyModLeftShift
      succ Modifier
KeyModLeftShift = Modifier
KeyModRightShift
      succ Modifier
KeyModRightShift = Modifier
KeyModLeftCtrl
      succ Modifier
KeyModLeftCtrl = Modifier
KeyModRightCtrl
      succ Modifier
KeyModRightCtrl = Modifier
KeyModLeftAlt
      succ Modifier
KeyModLeftAlt = Modifier
KeyModRightAlt
      succ Modifier
KeyModRightAlt = Modifier
KeyModLeftMeta
      succ Modifier
KeyModLeftMeta = Modifier
KeyModRightMeta
      succ Modifier
KeyModRightMeta = Modifier
KeyModNum
      succ Modifier
KeyModNum = Modifier
KeyModCaps
      succ Modifier
KeyModCaps = Modifier
KeyModMode
      succ Modifier
KeyModMode = Modifier
KeyModCtrl
      succ Modifier
KeyModCtrl = Modifier
KeyModShift
      succ Modifier
KeyModShift = Modifier
KeyModAlt
      succ Modifier
KeyModAlt = Modifier
KeyModMeta
      succ Modifier
_ = String -> Modifier
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.succ: bad argument"
      pred :: Modifier -> Modifier
pred Modifier
KeyModLeftShift = Modifier
KeyModNone
      pred Modifier
KeyModRightShift = Modifier
KeyModLeftShift
      pred Modifier
KeyModLeftCtrl = Modifier
KeyModRightShift
      pred Modifier
KeyModRightCtrl = Modifier
KeyModLeftCtrl
      pred Modifier
KeyModLeftAlt = Modifier
KeyModRightCtrl
      pred Modifier
KeyModRightAlt = Modifier
KeyModLeftAlt
      pred Modifier
KeyModLeftMeta = Modifier
KeyModRightAlt
      pred Modifier
KeyModRightMeta = Modifier
KeyModLeftMeta
      pred Modifier
KeyModNum = Modifier
KeyModRightMeta
      pred Modifier
KeyModCaps = Modifier
KeyModNum
      pred Modifier
KeyModMode = Modifier
KeyModCaps
      pred Modifier
KeyModCtrl = Modifier
KeyModMode
      pred Modifier
KeyModShift = Modifier
KeyModCtrl
      pred Modifier
KeyModAlt = Modifier
KeyModShift
      pred Modifier
KeyModMeta = Modifier
KeyModAlt
      pred Modifier
_ = String -> Modifier
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.pred: bad argument"
      enumFromTo :: Modifier -> Modifier -> [Modifier]
enumFromTo Modifier
x Modifier
y | Modifier
x Modifier -> Modifier -> Bool
forall a. Ord a => a -> a -> Bool
> Modifier
y = []
                     | Modifier
x Modifier -> Modifier -> Bool
forall a. Eq a => a -> a -> Bool
== Modifier
y = [Modifier
y]
                     | Bool
True = Modifier
x Modifier -> [Modifier] -> [Modifier]
forall a. a -> [a] -> [a]
: Modifier -> Modifier -> [Modifier]
forall a b. Enum a b => a -> a -> [a]
enumFromTo (Modifier -> Modifier
forall a b. Enum a b => a -> a
succ Modifier
x) Modifier
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 (SDLKey -> SDLKey -> Bool
(SDLKey -> SDLKey -> Bool)
-> (SDLKey -> SDLKey -> Bool) -> Eq SDLKey
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDLKey -> SDLKey -> Bool
== :: SDLKey -> SDLKey -> Bool
$c/= :: SDLKey -> SDLKey -> Bool
/= :: SDLKey -> SDLKey -> Bool
Eq, Eq SDLKey
Eq SDLKey
-> (SDLKey -> SDLKey -> Ordering)
-> (SDLKey -> SDLKey -> Bool)
-> (SDLKey -> SDLKey -> Bool)
-> (SDLKey -> SDLKey -> Bool)
-> (SDLKey -> SDLKey -> Bool)
-> (SDLKey -> SDLKey -> SDLKey)
-> (SDLKey -> SDLKey -> SDLKey)
-> Ord SDLKey
SDLKey -> SDLKey -> Bool
SDLKey -> SDLKey -> Ordering
SDLKey -> SDLKey -> SDLKey
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SDLKey -> SDLKey -> Ordering
compare :: SDLKey -> SDLKey -> Ordering
$c< :: SDLKey -> SDLKey -> Bool
< :: SDLKey -> SDLKey -> Bool
$c<= :: SDLKey -> SDLKey -> Bool
<= :: SDLKey -> SDLKey -> Bool
$c> :: SDLKey -> SDLKey -> Bool
> :: SDLKey -> SDLKey -> Bool
$c>= :: SDLKey -> SDLKey -> Bool
>= :: SDLKey -> SDLKey -> Bool
$cmax :: SDLKey -> SDLKey -> SDLKey
max :: SDLKey -> SDLKey -> SDLKey
$cmin :: SDLKey -> SDLKey -> SDLKey
min :: SDLKey -> SDLKey -> SDLKey
Ord, Int -> SDLKey -> ShowS
[SDLKey] -> ShowS
SDLKey -> String
(Int -> SDLKey -> ShowS)
-> (SDLKey -> String) -> ([SDLKey] -> ShowS) -> Show SDLKey
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDLKey -> ShowS
showsPrec :: Int -> SDLKey -> ShowS
$cshow :: SDLKey -> String
show :: SDLKey -> String
$cshowList :: [SDLKey] -> ShowS
showList :: [SDLKey] -> ShowS
Show)
instance Bounded SDLKey where
    minBound :: SDLKey
minBound = SDLKey
SDLK_UNKNOWN
    maxBound :: SDLKey
maxBound = SDLKey
SDLK_LAST
instance Enum SDLKey Word32 where
{-# LINE 375 "Graphics/UI/SDL/Keysym.hsc" #-}
      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 :: Word32 -> SDLKey
toEnum Word32
0 = SDLKey
SDLK_UNKNOWN
      toEnum Word32
8 = SDLKey
SDLK_BACKSPACE
      toEnum Word32
9 = SDLKey
SDLK_TAB
      toEnum Word32
12 = SDLKey
SDLK_CLEAR
      toEnum Word32
13 = SDLKey
SDLK_RETURN
      toEnum Word32
19 = SDLKey
SDLK_PAUSE
      toEnum Word32
27 = SDLKey
SDLK_ESCAPE
      toEnum Word32
32 = SDLKey
SDLK_SPACE
      toEnum Word32
33 = SDLKey
SDLK_EXCLAIM
      toEnum Word32
34 = SDLKey
SDLK_QUOTEDBL
      toEnum Word32
35 = SDLKey
SDLK_HASH
      toEnum Word32
36 = SDLKey
SDLK_DOLLAR
      toEnum Word32
38 = SDLKey
SDLK_AMPERSAND
      toEnum Word32
39 = SDLKey
SDLK_QUOTE
      toEnum Word32
40 = SDLKey
SDLK_LEFTPAREN
      toEnum Word32
41 = SDLKey
SDLK_RIGHTPAREN
      toEnum Word32
42 = SDLKey
SDLK_ASTERISK
      toEnum Word32
43 = SDLKey
SDLK_PLUS
      toEnum Word32
44 = SDLKey
SDLK_COMMA
      toEnum Word32
45 = SDLKey
SDLK_MINUS
      toEnum Word32
46 = SDLKey
SDLK_PERIOD
      toEnum Word32
47 = SDLKey
SDLK_SLASH
      toEnum Word32
48 = SDLKey
SDLK_0
      toEnum Word32
49 = SDLKey
SDLK_1
      toEnum Word32
50 = SDLKey
SDLK_2
      toEnum Word32
51 = SDLKey
SDLK_3
      toEnum Word32
52 = SDLKey
SDLK_4
      toEnum Word32
53 = SDLKey
SDLK_5
      toEnum Word32
54 = SDLKey
SDLK_6
      toEnum Word32
55 = SDLKey
SDLK_7
      toEnum Word32
56 = SDLKey
SDLK_8
      toEnum Word32
57 = SDLKey
SDLK_9
      toEnum Word32
58 = SDLKey
SDLK_COLON
      toEnum Word32
59 = SDLKey
SDLK_SEMICOLON
      toEnum Word32
60 = SDLKey
SDLK_LESS
      toEnum Word32
61 = SDLKey
SDLK_EQUALS
      toEnum Word32
62 = SDLKey
SDLK_GREATER
      toEnum Word32
63 = SDLKey
SDLK_QUESTION
      toEnum Word32
64 = SDLKey
SDLK_AT
      toEnum Word32
91 = SDLKey
SDLK_LEFTBRACKET
      toEnum Word32
92 = SDLKey
SDLK_BACKSLASH
      toEnum Word32
93 = SDLKey
SDLK_RIGHTBRACKET
      toEnum Word32
94 = SDLKey
SDLK_CARET
      toEnum Word32
95 = SDLKey
SDLK_UNDERSCORE
      toEnum Word32
96 = SDLKey
SDLK_BACKQUOTE
      toEnum Word32
97 = SDLKey
SDLK_a
      toEnum Word32
98 = SDLKey
SDLK_b
      toEnum Word32
99 = SDLKey
SDLK_c
      toEnum Word32
100 = SDLKey
SDLK_d
      toEnum Word32
101 = SDLKey
SDLK_e
      toEnum Word32
102 = SDLKey
SDLK_f
      toEnum Word32
103 = SDLKey
SDLK_g
      toEnum Word32
104 = SDLKey
SDLK_h
      toEnum Word32
105 = SDLKey
SDLK_i
      toEnum Word32
106 = SDLKey
SDLK_j
      toEnum Word32
107 = SDLKey
SDLK_k
      toEnum Word32
108 = SDLKey
SDLK_l
      toEnum Word32
109 = SDLKey
SDLK_m
      toEnum Word32
110 = SDLKey
SDLK_n
      toEnum Word32
111 = SDLKey
SDLK_o
      toEnum Word32
112 = SDLKey
SDLK_p
      toEnum Word32
113 = SDLKey
SDLK_q
      toEnum Word32
114 = SDLKey
SDLK_r
      toEnum Word32
115 = SDLKey
SDLK_s
      toEnum Word32
116 = SDLKey
SDLK_t
      toEnum Word32
117 = SDLKey
SDLK_u
      toEnum Word32
118 = SDLKey
SDLK_v
      toEnum Word32
119 = SDLKey
SDLK_w
      toEnum Word32
120 = SDLKey
SDLK_x
      toEnum Word32
121 = SDLKey
SDLK_y
      toEnum Word32
122 = SDLKey
SDLK_z
      toEnum Word32
127 = SDLKey
SDLK_DELETE
      toEnum Word32
160 = SDLKey
SDLK_WORLD_0
      toEnum Word32
161 = SDLKey
SDLK_WORLD_1
      toEnum Word32
162 = SDLKey
SDLK_WORLD_2
      toEnum Word32
163 = SDLKey
SDLK_WORLD_3
      toEnum Word32
164 = SDLKey
SDLK_WORLD_4
      toEnum Word32
165 = SDLKey
SDLK_WORLD_5
      toEnum Word32
166 = SDLKey
SDLK_WORLD_6
      toEnum Word32
167 = SDLKey
SDLK_WORLD_7
      toEnum Word32
168 = SDLKey
SDLK_WORLD_8
      toEnum Word32
169 = SDLKey
SDLK_WORLD_9
      toEnum Word32
170 = SDLKey
SDLK_WORLD_10
      toEnum Word32
171 = SDLKey
SDLK_WORLD_11
      toEnum Word32
172 = SDLKey
SDLK_WORLD_12
      toEnum Word32
173 = SDLKey
SDLK_WORLD_13
      toEnum Word32
174 = SDLKey
SDLK_WORLD_14
      toEnum Word32
175 = SDLKey
SDLK_WORLD_15
      toEnum Word32
176 = SDLKey
SDLK_WORLD_16
      toEnum Word32
177 = SDLKey
SDLK_WORLD_17
      toEnum Word32
178 = SDLKey
SDLK_WORLD_18
      toEnum Word32
179 = SDLKey
SDLK_WORLD_19
      toEnum Word32
180 = SDLKey
SDLK_WORLD_20
      toEnum Word32
181 = SDLKey
SDLK_WORLD_21
      toEnum Word32
182 = SDLKey
SDLK_WORLD_22
      toEnum Word32
183 = SDLKey
SDLK_WORLD_23
      toEnum Word32
184 = SDLKey
SDLK_WORLD_24
      toEnum Word32
185 = SDLKey
SDLK_WORLD_25
      toEnum Word32
186 = SDLKey
SDLK_WORLD_26
      toEnum Word32
187 = SDLKey
SDLK_WORLD_27
      toEnum Word32
188 = SDLKey
SDLK_WORLD_28
      toEnum Word32
189 = SDLKey
SDLK_WORLD_29
      toEnum Word32
190 = SDLKey
SDLK_WORLD_30
      toEnum Word32
191 = SDLKey
SDLK_WORLD_31
      toEnum Word32
192 = SDLKey
SDLK_WORLD_32
      toEnum Word32
193 = SDLKey
SDLK_WORLD_33
      toEnum Word32
194 = SDLKey
SDLK_WORLD_34
      toEnum Word32
195 = SDLKey
SDLK_WORLD_35
      toEnum Word32
196 = SDLKey
SDLK_WORLD_36
      toEnum Word32
197 = SDLKey
SDLK_WORLD_37
      toEnum Word32
198 = SDLKey
SDLK_WORLD_38
      toEnum Word32
199 = SDLKey
SDLK_WORLD_39
      toEnum Word32
200 = SDLKey
SDLK_WORLD_40
      toEnum Word32
201 = SDLKey
SDLK_WORLD_41
      toEnum Word32
202 = SDLKey
SDLK_WORLD_42
      toEnum Word32
203 = SDLKey
SDLK_WORLD_43
      toEnum Word32
204 = SDLKey
SDLK_WORLD_44
      toEnum Word32
205 = SDLKey
SDLK_WORLD_45
      toEnum Word32
206 = SDLKey
SDLK_WORLD_46
      toEnum Word32
207 = SDLKey
SDLK_WORLD_47
      toEnum Word32
208 = SDLKey
SDLK_WORLD_48
      toEnum Word32
209 = SDLKey
SDLK_WORLD_49
      toEnum Word32
210 = SDLKey
SDLK_WORLD_50
      toEnum Word32
211 = SDLKey
SDLK_WORLD_51
      toEnum Word32
212 = SDLKey
SDLK_WORLD_52
      toEnum Word32
213 = SDLKey
SDLK_WORLD_53
      toEnum Word32
214 = SDLKey
SDLK_WORLD_54
      toEnum Word32
215 = SDLKey
SDLK_WORLD_55
      toEnum Word32
216 = SDLKey
SDLK_WORLD_56
      toEnum Word32
217 = SDLKey
SDLK_WORLD_57
      toEnum Word32
218 = SDLKey
SDLK_WORLD_58
      toEnum Word32
219 = SDLKey
SDLK_WORLD_59
      toEnum Word32
220 = SDLKey
SDLK_WORLD_60
      toEnum Word32
221 = SDLKey
SDLK_WORLD_61
      toEnum Word32
222 = SDLKey
SDLK_WORLD_62
      toEnum Word32
223 = SDLKey
SDLK_WORLD_63
      toEnum Word32
224 = SDLKey
SDLK_WORLD_64
      toEnum Word32
225 = SDLKey
SDLK_WORLD_65
      toEnum Word32
226 = SDLKey
SDLK_WORLD_66
      toEnum Word32
227 = SDLKey
SDLK_WORLD_67
      toEnum Word32
228 = SDLKey
SDLK_WORLD_68
      toEnum Word32
229 = SDLKey
SDLK_WORLD_69
      toEnum Word32
230 = SDLKey
SDLK_WORLD_70
      toEnum Word32
231 = SDLKey
SDLK_WORLD_71
      toEnum Word32
232 = SDLKey
SDLK_WORLD_72
      toEnum Word32
233 = SDLKey
SDLK_WORLD_73
      toEnum Word32
234 = SDLKey
SDLK_WORLD_74
      toEnum Word32
235 = SDLKey
SDLK_WORLD_75
      toEnum Word32
236 = SDLKey
SDLK_WORLD_76
      toEnum Word32
237 = SDLKey
SDLK_WORLD_77
      toEnum Word32
238 = SDLKey
SDLK_WORLD_78
      toEnum Word32
239 = SDLKey
SDLK_WORLD_79
      toEnum Word32
240 = SDLKey
SDLK_WORLD_80
      toEnum Word32
241 = SDLKey
SDLK_WORLD_81
      toEnum Word32
242 = SDLKey
SDLK_WORLD_82
      toEnum Word32
243 = SDLKey
SDLK_WORLD_83
      toEnum Word32
244 = SDLKey
SDLK_WORLD_84
      toEnum Word32
245 = SDLKey
SDLK_WORLD_85
      toEnum Word32
246 = SDLKey
SDLK_WORLD_86
      toEnum Word32
247 = SDLKey
SDLK_WORLD_87
      toEnum Word32
248 = SDLKey
SDLK_WORLD_88
      toEnum Word32
249 = SDLKey
SDLK_WORLD_89
      toEnum Word32
250 = SDLKey
SDLK_WORLD_90
      toEnum Word32
251 = SDLKey
SDLK_WORLD_91
      toEnum Word32
252 = SDLKey
SDLK_WORLD_92
      toEnum Word32
253 = SDLKey
SDLK_WORLD_93
      toEnum Word32
254 = SDLKey
SDLK_WORLD_94
      toEnum Word32
255 = SDLKey
SDLK_WORLD_95
      toEnum Word32
256 = SDLKey
SDLK_KP0
      toEnum Word32
257 = SDLKey
SDLK_KP1
      toEnum Word32
258 = SDLKey
SDLK_KP2
      toEnum Word32
259 = SDLKey
SDLK_KP3
      toEnum Word32
260 = SDLKey
SDLK_KP4
      toEnum Word32
261 = SDLKey
SDLK_KP5
      toEnum Word32
262 = SDLKey
SDLK_KP6
      toEnum Word32
263 = SDLKey
SDLK_KP7
      toEnum Word32
264 = SDLKey
SDLK_KP8
      toEnum Word32
265 = SDLKey
SDLK_KP9
      toEnum Word32
266 = SDLKey
SDLK_KP_PERIOD
      toEnum Word32
267 = SDLKey
SDLK_KP_DIVIDE
      toEnum Word32
268 = SDLKey
SDLK_KP_MULTIPLY
      toEnum Word32
269 = SDLKey
SDLK_KP_MINUS
      toEnum Word32
270 = SDLKey
SDLK_KP_PLUS
      toEnum Word32
271 = SDLKey
SDLK_KP_ENTER
      toEnum Word32
272 = SDLKey
SDLK_KP_EQUALS
      toEnum Word32
273 = SDLKey
SDLK_UP
      toEnum Word32
274 = SDLKey
SDLK_DOWN
      toEnum Word32
275 = SDLKey
SDLK_RIGHT
      toEnum Word32
276 = SDLKey
SDLK_LEFT
      toEnum Word32
277 = SDLKey
SDLK_INSERT
      toEnum Word32
278 = SDLKey
SDLK_HOME
      toEnum Word32
279 = SDLKey
SDLK_END
      toEnum Word32
280 = SDLKey
SDLK_PAGEUP
      toEnum Word32
281 = SDLKey
SDLK_PAGEDOWN
      toEnum Word32
282 = SDLKey
SDLK_F1
      toEnum Word32
283 = SDLKey
SDLK_F2
      toEnum Word32
284 = SDLKey
SDLK_F3
      toEnum Word32
285 = SDLKey
SDLK_F4
      toEnum Word32
286 = SDLKey
SDLK_F5
      toEnum Word32
287 = SDLKey
SDLK_F6
      toEnum Word32
288 = SDLKey
SDLK_F7
      toEnum Word32
289 = SDLKey
SDLK_F8
      toEnum Word32
290 = SDLKey
SDLK_F9
      toEnum Word32
291 = SDLKey
SDLK_F10
      toEnum Word32
292 = SDLKey
SDLK_F11
      toEnum Word32
293 = SDLKey
SDLK_F12
      toEnum Word32
294 = SDLKey
SDLK_F13
      toEnum Word32
295 = SDLKey
SDLK_F14
      toEnum Word32
296 = SDLKey
SDLK_F15
      toEnum Word32
300 = SDLKey
SDLK_NUMLOCK
      toEnum Word32
301 = SDLKey
SDLK_CAPSLOCK
      toEnum Word32
302 = SDLKey
SDLK_SCROLLOCK
      toEnum Word32
303 = SDLKey
SDLK_RSHIFT
      toEnum Word32
304 = SDLKey
SDLK_LSHIFT
      toEnum Word32
305 = SDLKey
SDLK_RCTRL
      toEnum Word32
306 = SDLKey
SDLK_LCTRL
      toEnum Word32
307 = SDLKey
SDLK_RALT
      toEnum Word32
308 = SDLKey
SDLK_LALT
      toEnum Word32
309 = SDLKey
SDLK_RMETA
      toEnum Word32
310 = SDLKey
SDLK_LMETA
      toEnum Word32
311 = SDLKey
SDLK_LSUPER
      toEnum Word32
312 = SDLKey
SDLK_RSUPER
      toEnum Word32
313 = SDLKey
SDLK_MODE
      toEnum Word32
314 = SDLKey
SDLK_COMPOSE
      toEnum Word32
315 = SDLKey
SDLK_HELP
      toEnum Word32
316 = SDLKey
SDLK_PRINT
      toEnum Word32
317 = SDLKey
SDLK_SYSREQ
      toEnum Word32
318 = SDLKey
SDLK_BREAK
      toEnum Word32
319 = SDLKey
SDLK_MENU
      toEnum Word32
320 = SDLKey
SDLK_POWER
      toEnum Word32
321 = SDLKey
SDLK_EURO
      toEnum Word32
322 = SDLKey
SDLK_UNDO
      toEnum Word32
323 = SDLKey
SDLK_LAST
      toEnum Word32
_ = String -> SDLKey
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.toEnum: bad argument"
      succ :: SDLKey -> SDLKey
succ SDLKey
SDLK_UNKNOWN = SDLKey
SDLK_FIRST
      succ SDLKey
SDLK_FIRST = SDLKey
SDLK_BACKSPACE
      succ SDLKey
SDLK_BACKSPACE = SDLKey
SDLK_TAB
      succ SDLKey
SDLK_TAB = SDLKey
SDLK_CLEAR
      succ SDLKey
SDLK_CLEAR = SDLKey
SDLK_RETURN
      succ SDLKey
SDLK_RETURN = SDLKey
SDLK_PAUSE
      succ SDLKey
SDLK_PAUSE = SDLKey
SDLK_ESCAPE
      succ SDLKey
SDLK_ESCAPE = SDLKey
SDLK_SPACE
      succ SDLKey
SDLK_SPACE = SDLKey
SDLK_EXCLAIM
      succ SDLKey
SDLK_EXCLAIM = SDLKey
SDLK_QUOTEDBL
      succ SDLKey
SDLK_QUOTEDBL = SDLKey
SDLK_HASH
      succ SDLKey
SDLK_HASH = SDLKey
SDLK_DOLLAR
      succ SDLKey
SDLK_DOLLAR = SDLKey
SDLK_AMPERSAND
      succ SDLKey
SDLK_AMPERSAND = SDLKey
SDLK_QUOTE
      succ SDLKey
SDLK_QUOTE = SDLKey
SDLK_LEFTPAREN
      succ SDLKey
SDLK_LEFTPAREN = SDLKey
SDLK_RIGHTPAREN
      succ SDLKey
SDLK_RIGHTPAREN = SDLKey
SDLK_ASTERISK
      succ SDLKey
SDLK_ASTERISK = SDLKey
SDLK_PLUS
      succ SDLKey
SDLK_PLUS = SDLKey
SDLK_COMMA
      succ SDLKey
SDLK_COMMA = SDLKey
SDLK_MINUS
      succ SDLKey
SDLK_MINUS = SDLKey
SDLK_PERIOD
      succ SDLKey
SDLK_PERIOD = SDLKey
SDLK_SLASH
      succ SDLKey
SDLK_SLASH = SDLKey
SDLK_0
      succ SDLKey
SDLK_0 = SDLKey
SDLK_1
      succ SDLKey
SDLK_1 = SDLKey
SDLK_2
      succ SDLKey
SDLK_2 = SDLKey
SDLK_3
      succ SDLKey
SDLK_3 = SDLKey
SDLK_4
      succ SDLKey
SDLK_4 = SDLKey
SDLK_5
      succ SDLKey
SDLK_5 = SDLKey
SDLK_6
      succ SDLKey
SDLK_6 = SDLKey
SDLK_7
      succ SDLKey
SDLK_7 = SDLKey
SDLK_8
      succ SDLKey
SDLK_8 = SDLKey
SDLK_9
      succ SDLKey
SDLK_9 = SDLKey
SDLK_COLON
      succ SDLKey
SDLK_COLON = SDLKey
SDLK_SEMICOLON
      succ SDLKey
SDLK_SEMICOLON = SDLKey
SDLK_LESS
      succ SDLKey
SDLK_LESS = SDLKey
SDLK_EQUALS
      succ SDLKey
SDLK_EQUALS = SDLKey
SDLK_GREATER
      succ SDLKey
SDLK_GREATER = SDLKey
SDLK_QUESTION
      succ SDLKey
SDLK_QUESTION = SDLKey
SDLK_AT
      succ SDLKey
SDLK_AT = SDLKey
SDLK_LEFTBRACKET
      succ SDLKey
SDLK_LEFTBRACKET = SDLKey
SDLK_BACKSLASH
      succ SDLKey
SDLK_BACKSLASH = SDLKey
SDLK_RIGHTBRACKET
      succ SDLKey
SDLK_RIGHTBRACKET = SDLKey
SDLK_CARET
      succ SDLKey
SDLK_CARET = SDLKey
SDLK_UNDERSCORE
      succ SDLKey
SDLK_UNDERSCORE = SDLKey
SDLK_BACKQUOTE
      succ SDLKey
SDLK_BACKQUOTE = SDLKey
SDLK_a
      succ SDLKey
SDLK_a = SDLKey
SDLK_b
      succ SDLKey
SDLK_b = SDLKey
SDLK_c
      succ SDLKey
SDLK_c = SDLKey
SDLK_d
      succ SDLKey
SDLK_d = SDLKey
SDLK_e
      succ SDLKey
SDLK_e = SDLKey
SDLK_f
      succ SDLKey
SDLK_f = SDLKey
SDLK_g
      succ SDLKey
SDLK_g = SDLKey
SDLK_h
      succ SDLKey
SDLK_h = SDLKey
SDLK_i
      succ SDLKey
SDLK_i = SDLKey
SDLK_j
      succ SDLKey
SDLK_j = SDLKey
SDLK_k
      succ SDLKey
SDLK_k = SDLKey
SDLK_l
      succ SDLKey
SDLK_l = SDLKey
SDLK_m
      succ SDLKey
SDLK_m = SDLKey
SDLK_n
      succ SDLKey
SDLK_n = SDLKey
SDLK_o
      succ SDLKey
SDLK_o = SDLKey
SDLK_p
      succ SDLKey
SDLK_p = SDLKey
SDLK_q
      succ SDLKey
SDLK_q = SDLKey
SDLK_r
      succ SDLKey
SDLK_r = SDLKey
SDLK_s
      succ SDLKey
SDLK_s = SDLKey
SDLK_t
      succ SDLKey
SDLK_t = SDLKey
SDLK_u
      succ SDLKey
SDLK_u = SDLKey
SDLK_v
      succ SDLKey
SDLK_v = SDLKey
SDLK_w
      succ SDLKey
SDLK_w = SDLKey
SDLK_x
      succ SDLKey
SDLK_x = SDLKey
SDLK_y
      succ SDLKey
SDLK_y = SDLKey
SDLK_z
      succ SDLKey
SDLK_z = SDLKey
SDLK_DELETE
      succ SDLKey
SDLK_DELETE = SDLKey
SDLK_WORLD_0
      succ SDLKey
SDLK_WORLD_0 = SDLKey
SDLK_WORLD_1
      succ SDLKey
SDLK_WORLD_1 = SDLKey
SDLK_WORLD_2
      succ SDLKey
SDLK_WORLD_2 = SDLKey
SDLK_WORLD_3
      succ SDLKey
SDLK_WORLD_3 = SDLKey
SDLK_WORLD_4
      succ SDLKey
SDLK_WORLD_4 = SDLKey
SDLK_WORLD_5
      succ SDLKey
SDLK_WORLD_5 = SDLKey
SDLK_WORLD_6
      succ SDLKey
SDLK_WORLD_6 = SDLKey
SDLK_WORLD_7
      succ SDLKey
SDLK_WORLD_7 = SDLKey
SDLK_WORLD_8
      succ SDLKey
SDLK_WORLD_8 = SDLKey
SDLK_WORLD_9
      succ SDLKey
SDLK_WORLD_9 = SDLKey
SDLK_WORLD_10
      succ SDLKey
SDLK_WORLD_10 = SDLKey
SDLK_WORLD_11
      succ SDLKey
SDLK_WORLD_11 = SDLKey
SDLK_WORLD_12
      succ SDLKey
SDLK_WORLD_12 = SDLKey
SDLK_WORLD_13
      succ SDLKey
SDLK_WORLD_13 = SDLKey
SDLK_WORLD_14
      succ SDLKey
SDLK_WORLD_14 = SDLKey
SDLK_WORLD_15
      succ SDLKey
SDLK_WORLD_15 = SDLKey
SDLK_WORLD_16
      succ SDLKey
SDLK_WORLD_16 = SDLKey
SDLK_WORLD_17
      succ SDLKey
SDLK_WORLD_17 = SDLKey
SDLK_WORLD_18
      succ SDLKey
SDLK_WORLD_18 = SDLKey
SDLK_WORLD_19
      succ SDLKey
SDLK_WORLD_19 = SDLKey
SDLK_WORLD_20
      succ SDLKey
SDLK_WORLD_20 = SDLKey
SDLK_WORLD_21
      succ SDLKey
SDLK_WORLD_21 = SDLKey
SDLK_WORLD_22
      succ SDLKey
SDLK_WORLD_22 = SDLKey
SDLK_WORLD_23
      succ SDLKey
SDLK_WORLD_23 = SDLKey
SDLK_WORLD_24
      succ SDLKey
SDLK_WORLD_24 = SDLKey
SDLK_WORLD_25
      succ SDLKey
SDLK_WORLD_25 = SDLKey
SDLK_WORLD_26
      succ SDLKey
SDLK_WORLD_26 = SDLKey
SDLK_WORLD_27
      succ SDLKey
SDLK_WORLD_27 = SDLKey
SDLK_WORLD_28
      succ SDLKey
SDLK_WORLD_28 = SDLKey
SDLK_WORLD_29
      succ SDLKey
SDLK_WORLD_29 = SDLKey
SDLK_WORLD_30
      succ SDLKey
SDLK_WORLD_30 = SDLKey
SDLK_WORLD_31
      succ SDLKey
SDLK_WORLD_31 = SDLKey
SDLK_WORLD_32
      succ SDLKey
SDLK_WORLD_32 = SDLKey
SDLK_WORLD_33
      succ SDLKey
SDLK_WORLD_33 = SDLKey
SDLK_WORLD_34
      succ SDLKey
SDLK_WORLD_34 = SDLKey
SDLK_WORLD_35
      succ SDLKey
SDLK_WORLD_35 = SDLKey
SDLK_WORLD_36
      succ SDLKey
SDLK_WORLD_36 = SDLKey
SDLK_WORLD_37
      succ SDLKey
SDLK_WORLD_37 = SDLKey
SDLK_WORLD_38
      succ SDLKey
SDLK_WORLD_38 = SDLKey
SDLK_WORLD_39
      succ SDLKey
SDLK_WORLD_39 = SDLKey
SDLK_WORLD_40
      succ SDLKey
SDLK_WORLD_40 = SDLKey
SDLK_WORLD_41
      succ SDLKey
SDLK_WORLD_41 = SDLKey
SDLK_WORLD_42
      succ SDLKey
SDLK_WORLD_42 = SDLKey
SDLK_WORLD_43
      succ SDLKey
SDLK_WORLD_43 = SDLKey
SDLK_WORLD_44
      succ SDLKey
SDLK_WORLD_44 = SDLKey
SDLK_WORLD_45
      succ SDLKey
SDLK_WORLD_45 = SDLKey
SDLK_WORLD_46
      succ SDLKey
SDLK_WORLD_46 = SDLKey
SDLK_WORLD_47
      succ SDLKey
SDLK_WORLD_47 = SDLKey
SDLK_WORLD_48
      succ SDLKey
SDLK_WORLD_48 = SDLKey
SDLK_WORLD_49
      succ SDLKey
SDLK_WORLD_49 = SDLKey
SDLK_WORLD_50
      succ SDLKey
SDLK_WORLD_50 = SDLKey
SDLK_WORLD_51
      succ SDLKey
SDLK_WORLD_51 = SDLKey
SDLK_WORLD_52
      succ SDLKey
SDLK_WORLD_52 = SDLKey
SDLK_WORLD_53
      succ SDLKey
SDLK_WORLD_53 = SDLKey
SDLK_WORLD_54
      succ SDLKey
SDLK_WORLD_54 = SDLKey
SDLK_WORLD_55
      succ SDLKey
SDLK_WORLD_55 = SDLKey
SDLK_WORLD_56
      succ SDLKey
SDLK_WORLD_56 = SDLKey
SDLK_WORLD_57
      succ SDLKey
SDLK_WORLD_57 = SDLKey
SDLK_WORLD_58
      succ SDLKey
SDLK_WORLD_58 = SDLKey
SDLK_WORLD_59
      succ SDLKey
SDLK_WORLD_59 = SDLKey
SDLK_WORLD_60
      succ SDLKey
SDLK_WORLD_60 = SDLKey
SDLK_WORLD_61
      succ SDLKey
SDLK_WORLD_61 = SDLKey
SDLK_WORLD_62
      succ SDLKey
SDLK_WORLD_62 = SDLKey
SDLK_WORLD_63
      succ SDLKey
SDLK_WORLD_63 = SDLKey
SDLK_WORLD_64
      succ SDLKey
SDLK_WORLD_64 = SDLKey
SDLK_WORLD_65
      succ SDLKey
SDLK_WORLD_65 = SDLKey
SDLK_WORLD_66
      succ SDLKey
SDLK_WORLD_66 = SDLKey
SDLK_WORLD_67
      succ SDLKey
SDLK_WORLD_67 = SDLKey
SDLK_WORLD_68
      succ SDLKey
SDLK_WORLD_68 = SDLKey
SDLK_WORLD_69
      succ SDLKey
SDLK_WORLD_69 = SDLKey
SDLK_WORLD_70
      succ SDLKey
SDLK_WORLD_70 = SDLKey
SDLK_WORLD_71
      succ SDLKey
SDLK_WORLD_71 = SDLKey
SDLK_WORLD_72
      succ SDLKey
SDLK_WORLD_72 = SDLKey
SDLK_WORLD_73
      succ SDLKey
SDLK_WORLD_73 = SDLKey
SDLK_WORLD_74
      succ SDLKey
SDLK_WORLD_74 = SDLKey
SDLK_WORLD_75
      succ SDLKey
SDLK_WORLD_75 = SDLKey
SDLK_WORLD_76
      succ SDLKey
SDLK_WORLD_76 = SDLKey
SDLK_WORLD_77
      succ SDLKey
SDLK_WORLD_77 = SDLKey
SDLK_WORLD_78
      succ SDLKey
SDLK_WORLD_78 = SDLKey
SDLK_WORLD_79
      succ SDLKey
SDLK_WORLD_79 = SDLKey
SDLK_WORLD_80
      succ SDLKey
SDLK_WORLD_80 = SDLKey
SDLK_WORLD_81
      succ SDLKey
SDLK_WORLD_81 = SDLKey
SDLK_WORLD_82
      succ SDLKey
SDLK_WORLD_82 = SDLKey
SDLK_WORLD_83
      succ SDLKey
SDLK_WORLD_83 = SDLKey
SDLK_WORLD_84
      succ SDLKey
SDLK_WORLD_84 = SDLKey
SDLK_WORLD_85
      succ SDLKey
SDLK_WORLD_85 = SDLKey
SDLK_WORLD_86
      succ SDLKey
SDLK_WORLD_86 = SDLKey
SDLK_WORLD_87
      succ SDLKey
SDLK_WORLD_87 = SDLKey
SDLK_WORLD_88
      succ SDLKey
SDLK_WORLD_88 = SDLKey
SDLK_WORLD_89
      succ SDLKey
SDLK_WORLD_89 = SDLKey
SDLK_WORLD_90
      succ SDLKey
SDLK_WORLD_90 = SDLKey
SDLK_WORLD_91
      succ SDLKey
SDLK_WORLD_91 = SDLKey
SDLK_WORLD_92
      succ SDLKey
SDLK_WORLD_92 = SDLKey
SDLK_WORLD_93
      succ SDLKey
SDLK_WORLD_93 = SDLKey
SDLK_WORLD_94
      succ SDLKey
SDLK_WORLD_94 = SDLKey
SDLK_WORLD_95
      succ SDLKey
SDLK_WORLD_95 = SDLKey
SDLK_KP0
      succ SDLKey
SDLK_KP0 = SDLKey
SDLK_KP1
      succ SDLKey
SDLK_KP1 = SDLKey
SDLK_KP2
      succ SDLKey
SDLK_KP2 = SDLKey
SDLK_KP3
      succ SDLKey
SDLK_KP3 = SDLKey
SDLK_KP4
      succ SDLKey
SDLK_KP4 = SDLKey
SDLK_KP5
      succ SDLKey
SDLK_KP5 = SDLKey
SDLK_KP6
      succ SDLKey
SDLK_KP6 = SDLKey
SDLK_KP7
      succ SDLKey
SDLK_KP7 = SDLKey
SDLK_KP8
      succ SDLKey
SDLK_KP8 = SDLKey
SDLK_KP9
      succ SDLKey
SDLK_KP9 = SDLKey
SDLK_KP_PERIOD
      succ SDLKey
SDLK_KP_PERIOD = SDLKey
SDLK_KP_DIVIDE
      succ SDLKey
SDLK_KP_DIVIDE = SDLKey
SDLK_KP_MULTIPLY
      succ SDLKey
SDLK_KP_MULTIPLY = SDLKey
SDLK_KP_MINUS
      succ SDLKey
SDLK_KP_MINUS = SDLKey
SDLK_KP_PLUS
      succ SDLKey
SDLK_KP_PLUS = SDLKey
SDLK_KP_ENTER
      succ SDLKey
SDLK_KP_ENTER = SDLKey
SDLK_KP_EQUALS
      succ SDLKey
SDLK_KP_EQUALS = SDLKey
SDLK_UP
      succ SDLKey
SDLK_UP = SDLKey
SDLK_DOWN
      succ SDLKey
SDLK_DOWN = SDLKey
SDLK_RIGHT
      succ SDLKey
SDLK_RIGHT = SDLKey
SDLK_LEFT
      succ SDLKey
SDLK_LEFT = SDLKey
SDLK_INSERT
      succ SDLKey
SDLK_INSERT = SDLKey
SDLK_HOME
      succ SDLKey
SDLK_HOME = SDLKey
SDLK_END
      succ SDLKey
SDLK_END = SDLKey
SDLK_PAGEUP
      succ SDLKey
SDLK_PAGEUP = SDLKey
SDLK_PAGEDOWN
      succ SDLKey
SDLK_PAGEDOWN = SDLKey
SDLK_F1
      succ SDLKey
SDLK_F1 = SDLKey
SDLK_F2
      succ SDLKey
SDLK_F2 = SDLKey
SDLK_F3
      succ SDLKey
SDLK_F3 = SDLKey
SDLK_F4
      succ SDLKey
SDLK_F4 = SDLKey
SDLK_F5
      succ SDLKey
SDLK_F5 = SDLKey
SDLK_F6
      succ SDLKey
SDLK_F6 = SDLKey
SDLK_F7
      succ SDLKey
SDLK_F7 = SDLKey
SDLK_F8
      succ SDLKey
SDLK_F8 = SDLKey
SDLK_F9
      succ SDLKey
SDLK_F9 = SDLKey
SDLK_F10
      succ SDLKey
SDLK_F10 = SDLKey
SDLK_F11
      succ SDLKey
SDLK_F11 = SDLKey
SDLK_F12
      succ SDLKey
SDLK_F12 = SDLKey
SDLK_F13
      succ SDLKey
SDLK_F13 = SDLKey
SDLK_F14
      succ SDLKey
SDLK_F14 = SDLKey
SDLK_F15
      succ SDLKey
SDLK_F15 = SDLKey
SDLK_NUMLOCK
      succ SDLKey
SDLK_NUMLOCK = SDLKey
SDLK_CAPSLOCK
      succ SDLKey
SDLK_CAPSLOCK = SDLKey
SDLK_SCROLLOCK
      succ SDLKey
SDLK_SCROLLOCK = SDLKey
SDLK_RSHIFT
      succ SDLKey
SDLK_RSHIFT = SDLKey
SDLK_LSHIFT
      succ SDLKey
SDLK_LSHIFT = SDLKey
SDLK_RCTRL
      succ SDLKey
SDLK_RCTRL = SDLKey
SDLK_LCTRL
      succ SDLKey
SDLK_LCTRL = SDLKey
SDLK_RALT
      succ SDLKey
SDLK_RALT = SDLKey
SDLK_LALT
      succ SDLKey
SDLK_LALT = SDLKey
SDLK_RMETA
      succ SDLKey
SDLK_RMETA = SDLKey
SDLK_LMETA
      succ SDLKey
SDLK_LMETA = SDLKey
SDLK_LSUPER
      succ SDLKey
SDLK_LSUPER = SDLKey
SDLK_RSUPER
      succ SDLKey
SDLK_RSUPER = SDLKey
SDLK_MODE
      succ SDLKey
SDLK_MODE = SDLKey
SDLK_COMPOSE
      succ SDLKey
SDLK_COMPOSE = SDLKey
SDLK_HELP
      succ SDLKey
SDLK_HELP = SDLKey
SDLK_PRINT
      succ SDLKey
SDLK_PRINT = SDLKey
SDLK_SYSREQ
      succ SDLKey
SDLK_SYSREQ = SDLKey
SDLK_BREAK
      succ SDLKey
SDLK_BREAK = SDLKey
SDLK_MENU
      succ SDLKey
SDLK_MENU = SDLKey
SDLK_POWER
      succ SDLKey
SDLK_POWER = SDLKey
SDLK_EURO
      succ SDLKey
SDLK_EURO = SDLKey
SDLK_UNDO
      succ SDLKey
SDLK_UNDO = SDLKey
SDLK_LAST
      succ SDLKey
_ = String -> SDLKey
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.succ: bad argument"
      pred :: SDLKey -> SDLKey
pred SDLKey
SDLK_FIRST = SDLKey
SDLK_UNKNOWN
      pred SDLKey
SDLK_BACKSPACE = SDLKey
SDLK_FIRST
      pred SDLKey
SDLK_TAB = SDLKey
SDLK_BACKSPACE
      pred SDLKey
SDLK_CLEAR = SDLKey
SDLK_TAB
      pred SDLKey
SDLK_RETURN = SDLKey
SDLK_CLEAR
      pred SDLKey
SDLK_PAUSE = SDLKey
SDLK_RETURN
      pred SDLKey
SDLK_ESCAPE = SDLKey
SDLK_PAUSE
      pred SDLKey
SDLK_SPACE = SDLKey
SDLK_ESCAPE
      pred SDLKey
SDLK_EXCLAIM = SDLKey
SDLK_SPACE
      pred SDLKey
SDLK_QUOTEDBL = SDLKey
SDLK_EXCLAIM
      pred SDLKey
SDLK_HASH = SDLKey
SDLK_QUOTEDBL
      pred SDLKey
SDLK_DOLLAR = SDLKey
SDLK_HASH
      pred SDLKey
SDLK_AMPERSAND = SDLKey
SDLK_DOLLAR
      pred SDLKey
SDLK_QUOTE = SDLKey
SDLK_AMPERSAND
      pred SDLKey
SDLK_LEFTPAREN = SDLKey
SDLK_QUOTE
      pred SDLKey
SDLK_RIGHTPAREN = SDLKey
SDLK_LEFTPAREN
      pred SDLKey
SDLK_ASTERISK = SDLKey
SDLK_RIGHTPAREN
      pred SDLKey
SDLK_PLUS = SDLKey
SDLK_ASTERISK
      pred SDLKey
SDLK_COMMA = SDLKey
SDLK_PLUS
      pred SDLKey
SDLK_MINUS = SDLKey
SDLK_COMMA
      pred SDLKey
SDLK_PERIOD = SDLKey
SDLK_MINUS
      pred SDLKey
SDLK_SLASH = SDLKey
SDLK_PERIOD
      pred SDLKey
SDLK_0 = SDLKey
SDLK_SLASH
      pred SDLKey
SDLK_1 = SDLKey
SDLK_0
      pred SDLKey
SDLK_2 = SDLKey
SDLK_1
      pred SDLKey
SDLK_3 = SDLKey
SDLK_2
      pred SDLKey
SDLK_4 = SDLKey
SDLK_3
      pred SDLKey
SDLK_5 = SDLKey
SDLK_4
      pred SDLKey
SDLK_6 = SDLKey
SDLK_5
      pred SDLKey
SDLK_7 = SDLKey
SDLK_6
      pred SDLKey
SDLK_8 = SDLKey
SDLK_7
      pred SDLKey
SDLK_9 = SDLKey
SDLK_8
      pred SDLKey
SDLK_COLON = SDLKey
SDLK_9
      pred SDLKey
SDLK_SEMICOLON = SDLKey
SDLK_COLON
      pred SDLKey
SDLK_LESS = SDLKey
SDLK_SEMICOLON
      pred SDLKey
SDLK_EQUALS = SDLKey
SDLK_LESS
      pred SDLKey
SDLK_GREATER = SDLKey
SDLK_EQUALS
      pred SDLKey
SDLK_QUESTION = SDLKey
SDLK_GREATER
      pred SDLKey
SDLK_AT = SDLKey
SDLK_QUESTION
      pred SDLKey
SDLK_LEFTBRACKET = SDLKey
SDLK_AT
      pred SDLKey
SDLK_BACKSLASH = SDLKey
SDLK_LEFTBRACKET
      pred SDLKey
SDLK_RIGHTBRACKET = SDLKey
SDLK_BACKSLASH
      pred SDLKey
SDLK_CARET = SDLKey
SDLK_RIGHTBRACKET
      pred SDLKey
SDLK_UNDERSCORE = SDLKey
SDLK_CARET
      pred SDLKey
SDLK_BACKQUOTE = SDLKey
SDLK_UNDERSCORE
      pred SDLKey
SDLK_a = SDLKey
SDLK_BACKQUOTE
      pred SDLKey
SDLK_b = SDLKey
SDLK_a
      pred SDLKey
SDLK_c = SDLKey
SDLK_b
      pred SDLKey
SDLK_d = SDLKey
SDLK_c
      pred SDLKey
SDLK_e = SDLKey
SDLK_d
      pred SDLKey
SDLK_f = SDLKey
SDLK_e
      pred SDLKey
SDLK_g = SDLKey
SDLK_f
      pred SDLKey
SDLK_h = SDLKey
SDLK_g
      pred SDLKey
SDLK_i = SDLKey
SDLK_h
      pred SDLKey
SDLK_j = SDLKey
SDLK_i
      pred SDLKey
SDLK_k = SDLKey
SDLK_j
      pred SDLKey
SDLK_l = SDLKey
SDLK_k
      pred SDLKey
SDLK_m = SDLKey
SDLK_l
      pred SDLKey
SDLK_n = SDLKey
SDLK_m
      pred SDLKey
SDLK_o = SDLKey
SDLK_n
      pred SDLKey
SDLK_p = SDLKey
SDLK_o
      pred SDLKey
SDLK_q = SDLKey
SDLK_p
      pred SDLKey
SDLK_r = SDLKey
SDLK_q
      pred SDLKey
SDLK_s = SDLKey
SDLK_r
      pred SDLKey
SDLK_t = SDLKey
SDLK_s
      pred SDLKey
SDLK_u = SDLKey
SDLK_t
      pred SDLKey
SDLK_v = SDLKey
SDLK_u
      pred SDLKey
SDLK_w = SDLKey
SDLK_v
      pred SDLKey
SDLK_x = SDLKey
SDLK_w
      pred SDLKey
SDLK_y = SDLKey
SDLK_x
      pred SDLKey
SDLK_z = SDLKey
SDLK_y
      pred SDLKey
SDLK_DELETE = SDLKey
SDLK_z
      pred SDLKey
SDLK_WORLD_0 = SDLKey
SDLK_DELETE
      pred SDLKey
SDLK_WORLD_1 = SDLKey
SDLK_WORLD_0
      pred SDLKey
SDLK_WORLD_2 = SDLKey
SDLK_WORLD_1
      pred SDLKey
SDLK_WORLD_3 = SDLKey
SDLK_WORLD_2
      pred SDLKey
SDLK_WORLD_4 = SDLKey
SDLK_WORLD_3
      pred SDLKey
SDLK_WORLD_5 = SDLKey
SDLK_WORLD_4
      pred SDLKey
SDLK_WORLD_6 = SDLKey
SDLK_WORLD_5
      pred SDLKey
SDLK_WORLD_7 = SDLKey
SDLK_WORLD_6
      pred SDLKey
SDLK_WORLD_8 = SDLKey
SDLK_WORLD_7
      pred SDLKey
SDLK_WORLD_9 = SDLKey
SDLK_WORLD_8
      pred SDLKey
SDLK_WORLD_10 = SDLKey
SDLK_WORLD_9
      pred SDLKey
SDLK_WORLD_11 = SDLKey
SDLK_WORLD_10
      pred SDLKey
SDLK_WORLD_12 = SDLKey
SDLK_WORLD_11
      pred SDLKey
SDLK_WORLD_13 = SDLKey
SDLK_WORLD_12
      pred SDLKey
SDLK_WORLD_14 = SDLKey
SDLK_WORLD_13
      pred SDLKey
SDLK_WORLD_15 = SDLKey
SDLK_WORLD_14
      pred SDLKey
SDLK_WORLD_16 = SDLKey
SDLK_WORLD_15
      pred SDLKey
SDLK_WORLD_17 = SDLKey
SDLK_WORLD_16
      pred SDLKey
SDLK_WORLD_18 = SDLKey
SDLK_WORLD_17
      pred SDLKey
SDLK_WORLD_19 = SDLKey
SDLK_WORLD_18
      pred SDLKey
SDLK_WORLD_20 = SDLKey
SDLK_WORLD_19
      pred SDLKey
SDLK_WORLD_21 = SDLKey
SDLK_WORLD_20
      pred SDLKey
SDLK_WORLD_22 = SDLKey
SDLK_WORLD_21
      pred SDLKey
SDLK_WORLD_23 = SDLKey
SDLK_WORLD_22
      pred SDLKey
SDLK_WORLD_24 = SDLKey
SDLK_WORLD_23
      pred SDLKey
SDLK_WORLD_25 = SDLKey
SDLK_WORLD_24
      pred SDLKey
SDLK_WORLD_26 = SDLKey
SDLK_WORLD_25
      pred SDLKey
SDLK_WORLD_27 = SDLKey
SDLK_WORLD_26
      pred SDLKey
SDLK_WORLD_28 = SDLKey
SDLK_WORLD_27
      pred SDLKey
SDLK_WORLD_29 = SDLKey
SDLK_WORLD_28
      pred SDLKey
SDLK_WORLD_30 = SDLKey
SDLK_WORLD_29
      pred SDLKey
SDLK_WORLD_31 = SDLKey
SDLK_WORLD_30
      pred SDLKey
SDLK_WORLD_32 = SDLKey
SDLK_WORLD_31
      pred SDLKey
SDLK_WORLD_33 = SDLKey
SDLK_WORLD_32
      pred SDLKey
SDLK_WORLD_34 = SDLKey
SDLK_WORLD_33
      pred SDLKey
SDLK_WORLD_35 = SDLKey
SDLK_WORLD_34
      pred SDLKey
SDLK_WORLD_36 = SDLKey
SDLK_WORLD_35
      pred SDLKey
SDLK_WORLD_37 = SDLKey
SDLK_WORLD_36
      pred SDLKey
SDLK_WORLD_38 = SDLKey
SDLK_WORLD_37
      pred SDLKey
SDLK_WORLD_39 = SDLKey
SDLK_WORLD_38
      pred SDLKey
SDLK_WORLD_40 = SDLKey
SDLK_WORLD_39
      pred SDLKey
SDLK_WORLD_41 = SDLKey
SDLK_WORLD_40
      pred SDLKey
SDLK_WORLD_42 = SDLKey
SDLK_WORLD_41
      pred SDLKey
SDLK_WORLD_43 = SDLKey
SDLK_WORLD_42
      pred SDLKey
SDLK_WORLD_44 = SDLKey
SDLK_WORLD_43
      pred SDLKey
SDLK_WORLD_45 = SDLKey
SDLK_WORLD_44
      pred SDLKey
SDLK_WORLD_46 = SDLKey
SDLK_WORLD_45
      pred SDLKey
SDLK_WORLD_47 = SDLKey
SDLK_WORLD_46
      pred SDLKey
SDLK_WORLD_48 = SDLKey
SDLK_WORLD_47
      pred SDLKey
SDLK_WORLD_49 = SDLKey
SDLK_WORLD_48
      pred SDLKey
SDLK_WORLD_50 = SDLKey
SDLK_WORLD_49
      pred SDLKey
SDLK_WORLD_51 = SDLKey
SDLK_WORLD_50
      pred SDLKey
SDLK_WORLD_52 = SDLKey
SDLK_WORLD_51
      pred SDLKey
SDLK_WORLD_53 = SDLKey
SDLK_WORLD_52
      pred SDLKey
SDLK_WORLD_54 = SDLKey
SDLK_WORLD_53
      pred SDLKey
SDLK_WORLD_55 = SDLKey
SDLK_WORLD_54
      pred SDLKey
SDLK_WORLD_56 = SDLKey
SDLK_WORLD_55
      pred SDLKey
SDLK_WORLD_57 = SDLKey
SDLK_WORLD_56
      pred SDLKey
SDLK_WORLD_58 = SDLKey
SDLK_WORLD_57
      pred SDLKey
SDLK_WORLD_59 = SDLKey
SDLK_WORLD_58
      pred SDLKey
SDLK_WORLD_60 = SDLKey
SDLK_WORLD_59
      pred SDLKey
SDLK_WORLD_61 = SDLKey
SDLK_WORLD_60
      pred SDLKey
SDLK_WORLD_62 = SDLKey
SDLK_WORLD_61
      pred SDLKey
SDLK_WORLD_63 = SDLKey
SDLK_WORLD_62
      pred SDLKey
SDLK_WORLD_64 = SDLKey
SDLK_WORLD_63
      pred SDLKey
SDLK_WORLD_65 = SDLKey
SDLK_WORLD_64
      pred SDLKey
SDLK_WORLD_66 = SDLKey
SDLK_WORLD_65
      pred SDLKey
SDLK_WORLD_67 = SDLKey
SDLK_WORLD_66
      pred SDLKey
SDLK_WORLD_68 = SDLKey
SDLK_WORLD_67
      pred SDLKey
SDLK_WORLD_69 = SDLKey
SDLK_WORLD_68
      pred SDLKey
SDLK_WORLD_70 = SDLKey
SDLK_WORLD_69
      pred SDLKey
SDLK_WORLD_71 = SDLKey
SDLK_WORLD_70
      pred SDLKey
SDLK_WORLD_72 = SDLKey
SDLK_WORLD_71
      pred SDLKey
SDLK_WORLD_73 = SDLKey
SDLK_WORLD_72
      pred SDLKey
SDLK_WORLD_74 = SDLKey
SDLK_WORLD_73
      pred SDLKey
SDLK_WORLD_75 = SDLKey
SDLK_WORLD_74
      pred SDLKey
SDLK_WORLD_76 = SDLKey
SDLK_WORLD_75
      pred SDLKey
SDLK_WORLD_77 = SDLKey
SDLK_WORLD_76
      pred SDLKey
SDLK_WORLD_78 = SDLKey
SDLK_WORLD_77
      pred SDLKey
SDLK_WORLD_79 = SDLKey
SDLK_WORLD_78
      pred SDLKey
SDLK_WORLD_80 = SDLKey
SDLK_WORLD_79
      pred SDLKey
SDLK_WORLD_81 = SDLKey
SDLK_WORLD_80
      pred SDLKey
SDLK_WORLD_82 = SDLKey
SDLK_WORLD_81
      pred SDLKey
SDLK_WORLD_83 = SDLKey
SDLK_WORLD_82
      pred SDLKey
SDLK_WORLD_84 = SDLKey
SDLK_WORLD_83
      pred SDLKey
SDLK_WORLD_85 = SDLKey
SDLK_WORLD_84
      pred SDLKey
SDLK_WORLD_86 = SDLKey
SDLK_WORLD_85
      pred SDLKey
SDLK_WORLD_87 = SDLKey
SDLK_WORLD_86
      pred SDLKey
SDLK_WORLD_88 = SDLKey
SDLK_WORLD_87
      pred SDLKey
SDLK_WORLD_89 = SDLKey
SDLK_WORLD_88
      pred SDLKey
SDLK_WORLD_90 = SDLKey
SDLK_WORLD_89
      pred SDLKey
SDLK_WORLD_91 = SDLKey
SDLK_WORLD_90
      pred SDLKey
SDLK_WORLD_92 = SDLKey
SDLK_WORLD_91
      pred SDLKey
SDLK_WORLD_93 = SDLKey
SDLK_WORLD_92
      pred SDLKey
SDLK_WORLD_94 = SDLKey
SDLK_WORLD_93
      pred SDLKey
SDLK_WORLD_95 = SDLKey
SDLK_WORLD_94
      pred SDLKey
SDLK_KP0 = SDLKey
SDLK_WORLD_95
      pred SDLKey
SDLK_KP1 = SDLKey
SDLK_KP0
      pred SDLKey
SDLK_KP2 = SDLKey
SDLK_KP1
      pred SDLKey
SDLK_KP3 = SDLKey
SDLK_KP2
      pred SDLKey
SDLK_KP4 = SDLKey
SDLK_KP3
      pred SDLKey
SDLK_KP5 = SDLKey
SDLK_KP4
      pred SDLKey
SDLK_KP6 = SDLKey
SDLK_KP5
      pred SDLKey
SDLK_KP7 = SDLKey
SDLK_KP6
      pred SDLKey
SDLK_KP8 = SDLKey
SDLK_KP7
      pred SDLKey
SDLK_KP9 = SDLKey
SDLK_KP8
      pred SDLKey
SDLK_KP_PERIOD = SDLKey
SDLK_KP9
      pred SDLKey
SDLK_KP_DIVIDE = SDLKey
SDLK_KP_PERIOD
      pred SDLKey
SDLK_KP_MULTIPLY = SDLKey
SDLK_KP_DIVIDE
      pred SDLKey
SDLK_KP_MINUS = SDLKey
SDLK_KP_MULTIPLY
      pred SDLKey
SDLK_KP_PLUS = SDLKey
SDLK_KP_MINUS
      pred SDLKey
SDLK_KP_ENTER = SDLKey
SDLK_KP_PLUS
      pred SDLKey
SDLK_KP_EQUALS = SDLKey
SDLK_KP_ENTER
      pred SDLKey
SDLK_UP = SDLKey
SDLK_KP_EQUALS
      pred SDLKey
SDLK_DOWN = SDLKey
SDLK_UP
      pred SDLKey
SDLK_RIGHT = SDLKey
SDLK_DOWN
      pred SDLKey
SDLK_LEFT = SDLKey
SDLK_RIGHT
      pred SDLKey
SDLK_INSERT = SDLKey
SDLK_LEFT
      pred SDLKey
SDLK_HOME = SDLKey
SDLK_INSERT
      pred SDLKey
SDLK_END = SDLKey
SDLK_HOME
      pred SDLKey
SDLK_PAGEUP = SDLKey
SDLK_END
      pred SDLKey
SDLK_PAGEDOWN = SDLKey
SDLK_PAGEUP
      pred SDLKey
SDLK_F1 = SDLKey
SDLK_PAGEDOWN
      pred SDLKey
SDLK_F2 = SDLKey
SDLK_F1
      pred SDLKey
SDLK_F3 = SDLKey
SDLK_F2
      pred SDLKey
SDLK_F4 = SDLKey
SDLK_F3
      pred SDLKey
SDLK_F5 = SDLKey
SDLK_F4
      pred SDLKey
SDLK_F6 = SDLKey
SDLK_F5
      pred SDLKey
SDLK_F7 = SDLKey
SDLK_F6
      pred SDLKey
SDLK_F8 = SDLKey
SDLK_F7
      pred SDLKey
SDLK_F9 = SDLKey
SDLK_F8
      pred SDLKey
SDLK_F10 = SDLKey
SDLK_F9
      pred SDLKey
SDLK_F11 = SDLKey
SDLK_F10
      pred SDLKey
SDLK_F12 = SDLKey
SDLK_F11
      pred SDLKey
SDLK_F13 = SDLKey
SDLK_F12
      pred SDLKey
SDLK_F14 = SDLKey
SDLK_F13
      pred SDLKey
SDLK_F15 = SDLKey
SDLK_F14
      pred SDLKey
SDLK_NUMLOCK = SDLKey
SDLK_F15
      pred SDLKey
SDLK_CAPSLOCK = SDLKey
SDLK_NUMLOCK
      pred SDLKey
SDLK_SCROLLOCK = SDLKey
SDLK_CAPSLOCK
      pred SDLKey
SDLK_RSHIFT = SDLKey
SDLK_SCROLLOCK
      pred SDLKey
SDLK_LSHIFT = SDLKey
SDLK_RSHIFT
      pred SDLKey
SDLK_RCTRL = SDLKey
SDLK_LSHIFT
      pred SDLKey
SDLK_LCTRL = SDLKey
SDLK_RCTRL
      pred SDLKey
SDLK_RALT = SDLKey
SDLK_LCTRL
      pred SDLKey
SDLK_LALT = SDLKey
SDLK_RALT
      pred SDLKey
SDLK_RMETA = SDLKey
SDLK_LALT
      pred SDLKey
SDLK_LMETA = SDLKey
SDLK_RMETA
      pred SDLKey
SDLK_LSUPER = SDLKey
SDLK_LMETA
      pred SDLKey
SDLK_RSUPER = SDLKey
SDLK_LSUPER
      pred SDLKey
SDLK_MODE = SDLKey
SDLK_RSUPER
      pred SDLKey
SDLK_COMPOSE = SDLKey
SDLK_MODE
      pred SDLKey
SDLK_HELP = SDLKey
SDLK_COMPOSE
      pred SDLKey
SDLK_PRINT = SDLKey
SDLK_HELP
      pred SDLKey
SDLK_SYSREQ = SDLKey
SDLK_PRINT
      pred SDLKey
SDLK_BREAK = SDLKey
SDLK_SYSREQ
      pred SDLKey
SDLK_MENU = SDLKey
SDLK_BREAK
      pred SDLKey
SDLK_POWER = SDLKey
SDLK_MENU
      pred SDLKey
SDLK_EURO = SDLKey
SDLK_POWER
      pred SDLKey
SDLK_UNDO = SDLKey
SDLK_EURO
      pred SDLKey
SDLK_LAST = SDLKey
SDLK_UNDO
      pred SDLKey
_ = String -> SDLKey
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Keysym.pred: bad argument"
      enumFromTo :: SDLKey -> SDLKey -> [SDLKey]
enumFromTo SDLKey
x SDLKey
y | SDLKey
x SDLKey -> SDLKey -> Bool
forall a. Ord a => a -> a -> Bool
> SDLKey
y = []
                     | SDLKey
x SDLKey -> SDLKey -> Bool
forall a. Eq a => a -> a -> Bool
== SDLKey
y = [SDLKey
y]
                     | Bool
True = SDLKey
x SDLKey -> [SDLKey] -> [SDLKey]
forall a. a -> [a] -> [a]
: SDLKey -> SDLKey -> [SDLKey]
forall a b. Enum a b => a -> a -> [a]
enumFromTo (SDLKey -> SDLKey
forall a b. Enum a b => a -> a
succ SDLKey
x) SDLKey
y