sdl2-2.2.0: Both high- and low-level bindings to the SDL library (version 2.0.4+).

Safe HaskellSafe
LanguageHaskell2010

SDL.Input.Keyboard.Codes

Contents

Description

An enumeration of scancodes and keycodes, allowing you to pattern match on keyboard keys.

This module uses a relatively new GHC feature called PatternSynonyms in order to provide pattern matches over the underlying Scancode or Keycode. We do this so that you are also able to work with vendor-specific or otherwise unknown codes.

Synopsis

Scancodes

Scancodes are codes that correspond to the physical position of a key, independent of the current keyboard layout. Scancodes are meant to be layout-independent. Think of this as "the user pressed the Q key as it would be on a US QWERTY keyboard" regardless of whether this is actually a European keyboard or a Dvorak keyboard or whatever. The scancode is always the same key position. Scancode makes sense when you want key presses based on their location on a keyboard - for example, the traditional "WASD" layout used in first-person shooters.

newtype Scancode #

Constructors

Scancode 

Instances

Bounded Scancode # 
Eq Scancode # 
Data Scancode # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Scancode -> c Scancode #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Scancode #

toConstr :: Scancode -> Constr #

dataTypeOf :: Scancode -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Scancode) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Scancode) #

gmapT :: (forall b. Data b => b -> b) -> Scancode -> Scancode #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Scancode -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Scancode -> r #

gmapQ :: (forall d. Data d => d -> u) -> Scancode -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Scancode -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Scancode -> m Scancode #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Scancode -> m Scancode #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Scancode -> m Scancode #

Ord Scancode # 
Read Scancode # 
Show Scancode # 
Generic Scancode # 

Associated Types

type Rep Scancode :: * -> * #

Methods

from :: Scancode -> Rep Scancode x #

to :: Rep Scancode x -> Scancode #

ToNumber Scancode Word32 # 

Methods

toNumber :: Scancode -> Word32 #

