packages feed

hois-0.1.0.0: OIS/OISKeyboard.hs

{-# LANGUAGE ForeignFunctionInterface #-}
module OIS.OISKeyboard(
keyEvent_with, 
keyEvent_new, 
keyEvent_delete, 
keyListener_delete, 
keyListener_keyPressed, 
keyListener_keyReleased, 
keyboard_delete, 
keyboard_isKeyDown, 
keyboard_setEventCallback, 
keyboard_getEventCallback, 
keyboard_setTextTranslation, 
keyboard_getTextTranslation, 
keyboard_isModifierDown
)

where

import OIS.Types
import Control.Monad

import Foreign
import Foreign.C.String
import Foreign.C.Types

keyEvent_with :: Object -> KeyCode -> Int -> (KeyEvent -> IO a) -> IO a
keyEvent_with p1 p2 p3 f = do
    obj <- keyEvent_new p1 p2 p3
    res <- f obj
    keyEvent_delete obj
    return res

foreign import ccall "OISKeyboard.h OIS_KeyEvent_new" c_keyEvent_new :: Object -> CInt -> CUInt -> IO KeyEvent
keyEvent_new :: Object -> KeyCode -> Int -> IO KeyEvent
keyEvent_new p1 p2 p3 =   c_keyEvent_new p1 (keyCodeToCInt p2) (fromIntegral p3)

foreign import ccall "OISKeyboard.h OIS_KeyEvent_delete" c_keyEvent_delete :: KeyEvent -> IO ()
keyEvent_delete :: KeyEvent -> IO ()
keyEvent_delete p1 =   c_keyEvent_delete p1

foreign import ccall "OISKeyboard.h OIS_KeyListener_delete" c_keyListener_delete :: KeyListener -> IO ()
keyListener_delete :: KeyListener -> IO ()
keyListener_delete p1 =   c_keyListener_delete p1

foreign import ccall "OISKeyboard.h OIS_KeyListener_keyPressed" c_keyListener_keyPressed :: KeyListener -> KeyEvent -> IO CBool
keyListener_keyPressed :: KeyListener -> KeyEvent -> IO Bool
keyListener_keyPressed p1 p2 =  liftM toBool $  c_keyListener_keyPressed p1 p2

foreign import ccall "OISKeyboard.h OIS_KeyListener_keyReleased" c_keyListener_keyReleased :: KeyListener -> KeyEvent -> IO CBool
keyListener_keyReleased :: KeyListener -> KeyEvent -> IO Bool
keyListener_keyReleased p1 p2 =  liftM toBool $  c_keyListener_keyReleased p1 p2

foreign import ccall "OISKeyboard.h OIS_Keyboard_delete" c_keyboard_delete :: Keyboard -> IO ()
keyboard_delete :: Keyboard -> IO ()
keyboard_delete p1 =   c_keyboard_delete p1

foreign import ccall "OISKeyboard.h OIS_Keyboard_isKeyDown" c_keyboard_isKeyDown :: Keyboard -> CInt -> IO CBool
keyboard_isKeyDown :: Keyboard -> KeyCode -> IO Bool
keyboard_isKeyDown p1 p2 =  liftM toBool $  c_keyboard_isKeyDown p1 (keyCodeToCInt p2)

foreign import ccall "OISKeyboard.h OIS_Keyboard_setEventCallback" c_keyboard_setEventCallback :: Keyboard -> KeyListener -> IO ()
keyboard_setEventCallback :: Keyboard -> KeyListener -> IO ()
keyboard_setEventCallback p1 p2 =   c_keyboard_setEventCallback p1 p2

foreign import ccall "OISKeyboard.h OIS_Keyboard_getEventCallback" c_keyboard_getEventCallback :: Keyboard -> IO KeyListener
keyboard_getEventCallback :: Keyboard -> IO KeyListener
keyboard_getEventCallback p1 =   c_keyboard_getEventCallback p1

foreign import ccall "OISKeyboard.h OIS_Keyboard_setTextTranslation" c_keyboard_setTextTranslation :: Keyboard -> CInt -> IO ()
keyboard_setTextTranslation :: Keyboard -> TextTranslationMode -> IO ()
keyboard_setTextTranslation p1 p2 =   c_keyboard_setTextTranslation p1 (textTranslationModeToCInt p2)

foreign import ccall "OISKeyboard.h OIS_Keyboard_getTextTranslation" c_keyboard_getTextTranslation :: Keyboard -> IO CInt
keyboard_getTextTranslation :: Keyboard -> IO TextTranslationMode
keyboard_getTextTranslation p1 =  liftM cintToTextTranslationMode $  c_keyboard_getTextTranslation p1

foreign import ccall "OISKeyboard.h OIS_Keyboard_isModifierDown" c_keyboard_isModifierDown :: Keyboard -> CInt -> IO CBool
keyboard_isModifierDown :: Keyboard -> Modifier -> IO Bool
keyboard_isModifierDown p1 p2 =  liftM toBool $  c_keyboard_isModifierDown p1 (modifierToCInt p2)