{- |
Module      : Web.Api.WebDriver.Types.Keyboard
Description : Type representing key presses.
Copyright   : 2018, Automattic, Inc.
License     : GPL-3
Maintainer  : Nathan Bloomfield (nbloomf@gmail.com)
Stability   : experimental
Portability : POSIX
-}

module Web.Api.WebDriver.Types.Keyboard (
    Key(..)
  , keyToChar
) where

-- | See <https://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions>.
data Key
  = UnidentifiedKey
  | CancelKey
  | HelpKey
  | BackspaceKey
  | TabKey
  | ClearKey
  | ReturnKey
  | EnterKey
  | ShiftKey
  | ControlKey
  | AltKey
  | PauseKey
  | EscapeKey
  | PageUpKey
  | PageDownKey
  | EndKey
  | HomeKey
  | ArrowLeftKey
  | ArrowUpKey
  | ArrowRightKey
  | ArrowDownKey
  | InsertKey
  | DeleteKey
  | F1Key
  | F2Key
  | F3Key
  | F4Key
  | F5Key
  | F6Key
  | F7Key
  | F8Key
  | F9Key
  | F10Key
  | F11Key
  | F12Key
  | MetaKey
  | ZenkakuHankakuKey

-- | See <https://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions>.
keyToChar :: Key -> Char
keyToChar :: Key -> Char
keyToChar Key
key = case Key
key of
  Key
UnidentifiedKey   -> Char
'\xe000'
  Key
CancelKey         -> Char
'\xe001'
  Key
HelpKey           -> Char
'\xe002'
  Key
BackspaceKey      -> Char
'\xe003'
  Key
TabKey            -> Char
'\xe004'
  Key
ClearKey          -> Char
'\xe005'
  Key
ReturnKey         -> Char
'\xe006'
  Key
EnterKey          -> Char
'\xe007'
  Key
ShiftKey          -> Char
'\xe008'
  Key
ControlKey        -> Char
'\xe009'
  Key
AltKey            -> Char
'\xe00a'
  Key
PauseKey          -> Char
'\xe00b'
  Key
EscapeKey         -> Char
'\xe00c'
  Key
PageUpKey         -> Char
'\xe00e'
  Key
PageDownKey       -> Char
'\xe00f'
  Key
EndKey            -> Char
'\xe010'
  Key
HomeKey           -> Char
'\xe011'
  Key
ArrowLeftKey      -> Char
'\xe012'
  Key
ArrowUpKey        -> Char
'\xe013'
  Key
ArrowRightKey     -> Char
'\xe014'
  Key
ArrowDownKey      -> Char
'\xe015'
  Key
InsertKey         -> Char
'\xe016'
  Key
DeleteKey         -> Char
'\xe017'
  Key
F1Key             -> Char
'\xe031'
  Key
F2Key             -> Char
'\xe032'
  Key
F3Key             -> Char
'\xe033'
  Key
F4Key             -> Char
'\xe034'
  Key
F5Key             -> Char
'\xe035'
  Key
F6Key             -> Char
'\xe036'
  Key
F7Key             -> Char
'\xe037'
  Key
F8Key             -> Char
'\xe038'
  Key
F9Key             -> Char
'\xe039'
  Key
F10Key            -> Char
'\xe03a'
  Key
F11Key            -> Char
'\xe03b'
  Key
F12Key            -> Char
'\xe03c'
  Key
MetaKey           -> Char
'\xe03d'
  Key
ZenkakuHankakuKey -> Char
'\xe040'