FromNumber Scancode Word32 # 
type Rep Scancode # 
type Rep Scancode = D1 (MetaData "Scancode" "SDL.Input.Keyboard.Codes" "sdl2-2.2.0-2P34LP7wP7h1axXaFF2L0F" True) (C1 (MetaCons "Scancode" PrefixI True) (S1 (MetaSel (Just Symbol "unwrapScancode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word32)))

pattern ScancodeA :: Scancode #

pattern ScancodeB :: Scancode #

pattern ScancodeC :: Scancode #

pattern ScancodeD :: Scancode #

pattern ScancodeE :: Scancode #

pattern ScancodeF :: Scancode #

pattern ScancodeG :: Scancode #

pattern ScancodeH :: Scancode #

pattern ScancodeI :: Scancode #

pattern ScancodeJ :: Scancode #

pattern ScancodeK :: Scancode #

pattern ScancodeL :: Scancode #

pattern ScancodeM :: Scancode #

pattern ScancodeN :: Scancode #

pattern ScancodeO :: Scancode #

pattern ScancodeP :: Scancode #

pattern ScancodeQ :: Scancode #

pattern ScancodeR :: Scancode #

pattern ScancodeS :: Scancode #

pattern ScancodeT :: Scancode #

pattern ScancodeU :: Scancode #

pattern ScancodeV :: Scancode #

pattern ScancodeW :: Scancode #

pattern ScancodeX :: Scancode #

pattern ScancodeY :: Scancode #

pattern ScancodeZ :: Scancode #

pattern Scancode1 :: Scancode #

pattern Scancode2 :: Scancode #

pattern Scancode3 :: Scancode #

pattern Scancode4 :: Scancode #

pattern Scancode5 :: Scancode #

pattern Scancode6 :: Scancode #

pattern Scancode7 :: Scancode #

pattern Scancode8 :: Scancode #

pattern Scancode9 :: Scancode #

pattern Scancode0 :: Scancode #

pattern ScancodeF1 :: Scancode #

pattern ScancodeF2 :: Scancode #

pattern ScancodeF3 :: Scancode #

pattern ScancodeF4 :: Scancode #

pattern ScancodeF5 :: Scancode #

pattern ScancodeF6 :: Scancode #

pattern ScancodeF7 :: Scancode #

pattern ScancodeF8 :: Scancode #

pattern ScancodeF9 :: Scancode #

pattern ScancodeUp :: Scancode #

Keycode

Keycodes are layout-dependent codes, in that the code you receive can change for the same physical key depending on the users keyboard layout. Think of this as "the user pressed the key that is labelled Q on a specific keyboard." Keycode makes sense when you are anticipating the user to press either keys that match some mneumonic, or they are entering text.

newtype Keycode #

Constructors

Keycode 

Fields

Instances

Bounded Keycode # 
Eq Keycode # 

Methods

(==) :: Keycode -> Keycode -> Bool #

(/=) :: Keycode -> Keycode -> Bool #

Data Keycode # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Keycode -> c Keycode #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Keycode #

toConstr :: Keycode -> Constr #

dataTypeOf :: Keycode -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Keycode) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Keycode) #

gmapT :: (forall b. Data b => b -> b) -> Keycode -> Keycode #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Keycode -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Keycode -> r #

gmapQ :: (forall d. Data d => d -> u) -> Keycode -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Keycode -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Keycode -> m Keycode #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Keycode -> m Keycode #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Keycode -> m Keycode #

Ord Keycode # 
Read Keycode # 
Show Keycode # 
Generic Keycode # 

Associated Types

type Rep Keycode :: * -> * #

Methods

from :: Keycode -> Rep Keycode x #

to :: Rep Keycode x -> Keycode #

ToNumber Keycode Int32 # 

Methods

toNumber :: Keycode -> Int32 #

FromNumber Keycode Int32 # 

Methods

fromNumber :: Int32 -> Keycode #

type Rep Keycode # 
type Rep Keycode = D1 (MetaData "Keycode" "SDL.Input.Keyboard.Codes" "sdl2-2.2.0-2P34LP7wP7h1axXaFF2L0F" True) (C1 (MetaCons "Keycode" PrefixI True) (S1 (MetaSel (Just Symbol "unwrapKeycode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int32)))

pattern KeycodeTab :: Keycode #

pattern KeycodeHash :: Keycode #

pattern KeycodePlus :: Keycode #

pattern Keycode0 :: Keycode #

pattern Keycode1 :: Keycode #

pattern Keycode2 :: Keycode #

pattern Keycode3 :: Keycode #

pattern Keycode4 :: Keycode #

pattern Keycode5 :: Keycode #

pattern Keycode6 :: Keycode #

pattern Keycode7 :: Keycode #

pattern Keycode8 :: Keycode #

pattern Keycode9 :: Keycode #

pattern KeycodeLess :: Keycode #

pattern KeycodeAt :: Keycode #

pattern KeycodeA :: Keycode #

pattern KeycodeB :: Keycode #

pattern KeycodeC :: Keycode #

pattern KeycodeD :: Keycode #

pattern KeycodeE :: Keycode #

pattern KeycodeF :: Keycode #

pattern KeycodeG :: Keycode #

pattern KeycodeH :: Keycode #

pattern KeycodeI :: Keycode #

pattern KeycodeJ :: Keycode #

pattern KeycodeK :: Keycode #

pattern KeycodeL :: Keycode #

pattern KeycodeM :: Keycode #

pattern KeycodeN :: Keycode #

pattern KeycodeO :: Keycode #

pattern KeycodeP :: Keycode #

pattern KeycodeQ :: Keycode #

pattern KeycodeR :: Keycode #

pattern KeycodeS :: Keycode #

pattern KeycodeT :: Keycode #

pattern KeycodeU :: Keycode #

pattern KeycodeV :: Keycode #

pattern KeycodeW :: Keycode #

pattern KeycodeX :: Keycode #

pattern KeycodeY :: Keycode #

pattern KeycodeZ :: Keycode #

pattern KeycodeF1 :: Keycode #

pattern KeycodeF2 :: Keycode #

pattern KeycodeF3 :: Keycode #

pattern KeycodeF4 :: Keycode #

pattern KeycodeF5 :: Keycode #

pattern KeycodeF6 :: Keycode #

pattern KeycodeF7 :: Keycode #

pattern KeycodeF8 :: Keycode #

pattern KeycodeF9 :: Keycode #

pattern KeycodeF10 :: Keycode #

pattern KeycodeF11 :: Keycode #

pattern KeycodeF12 :: Keycode #

pattern KeycodeHome :: Keycode #

pattern KeycodeEnd :: Keycode #

pattern KeycodeLeft :: Keycode #

pattern KeycodeDown :: Keycode #

pattern KeycodeUp :: Keycode #

pattern KeycodeKP1 :: Keycode #

pattern KeycodeKP2 :: Keycode #

pattern KeycodeKP3 :: Keycode #

pattern KeycodeKP4 :: Keycode #

pattern KeycodeKP5 :: Keycode #

pattern KeycodeKP6 :: Keycode #

pattern KeycodeKP7 :: Keycode #

pattern KeycodeKP8 :: Keycode #

pattern KeycodeKP9 :: Keycode #

pattern KeycodeKP0 :: Keycode #

pattern KeycodeF13 :: Keycode #

pattern KeycodeF14 :: Keycode #

pattern KeycodeF15 :: Keycode #

pattern KeycodeF16 :: Keycode #

pattern KeycodeF17 :: Keycode #

pattern KeycodeF18 :: Keycode #

pattern KeycodeF19 :: Keycode #

pattern KeycodeF20 :: Keycode #

pattern KeycodeF21 :: Keycode #

pattern KeycodeF22 :: Keycode #

pattern KeycodeF23 :: Keycode #

pattern KeycodeF24 :: Keycode #

pattern KeycodeHelp :: Keycode #

pattern KeycodeMenu :: Keycode #

pattern KeycodeStop :: Keycode #

pattern KeycodeUndo :: Keycode #

pattern KeycodeCut :: Keycode #

pattern KeycodeCopy :: Keycode #

pattern KeycodeFind :: Keycode #

pattern KeycodeMute :: Keycode #

pattern KeycodeOut :: Keycode #

pattern KeycodeOper :: Keycode #

pattern KeycodeKP00 :: Keycode #

pattern KeycodeKPA :: Keycode #

pattern KeycodeKPB :: Keycode #

pattern KeycodeKPC :: Keycode #

pattern KeycodeKPD :: Keycode #

pattern KeycodeKPE :: Keycode #

pattern KeycodeKPF :: Keycode #

pattern KeycodeKPAt :: Keycode #

pattern KeycodeLAlt :: Keycode #

pattern KeycodeLGUI :: Keycode #

pattern KeycodeRAlt :: Keycode #

pattern KeycodeRGUI :: Keycode #

pattern KeycodeMode :: Keycode #

pattern KeycodeWWW :: Keycode #

pattern KeycodeMail :: Keycode #