-- GENERATED by C->Haskell Compiler, version 0.25.2 Snowboundest, 31 Oct 2014 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Termbox/Enums.chs" #-}
module Termbox.Enums where



data Attrs = TB_BOLD
           | TB_UNDERLINE
           | TB_REVERSE
  deriving (Eq,Show)
instance Enum Attrs where
  succ TB_BOLD = TB_UNDERLINE
  succ TB_UNDERLINE = TB_REVERSE
  succ TB_REVERSE = error "Attrs.succ: TB_REVERSE has no successor"

  pred TB_UNDERLINE = TB_BOLD
  pred TB_REVERSE = TB_UNDERLINE
  pred TB_BOLD = error "Attrs.pred: TB_BOLD has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_REVERSE

  fromEnum TB_BOLD = 256
  fromEnum TB_UNDERLINE = 512
  fromEnum TB_REVERSE = 1024

  toEnum 256 = TB_BOLD
  toEnum 512 = TB_UNDERLINE
  toEnum 1024 = TB_REVERSE
  toEnum unmatched = error ("Attrs.toEnum: Cannot match " ++ show unmatched)

{-# LINE 9 "src/Termbox/Enums.chs" #-}


data Errors = TB_EPIPE_TRAP_ERROR
            | TB_EFAILED_TO_OPEN_TTY
            | TB_EUNSUPPORTED_TERMINAL
  deriving (Eq,Show)
instance Enum Errors where
  succ TB_EPIPE_TRAP_ERROR = TB_EFAILED_TO_OPEN_TTY
  succ TB_EFAILED_TO_OPEN_TTY = TB_EUNSUPPORTED_TERMINAL
  succ TB_EUNSUPPORTED_TERMINAL = error "Errors.succ: TB_EUNSUPPORTED_TERMINAL has no successor"

  pred TB_EFAILED_TO_OPEN_TTY = TB_EPIPE_TRAP_ERROR
  pred TB_EUNSUPPORTED_TERMINAL = TB_EFAILED_TO_OPEN_TTY
  pred TB_EPIPE_TRAP_ERROR = error "Errors.pred: TB_EPIPE_TRAP_ERROR has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_EUNSUPPORTED_TERMINAL

  fromEnum TB_EPIPE_TRAP_ERROR = (-3)
  fromEnum TB_EFAILED_TO_OPEN_TTY = (-2)
  fromEnum TB_EUNSUPPORTED_TERMINAL = (-1)

  toEnum (-3) = TB_EPIPE_TRAP_ERROR
  toEnum (-2) = TB_EFAILED_TO_OPEN_TTY
  toEnum (-1) = TB_EUNSUPPORTED_TERMINAL
  toEnum unmatched = error ("Errors.toEnum: Cannot match " ++ show unmatched)

{-# LINE 15 "src/Termbox/Enums.chs" #-}


data TB_HIDE_CURSOR = TB_HIDE_CURSOR
  deriving (Eq,Show)
instance Enum TB_HIDE_CURSOR where
  succ TB_HIDE_CURSOR = error "TB_HIDE_CURSOR.succ: TB_HIDE_CURSOR has no successor"

  pred TB_HIDE_CURSOR = error "TB_HIDE_CURSOR.pred: TB_HIDE_CURSOR has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_HIDE_CURSOR

  fromEnum TB_HIDE_CURSOR = (-1)

  toEnum (-1) = TB_HIDE_CURSOR
  toEnum unmatched = error ("TB_HIDE_CURSOR.toEnum: Cannot match " ++ show unmatched)

{-# LINE 17 "src/Termbox/Enums.chs" #-}


data InputModes = TB_INPUT_CURRENT
                | TB_INPUT_ESC
                | TB_INPUT_ALT
                | TB_INPUT_MOUSE
  deriving (Eq,Show)
instance Enum InputModes where
  succ TB_INPUT_CURRENT = TB_INPUT_ESC
  succ TB_INPUT_ESC = TB_INPUT_ALT
  succ TB_INPUT_ALT = TB_INPUT_MOUSE
  succ TB_INPUT_MOUSE = error "InputModes.succ: TB_INPUT_MOUSE has no successor"

  pred TB_INPUT_ESC = TB_INPUT_CURRENT
  pred TB_INPUT_ALT = TB_INPUT_ESC
  pred TB_INPUT_MOUSE = TB_INPUT_ALT
  pred TB_INPUT_CURRENT = error "InputModes.pred: TB_INPUT_CURRENT has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_INPUT_MOUSE

  fromEnum TB_INPUT_CURRENT = 0
  fromEnum TB_INPUT_ESC = 1
  fromEnum TB_INPUT_ALT = 2
  fromEnum TB_INPUT_MOUSE = 4

  toEnum 0 = TB_INPUT_CURRENT
  toEnum 1 = TB_INPUT_ESC
  toEnum 2 = TB_INPUT_ALT
  toEnum 4 = TB_INPUT_MOUSE
  toEnum unmatched = error ("InputModes.toEnum: Cannot match " ++ show unmatched)

{-# LINE 24 "src/Termbox/Enums.chs" #-}


data OutputModes = TB_OUTPUT_CURRENT
                 | TB_OUTPUT_NORMAL
                 | TB_OUTPUT_256
                 | TB_OUTPUT_216
                 | TB_OUTPUT_GRAYSCALE
  deriving (Eq,Show)
instance Enum OutputModes where
  succ TB_OUTPUT_CURRENT = TB_OUTPUT_NORMAL
  succ TB_OUTPUT_NORMAL = TB_OUTPUT_256
  succ TB_OUTPUT_256 = TB_OUTPUT_216
  succ TB_OUTPUT_216 = TB_OUTPUT_GRAYSCALE
  succ TB_OUTPUT_GRAYSCALE = error "OutputModes.succ: TB_OUTPUT_GRAYSCALE has no successor"

  pred TB_OUTPUT_NORMAL = TB_OUTPUT_CURRENT
  pred TB_OUTPUT_256 = TB_OUTPUT_NORMAL
  pred TB_OUTPUT_216 = TB_OUTPUT_256
  pred TB_OUTPUT_GRAYSCALE = TB_OUTPUT_216
  pred TB_OUTPUT_CURRENT = error "OutputModes.pred: TB_OUTPUT_CURRENT has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_OUTPUT_GRAYSCALE

  fromEnum TB_OUTPUT_CURRENT = 0
  fromEnum TB_OUTPUT_NORMAL = 1
  fromEnum TB_OUTPUT_256 = 2
  fromEnum TB_OUTPUT_216 = 3
  fromEnum TB_OUTPUT_GRAYSCALE = 4

  toEnum 0 = TB_OUTPUT_CURRENT
  toEnum 1 = TB_OUTPUT_NORMAL
  toEnum 2 = TB_OUTPUT_256
  toEnum 3 = TB_OUTPUT_216
  toEnum 4 = TB_OUTPUT_GRAYSCALE
  toEnum unmatched = error ("OutputModes.toEnum: Cannot match " ++ show unmatched)

{-# LINE 32 "src/Termbox/Enums.chs" #-}


data Color = TB_DEFAULT
           | Black
           | Red
           | Green
           | Yellow
           | Blue
           | Magenta
           | Cyan
           | White
  deriving (Eq,Show)
instance Enum Color where
  succ TB_DEFAULT = Black
  succ Black = Red
  succ Red = Green
  succ Green = Yellow
  succ Yellow = Blue
  succ Blue = Magenta
  succ Magenta = Cyan
  succ Cyan = White
  succ White = error "Color.succ: White has no successor"

  pred Black = TB_DEFAULT
  pred Red = Black
  pred Green = Red
  pred Yellow = Green
  pred Blue = Yellow
  pred Magenta = Blue
  pred Cyan = Magenta
  pred White = Cyan
  pred TB_DEFAULT = error "Color.pred: TB_DEFAULT has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from White

  fromEnum TB_DEFAULT = 0
  fromEnum Black = 1
  fromEnum Red = 2
  fromEnum Green = 3
  fromEnum Yellow = 4
  fromEnum Blue = 5
  fromEnum Magenta = 6
  fromEnum Cyan = 7
  fromEnum White = 8

  toEnum 0 = TB_DEFAULT
  toEnum 1 = Black
  toEnum 2 = Red
  toEnum 3 = Green
  toEnum 4 = Yellow
  toEnum 5 = Blue
  toEnum 6 = Magenta
  toEnum 7 = Cyan
  toEnum 8 = White
  toEnum unmatched = error ("Color.toEnum: Cannot match " ++ show unmatched)

{-# LINE 44 "src/Termbox/Enums.chs" #-}


data Mod = TB_MOD_ALT
  deriving (Eq,Show)
instance Enum Mod where
  succ TB_MOD_ALT = error "Mod.succ: TB_MOD_ALT has no successor"

  pred TB_MOD_ALT = error "Mod.pred: TB_MOD_ALT has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_MOD_ALT

  fromEnum TB_MOD_ALT = 1

  toEnum 1 = TB_MOD_ALT
  toEnum unmatched = error ("Mod.toEnum: Cannot match " ++ show unmatched)

{-# LINE 46 "src/Termbox/Enums.chs" #-}


data Key = TB_KEY_CTRL_TILDE
         | TB_KEY_CTRL_2
         | TB_KEY_CTRL_A
         | TB_KEY_CTRL_B
         | TB_KEY_CTRL_C
         | TB_KEY_CTRL_D
         | TB_KEY_CTRL_E
         | TB_KEY_CTRL_F
         | TB_KEY_CTRL_G
         | TB_KEY_BACKSPACE
         | TB_KEY_CTRL_H
         | TB_KEY_TAB
         | TB_KEY_CTRL_I
         | TB_KEY_CTRL_J
         | TB_KEY_CTRL_K
         | TB_KEY_CTRL_L
         | TB_KEY_ENTER
         | TB_KEY_CTRL_M
         | TB_KEY_CTRL_N
         | TB_KEY_CTRL_O
         | TB_KEY_CTRL_P
         | TB_KEY_CTRL_Q
         | TB_KEY_CTRL_R
         | TB_KEY_CTRL_S
         | TB_KEY_CTRL_T
         | TB_KEY_CTRL_U
         | TB_KEY_CTRL_V
         | TB_KEY_CTRL_W
         | TB_KEY_CTRL_X
         | TB_KEY_CTRL_Y
         | TB_KEY_CTRL_Z
         | TB_KEY_ESC
         | TB_KEY_CTRL_LSQ_BRACKET
         | TB_KEY_CTRL_3
         | TB_KEY_CTRL_4
         | TB_KEY_CTRL_BACKSLASH
         | TB_KEY_CTRL_5
         | TB_KEY_CTRL_RSQ_BRACKET
         | TB_KEY_CTRL_6
         | TB_KEY_CTRL_7
         | TB_KEY_CTRL_SLASH
         | TB_KEY_CTRL_UNDERSCORE
         | TB_KEY_SPACE
         | TB_KEY_BACKSPACE2
         | TB_KEY_CTRL_8
         | TB_KEY_MOUSE_WHEEL_DOWN
         | TB_KEY_MOUSE_WHEEL_UP
         | TB_KEY_MOUSE_RELEASE
         | TB_KEY_MOUSE_MIDDLE
         | TB_KEY_MOUSE_RIGHT
         | TB_KEY_MOUSE_LEFT
         | TB_KEY_ARROW_RIGHT
         | TB_KEY_ARROW_LEFT
         | TB_KEY_ARROW_DOWN
         | TB_KEY_ARROW_UP
         | TB_KEY_PGDN
         | TB_KEY_PGUP
         | TB_KEY_END
         | TB_KEY_HOME
         | TB_KEY_DELETE
         | TB_KEY_INSERT
         | TB_KEY_F12
         | TB_KEY_F11
         | TB_KEY_F10
         | TB_KEY_F9
         | TB_KEY_F8
         | TB_KEY_F7
         | TB_KEY_F6
         | TB_KEY_F5
         | TB_KEY_F4
         | TB_KEY_F3
         | TB_KEY_F2
         | TB_KEY_F1
  deriving (Eq,Show)
instance Enum Key where
  succ TB_KEY_CTRL_TILDE = TB_KEY_CTRL_A
  succ TB_KEY_CTRL_2 = TB_KEY_CTRL_A
  succ TB_KEY_CTRL_A = TB_KEY_CTRL_B
  succ TB_KEY_CTRL_B = TB_KEY_CTRL_C
  succ TB_KEY_CTRL_C = TB_KEY_CTRL_D
  succ TB_KEY_CTRL_D = TB_KEY_CTRL_E
  succ TB_KEY_CTRL_E = TB_KEY_CTRL_F
  succ TB_KEY_CTRL_F = TB_KEY_CTRL_G
  succ TB_KEY_CTRL_G = TB_KEY_BACKSPACE
  succ TB_KEY_BACKSPACE = TB_KEY_TAB
  succ TB_KEY_CTRL_H = TB_KEY_TAB
  succ TB_KEY_TAB = TB_KEY_CTRL_J
  succ TB_KEY_CTRL_I = TB_KEY_CTRL_J
  succ TB_KEY_CTRL_J = TB_KEY_CTRL_K
  succ TB_KEY_CTRL_K = TB_KEY_CTRL_L
  succ TB_KEY_CTRL_L = TB_KEY_ENTER
  succ TB_KEY_ENTER = TB_KEY_CTRL_N
  succ TB_KEY_CTRL_M = TB_KEY_CTRL_N
  succ TB_KEY_CTRL_N = TB_KEY_CTRL_O
  succ TB_KEY_CTRL_O = TB_KEY_CTRL_P
  succ TB_KEY_CTRL_P = TB_KEY_CTRL_Q
  succ TB_KEY_CTRL_Q = TB_KEY_CTRL_R
  succ TB_KEY_CTRL_R = TB_KEY_CTRL_S
  succ TB_KEY_CTRL_S = TB_KEY_CTRL_T
  succ TB_KEY_CTRL_T = TB_KEY_CTRL_U
  succ TB_KEY_CTRL_U = TB_KEY_CTRL_V
  succ TB_KEY_CTRL_V = TB_KEY_CTRL_W
  succ TB_KEY_CTRL_W = TB_KEY_CTRL_X
  succ TB_KEY_CTRL_X = TB_KEY_CTRL_Y
  succ TB_KEY_CTRL_Y = TB_KEY_CTRL_Z
  succ TB_KEY_CTRL_Z = TB_KEY_ESC
  succ TB_KEY_ESC = TB_KEY_CTRL_4
  succ TB_KEY_CTRL_LSQ_BRACKET = TB_KEY_CTRL_4
  succ TB_KEY_CTRL_3 = TB_KEY_CTRL_4
  succ TB_KEY_CTRL_4 = TB_KEY_CTRL_5
  succ TB_KEY_CTRL_BACKSLASH = TB_KEY_CTRL_5
  succ TB_KEY_CTRL_5 = TB_KEY_CTRL_6
  succ TB_KEY_CTRL_RSQ_BRACKET = TB_KEY_CTRL_6
  succ TB_KEY_CTRL_6 = TB_KEY_CTRL_7
  succ TB_KEY_CTRL_7 = TB_KEY_SPACE
  succ TB_KEY_CTRL_SLASH = TB_KEY_SPACE
  succ TB_KEY_CTRL_UNDERSCORE = TB_KEY_SPACE
  succ TB_KEY_SPACE = TB_KEY_BACKSPACE2
  succ TB_KEY_BACKSPACE2 = TB_KEY_MOUSE_WHEEL_DOWN
  succ TB_KEY_CTRL_8 = TB_KEY_MOUSE_WHEEL_DOWN
  succ TB_KEY_MOUSE_WHEEL_DOWN = TB_KEY_MOUSE_WHEEL_UP
  succ TB_KEY_MOUSE_WHEEL_UP = TB_KEY_MOUSE_RELEASE
  succ TB_KEY_MOUSE_RELEASE = TB_KEY_MOUSE_MIDDLE
  succ TB_KEY_MOUSE_MIDDLE = TB_KEY_MOUSE_RIGHT
  succ TB_KEY_MOUSE_RIGHT = TB_KEY_MOUSE_LEFT
  succ TB_KEY_MOUSE_LEFT = TB_KEY_ARROW_RIGHT
  succ TB_KEY_ARROW_RIGHT = TB_KEY_ARROW_LEFT
  succ TB_KEY_ARROW_LEFT = TB_KEY_ARROW_DOWN
  succ TB_KEY_ARROW_DOWN = TB_KEY_ARROW_UP
  succ TB_KEY_ARROW_UP = TB_KEY_PGDN
  succ TB_KEY_PGDN = TB_KEY_PGUP
  succ TB_KEY_PGUP = TB_KEY_END
  succ TB_KEY_END = TB_KEY_HOME
  succ TB_KEY_HOME = TB_KEY_DELETE
  succ TB_KEY_DELETE = TB_KEY_INSERT
  succ TB_KEY_INSERT = TB_KEY_F12
  succ TB_KEY_F12 = TB_KEY_F11
  succ TB_KEY_F11 = TB_KEY_F10
  succ TB_KEY_F10 = TB_KEY_F9
  succ TB_KEY_F9 = TB_KEY_F8
  succ TB_KEY_F8 = TB_KEY_F7
  succ TB_KEY_F7 = TB_KEY_F6
  succ TB_KEY_F6 = TB_KEY_F5
  succ TB_KEY_F5 = TB_KEY_F4
  succ TB_KEY_F4 = TB_KEY_F3
  succ TB_KEY_F3 = TB_KEY_F2
  succ TB_KEY_F2 = TB_KEY_F1
  succ TB_KEY_F1 = error "Key.succ: TB_KEY_F1 has no successor"

  pred TB_KEY_CTRL_A = TB_KEY_CTRL_TILDE
  pred TB_KEY_CTRL_B = TB_KEY_CTRL_A
  pred TB_KEY_CTRL_C = TB_KEY_CTRL_B
  pred TB_KEY_CTRL_D = TB_KEY_CTRL_C
  pred TB_KEY_CTRL_E = TB_KEY_CTRL_D
  pred TB_KEY_CTRL_F = TB_KEY_CTRL_E
  pred TB_KEY_CTRL_G = TB_KEY_CTRL_F
  pred TB_KEY_BACKSPACE = TB_KEY_CTRL_G
  pred TB_KEY_CTRL_H = TB_KEY_CTRL_G
  pred TB_KEY_TAB = TB_KEY_BACKSPACE
  pred TB_KEY_CTRL_I = TB_KEY_BACKSPACE
  pred TB_KEY_CTRL_J = TB_KEY_TAB
  pred TB_KEY_CTRL_K = TB_KEY_CTRL_J
  pred TB_KEY_CTRL_L = TB_KEY_CTRL_K
  pred TB_KEY_ENTER = TB_KEY_CTRL_L
  pred TB_KEY_CTRL_M = TB_KEY_CTRL_L
  pred TB_KEY_CTRL_N = TB_KEY_ENTER
  pred TB_KEY_CTRL_O = TB_KEY_CTRL_N
  pred TB_KEY_CTRL_P = TB_KEY_CTRL_O
  pred TB_KEY_CTRL_Q = TB_KEY_CTRL_P
  pred TB_KEY_CTRL_R = TB_KEY_CTRL_Q
  pred TB_KEY_CTRL_S = TB_KEY_CTRL_R
  pred TB_KEY_CTRL_T = TB_KEY_CTRL_S
  pred TB_KEY_CTRL_U = TB_KEY_CTRL_T
  pred TB_KEY_CTRL_V = TB_KEY_CTRL_U
  pred TB_KEY_CTRL_W = TB_KEY_CTRL_V
  pred TB_KEY_CTRL_X = TB_KEY_CTRL_W
  pred TB_KEY_CTRL_Y = TB_KEY_CTRL_X
  pred TB_KEY_CTRL_Z = TB_KEY_CTRL_Y
  pred TB_KEY_ESC = TB_KEY_CTRL_Z
  pred TB_KEY_CTRL_LSQ_BRACKET = TB_KEY_CTRL_Z
  pred TB_KEY_CTRL_3 = TB_KEY_CTRL_Z
  pred TB_KEY_CTRL_4 = TB_KEY_ESC
  pred TB_KEY_CTRL_BACKSLASH = TB_KEY_ESC
  pred TB_KEY_CTRL_5 = TB_KEY_CTRL_4
  pred TB_KEY_CTRL_RSQ_BRACKET = TB_KEY_CTRL_4
  pred TB_KEY_CTRL_6 = TB_KEY_CTRL_5
  pred TB_KEY_CTRL_7 = TB_KEY_CTRL_6
  pred TB_KEY_CTRL_SLASH = TB_KEY_CTRL_6
  pred TB_KEY_CTRL_UNDERSCORE = TB_KEY_CTRL_6
  pred TB_KEY_SPACE = TB_KEY_CTRL_7
  pred TB_KEY_BACKSPACE2 = TB_KEY_SPACE
  pred TB_KEY_CTRL_8 = TB_KEY_SPACE
  pred TB_KEY_MOUSE_WHEEL_DOWN = TB_KEY_BACKSPACE2
  pred TB_KEY_MOUSE_WHEEL_UP = TB_KEY_MOUSE_WHEEL_DOWN
  pred TB_KEY_MOUSE_RELEASE = TB_KEY_MOUSE_WHEEL_UP
  pred TB_KEY_MOUSE_MIDDLE = TB_KEY_MOUSE_RELEASE
  pred TB_KEY_MOUSE_RIGHT = TB_KEY_MOUSE_MIDDLE
  pred TB_KEY_MOUSE_LEFT = TB_KEY_MOUSE_RIGHT
  pred TB_KEY_ARROW_RIGHT = TB_KEY_MOUSE_LEFT
  pred TB_KEY_ARROW_LEFT = TB_KEY_ARROW_RIGHT
  pred TB_KEY_ARROW_DOWN = TB_KEY_ARROW_LEFT
  pred TB_KEY_ARROW_UP = TB_KEY_ARROW_DOWN
  pred TB_KEY_PGDN = TB_KEY_ARROW_UP
  pred TB_KEY_PGUP = TB_KEY_PGDN
  pred TB_KEY_END = TB_KEY_PGUP
  pred TB_KEY_HOME = TB_KEY_END
  pred TB_KEY_DELETE = TB_KEY_HOME
  pred TB_KEY_INSERT = TB_KEY_DELETE
  pred TB_KEY_F12 = TB_KEY_INSERT
  pred TB_KEY_F11 = TB_KEY_F12
  pred TB_KEY_F10 = TB_KEY_F11
  pred TB_KEY_F9 = TB_KEY_F10
  pred TB_KEY_F8 = TB_KEY_F9
  pred TB_KEY_F7 = TB_KEY_F8
  pred TB_KEY_F6 = TB_KEY_F7
  pred TB_KEY_F5 = TB_KEY_F6
  pred TB_KEY_F4 = TB_KEY_F5
  pred TB_KEY_F3 = TB_KEY_F4
  pred TB_KEY_F2 = TB_KEY_F3
  pred TB_KEY_F1 = TB_KEY_F2
  pred TB_KEY_CTRL_TILDE = error "Key.pred: TB_KEY_CTRL_TILDE has no predecessor"
  pred TB_KEY_CTRL_2 = error "Key.pred: TB_KEY_CTRL_2 has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TB_KEY_F1

  fromEnum TB_KEY_CTRL_TILDE = 0
  fromEnum TB_KEY_CTRL_2 = 0
  fromEnum TB_KEY_CTRL_A = 1
  fromEnum TB_KEY_CTRL_B = 2
  fromEnum TB_KEY_CTRL_C = 3
  fromEnum TB_KEY_CTRL_D = 4
  fromEnum TB_KEY_CTRL_E = 5
  fromEnum TB_KEY_CTRL_F = 6
  fromEnum TB_KEY_CTRL_G = 7
  fromEnum TB_KEY_BACKSPACE = 8
  fromEnum TB_KEY_CTRL_H = 8
  fromEnum TB_KEY_TAB = 9
  fromEnum TB_KEY_CTRL_I = 9
  fromEnum TB_KEY_CTRL_J = 10
  fromEnum TB_KEY_CTRL_K = 11
  fromEnum TB_KEY_CTRL_L = 12
  fromEnum TB_KEY_ENTER = 13
  fromEnum TB_KEY_CTRL_M = 13
  fromEnum TB_KEY_CTRL_N = 14
  fromEnum TB_KEY_CTRL_O = 15
  fromEnum TB_KEY_CTRL_P = 16
  fromEnum TB_KEY_CTRL_Q = 17
  fromEnum TB_KEY_CTRL_R = 18
  fromEnum TB_KEY_CTRL_S = 19
  fromEnum TB_KEY_CTRL_T = 20
  fromEnum TB_KEY_CTRL_U = 21
  fromEnum TB_KEY_CTRL_V = 22
  fromEnum TB_KEY_CTRL_W = 23
  fromEnum TB_KEY_CTRL_X = 24
  fromEnum TB_KEY_CTRL_Y = 25
  fromEnum TB_KEY_CTRL_Z = 26
  fromEnum TB_KEY_ESC = 27
  fromEnum TB_KEY_CTRL_LSQ_BRACKET = 27
  fromEnum TB_KEY_CTRL_3 = 27
  fromEnum TB_KEY_CTRL_4 = 28
  fromEnum TB_KEY_CTRL_BACKSLASH = 28
  fromEnum TB_KEY_CTRL_5 = 29
  fromEnum TB_KEY_CTRL_RSQ_BRACKET = 29
  fromEnum TB_KEY_CTRL_6 = 30
  fromEnum TB_KEY_CTRL_7 = 31
  fromEnum TB_KEY_CTRL_SLASH = 31
  fromEnum TB_KEY_CTRL_UNDERSCORE = 31
  fromEnum TB_KEY_SPACE = 32
  fromEnum TB_KEY_BACKSPACE2 = 127
  fromEnum TB_KEY_CTRL_8 = 127
  fromEnum TB_KEY_MOUSE_WHEEL_DOWN = 65508
  fromEnum TB_KEY_MOUSE_WHEEL_UP = 65509
  fromEnum TB_KEY_MOUSE_RELEASE = 65510
  fromEnum TB_KEY_MOUSE_MIDDLE = 65511
  fromEnum TB_KEY_MOUSE_RIGHT = 65512
  fromEnum TB_KEY_MOUSE_LEFT = 65513
  fromEnum TB_KEY_ARROW_RIGHT = 65514
  fromEnum TB_KEY_ARROW_LEFT = 65515
  fromEnum TB_KEY_ARROW_DOWN = 65516
  fromEnum TB_KEY_ARROW_UP = 65517
  fromEnum TB_KEY_PGDN = 65518
  fromEnum TB_KEY_PGUP = 65519
  fromEnum TB_KEY_END = 65520
  fromEnum TB_KEY_HOME = 65521
  fromEnum TB_KEY_DELETE = 65522
  fromEnum TB_KEY_INSERT = 65523
  fromEnum TB_KEY_F12 = 65524
  fromEnum TB_KEY_F11 = 65525
  fromEnum TB_KEY_F10 = 65526
  fromEnum TB_KEY_F9 = 65527
  fromEnum TB_KEY_F8 = 65528
  fromEnum TB_KEY_F7 = 65529
  fromEnum TB_KEY_F6 = 65530
  fromEnum TB_KEY_F5 = 65531
  fromEnum TB_KEY_F4 = 65532
  fromEnum TB_KEY_F3 = 65533
  fromEnum TB_KEY_F2 = 65534
  fromEnum TB_KEY_F1 = 65535

  toEnum 0 = TB_KEY_CTRL_TILDE
  toEnum 1 = TB_KEY_CTRL_A
  toEnum 2 = TB_KEY_CTRL_B
  toEnum 3 = TB_KEY_CTRL_C
  toEnum 4 = TB_KEY_CTRL_D
  toEnum 5 = TB_KEY_CTRL_E
  toEnum 6 = TB_KEY_CTRL_F
  toEnum 7 = TB_KEY_CTRL_G
  toEnum 8 = TB_KEY_BACKSPACE
  toEnum 9 = TB_KEY_TAB
  toEnum 10 = TB_KEY_CTRL_J
  toEnum 11 = TB_KEY_CTRL_K
  toEnum 12 = TB_KEY_CTRL_L
  toEnum 13 = TB_KEY_ENTER
  toEnum 14 = TB_KEY_CTRL_N
  toEnum 15 = TB_KEY_CTRL_O
  toEnum 16 = TB_KEY_CTRL_P
  toEnum 17 = TB_KEY_CTRL_Q
  toEnum 18 = TB_KEY_CTRL_R
  toEnum 19 = TB_KEY_CTRL_S
  toEnum 20 = TB_KEY_CTRL_T
  toEnum 21 = TB_KEY_CTRL_U
  toEnum 22 = TB_KEY_CTRL_V
  toEnum 23 = TB_KEY_CTRL_W
  toEnum 24 = TB_KEY_CTRL_X
  toEnum 25 = TB_KEY_CTRL_Y
  toEnum 26 = TB_KEY_CTRL_Z
  toEnum 27 = TB_KEY_ESC
  toEnum 28 = TB_KEY_CTRL_4
  toEnum 29 = TB_KEY_CTRL_5
  toEnum 30 = TB_KEY_CTRL_6
  toEnum 31 = TB_KEY_CTRL_7
  toEnum 32 = TB_KEY_SPACE
  toEnum 127 = TB_KEY_BACKSPACE2
  toEnum 65508 = TB_KEY_MOUSE_WHEEL_DOWN
  toEnum 65509 = TB_KEY_MOUSE_WHEEL_UP
  toEnum 65510 = TB_KEY_MOUSE_RELEASE
  toEnum 65511 = TB_KEY_MOUSE_MIDDLE
  toEnum 65512 = TB_KEY_MOUSE_RIGHT
  toEnum 65513 = TB_KEY_MOUSE_LEFT
  toEnum 65514 = TB_KEY_ARROW_RIGHT
  toEnum 65515 = TB_KEY_ARROW_LEFT
  toEnum 65516 = TB_KEY_ARROW_DOWN
  toEnum 65517 = TB_KEY_ARROW_UP
  toEnum 65518 = TB_KEY_PGDN
  toEnum 65519 = TB_KEY_PGUP
  toEnum 65520 = TB_KEY_END
  toEnum 65521 = TB_KEY_HOME
  toEnum 65522 = TB_KEY_DELETE
  toEnum 65523 = TB_KEY_INSERT
  toEnum 65524 = TB_KEY_F12
  toEnum 65525 = TB_KEY_F11
  toEnum 65526 = TB_KEY_F10
  toEnum 65527 = TB_KEY_F9
  toEnum 65528 = TB_KEY_F8
  toEnum 65529 = TB_KEY_F7
  toEnum 65530 = TB_KEY_F6
  toEnum 65531 = TB_KEY_F5
  toEnum 65532 = TB_KEY_F4
  toEnum 65533 = TB_KEY_F3
  toEnum 65534 = TB_KEY_F2
  toEnum 65535 = TB_KEY_F1
  toEnum unmatched = error ("Key.toEnum: Cannot match " ++ show unmatched)

{-# LINE 122 "src/Termbox/Enums.chs" #-}