module Termbox.Internal.Key
( Key (..),
parseKey,
pattern KeyCtrlH,
pattern KeyCtrlLsqBracket,
pattern KeyCtrl2,
pattern KeyCtrl3,
pattern KeyCtrl4,
pattern KeyCtrl5,
pattern KeyCtrl7,
pattern KeyCtrlM,
pattern KeyCtrlI,
pattern KeyCtrlUnderscore,
)
where
import qualified Termbox.Bindings.Hs
data Key
= KeyChar !Char
| KeyArrowDown
| KeyArrowLeft
| KeyArrowRight
| KeyArrowUp
| KeyBackspace
|
KeyCtrlBackspace
| KeyCtrl6
| KeyCtrl8
| KeyCtrlA
| KeyCtrlB
|
KeyCtrlBackslash
| KeyCtrlC
| KeyCtrlD
| KeyCtrlE
| KeyCtrlF
| KeyCtrlG
| KeyCtrlJ
| KeyCtrlK
| KeyCtrlL
| KeyCtrlN
| KeyCtrlO
| KeyCtrlP
| KeyCtrlQ
| KeyCtrlR
|
KeyCtrlRsqBracket
| KeyCtrlS
|
KeyCtrlSlash
|
KeyCtrlTilde
| KeyCtrlT
| KeyCtrlU
| KeyCtrlV
| KeyCtrlW
| KeyCtrlX
| KeyCtrlY
| KeyCtrlZ
| KeyDelete
| KeyEnd
|
KeyEnter
|
KeyEsc
| KeyF1
| KeyF10
| KeyF11
| KeyF12
| KeyF2
| KeyF3
| KeyF4
| KeyF5
| KeyF6
| KeyF7
| KeyF8
| KeyF9
| KeyHome
| KeyInsert
| KeyPageDn
| KeyPageUp
| KeySpace
|
KeyTab
deriving stock (Key -> Key -> Bool
(Key -> Key -> Bool) -> (Key -> Key -> Bool) -> Eq Key
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Key -> Key -> Bool
== :: Key -> Key -> Bool
$c/= :: Key -> Key -> Bool
/= :: Key -> Key -> Bool
Eq, Eq Key
Eq Key =>
(Key -> Key -> Ordering)
-> (Key -> Key -> Bool)
-> (Key -> Key -> Bool)
-> (Key -> Key -> Bool)
-> (Key -> Key -> Bool)
-> (Key -> Key -> Key)
-> (Key -> Key -> Key)
-> Ord Key
Key -> Key -> Bool
Key -> Key -> Ordering
Key -> Key -> Key
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 :: Key -> Key -> Ordering
compare :: Key -> Key -> Ordering
$c< :: Key -> Key -> Bool
< :: Key -> Key -> Bool
$c<= :: Key -> Key -> Bool
<= :: Key -> Key -> Bool
$c> :: Key -> Key -> Bool
> :: Key -> Key -> Bool
$c>= :: Key -> Key -> Bool
>= :: Key -> Key -> Bool
$cmax :: Key -> Key -> Key
max :: Key -> Key -> Key
$cmin :: Key -> Key -> Key
min :: Key -> Key -> Key
Ord, Int -> Key -> ShowS
[Key] -> ShowS
Key -> [Char]
(Int -> Key -> ShowS)
-> (Key -> [Char]) -> ([Key] -> ShowS) -> Show Key
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Key -> ShowS
showsPrec :: Int -> Key -> ShowS
$cshow :: Key -> [Char]
show :: Key -> [Char]
$cshowList :: [Key] -> ShowS
showList :: [Key] -> ShowS
Show)
pattern KeyCtrlH :: Key
pattern $mKeyCtrlH :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrlH :: Key
KeyCtrlH = KeyCtrlBackspace
pattern KeyCtrlLsqBracket :: Key
pattern $mKeyCtrlLsqBracket :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrlLsqBracket :: Key
KeyCtrlLsqBracket = KeyEsc
pattern KeyCtrl2 :: Key
pattern $mKeyCtrl2 :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrl2 :: Key
KeyCtrl2 = KeyCtrlTilde
pattern KeyCtrl3 :: Key
pattern $mKeyCtrl3 :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrl3 :: Key
KeyCtrl3 = KeyEsc
pattern KeyCtrl4 :: Key
pattern $mKeyCtrl4 :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrl4 :: Key
KeyCtrl4 = KeyCtrlBackslash
pattern KeyCtrl5 :: Key
pattern $mKeyCtrl5 :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrl5 :: Key
KeyCtrl5 = KeyCtrlRsqBracket
pattern KeyCtrl7 :: Key
pattern $mKeyCtrl7 :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrl7 :: Key
KeyCtrl7 = KeyCtrlSlash
pattern KeyCtrlM :: Key
pattern $mKeyCtrlM :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrlM :: Key
KeyCtrlM = KeyEnter
pattern KeyCtrlI :: Key
pattern $mKeyCtrlI :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrlI :: Key
KeyCtrlI = KeyTab
pattern KeyCtrlUnderscore :: Key
pattern $mKeyCtrlUnderscore :: forall {r}. Key -> ((# #) -> r) -> ((# #) -> r) -> r
$bKeyCtrlUnderscore :: Key
KeyCtrlUnderscore = KeyCtrlSlash
parseKey :: Termbox.Bindings.Hs.Tb_key -> Key
parseKey :: Tb_key -> Key
parseKey = \case
Tb_key
Termbox.Bindings.Hs.TB_KEY_ARROW_DOWN -> Key
KeyArrowDown
Tb_key
Termbox.Bindings.Hs.TB_KEY_ARROW_LEFT -> Key
KeyArrowLeft
Tb_key
Termbox.Bindings.Hs.TB_KEY_ARROW_RIGHT -> Key
KeyArrowRight
Tb_key
Termbox.Bindings.Hs.TB_KEY_ARROW_UP -> Key
KeyArrowUp
Tb_key
Termbox.Bindings.Hs.TB_KEY_BACKSPACE -> Key
KeyBackspace
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_TILDE -> Key
KeyCtrlTilde
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_6 -> Key
KeyCtrl6
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_8 -> Key
KeyCtrl8
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_A -> Key
KeyCtrlA
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_B -> Key
KeyCtrlB
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_BACKSLASH -> Key
KeyCtrlBackslash
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_C -> Key
KeyCtrlC
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_D -> Key
KeyCtrlD
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_E -> Key
KeyCtrlE
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_F -> Key
KeyCtrlF
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_G -> Key
KeyCtrlG
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_H -> Key
KeyCtrlBackspace
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_J -> Key
KeyCtrlJ
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_K -> Key
KeyCtrlK
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_L -> Key
KeyCtrlL
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_N -> Key
KeyCtrlN
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_O -> Key
KeyCtrlO
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_P -> Key
KeyCtrlP
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_Q -> Key
KeyCtrlQ
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_R -> Key
KeyCtrlR
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_RSQ_BRACKET -> Key
KeyCtrlRsqBracket
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_S -> Key
KeyCtrlS
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_SLASH -> Key
KeyCtrlSlash
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_T -> Key
KeyCtrlT
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_U -> Key
KeyCtrlU
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_V -> Key
KeyCtrlV
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_W -> Key
KeyCtrlW
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_X -> Key
KeyCtrlX
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_Y -> Key
KeyCtrlY
Tb_key
Termbox.Bindings.Hs.TB_KEY_CTRL_Z -> Key
KeyCtrlZ
Tb_key
Termbox.Bindings.Hs.TB_KEY_DELETE -> Key
KeyDelete
Tb_key
Termbox.Bindings.Hs.TB_KEY_END -> Key
KeyEnd
Tb_key
Termbox.Bindings.Hs.TB_KEY_ENTER -> Key
KeyEnter
Tb_key
Termbox.Bindings.Hs.TB_KEY_ESC -> Key
KeyEsc
Tb_key
Termbox.Bindings.Hs.TB_KEY_F1 -> Key
KeyF1
Tb_key
Termbox.Bindings.Hs.TB_KEY_F10 -> Key
KeyF10
Tb_key
Termbox.Bindings.Hs.TB_KEY_F11 -> Key
KeyF11
Tb_key
Termbox.Bindings.Hs.TB_KEY_F12 -> Key
KeyF12
Tb_key
Termbox.Bindings.Hs.TB_KEY_F2 -> Key
KeyF2
Tb_key
Termbox.Bindings.Hs.TB_KEY_F3 -> Key
KeyF3
Tb_key
Termbox.Bindings.Hs.TB_KEY_F4 -> Key
KeyF4
Tb_key
Termbox.Bindings.Hs.TB_KEY_F5 -> Key
KeyF5
Tb_key
Termbox.Bindings.Hs.TB_KEY_F6 -> Key
KeyF6
Tb_key
Termbox.Bindings.Hs.TB_KEY_F7 -> Key
KeyF7
Tb_key
Termbox.Bindings.Hs.TB_KEY_F8 -> Key
KeyF8
Tb_key
Termbox.Bindings.Hs.TB_KEY_F9 -> Key
KeyF9
Tb_key
Termbox.Bindings.Hs.TB_KEY_HOME -> Key
KeyHome
Tb_key
Termbox.Bindings.Hs.TB_KEY_INSERT -> Key
KeyInsert
Tb_key
Termbox.Bindings.Hs.TB_KEY_PGDN -> Key
KeyPageDn
Tb_key
Termbox.Bindings.Hs.TB_KEY_PGUP -> Key
KeyPageUp
Tb_key
Termbox.Bindings.Hs.TB_KEY_SPACE -> Key
KeySpace
Tb_key
Termbox.Bindings.Hs.TB_KEY_TAB -> Key
KeyTab
Tb_key
key -> [Char] -> Key
forall a. HasCallStack => [Char] -> a
error ([Char]
"unknown key: " [Char] -> ShowS
forall a. [a] -> [a] -> [a]
++ Tb_key -> [Char]
forall a. Show a => a -> [Char]
show Tb_key
key)