-- | Defines the 'Key' and 'Button' types, along with a list of -- constants of those types. module Test.Robot.Types ( -- * Types Key() -- Hide implementation , Button() -- ** Creating -- $custom , customKey , customButton -- ** Extracting , rawKey , rawButton -- * Constants -- ** Buttons , leftButton, middleButton, rightButton , scrollUp, scrollDown, scrollLeft, scrollRight , backButton, forwardButton , module Test.Robot.Types.Keys ) where import Graphics.XHB import Test.Robot.Types.Core import Test.Robot.Types.Keys -- $custom -- These two functions let you define your own keys and buttons. -- -- 'customKey' requires a magic number (/keysym/) as its argument. On -- most Unix systems, you can look up common keysyms in the file -- @\/usr\/include\/X11\/keysymdef.h@. -- -- For example, the pound sign @£@ is listed as: -- -- > #define XK_sterling 0x00a3 /* U+00A3 POUND SIGN */ -- -- so to input this key, we use @customKey 0x00a3@. -- -- Note: this feature only works if the key actually exists on your -- keyboard. If not, then using the result will raise an exception. customKey :: KEYSYM -> Key customKey = Key customButton :: BUTTON -> Button customButton = Button leftButton, middleButton, rightButton :: Button scrollUp, scrollDown, scrollLeft, scrollRight :: Button backButton, forwardButton :: Button [leftButton, middleButton, rightButton, scrollUp, scrollDown, scrollLeft, scrollRight, backButton, forwardButton] = map Button [1..9]