termbox-bindings-hs 0.1.1 → 1.0.0
raw patch · 15 files changed
+430/−443 lines, 15 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Termbox.Bindings.Hs: Tb_attr :: Word16 -> Tb_attr
- Termbox.Bindings.Hs: Tb_color :: Word16 -> Tb_color
- Termbox.Bindings.Hs: Tb_event_mod :: Word8 -> Tb_event_mod
- Termbox.Bindings.Hs: data Tb_input_mode
- Termbox.Bindings.Hs: newtype Tb_attr
- Termbox.Bindings.Hs: newtype Tb_color
- Termbox.Bindings.Hs: newtype Tb_event_mod
- Termbox.Bindings.Hs: pattern TB_BLACK :: Tb_color
- Termbox.Bindings.Hs: pattern TB_BLUE :: Tb_color
- Termbox.Bindings.Hs: pattern TB_BOLD :: Tb_attr
- Termbox.Bindings.Hs: pattern TB_CYAN :: Tb_color
- Termbox.Bindings.Hs: pattern TB_DEFAULT :: Tb_color
- Termbox.Bindings.Hs: pattern TB_GREEN :: Tb_color
- Termbox.Bindings.Hs: pattern TB_INPUT_ALT :: Tb_input_mode
- Termbox.Bindings.Hs: pattern TB_INPUT_CURRENT :: Tb_input_mode
- Termbox.Bindings.Hs: pattern TB_INPUT_ESC :: Tb_input_mode
- Termbox.Bindings.Hs: pattern TB_INPUT_MOUSE :: Tb_input_mode
- Termbox.Bindings.Hs: pattern TB_MAGENTA :: Tb_color
- Termbox.Bindings.Hs: pattern TB_OUTPUT_CURRENT :: Tb_output_mode
- Termbox.Bindings.Hs: pattern TB_RED :: Tb_color
- Termbox.Bindings.Hs: pattern TB_REVERSE :: Tb_attr
- Termbox.Bindings.Hs: pattern TB_UNDERLINE :: Tb_attr
- Termbox.Bindings.Hs: pattern TB_WHITE :: Tb_color
- Termbox.Bindings.Hs: pattern TB_YELLOW :: Tb_color
- Termbox.Bindings.Hs: tb_attr :: Tb_attr -> Tb_color -> Tb_color
+ Termbox.Bindings.Hs: Tb_attrs :: Word16 -> Tb_attrs
+ Termbox.Bindings.Hs: Tb_input_mode :: CInt -> Tb_input_mode
+ Termbox.Bindings.Hs: _TB_BLACK :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_BLUE :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_BOLD :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_CYAN :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_DEFAULT :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_GREEN :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_INPUT_ALT :: Tb_input_mode
+ Termbox.Bindings.Hs: _TB_INPUT_ESC :: Tb_input_mode
+ Termbox.Bindings.Hs: _TB_INPUT_MOUSE :: Tb_input_mode
+ Termbox.Bindings.Hs: _TB_MAGENTA :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_RED :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_REVERSE :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_UNDERLINE :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_WHITE :: Tb_attrs
+ Termbox.Bindings.Hs: _TB_YELLOW :: Tb_attrs
+ Termbox.Bindings.Hs: data Tb_event_mod
+ Termbox.Bindings.Hs: newtype Tb_attrs
+ Termbox.Bindings.Hs: newtype Tb_input_mode
+ Termbox.Bindings.Hs: tb_get_input_mode :: IO Tb_input_mode
+ Termbox.Bindings.Hs: tb_get_output_mode :: IO Tb_output_mode
- Termbox.Bindings.Hs: Tb_cell :: {-# UNPACK #-} !Char -> {-# UNPACK #-} !Tb_attr -> {-# UNPACK #-} !Tb_attr -> Tb_cell
+ Termbox.Bindings.Hs: Tb_cell :: {-# UNPACK #-} !Char -> {-# UNPACK #-} !Tb_attrs -> {-# UNPACK #-} !Tb_attrs -> Tb_cell
- Termbox.Bindings.Hs: Tb_event :: {-# UNPACK #-} !Tb_event_type -> {-# UNPACK #-} !Tb_event_mod -> {-# UNPACK #-} !Tb_key -> {-# UNPACK #-} !Char -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> Tb_event
+ Termbox.Bindings.Hs: Tb_event :: {-# UNPACK #-} !Tb_event_type -> !Maybe Tb_event_mod -> {-# UNPACK #-} !Tb_key -> {-# UNPACK #-} !Char -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> {-# UNPACK #-} !Int32 -> Tb_event
- Termbox.Bindings.Hs: [$sel:bg:Tb_cell] :: Tb_cell -> {-# UNPACK #-} !Tb_attr
+ Termbox.Bindings.Hs: [$sel:bg:Tb_cell] :: Tb_cell -> {-# UNPACK #-} !Tb_attrs
- Termbox.Bindings.Hs: [$sel:fg:Tb_cell] :: Tb_cell -> {-# UNPACK #-} !Tb_attr
+ Termbox.Bindings.Hs: [$sel:fg:Tb_cell] :: Tb_cell -> {-# UNPACK #-} !Tb_attrs
- Termbox.Bindings.Hs: [$sel:mod:Tb_event] :: Tb_event -> {-# UNPACK #-} !Tb_event_mod
+ Termbox.Bindings.Hs: [$sel:mod:Tb_event] :: Tb_event -> !Maybe Tb_event_mod
- Termbox.Bindings.Hs: tb_change_cell :: Int -> Int -> Char -> Tb_color -> Tb_color -> IO ()
+ Termbox.Bindings.Hs: tb_change_cell :: Int -> Int -> Char -> Tb_attrs -> Tb_attrs -> IO ()
- Termbox.Bindings.Hs: tb_select_input_mode :: Tb_input_mode -> IO Tb_input_mode
+ Termbox.Bindings.Hs: tb_select_input_mode :: Tb_input_mode -> IO ()
- Termbox.Bindings.Hs: tb_select_output_mode :: Tb_output_mode -> IO Tb_output_mode
+ Termbox.Bindings.Hs: tb_select_output_mode :: Tb_output_mode -> IO ()
- Termbox.Bindings.Hs: tb_set_clear_attributes :: Tb_color -> Tb_color -> IO ()
+ Termbox.Bindings.Hs: tb_set_clear_attributes :: Tb_attrs -> Tb_attrs -> IO ()
Files
- CHANGELOG.md +13/−0
- src/Termbox/Bindings/Hs.hs +48/−37
- src/Termbox/Bindings/Hs/Internal/Attr.hs +0/−44
- src/Termbox/Bindings/Hs/Internal/Attrs.hs +80/−0
- src/Termbox/Bindings/Hs/Internal/Cell.hs +10/−10
- src/Termbox/Bindings/Hs/Internal/Color.hs +0/−78
- src/Termbox/Bindings/Hs/Internal/Event.hs +6/−6
- src/Termbox/Bindings/Hs/Internal/EventMod.hs +9/−1
- src/Termbox/Bindings/Hs/Internal/EventType.hs +9/−8
- src/Termbox/Bindings/Hs/Internal/Functions.hs +50/−45
- src/Termbox/Bindings/Hs/Internal/InitError.hs +10/−7
- src/Termbox/Bindings/Hs/Internal/InputMode.hs +26/−36
- src/Termbox/Bindings/Hs/Internal/Key.hs +148/−148
- src/Termbox/Bindings/Hs/Internal/OutputMode.hs +17/−19
- termbox-bindings-hs.cabal +4/−4
CHANGELOG.md view
@@ -1,3 +1,16 @@+## [1.0.0] - November 14, 2023++- Rework `Tb_attr` and `Tb_color` into `Tb_attrs`+- Rework `Tb_select_input_mode` and `Tb_input_mode`+- Rework `Tb_select_output_mode` and `Tb_output_mode`+- Make `mod` field of `Tb_event` a `Maybe Tb_event_mod` rather than a `Tb_event_mod`+- Make `Show` instance of `Tb_key` not call `error` on unknown keys+- Improve `Show` instance of `Tb_event_mod`, `Tb_input_mode`+- Hide representation of `Tb_event_mod`+- Add `Exception` instance for `Tb_init_error`+- Remove `tb_attr`+- Remove `Ord` instances of `Tb_cell`, `Tb_event`, `Tb_event_mod`, `Tb_event_type`, `Tb_init_error`, `Tb_input_mode`, `Tb_output_mode`+ ## [0.1.1] - November 5, 2023 - Add `Monoid` instance for `Tb_attr`
src/Termbox/Bindings/Hs.hs view
@@ -16,8 +16,12 @@ tb_init_file, tb_shutdown, - -- ** Get\/set input\/output mode+ -- ** Get or set input mode+ tb_get_input_mode, tb_select_input_mode,++ -- ** Get or set output mode+ tb_get_output_mode, tb_select_output_mode, -- ** Get terminal dimensions@@ -28,9 +32,6 @@ tb_peek_event, tb_poll_event, - -- ** Style a color- tb_attr,- -- ** Set a cell tb_set_cursor, tb_put_cell,@@ -42,29 +43,23 @@ tb_present, -- * Types- Tb_attr- ( Tb_attr,- TB_BOLD,- TB_REVERSE,- TB_UNDERLINE- ), Tb_cell (..),- Tb_color- ( Tb_color,- TB_DEFAULT,- TB_BLACK,- TB_BLUE,- TB_CYAN,- TB_GREEN,- TB_MAGENTA,- TB_RED,- TB_WHITE,- TB_YELLOW- ),+ Tb_attrs (Tb_attrs),+ _TB_DEFAULT,+ _TB_BLACK,+ _TB_BLUE,+ _TB_CYAN,+ _TB_GREEN,+ _TB_MAGENTA,+ _TB_RED,+ _TB_WHITE,+ _TB_YELLOW,+ _TB_BOLD,+ _TB_REVERSE,+ _TB_UNDERLINE, Tb_event (..), Tb_event_mod- ( Tb_event_mod,- TB_MOD_ALT,+ ( TB_MOD_ALT, TB_MOD_MOTION ), Tb_event_type@@ -77,12 +72,10 @@ TB_EPIPE_TRAP_ERROR, TB_EUNSUPPORTED_TERMINAL ),- Tb_input_mode- ( TB_INPUT_CURRENT,- TB_INPUT_ALT,- TB_INPUT_ESC,- TB_INPUT_MOUSE- ),+ Tb_input_mode (Tb_input_mode),+ _TB_INPUT_ALT,+ _TB_INPUT_ESC,+ _TB_INPUT_MOUSE, Tb_key ( TB_KEY_ARROW_DOWN, TB_KEY_ARROW_LEFT,@@ -159,8 +152,7 @@ TB_KEY_TAB ), Tb_output_mode- ( TB_OUTPUT_CURRENT,- TB_OUTPUT_216,+ ( TB_OUTPUT_216, TB_OUTPUT_256, TB_OUTPUT_GRAYSCALE, TB_OUTPUT_NORMAL@@ -169,15 +161,29 @@ where import Termbox.Bindings.C (tb_clear, tb_present, tb_shutdown)-import Termbox.Bindings.Hs.Internal.Attr (Tb_attr (..))+import Termbox.Bindings.Hs.Internal.Attrs+ ( Tb_attrs (..),+ _TB_BLACK,+ _TB_BLUE,+ _TB_BOLD,+ _TB_CYAN,+ _TB_DEFAULT,+ _TB_GREEN,+ _TB_MAGENTA,+ _TB_RED,+ _TB_REVERSE,+ _TB_UNDERLINE,+ _TB_WHITE,+ _TB_YELLOW,+ ) import Termbox.Bindings.Hs.Internal.Cell (Tb_cell (..))-import Termbox.Bindings.Hs.Internal.Color (Tb_color (..)) import Termbox.Bindings.Hs.Internal.Event (Tb_event (..)) import Termbox.Bindings.Hs.Internal.EventMod (Tb_event_mod (..)) import Termbox.Bindings.Hs.Internal.EventType (Tb_event_type (..)) import Termbox.Bindings.Hs.Internal.Functions- ( tb_attr,- tb_change_cell,+ ( tb_change_cell,+ tb_get_input_mode,+ tb_get_output_mode, tb_height, tb_init, tb_init_fd,@@ -192,6 +198,11 @@ tb_width, ) import Termbox.Bindings.Hs.Internal.InitError (Tb_init_error (..))-import Termbox.Bindings.Hs.Internal.InputMode (Tb_input_mode (..))+import Termbox.Bindings.Hs.Internal.InputMode+ ( Tb_input_mode (Tb_input_mode),+ _TB_INPUT_ALT,+ _TB_INPUT_ESC,+ _TB_INPUT_MOUSE,+ ) import Termbox.Bindings.Hs.Internal.Key (Tb_key (..)) import Termbox.Bindings.Hs.Internal.OutputMode (Tb_output_mode (..))
− src/Termbox/Bindings/Hs/Internal/Attr.hs
@@ -1,44 +0,0 @@-module Termbox.Bindings.Hs.Internal.Attr- ( Tb_attr- ( Tb_attr,- TB_BOLD,- TB_REVERSE,- TB_UNDERLINE- ),- )-where--import Data.Bits ((.|.))-import Data.Word (Word16)-import qualified Termbox.Bindings.C---- | An attribute.-newtype Tb_attr- = Tb_attr Word16- deriving stock (Eq, Ord, Show)--instance Monoid Tb_attr where- mempty =- Tb_attr 0--instance Semigroup Tb_attr where- Tb_attr cx <> Tb_attr cy =- Tb_attr (cx .|. cy)--pattern TB_BOLD :: Tb_attr-pattern TB_BOLD <-- ((== Tb_attr Termbox.Bindings.C._TB_BOLD) -> True)- where- TB_BOLD = Tb_attr Termbox.Bindings.C._TB_BOLD--pattern TB_REVERSE :: Tb_attr-pattern TB_REVERSE <-- ((== Tb_attr Termbox.Bindings.C._TB_REVERSE) -> True)- where- TB_REVERSE = Tb_attr Termbox.Bindings.C._TB_REVERSE--pattern TB_UNDERLINE :: Tb_attr-pattern TB_UNDERLINE <-- ((== Tb_attr Termbox.Bindings.C._TB_UNDERLINE) -> True)- where- TB_UNDERLINE = Tb_attr Termbox.Bindings.C._TB_UNDERLINE
+ src/Termbox/Bindings/Hs/Internal/Attrs.hs view
@@ -0,0 +1,80 @@+module Termbox.Bindings.Hs.Internal.Attrs+ ( Tb_attrs (Tb_attrs),+ _TB_DEFAULT,+ _TB_BLACK,+ _TB_BLUE,+ _TB_CYAN,+ _TB_GREEN,+ _TB_MAGENTA,+ _TB_RED,+ _TB_WHITE,+ _TB_YELLOW,+ _TB_BOLD,+ _TB_REVERSE,+ _TB_UNDERLINE,+ )+where++import Data.Bits ((.|.))+import Data.Coerce (coerce)+import Data.Word (Word16)+import qualified Termbox.Bindings.C as Termbox++-- | Cell attributes.+newtype Tb_attrs+ = Tb_attrs Word16+ deriving stock (Eq, Show)++instance Monoid Tb_attrs where+ mempty = Tb_attrs 0++instance Semigroup Tb_attrs where+ (<>) = coerce @(Word16 -> Word16 -> Word16) (.|.)++_TB_DEFAULT :: Tb_attrs+_TB_DEFAULT =+ Tb_attrs Termbox._TB_DEFAULT++_TB_BLACK :: Tb_attrs+_TB_BLACK =+ Tb_attrs Termbox._TB_BLACK++_TB_BLUE :: Tb_attrs+_TB_BLUE =+ Tb_attrs Termbox._TB_BLUE++_TB_CYAN :: Tb_attrs+_TB_CYAN =+ Tb_attrs Termbox._TB_CYAN++_TB_GREEN :: Tb_attrs+_TB_GREEN =+ Tb_attrs Termbox._TB_GREEN++_TB_MAGENTA :: Tb_attrs+_TB_MAGENTA =+ Tb_attrs Termbox._TB_MAGENTA++_TB_RED :: Tb_attrs+_TB_RED =+ Tb_attrs Termbox._TB_RED++_TB_WHITE :: Tb_attrs+_TB_WHITE =+ Tb_attrs Termbox._TB_WHITE++_TB_YELLOW :: Tb_attrs+_TB_YELLOW =+ Tb_attrs Termbox._TB_YELLOW++_TB_BOLD :: Tb_attrs+_TB_BOLD =+ Tb_attrs Termbox._TB_BOLD++_TB_REVERSE :: Tb_attrs+_TB_REVERSE =+ Tb_attrs Termbox._TB_REVERSE++_TB_UNDERLINE :: Tb_attrs+_TB_UNDERLINE =+ Tb_attrs Termbox._TB_UNDERLINE
src/Termbox/Bindings/Hs/Internal/Cell.hs view
@@ -5,24 +5,24 @@ where import GHC.Generics (Generic)-import qualified Termbox.Bindings.C-import Termbox.Bindings.Hs.Internal.Attr (Tb_attr (..))+import qualified Termbox.Bindings.C as Termbox+import Termbox.Bindings.Hs.Internal.Attrs (Tb_attrs (..)) import Termbox.Bindings.Hs.Internal.Prelude (charToWord32) -- | A cell. data Tb_cell = Tb_cell { -- | A unicode character. ch :: {-# UNPACK #-} !Char,- -- | Foreground attribute.- fg :: {-# UNPACK #-} !Tb_attr,- -- | Background attribute.- bg :: {-# UNPACK #-} !Tb_attr+ -- | Foreground attributes.+ fg :: {-# UNPACK #-} !Tb_attrs,+ -- | Background attributes.+ bg :: {-# UNPACK #-} !Tb_attrs }- deriving stock (Eq, Generic, Ord, Show)+ deriving stock (Eq, Generic, Show) -cellToCCell :: Tb_cell -> Termbox.Bindings.C.Tb_cell-cellToCCell Tb_cell {ch, fg = Tb_attr fg, bg = Tb_attr bg} =- Termbox.Bindings.C.Tb_cell+cellToCCell :: Tb_cell -> Termbox.Tb_cell+cellToCCell Tb_cell {ch, fg = Tb_attrs fg, bg = Tb_attrs bg} =+ Termbox.Tb_cell { ch = charToWord32 ch, fg, bg
− src/Termbox/Bindings/Hs/Internal/Color.hs
@@ -1,78 +0,0 @@-module Termbox.Bindings.Hs.Internal.Color- ( Tb_color- ( Tb_color,- TB_DEFAULT,- TB_BLACK,- TB_BLUE,- TB_CYAN,- TB_GREEN,- TB_MAGENTA,- TB_RED,- TB_WHITE,- TB_YELLOW- ),- )-where--import Data.Word (Word16)-import qualified Termbox.Bindings.C---- | A color.-newtype Tb_color- = Tb_color Word16- deriving stock (Eq, Ord)- deriving newtype (Num, Show)--pattern TB_DEFAULT :: Tb_color-pattern TB_DEFAULT <-- ((== Tb_color Termbox.Bindings.C._TB_DEFAULT) -> True)- where- TB_DEFAULT = Tb_color Termbox.Bindings.C._TB_DEFAULT--pattern TB_BLACK :: Tb_color-pattern TB_BLACK <-- ((== Tb_color Termbox.Bindings.C._TB_BLACK) -> True)- where- TB_BLACK = Tb_color Termbox.Bindings.C._TB_BLACK--pattern TB_BLUE :: Tb_color-pattern TB_BLUE <-- ((== Tb_color Termbox.Bindings.C._TB_BLUE) -> True)- where- TB_BLUE = Tb_color Termbox.Bindings.C._TB_BLUE--pattern TB_CYAN :: Tb_color-pattern TB_CYAN <-- ((== Tb_color Termbox.Bindings.C._TB_CYAN) -> True)- where- TB_CYAN = Tb_color Termbox.Bindings.C._TB_CYAN--pattern TB_GREEN :: Tb_color-pattern TB_GREEN <-- ((== Tb_color Termbox.Bindings.C._TB_GREEN) -> True)- where- TB_GREEN = Tb_color Termbox.Bindings.C._TB_GREEN--pattern TB_MAGENTA :: Tb_color-pattern TB_MAGENTA <-- ((== Tb_color Termbox.Bindings.C._TB_MAGENTA) -> True)- where- TB_MAGENTA = Tb_color Termbox.Bindings.C._TB_MAGENTA--pattern TB_RED :: Tb_color-pattern TB_RED <-- ((== Tb_color Termbox.Bindings.C._TB_RED) -> True)- where- TB_RED = Tb_color Termbox.Bindings.C._TB_RED--pattern TB_WHITE :: Tb_color-pattern TB_WHITE <-- ((== Tb_color Termbox.Bindings.C._TB_WHITE) -> True)- where- TB_WHITE = Tb_color Termbox.Bindings.C._TB_WHITE--pattern TB_YELLOW :: Tb_color-pattern TB_YELLOW <-- ((== Tb_color Termbox.Bindings.C._TB_YELLOW) -> True)- where- TB_YELLOW = Tb_color Termbox.Bindings.C._TB_YELLOW
src/Termbox/Bindings/Hs/Internal/Event.hs view
@@ -6,7 +6,7 @@ import Data.Int (Int32) import GHC.Generics (Generic)-import qualified Termbox.Bindings.C+import qualified Termbox.Bindings.C as Termbox import Termbox.Bindings.Hs.Internal.EventMod (Tb_event_mod (..)) import Termbox.Bindings.Hs.Internal.EventType (Tb_event_type (..)) import Termbox.Bindings.Hs.Internal.Key (Tb_key (..))@@ -16,7 +16,7 @@ -- | An event. data Tb_event = Tb_event { type_ :: {-# UNPACK #-} !Tb_event_type,- mod :: {-# UNPACK #-} !Tb_event_mod,+ mod :: !(Maybe Tb_event_mod), key :: {-# UNPACK #-} !Tb_key, ch :: {-# UNPACK #-} !Char, w :: {-# UNPACK #-} !Int32,@@ -24,13 +24,13 @@ x :: {-# UNPACK #-} !Int32, y :: {-# UNPACK #-} !Int32 }- deriving stock (Eq, Generic, Ord, Show)+ deriving stock (Eq, Generic, Show) -ceventToEvent :: Termbox.Bindings.C.Tb_event -> Tb_event-ceventToEvent Termbox.Bindings.C.Tb_event {type_, mod, key, ch, w, h, x, y} =+ceventToEvent :: Termbox.Tb_event -> Tb_event+ceventToEvent Termbox.Tb_event {type_, mod, key, ch, w, h, x, y} = Tb_event { type_ = Tb_event_type type_,- mod = Tb_event_mod mod,+ mod = if mod == 0 then Nothing else Just (Tb_event_mod mod), key = Tb_key key, ch = word32ToChar ch, w,
src/Termbox/Bindings/Hs/Internal/EventMod.hs view
@@ -13,8 +13,13 @@ -- | An event modifier. newtype Tb_event_mod = Tb_event_mod Word8- deriving stock (Eq, Ord, Show)+ deriving stock (Eq) +instance Show Tb_event_mod where+ show = \case+ TB_MOD_ALT -> "TB_MOD_ALT"+ TB_MOD_MOTION -> "TB_MOD_MOTION"+ pattern TB_MOD_ALT :: Tb_event_mod pattern TB_MOD_ALT <- ((== Tb_event_mod Termbox.Bindings.C._TB_MOD_ALT) -> True)@@ -26,3 +31,6 @@ ((== Tb_event_mod Termbox.Bindings.C._TB_MOD_MOTION) -> True) where TB_MOD_MOTION = Tb_event_mod Termbox.Bindings.C._TB_MOD_MOTION++-- N.B. This requires Tb_event_mod to remain abstract+{-# COMPLETE TB_MOD_ALT, TB_MOD_MOTION #-}
src/Termbox/Bindings/Hs/Internal/EventType.hs view
@@ -9,12 +9,12 @@ where import Data.Word (Word8)-import qualified Termbox.Bindings.C+import Termbox.Bindings.C (_TB_EVENT_KEY, _TB_EVENT_MOUSE, _TB_EVENT_RESIZE) -- | An event type. newtype Tb_event_type = Tb_event_type Word8- deriving stock (Eq, Ord)+ deriving stock (Eq) instance Show Tb_event_type where show = \case@@ -24,20 +24,21 @@ pattern TB_EVENT_KEY :: Tb_event_type pattern TB_EVENT_KEY <-- ((== Tb_event_type Termbox.Bindings.C._TB_EVENT_KEY) -> True)+ ((== Tb_event_type _TB_EVENT_KEY) -> True) where- TB_EVENT_KEY = Tb_event_type Termbox.Bindings.C._TB_EVENT_KEY+ TB_EVENT_KEY = Tb_event_type _TB_EVENT_KEY pattern TB_EVENT_MOUSE :: Tb_event_type pattern TB_EVENT_MOUSE <-- ((== Tb_event_type Termbox.Bindings.C._TB_EVENT_MOUSE) -> True)+ ((== Tb_event_type _TB_EVENT_MOUSE) -> True) where- TB_EVENT_MOUSE = Tb_event_type Termbox.Bindings.C._TB_EVENT_MOUSE+ TB_EVENT_MOUSE = Tb_event_type _TB_EVENT_MOUSE pattern TB_EVENT_RESIZE :: Tb_event_type pattern TB_EVENT_RESIZE <-- ((== Tb_event_type Termbox.Bindings.C._TB_EVENT_RESIZE) -> True)+ ((== Tb_event_type _TB_EVENT_RESIZE) -> True) where- TB_EVENT_RESIZE = Tb_event_type Termbox.Bindings.C._TB_EVENT_RESIZE+ TB_EVENT_RESIZE = Tb_event_type _TB_EVENT_RESIZE +-- N.B. This requires Tb_event_type to remain abstract {-# COMPLETE TB_EVENT_KEY, TB_EVENT_MOUSE, TB_EVENT_RESIZE #-}
src/Termbox/Bindings/Hs/Internal/Functions.hs view
@@ -1,43 +1,38 @@ module Termbox.Bindings.Hs.Internal.Functions- ( tb_init,+ ( tb_change_cell,+ tb_get_input_mode,+ tb_get_output_mode,+ tb_height,+ tb_init, tb_init_fd, tb_init_file,- tb_select_input_mode,- tb_select_output_mode,- tb_width,- tb_height, tb_peek_event, tb_poll_event,- tb_attr,- tb_set_cursor, tb_put_cell,- tb_change_cell,+ tb_select_input_mode,+ tb_select_output_mode, tb_set_clear_attributes,+ tb_set_cursor,+ tb_width, ) where -import Data.Bits ((.|.)) import Data.Coerce (coerce)-import Data.Word (Word16)+import Data.Functor (void)+import Foreign.C (CInt (..)) import Foreign.C.String (withCString) import Foreign.Marshal.Alloc (alloca) import qualified Foreign.Storable as Storable import System.Posix.Types (Fd (Fd))-import qualified Termbox.Bindings.C-import Termbox.Bindings.Hs.Internal.Attr (Tb_attr (..))+import qualified Termbox.Bindings.C as Termbox+import Termbox.Bindings.Hs.Internal.Attrs (Tb_attrs (..)) import Termbox.Bindings.Hs.Internal.Cell (Tb_cell, cellToCCell)-import Termbox.Bindings.Hs.Internal.Color (Tb_color (..)) import Termbox.Bindings.Hs.Internal.Event (Tb_event, ceventToEvent) import Termbox.Bindings.Hs.Internal.InitError (Tb_init_error (..)) import Termbox.Bindings.Hs.Internal.InputMode (Tb_input_mode (..)) import Termbox.Bindings.Hs.Internal.OutputMode (Tb_output_mode (..)) import Termbox.Bindings.Hs.Internal.Prelude (charToWord32, cintToInt, intToCInt) --- | Set the attribute of a color.-tb_attr :: Tb_attr -> Tb_color -> Tb_color-tb_attr =- coerce ((.|.) :: Word16 -> Word16 -> Word16)- -- | Set a cell value in the back buffer. tb_change_cell :: -- | x@@ -47,22 +42,32 @@ -- | ch Char -> -- | fg- Tb_color ->+ Tb_attrs -> -- | bg- Tb_color ->+ Tb_attrs -> IO ()-tb_change_cell cx cy c (Tb_color foreground) (Tb_color background) =- Termbox.Bindings.C.tb_change_cell (intToCInt cx) (intToCInt cy) (charToWord32 c) foreground background+tb_change_cell cx cy c (Tb_attrs foreground) (Tb_attrs background) =+ Termbox.tb_change_cell (intToCInt cx) (intToCInt cy) (charToWord32 c) foreground background +-- | Get the input mode.+tb_get_input_mode :: IO Tb_input_mode+tb_get_input_mode =+ coerce Termbox.tb_select_input_mode Termbox._TB_INPUT_CURRENT++-- | Get the output mode.+tb_get_output_mode :: IO Tb_output_mode+tb_get_output_mode =+ coerce Termbox.tb_select_output_mode Termbox._TB_OUTPUT_CURRENT+ -- | Get the terminal height. tb_height :: IO Int tb_height =- cintToInt <$> Termbox.Bindings.C.tb_height+ cintToInt <$> Termbox.tb_height -- | Initialize the @termbox@ library. tb_init :: IO (Either Tb_init_error ()) tb_init = do- code <- Termbox.Bindings.C.tb_init+ code <- Termbox.tb_init pure if code == 0 then Right ()@@ -73,7 +78,7 @@ -- > tb_init = tb_init_fd(0) tb_init_fd :: Fd -> IO (Either Tb_init_error ()) tb_init_fd (Fd fd) = do- code <- Termbox.Bindings.C.tb_init_fd fd+ code <- Termbox.tb_init_fd fd pure if code == 0 then Right ()@@ -86,7 +91,7 @@ tb_init_file file = do code <- withCString file \c_file ->- Termbox.Bindings.C.tb_init_file c_file+ Termbox.tb_init_file c_file pure if code == 0 then Right ()@@ -96,7 +101,7 @@ tb_peek_event :: Int -> IO (Either () (Maybe Tb_event)) tb_peek_event timeout = alloca \c_event -> do- result <- Termbox.Bindings.C.tb_peek_event c_event (intToCInt timeout)+ result <- Termbox.tb_peek_event c_event (intToCInt timeout) if result < 0 then pure (Left ()) else@@ -108,7 +113,7 @@ tb_poll_event :: IO (Either () Tb_event) tb_poll_event = alloca \c_event -> do- result <- Termbox.Bindings.C.tb_poll_event c_event+ result <- Termbox.tb_poll_event c_event if result < 0 then pure (Left ()) else Right . ceventToEvent <$> Storable.peek c_event@@ -125,38 +130,38 @@ tb_put_cell cx cy cell = alloca \c_cell -> do Storable.poke c_cell (cellToCCell cell)- Termbox.Bindings.C.tb_put_cell (intToCInt cx) (intToCInt cy) c_cell+ Termbox.tb_put_cell (intToCInt cx) (intToCInt cy) c_cell --- | Get\/set the input mode.-tb_select_input_mode :: Tb_input_mode -> IO Tb_input_mode-tb_select_input_mode =- coerce Termbox.Bindings.C.tb_select_input_mode+-- | Set the input mode.+tb_select_input_mode :: Tb_input_mode -> IO ()+tb_select_input_mode (Tb_input_mode mode) =+ void (Termbox.tb_select_input_mode mode) --- | Get\/set the output mode.-tb_select_output_mode :: Tb_output_mode -> IO Tb_output_mode-tb_select_output_mode =- coerce Termbox.Bindings.C.tb_select_output_mode+-- | Set the output mode.+tb_select_output_mode :: Tb_output_mode -> IO ()+tb_select_output_mode (Tb_output_mode mode) =+ void (Termbox.tb_select_output_mode mode) -- | Set the foreground and background attributes that 'tb_clear' clears the back buffer with. tb_set_clear_attributes :: -- | fg- Tb_color ->+ Tb_attrs -> -- | bg- Tb_color ->+ Tb_attrs -> IO ()-tb_set_clear_attributes (Tb_color foreground) (Tb_color background) =- Termbox.Bindings.C.tb_set_clear_attributes foreground background+tb_set_clear_attributes =+ coerce Termbox.tb_set_clear_attributes --- | Set the cursor location, or hide it.+-- | Set or hide the cursor location. tb_set_cursor :: -- | x, y Maybe (Int, Int) -> IO () tb_set_cursor = \case- Nothing -> Termbox.Bindings.C.tb_set_cursor Termbox.Bindings.C._TB_HIDE_CURSOR Termbox.Bindings.C._TB_HIDE_CURSOR- Just (cx, cy) -> Termbox.Bindings.C.tb_set_cursor (intToCInt cx) (intToCInt cy)+ Nothing -> Termbox.tb_set_cursor Termbox._TB_HIDE_CURSOR Termbox._TB_HIDE_CURSOR+ Just (cx, cy) -> Termbox.tb_set_cursor (intToCInt cx) (intToCInt cy) -- | Get the terminal width. tb_width :: IO Int tb_width =- cintToInt <$> Termbox.Bindings.C.tb_width+ cintToInt <$> Termbox.tb_width
src/Termbox/Bindings/Hs/Internal/InitError.hs view
@@ -8,13 +8,15 @@ ) where +import Control.Exception (Exception) import Foreign.C.Types (CInt)-import qualified Termbox.Bindings.C+import Termbox.Bindings.C (_TB_EFAILED_TO_OPEN_TTY, _TB_EPIPE_TRAP_ERROR, _TB_EUNSUPPORTED_TERMINAL) -- | A 'tb_init' error. newtype Tb_init_error = Tb_init_error CInt- deriving stock (Eq, Ord)+ deriving anyclass (Exception)+ deriving stock (Eq) instance Show Tb_init_error where show = \case@@ -24,20 +26,21 @@ pattern TB_EFAILED_TO_OPEN_TTY :: Tb_init_error pattern TB_EFAILED_TO_OPEN_TTY <-- ((== Tb_init_error Termbox.Bindings.C._TB_EFAILED_TO_OPEN_TTY) -> True)+ ((== Tb_init_error _TB_EFAILED_TO_OPEN_TTY) -> True) where- TB_EFAILED_TO_OPEN_TTY = Tb_init_error Termbox.Bindings.C._TB_EFAILED_TO_OPEN_TTY+ TB_EFAILED_TO_OPEN_TTY = Tb_init_error _TB_EFAILED_TO_OPEN_TTY pattern TB_EPIPE_TRAP_ERROR :: Tb_init_error pattern TB_EPIPE_TRAP_ERROR <- ((== Tb_init_error Termbox.Bindings.C._TB_EPIPE_TRAP_ERROR) -> True) where- TB_EPIPE_TRAP_ERROR = Tb_init_error Termbox.Bindings.C._TB_EPIPE_TRAP_ERROR+ TB_EPIPE_TRAP_ERROR = Tb_init_error _TB_EPIPE_TRAP_ERROR pattern TB_EUNSUPPORTED_TERMINAL :: Tb_init_error pattern TB_EUNSUPPORTED_TERMINAL <-- ((== Tb_init_error Termbox.Bindings.C._TB_EUNSUPPORTED_TERMINAL) -> True)+ ((== Tb_init_error _TB_EUNSUPPORTED_TERMINAL) -> True) where- TB_EUNSUPPORTED_TERMINAL = Tb_init_error Termbox.Bindings.C._TB_EUNSUPPORTED_TERMINAL+ TB_EUNSUPPORTED_TERMINAL = Tb_init_error _TB_EUNSUPPORTED_TERMINAL +-- N.B. This requires Tb_init_error to remain abstract {-# COMPLETE TB_EFAILED_TO_OPEN_TTY, TB_EPIPE_TRAP_ERROR, TB_EUNSUPPORTED_TERMINAL #-}
src/Termbox/Bindings/Hs/Internal/InputMode.hs view
@@ -1,51 +1,41 @@ module Termbox.Bindings.Hs.Internal.InputMode- ( Tb_input_mode- ( Tb_input_mode,- TB_INPUT_CURRENT,- TB_INPUT_ALT,- TB_INPUT_ESC,- TB_INPUT_MOUSE- ),+ ( Tb_input_mode (Tb_input_mode),+ _TB_INPUT_ALT,+ _TB_INPUT_ESC,+ _TB_INPUT_MOUSE, ) where +import Data.Bits (Bits, (.|.))+import Data.Coerce (coerce) import Foreign.C.Types (CInt)-import qualified Termbox.Bindings.C+import qualified Termbox.Bindings.C as Termbox -- | The input mode. newtype Tb_input_mode = Tb_input_mode CInt- deriving stock (Eq, Ord)+ deriving stock (Eq)+ deriving newtype (Bits) instance Show Tb_input_mode where- show = \case- TB_INPUT_CURRENT -> "TB_INPUT_CURRENT"- TB_INPUT_ALT -> "TB_INPUT_ALT"- TB_INPUT_ESC -> "TB_INPUT_ESC"- TB_INPUT_MOUSE -> "TB_INPUT_MOUSE"--pattern TB_INPUT_CURRENT :: Tb_input_mode-pattern TB_INPUT_CURRENT <-- ((== Tb_input_mode Termbox.Bindings.C._TB_INPUT_CURRENT) -> True)- where- TB_INPUT_CURRENT = Tb_input_mode Termbox.Bindings.C._TB_INPUT_CURRENT+ show mode+ | mode == _TB_INPUT_ESC = "_TB_INPUT_ESC"+ | mode == _TB_INPUT_ALT = "_TB_INPUT_ALT"+ | mode == _TB_INPUT_ESC <> _TB_INPUT_MOUSE = "_TB_INPUT_ESC <> _TB_INPUT_MOUSE"+ | mode == _TB_INPUT_ALT <> _TB_INPUT_MOUSE = "_TB_INPUT_ALT <> _TB_INPUT_MOUSE"+ | otherwise = "Tb_input_mode " ++ show (coerce @_ @CInt mode) -pattern TB_INPUT_ALT :: Tb_input_mode-pattern TB_INPUT_ALT <-- ((== Tb_input_mode Termbox.Bindings.C._TB_INPUT_ALT) -> True)- where- TB_INPUT_ALT = Tb_input_mode Termbox.Bindings.C._TB_INPUT_ALT+instance Semigroup Tb_input_mode where+ (<>) = coerce ((.|.) :: CInt -> CInt -> CInt) -pattern TB_INPUT_ESC :: Tb_input_mode-pattern TB_INPUT_ESC <-- ((== Tb_input_mode Termbox.Bindings.C._TB_INPUT_ESC) -> True)- where- TB_INPUT_ESC = Tb_input_mode Termbox.Bindings.C._TB_INPUT_ESC+_TB_INPUT_ALT :: Tb_input_mode+_TB_INPUT_ALT =+ Tb_input_mode Termbox._TB_INPUT_ALT -pattern TB_INPUT_MOUSE :: Tb_input_mode-pattern TB_INPUT_MOUSE <-- ((== Tb_input_mode Termbox.Bindings.C._TB_INPUT_MOUSE) -> True)- where- TB_INPUT_MOUSE = Tb_input_mode Termbox.Bindings.C._TB_INPUT_MOUSE+_TB_INPUT_ESC :: Tb_input_mode+_TB_INPUT_ESC =+ Tb_input_mode Termbox._TB_INPUT_ESC -{-# COMPLETE TB_INPUT_CURRENT, TB_INPUT_ALT, TB_INPUT_ESC, TB_INPUT_MOUSE #-}+_TB_INPUT_MOUSE :: Tb_input_mode+_TB_INPUT_MOUSE =+ Tb_input_mode Termbox._TB_INPUT_MOUSE
src/Termbox/Bindings/Hs/Internal/Key.hs view
@@ -79,7 +79,7 @@ where import Data.Word (Word16)-import qualified Termbox.Bindings.C+import Termbox.Bindings.C -- | A key. newtype Tb_key@@ -150,442 +150,442 @@ TB_KEY_CTRL_7 -> "TB_KEY_CTRL_7" TB_KEY_SPACE -> "TB_KEY_SPACE" TB_KEY_BACKSPACE2 -> "TB_KEY_BACKSPACE2"- k -> error ("Unknown key: " ++ show k)+ Tb_key k -> "Tb_key " ++ show k pattern TB_KEY_ARROW_DOWN :: Tb_key pattern TB_KEY_ARROW_DOWN <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ARROW_DOWN) -> True)+ ((== Tb_key _TB_KEY_ARROW_DOWN) -> True) where- TB_KEY_ARROW_DOWN = Tb_key Termbox.Bindings.C._TB_KEY_ARROW_DOWN+ TB_KEY_ARROW_DOWN = Tb_key _TB_KEY_ARROW_DOWN pattern TB_KEY_ARROW_LEFT :: Tb_key pattern TB_KEY_ARROW_LEFT <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ARROW_LEFT) -> True)+ ((== Tb_key _TB_KEY_ARROW_LEFT) -> True) where- TB_KEY_ARROW_LEFT = Tb_key Termbox.Bindings.C._TB_KEY_ARROW_LEFT+ TB_KEY_ARROW_LEFT = Tb_key _TB_KEY_ARROW_LEFT pattern TB_KEY_ARROW_RIGHT :: Tb_key pattern TB_KEY_ARROW_RIGHT <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ARROW_RIGHT) -> True)+ ((== Tb_key _TB_KEY_ARROW_RIGHT) -> True) where- TB_KEY_ARROW_RIGHT = Tb_key Termbox.Bindings.C._TB_KEY_ARROW_RIGHT+ TB_KEY_ARROW_RIGHT = Tb_key _TB_KEY_ARROW_RIGHT pattern TB_KEY_ARROW_UP :: Tb_key pattern TB_KEY_ARROW_UP <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ARROW_UP) -> True)+ ((== Tb_key _TB_KEY_ARROW_UP) -> True) where- TB_KEY_ARROW_UP = Tb_key Termbox.Bindings.C._TB_KEY_ARROW_UP+ TB_KEY_ARROW_UP = Tb_key _TB_KEY_ARROW_UP pattern TB_KEY_BACKSPACE :: Tb_key pattern TB_KEY_BACKSPACE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_BACKSPACE) -> True)+ ((== Tb_key _TB_KEY_BACKSPACE) -> True) where- TB_KEY_BACKSPACE = Tb_key Termbox.Bindings.C._TB_KEY_BACKSPACE+ TB_KEY_BACKSPACE = Tb_key _TB_KEY_BACKSPACE pattern TB_KEY_BACKSPACE2 :: Tb_key pattern TB_KEY_BACKSPACE2 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_BACKSPACE2) -> True)+ ((== Tb_key _TB_KEY_BACKSPACE2) -> True) where- TB_KEY_BACKSPACE2 = Tb_key Termbox.Bindings.C._TB_KEY_BACKSPACE2+ TB_KEY_BACKSPACE2 = Tb_key _TB_KEY_BACKSPACE2 pattern TB_KEY_CTRL_2 :: Tb_key pattern TB_KEY_CTRL_2 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_2) -> True)+ ((== Tb_key _TB_KEY_CTRL_2) -> True) where- TB_KEY_CTRL_2 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_2+ TB_KEY_CTRL_2 = Tb_key _TB_KEY_CTRL_2 pattern TB_KEY_CTRL_3 :: Tb_key pattern TB_KEY_CTRL_3 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_3) -> True)+ ((== Tb_key _TB_KEY_CTRL_3) -> True) where- TB_KEY_CTRL_3 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_3+ TB_KEY_CTRL_3 = Tb_key _TB_KEY_CTRL_3 pattern TB_KEY_CTRL_4 :: Tb_key pattern TB_KEY_CTRL_4 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_4) -> True)+ ((== Tb_key _TB_KEY_CTRL_4) -> True) where- TB_KEY_CTRL_4 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_4+ TB_KEY_CTRL_4 = Tb_key _TB_KEY_CTRL_4 pattern TB_KEY_CTRL_5 :: Tb_key pattern TB_KEY_CTRL_5 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_5) -> True)+ ((== Tb_key _TB_KEY_CTRL_5) -> True) where- TB_KEY_CTRL_5 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_5+ TB_KEY_CTRL_5 = Tb_key _TB_KEY_CTRL_5 pattern TB_KEY_CTRL_6 :: Tb_key pattern TB_KEY_CTRL_6 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_6) -> True)+ ((== Tb_key _TB_KEY_CTRL_6) -> True) where- TB_KEY_CTRL_6 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_6+ TB_KEY_CTRL_6 = Tb_key _TB_KEY_CTRL_6 pattern TB_KEY_CTRL_7 :: Tb_key pattern TB_KEY_CTRL_7 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_7) -> True)+ ((== Tb_key _TB_KEY_CTRL_7) -> True) where- TB_KEY_CTRL_7 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_7+ TB_KEY_CTRL_7 = Tb_key _TB_KEY_CTRL_7 pattern TB_KEY_CTRL_8 :: Tb_key pattern TB_KEY_CTRL_8 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_8) -> True)+ ((== Tb_key _TB_KEY_CTRL_8) -> True) where- TB_KEY_CTRL_8 = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_8+ TB_KEY_CTRL_8 = Tb_key _TB_KEY_CTRL_8 pattern TB_KEY_CTRL_A :: Tb_key pattern TB_KEY_CTRL_A <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_A) -> True)+ ((== Tb_key _TB_KEY_CTRL_A) -> True) where- TB_KEY_CTRL_A = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_A+ TB_KEY_CTRL_A = Tb_key _TB_KEY_CTRL_A pattern TB_KEY_CTRL_B :: Tb_key pattern TB_KEY_CTRL_B <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_B) -> True)+ ((== Tb_key _TB_KEY_CTRL_B) -> True) where- TB_KEY_CTRL_B = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_B+ TB_KEY_CTRL_B = Tb_key _TB_KEY_CTRL_B pattern TB_KEY_CTRL_BACKSLASH :: Tb_key pattern TB_KEY_CTRL_BACKSLASH <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_BACKSLASH) -> True)+ ((== Tb_key _TB_KEY_CTRL_BACKSLASH) -> True) where- TB_KEY_CTRL_BACKSLASH = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_BACKSLASH+ TB_KEY_CTRL_BACKSLASH = Tb_key _TB_KEY_CTRL_BACKSLASH pattern TB_KEY_CTRL_C :: Tb_key pattern TB_KEY_CTRL_C <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_C) -> True)+ ((== Tb_key _TB_KEY_CTRL_C) -> True) where- TB_KEY_CTRL_C = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_C+ TB_KEY_CTRL_C = Tb_key _TB_KEY_CTRL_C pattern TB_KEY_CTRL_D :: Tb_key pattern TB_KEY_CTRL_D <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_D) -> True)+ ((== Tb_key _TB_KEY_CTRL_D) -> True) where- TB_KEY_CTRL_D = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_D+ TB_KEY_CTRL_D = Tb_key _TB_KEY_CTRL_D pattern TB_KEY_CTRL_E :: Tb_key pattern TB_KEY_CTRL_E <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_E) -> True)+ ((== Tb_key _TB_KEY_CTRL_E) -> True) where- TB_KEY_CTRL_E = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_E+ TB_KEY_CTRL_E = Tb_key _TB_KEY_CTRL_E pattern TB_KEY_CTRL_F :: Tb_key pattern TB_KEY_CTRL_F <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_F) -> True)+ ((== Tb_key _TB_KEY_CTRL_F) -> True) where- TB_KEY_CTRL_F = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_F+ TB_KEY_CTRL_F = Tb_key _TB_KEY_CTRL_F pattern TB_KEY_CTRL_G :: Tb_key pattern TB_KEY_CTRL_G <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_G) -> True)+ ((== Tb_key _TB_KEY_CTRL_G) -> True) where- TB_KEY_CTRL_G = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_G+ TB_KEY_CTRL_G = Tb_key _TB_KEY_CTRL_G pattern TB_KEY_CTRL_H :: Tb_key pattern TB_KEY_CTRL_H <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_H) -> True)+ ((== Tb_key _TB_KEY_CTRL_H) -> True) where- TB_KEY_CTRL_H = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_H+ TB_KEY_CTRL_H = Tb_key _TB_KEY_CTRL_H pattern TB_KEY_CTRL_I :: Tb_key pattern TB_KEY_CTRL_I <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_I) -> True)+ ((== Tb_key _TB_KEY_CTRL_I) -> True) where- TB_KEY_CTRL_I = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_I+ TB_KEY_CTRL_I = Tb_key _TB_KEY_CTRL_I pattern TB_KEY_CTRL_J :: Tb_key pattern TB_KEY_CTRL_J <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_J) -> True)+ ((== Tb_key _TB_KEY_CTRL_J) -> True) where- TB_KEY_CTRL_J = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_J+ TB_KEY_CTRL_J = Tb_key _TB_KEY_CTRL_J pattern TB_KEY_CTRL_K :: Tb_key pattern TB_KEY_CTRL_K <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_K) -> True)+ ((== Tb_key _TB_KEY_CTRL_K) -> True) where- TB_KEY_CTRL_K = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_K+ TB_KEY_CTRL_K = Tb_key _TB_KEY_CTRL_K pattern TB_KEY_CTRL_L :: Tb_key pattern TB_KEY_CTRL_L <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_L) -> True)+ ((== Tb_key _TB_KEY_CTRL_L) -> True) where- TB_KEY_CTRL_L = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_L+ TB_KEY_CTRL_L = Tb_key _TB_KEY_CTRL_L pattern TB_KEY_CTRL_LSQ_BRACKET :: Tb_key pattern TB_KEY_CTRL_LSQ_BRACKET <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_LSQ_BRACKET) -> True)+ ((== Tb_key _TB_KEY_CTRL_LSQ_BRACKET) -> True) where- TB_KEY_CTRL_LSQ_BRACKET = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_LSQ_BRACKET+ TB_KEY_CTRL_LSQ_BRACKET = Tb_key _TB_KEY_CTRL_LSQ_BRACKET pattern TB_KEY_CTRL_M :: Tb_key pattern TB_KEY_CTRL_M <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_M) -> True)+ ((== Tb_key _TB_KEY_CTRL_M) -> True) where- TB_KEY_CTRL_M = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_M+ TB_KEY_CTRL_M = Tb_key _TB_KEY_CTRL_M pattern TB_KEY_CTRL_N :: Tb_key pattern TB_KEY_CTRL_N <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_N) -> True)+ ((== Tb_key _TB_KEY_CTRL_N) -> True) where- TB_KEY_CTRL_N = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_N+ TB_KEY_CTRL_N = Tb_key _TB_KEY_CTRL_N pattern TB_KEY_CTRL_O :: Tb_key pattern TB_KEY_CTRL_O <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_O) -> True)+ ((== Tb_key _TB_KEY_CTRL_O) -> True) where- TB_KEY_CTRL_O = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_O+ TB_KEY_CTRL_O = Tb_key _TB_KEY_CTRL_O pattern TB_KEY_CTRL_P :: Tb_key pattern TB_KEY_CTRL_P <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_P) -> True)+ ((== Tb_key _TB_KEY_CTRL_P) -> True) where- TB_KEY_CTRL_P = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_P+ TB_KEY_CTRL_P = Tb_key _TB_KEY_CTRL_P pattern TB_KEY_CTRL_Q :: Tb_key pattern TB_KEY_CTRL_Q <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Q) -> True)+ ((== Tb_key _TB_KEY_CTRL_Q) -> True) where- TB_KEY_CTRL_Q = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Q+ TB_KEY_CTRL_Q = Tb_key _TB_KEY_CTRL_Q pattern TB_KEY_CTRL_R :: Tb_key pattern TB_KEY_CTRL_R <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_R) -> True)+ ((== Tb_key _TB_KEY_CTRL_R) -> True) where- TB_KEY_CTRL_R = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_R+ TB_KEY_CTRL_R = Tb_key _TB_KEY_CTRL_R pattern TB_KEY_CTRL_RSQ_BRACKET :: Tb_key pattern TB_KEY_CTRL_RSQ_BRACKET <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_RSQ_BRACKET) -> True)+ ((== Tb_key _TB_KEY_CTRL_RSQ_BRACKET) -> True) where- TB_KEY_CTRL_RSQ_BRACKET = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_RSQ_BRACKET+ TB_KEY_CTRL_RSQ_BRACKET = Tb_key _TB_KEY_CTRL_RSQ_BRACKET pattern TB_KEY_CTRL_S :: Tb_key pattern TB_KEY_CTRL_S <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_S) -> True)+ ((== Tb_key _TB_KEY_CTRL_S) -> True) where- TB_KEY_CTRL_S = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_S+ TB_KEY_CTRL_S = Tb_key _TB_KEY_CTRL_S pattern TB_KEY_CTRL_SLASH :: Tb_key pattern TB_KEY_CTRL_SLASH <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_SLASH) -> True)+ ((== Tb_key _TB_KEY_CTRL_SLASH) -> True) where- TB_KEY_CTRL_SLASH = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_SLASH+ TB_KEY_CTRL_SLASH = Tb_key _TB_KEY_CTRL_SLASH pattern TB_KEY_CTRL_T :: Tb_key pattern TB_KEY_CTRL_T <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_T) -> True)+ ((== Tb_key _TB_KEY_CTRL_T) -> True) where- TB_KEY_CTRL_T = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_T+ TB_KEY_CTRL_T = Tb_key _TB_KEY_CTRL_T pattern TB_KEY_CTRL_TILDE :: Tb_key pattern TB_KEY_CTRL_TILDE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_TILDE) -> True)+ ((== Tb_key _TB_KEY_CTRL_TILDE) -> True) where- TB_KEY_CTRL_TILDE = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_TILDE+ TB_KEY_CTRL_TILDE = Tb_key _TB_KEY_CTRL_TILDE pattern TB_KEY_CTRL_U :: Tb_key pattern TB_KEY_CTRL_U <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_U) -> True)+ ((== Tb_key _TB_KEY_CTRL_U) -> True) where- TB_KEY_CTRL_U = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_U+ TB_KEY_CTRL_U = Tb_key _TB_KEY_CTRL_U pattern TB_KEY_CTRL_UNDERSCORE :: Tb_key pattern TB_KEY_CTRL_UNDERSCORE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_UNDERSCORE) -> True)+ ((== Tb_key _TB_KEY_CTRL_UNDERSCORE) -> True) where- TB_KEY_CTRL_UNDERSCORE = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_UNDERSCORE+ TB_KEY_CTRL_UNDERSCORE = Tb_key _TB_KEY_CTRL_UNDERSCORE pattern TB_KEY_CTRL_V :: Tb_key pattern TB_KEY_CTRL_V <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_V) -> True)+ ((== Tb_key _TB_KEY_CTRL_V) -> True) where- TB_KEY_CTRL_V = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_V+ TB_KEY_CTRL_V = Tb_key _TB_KEY_CTRL_V pattern TB_KEY_CTRL_W :: Tb_key pattern TB_KEY_CTRL_W <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_W) -> True)+ ((== Tb_key _TB_KEY_CTRL_W) -> True) where- TB_KEY_CTRL_W = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_W+ TB_KEY_CTRL_W = Tb_key _TB_KEY_CTRL_W pattern TB_KEY_CTRL_X :: Tb_key pattern TB_KEY_CTRL_X <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_X) -> True)+ ((== Tb_key _TB_KEY_CTRL_X) -> True) where- TB_KEY_CTRL_X = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_X+ TB_KEY_CTRL_X = Tb_key _TB_KEY_CTRL_X pattern TB_KEY_CTRL_Y :: Tb_key pattern TB_KEY_CTRL_Y <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Y) -> True)+ ((== Tb_key _TB_KEY_CTRL_Y) -> True) where- TB_KEY_CTRL_Y = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Y+ TB_KEY_CTRL_Y = Tb_key _TB_KEY_CTRL_Y pattern TB_KEY_CTRL_Z :: Tb_key pattern TB_KEY_CTRL_Z <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Z) -> True)+ ((== Tb_key _TB_KEY_CTRL_Z) -> True) where- TB_KEY_CTRL_Z = Tb_key Termbox.Bindings.C._TB_KEY_CTRL_Z+ TB_KEY_CTRL_Z = Tb_key _TB_KEY_CTRL_Z pattern TB_KEY_DELETE :: Tb_key pattern TB_KEY_DELETE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_DELETE) -> True)+ ((== Tb_key _TB_KEY_DELETE) -> True) where- TB_KEY_DELETE = Tb_key Termbox.Bindings.C._TB_KEY_DELETE+ TB_KEY_DELETE = Tb_key _TB_KEY_DELETE pattern TB_KEY_END :: Tb_key pattern TB_KEY_END <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_END) -> True)+ ((== Tb_key _TB_KEY_END) -> True) where- TB_KEY_END = Tb_key Termbox.Bindings.C._TB_KEY_END+ TB_KEY_END = Tb_key _TB_KEY_END pattern TB_KEY_ENTER :: Tb_key pattern TB_KEY_ENTER <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ENTER) -> True)+ ((== Tb_key _TB_KEY_ENTER) -> True) where- TB_KEY_ENTER = Tb_key Termbox.Bindings.C._TB_KEY_ENTER+ TB_KEY_ENTER = Tb_key _TB_KEY_ENTER pattern TB_KEY_ESC :: Tb_key pattern TB_KEY_ESC <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_ESC) -> True)+ ((== Tb_key _TB_KEY_ESC) -> True) where- TB_KEY_ESC = Tb_key Termbox.Bindings.C._TB_KEY_ESC+ TB_KEY_ESC = Tb_key _TB_KEY_ESC pattern TB_KEY_F1 :: Tb_key pattern TB_KEY_F1 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F1) -> True)+ ((== Tb_key _TB_KEY_F1) -> True) where- TB_KEY_F1 = Tb_key Termbox.Bindings.C._TB_KEY_F1+ TB_KEY_F1 = Tb_key _TB_KEY_F1 pattern TB_KEY_F10 :: Tb_key pattern TB_KEY_F10 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F10) -> True)+ ((== Tb_key _TB_KEY_F10) -> True) where- TB_KEY_F10 = Tb_key Termbox.Bindings.C._TB_KEY_F10+ TB_KEY_F10 = Tb_key _TB_KEY_F10 pattern TB_KEY_F11 :: Tb_key pattern TB_KEY_F11 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F11) -> True)+ ((== Tb_key _TB_KEY_F11) -> True) where- TB_KEY_F11 = Tb_key Termbox.Bindings.C._TB_KEY_F11+ TB_KEY_F11 = Tb_key _TB_KEY_F11 pattern TB_KEY_F12 :: Tb_key pattern TB_KEY_F12 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F12) -> True)+ ((== Tb_key _TB_KEY_F12) -> True) where- TB_KEY_F12 = Tb_key Termbox.Bindings.C._TB_KEY_F12+ TB_KEY_F12 = Tb_key _TB_KEY_F12 pattern TB_KEY_F2 :: Tb_key pattern TB_KEY_F2 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F2) -> True)+ ((== Tb_key _TB_KEY_F2) -> True) where- TB_KEY_F2 = Tb_key Termbox.Bindings.C._TB_KEY_F2+ TB_KEY_F2 = Tb_key _TB_KEY_F2 pattern TB_KEY_F3 :: Tb_key pattern TB_KEY_F3 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F3) -> True)+ ((== Tb_key _TB_KEY_F3) -> True) where- TB_KEY_F3 = Tb_key Termbox.Bindings.C._TB_KEY_F3+ TB_KEY_F3 = Tb_key _TB_KEY_F3 pattern TB_KEY_F4 :: Tb_key pattern TB_KEY_F4 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F4) -> True)+ ((== Tb_key _TB_KEY_F4) -> True) where- TB_KEY_F4 = Tb_key Termbox.Bindings.C._TB_KEY_F4+ TB_KEY_F4 = Tb_key _TB_KEY_F4 pattern TB_KEY_F5 :: Tb_key pattern TB_KEY_F5 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F5) -> True)+ ((== Tb_key _TB_KEY_F5) -> True) where- TB_KEY_F5 = Tb_key Termbox.Bindings.C._TB_KEY_F5+ TB_KEY_F5 = Tb_key _TB_KEY_F5 pattern TB_KEY_F6 :: Tb_key pattern TB_KEY_F6 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F6) -> True)+ ((== Tb_key _TB_KEY_F6) -> True) where- TB_KEY_F6 = Tb_key Termbox.Bindings.C._TB_KEY_F6+ TB_KEY_F6 = Tb_key _TB_KEY_F6 pattern TB_KEY_F7 :: Tb_key pattern TB_KEY_F7 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F7) -> True)+ ((== Tb_key _TB_KEY_F7) -> True) where- TB_KEY_F7 = Tb_key Termbox.Bindings.C._TB_KEY_F7+ TB_KEY_F7 = Tb_key _TB_KEY_F7 pattern TB_KEY_F8 :: Tb_key pattern TB_KEY_F8 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F8) -> True)+ ((== Tb_key _TB_KEY_F8) -> True) where- TB_KEY_F8 = Tb_key Termbox.Bindings.C._TB_KEY_F8+ TB_KEY_F8 = Tb_key _TB_KEY_F8 pattern TB_KEY_F9 :: Tb_key pattern TB_KEY_F9 <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_F9) -> True)+ ((== Tb_key _TB_KEY_F9) -> True) where- TB_KEY_F9 = Tb_key Termbox.Bindings.C._TB_KEY_F9+ TB_KEY_F9 = Tb_key _TB_KEY_F9 pattern TB_KEY_HOME :: Tb_key pattern TB_KEY_HOME <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_HOME) -> True)+ ((== Tb_key _TB_KEY_HOME) -> True) where- TB_KEY_HOME = Tb_key Termbox.Bindings.C._TB_KEY_HOME+ TB_KEY_HOME = Tb_key _TB_KEY_HOME pattern TB_KEY_INSERT :: Tb_key pattern TB_KEY_INSERT <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_INSERT) -> True)+ ((== Tb_key _TB_KEY_INSERT) -> True) where- TB_KEY_INSERT = Tb_key Termbox.Bindings.C._TB_KEY_INSERT+ TB_KEY_INSERT = Tb_key _TB_KEY_INSERT pattern TB_KEY_MOUSE_LEFT :: Tb_key pattern TB_KEY_MOUSE_LEFT <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_LEFT) -> True)+ ((== Tb_key _TB_KEY_MOUSE_LEFT) -> True) where- TB_KEY_MOUSE_LEFT = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_LEFT+ TB_KEY_MOUSE_LEFT = Tb_key _TB_KEY_MOUSE_LEFT pattern TB_KEY_MOUSE_MIDDLE :: Tb_key pattern TB_KEY_MOUSE_MIDDLE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_MIDDLE) -> True)+ ((== Tb_key _TB_KEY_MOUSE_MIDDLE) -> True) where- TB_KEY_MOUSE_MIDDLE = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_MIDDLE+ TB_KEY_MOUSE_MIDDLE = Tb_key _TB_KEY_MOUSE_MIDDLE pattern TB_KEY_MOUSE_RELEASE :: Tb_key pattern TB_KEY_MOUSE_RELEASE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_RELEASE) -> True)+ ((== Tb_key _TB_KEY_MOUSE_RELEASE) -> True) where- TB_KEY_MOUSE_RELEASE = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_RELEASE+ TB_KEY_MOUSE_RELEASE = Tb_key _TB_KEY_MOUSE_RELEASE pattern TB_KEY_MOUSE_RIGHT :: Tb_key pattern TB_KEY_MOUSE_RIGHT <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_RIGHT) -> True)+ ((== Tb_key _TB_KEY_MOUSE_RIGHT) -> True) where- TB_KEY_MOUSE_RIGHT = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_RIGHT+ TB_KEY_MOUSE_RIGHT = Tb_key _TB_KEY_MOUSE_RIGHT pattern TB_KEY_MOUSE_WHEEL_DOWN :: Tb_key pattern TB_KEY_MOUSE_WHEEL_DOWN <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_WHEEL_DOWN) -> True)+ ((== Tb_key _TB_KEY_MOUSE_WHEEL_DOWN) -> True) where- TB_KEY_MOUSE_WHEEL_DOWN = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_WHEEL_DOWN+ TB_KEY_MOUSE_WHEEL_DOWN = Tb_key _TB_KEY_MOUSE_WHEEL_DOWN pattern TB_KEY_MOUSE_WHEEL_UP :: Tb_key pattern TB_KEY_MOUSE_WHEEL_UP <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_WHEEL_UP) -> True)+ ((== Tb_key _TB_KEY_MOUSE_WHEEL_UP) -> True) where- TB_KEY_MOUSE_WHEEL_UP = Tb_key Termbox.Bindings.C._TB_KEY_MOUSE_WHEEL_UP+ TB_KEY_MOUSE_WHEEL_UP = Tb_key _TB_KEY_MOUSE_WHEEL_UP pattern TB_KEY_PGDN :: Tb_key pattern TB_KEY_PGDN <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_PGDN) -> True)+ ((== Tb_key _TB_KEY_PGDN) -> True) where- TB_KEY_PGDN = Tb_key Termbox.Bindings.C._TB_KEY_PGDN+ TB_KEY_PGDN = Tb_key _TB_KEY_PGDN pattern TB_KEY_PGUP :: Tb_key pattern TB_KEY_PGUP <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_PGUP) -> True)+ ((== Tb_key _TB_KEY_PGUP) -> True) where- TB_KEY_PGUP = Tb_key Termbox.Bindings.C._TB_KEY_PGUP+ TB_KEY_PGUP = Tb_key _TB_KEY_PGUP pattern TB_KEY_SPACE :: Tb_key pattern TB_KEY_SPACE <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_SPACE) -> True)+ ((== Tb_key _TB_KEY_SPACE) -> True) where- TB_KEY_SPACE = Tb_key Termbox.Bindings.C._TB_KEY_SPACE+ TB_KEY_SPACE = Tb_key _TB_KEY_SPACE pattern TB_KEY_TAB :: Tb_key pattern TB_KEY_TAB <-- ((== Tb_key Termbox.Bindings.C._TB_KEY_TAB) -> True)+ ((== Tb_key _TB_KEY_TAB) -> True) where- TB_KEY_TAB = Tb_key Termbox.Bindings.C._TB_KEY_TAB+ TB_KEY_TAB = Tb_key _TB_KEY_TAB
src/Termbox/Bindings/Hs/Internal/OutputMode.hs view
@@ -1,7 +1,6 @@ module Termbox.Bindings.Hs.Internal.OutputMode ( Tb_output_mode ( Tb_output_mode,- TB_OUTPUT_CURRENT, TB_OUTPUT_216, TB_OUTPUT_256, TB_OUTPUT_GRAYSCALE,@@ -11,49 +10,48 @@ where import Foreign.C.Types (CInt)-import qualified Termbox.Bindings.C+import Termbox.Bindings.C+ ( _TB_OUTPUT_216,+ _TB_OUTPUT_256,+ _TB_OUTPUT_GRAYSCALE,+ _TB_OUTPUT_NORMAL,+ ) -- | The output mode. newtype Tb_output_mode = Tb_output_mode CInt- deriving stock (Eq, Ord)+ deriving stock (Eq) instance Show Tb_output_mode where show = \case- TB_OUTPUT_CURRENT -> "TB_OUTPUT_CURRENT" TB_OUTPUT_216 -> "TB_OUTPUT_216" TB_OUTPUT_256 -> "TB_OUTPUT_256" TB_OUTPUT_GRAYSCALE -> "TB_OUTPUT_GRAYSCALE" TB_OUTPUT_NORMAL -> "TB_OUTPUT_NORMAL" -pattern TB_OUTPUT_CURRENT :: Tb_output_mode-pattern TB_OUTPUT_CURRENT <-- ((== Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_CURRENT) -> True)- where- TB_OUTPUT_CURRENT = Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_CURRENT- pattern TB_OUTPUT_216 :: Tb_output_mode pattern TB_OUTPUT_216 <-- ((== Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_216) -> True)+ ((== Tb_output_mode _TB_OUTPUT_216) -> True) where- TB_OUTPUT_216 = Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_216+ TB_OUTPUT_216 = Tb_output_mode _TB_OUTPUT_216 pattern TB_OUTPUT_256 :: Tb_output_mode pattern TB_OUTPUT_256 <-- ((== Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_256) -> True)+ ((== Tb_output_mode _TB_OUTPUT_256) -> True) where- TB_OUTPUT_256 = Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_256+ TB_OUTPUT_256 = Tb_output_mode _TB_OUTPUT_256 pattern TB_OUTPUT_GRAYSCALE :: Tb_output_mode pattern TB_OUTPUT_GRAYSCALE <-- ((== Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_GRAYSCALE) -> True)+ ((== Tb_output_mode _TB_OUTPUT_GRAYSCALE) -> True) where- TB_OUTPUT_GRAYSCALE = Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_GRAYSCALE+ TB_OUTPUT_GRAYSCALE = Tb_output_mode _TB_OUTPUT_GRAYSCALE pattern TB_OUTPUT_NORMAL :: Tb_output_mode pattern TB_OUTPUT_NORMAL <-- ((== Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_NORMAL) -> True)+ ((== Tb_output_mode _TB_OUTPUT_NORMAL) -> True) where- TB_OUTPUT_NORMAL = Tb_output_mode Termbox.Bindings.C._TB_OUTPUT_NORMAL+ TB_OUTPUT_NORMAL = Tb_output_mode _TB_OUTPUT_NORMAL -{-# COMPLETE TB_OUTPUT_CURRENT, TB_OUTPUT_216, TB_OUTPUT_256, TB_OUTPUT_GRAYSCALE, TB_OUTPUT_NORMAL #-}+-- N.B. This requires Tb_output_mode to remain abstract+{-# COMPLETE TB_OUTPUT_216, TB_OUTPUT_256, TB_OUTPUT_GRAYSCALE, TB_OUTPUT_NORMAL #-}
termbox-bindings-hs.cabal view
@@ -20,7 +20,7 @@ name: termbox-bindings-hs synopsis: termbox bindings tested-with: GHC == 9.4.7, GHC == 9.6.3, GHC == 9.8.1-version: 0.1.1+version: 1.0.0 extra-doc-files: CHANGELOG.md@@ -36,7 +36,8 @@ termbox-bindings-c ^>= 0.1, default-extensions: BlockArguments- DeriveGeneric,+ DeriveAnyClass+ DeriveGeneric DerivingStrategies DuplicateRecordFields GeneralizedNewtypeDeriving@@ -65,9 +66,8 @@ ghc-options: -Wno-missing-kind-signatures other-modules:- Termbox.Bindings.Hs.Internal.Attr+ Termbox.Bindings.Hs.Internal.Attrs Termbox.Bindings.Hs.Internal.Cell- Termbox.Bindings.Hs.Internal.Color Termbox.Bindings.Hs.Internal.Event Termbox.Bindings.Hs.Internal.EventMod Termbox.Bindings.Hs.Internal.EventType