marionette-1.1.0: src/Test/Marionette/Key.hs
module Test.Marionette.Key where
import Data.Aeson (ToJSON (..), Value (String))
import Data.Text qualified as Text
import Prelude hiding (Left, Right)
-- | Key values representing special keys and arbitrary characters, as defined in the
-- <https://www.w3.org/TR/webdriver/#keyboard-actions W3C WebDriver specification>.
data Key
= Null
| Cancel
| Help
| Backspace
| Tab
| Clear
| Return
| Enter
| Shift
| Control
| Alt
| Pause
| Escape
| Space
| PageUp
| PageDown
| End
| Home
| Left
| UpArrow
| Right
| DownArrow
| Insert
| Delete
| Semicolon
| Equals
| Numpad0
| Numpad1
| Numpad2
| Numpad3
| Numpad4
| Numpad5
| Numpad6
| Numpad7
| Numpad8
| Numpad9
| Multiply
| Add
| Separator
| Subtract
| Decimal
| Divide
| F1
| F2
| F3
| F4
| F5
| F6
| F7
| F8
| F9
| F10
| F11
| F12
| Meta
| ZenkakuHankaku
| Key Char
deriving stock (Show, Eq)
char :: Key -> Char
char Null = '\xE000'
char Cancel = '\xE001'
char Help = '\xE002'
char Backspace = '\xE003'
char Tab = '\xE004'
char Clear = '\xE005'
char Return = '\xE006'
char Enter = '\xE007'
char Shift = '\xE008'
char Control = '\xE009'
char Alt = '\xE00A'
char Pause = '\xE00B'
char Escape = '\xE00C'
char Space = '\xE00D'
char PageUp = '\xE00E'
char PageDown = '\xE00F'
char End = '\xE010'
char Home = '\xE011'
char Left = '\xE012'
char UpArrow = '\xE013'
char Right = '\xE014'
char DownArrow = '\xE015'
char Insert = '\xE016'
char Delete = '\xE017'
char Semicolon = '\xE018'
char Equals = '\xE019'
char Numpad0 = '\xE01A'
char Numpad1 = '\xE01B'
char Numpad2 = '\xE01C'
char Numpad3 = '\xE01D'
char Numpad4 = '\xE01E'
char Numpad5 = '\xE01F'
char Numpad6 = '\xE020'
char Numpad7 = '\xE021'
char Numpad8 = '\xE022'
char Numpad9 = '\xE023'
char Multiply = '\xE024'
char Add = '\xE025'
char Separator = '\xE026'
char Subtract = '\xE027'
char Decimal = '\xE028'
char Divide = '\xE029'
char F1 = '\xE031'
char F2 = '\xE032'
char F3 = '\xE033'
char F4 = '\xE034'
char F5 = '\xE035'
char F6 = '\xE036'
char F7 = '\xE037'
char F8 = '\xE038'
char F9 = '\xE039'
char F10 = '\xE03A'
char F11 = '\xE03B'
char F12 = '\xE03C'
char Meta = '\xE03D'
char ZenkakuHankaku = '\xE040'
char (Key c) = c
instance ToJSON Key where
toJSON = String . Text.singleton . char