module Graphics.XHB.Gen.Input (extension, getExtensionVersion, listInputDevices, openDevice, closeDevice, setDeviceMode, selectExtensionEvent, getSelectedExtensionEvents, changeDeviceDontPropagateList, getDeviceDontPropagateList, getDeviceMotionEvents, changeKeyboardDevice, changePointerDevice, grabDevice, ungrabDevice, grabDeviceKey, ungrabDeviceKey, grabDeviceButton, ungrabDeviceButton, allowDeviceEvents, getDeviceFocus, setDeviceFocus, getFeedbackControl, getDeviceKeyMapping, changeDeviceKeyMapping, getDeviceModifierMapping, setDeviceModifierMapping, getDeviceButtonMapping, setDeviceButtonMapping, queryDeviceState, sendExtensionEvent, deviceBell, setDeviceValuators, getDeviceControl, module Graphics.XHB.Gen.Input.Types) where import Graphics.XHB.Gen.Input.Types import Graphics.XHB.Connection.Internal import Graphics.XHB.Connection.Extension import Graphics.XHB.Connection.Types import Control.Concurrent.STM import Foreign.C.Types import Data.Binary.Put (runPut) import Graphics.XHB.Shared hiding (Event(..), Error(..)) import Graphics.XHB.Gen.Xproto.Types hiding (FocusIn(..), FocusOut(..), deserializeError, deserializeEvent) import qualified Graphics.XHB.Gen.Xproto.Types extension :: ExtensionId extension = "XInputExtension" getExtensionVersion :: Graphics.XHB.Connection.Types.Connection -> CARD16 -> [CChar] -> IO (Receipt GetExtensionVersionReply) getExtensionVersion c name_len name = do receipt <- newEmptyReceiptIO let req = MkGetExtensionVersion name_len name putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt listInputDevices :: Graphics.XHB.Connection.Types.Connection -> IO (Receipt ListInputDevicesReply) listInputDevices c = do receipt <- newEmptyReceiptIO let req = MkListInputDevices putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt openDevice :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt OpenDeviceReply) openDevice c device_id = do receipt <- newEmptyReceiptIO let req = MkOpenDevice device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt closeDevice :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO () closeDevice c device_id = do let req = MkCloseDevice device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk setDeviceMode :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> CARD8 -> IO (Receipt SetDeviceModeReply) setDeviceMode c device_id mode = do receipt <- newEmptyReceiptIO let req = MkSetDeviceMode device_id mode putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt selectExtensionEvent :: Graphics.XHB.Connection.Types.Connection -> SelectExtensionEvent -> IO () selectExtensionEvent c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getSelectedExtensionEvents :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetSelectedExtensionEventsReply) getSelectedExtensionEvents c window = do receipt <- newEmptyReceiptIO let req = MkGetSelectedExtensionEvents window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt changeDeviceDontPropagateList :: Graphics.XHB.Connection.Types.Connection -> ChangeDeviceDontPropagateList -> IO () changeDeviceDontPropagateList c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getDeviceDontPropagateList :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetDeviceDontPropagateListReply) getDeviceDontPropagateList c window = do receipt <- newEmptyReceiptIO let req = MkGetDeviceDontPropagateList window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getDeviceMotionEvents :: Graphics.XHB.Connection.Types.Connection -> GetDeviceMotionEvents -> IO (Receipt GetDeviceMotionEventsReply) getDeviceMotionEvents c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt changeKeyboardDevice :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt ChangeKeyboardDeviceReply) changeKeyboardDevice c device_id = do receipt <- newEmptyReceiptIO let req = MkChangeKeyboardDevice device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt changePointerDevice :: Graphics.XHB.Connection.Types.Connection -> ChangePointerDevice -> IO (Receipt ChangePointerDeviceReply) changePointerDevice c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt grabDevice :: Graphics.XHB.Connection.Types.Connection -> GrabDevice -> IO (Receipt GrabDeviceReply) grabDevice c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt ungrabDevice :: Graphics.XHB.Connection.Types.Connection -> TIMESTAMP -> CARD8 -> IO () ungrabDevice c time device_id = do let req = MkUngrabDevice time device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk grabDeviceKey :: Graphics.XHB.Connection.Types.Connection -> GrabDeviceKey -> IO () grabDeviceKey c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk ungrabDeviceKey :: Graphics.XHB.Connection.Types.Connection -> UngrabDeviceKey -> IO () ungrabDeviceKey c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk grabDeviceButton :: Graphics.XHB.Connection.Types.Connection -> GrabDeviceButton -> IO () grabDeviceButton c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk ungrabDeviceButton :: Graphics.XHB.Connection.Types.Connection -> UngrabDeviceButton -> IO () ungrabDeviceButton c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk allowDeviceEvents :: Graphics.XHB.Connection.Types.Connection -> AllowDeviceEvents -> IO () allowDeviceEvents c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getDeviceFocus :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt GetDeviceFocusReply) getDeviceFocus c device_id = do receipt <- newEmptyReceiptIO let req = MkGetDeviceFocus device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setDeviceFocus :: Graphics.XHB.Connection.Types.Connection -> SetDeviceFocus -> IO () setDeviceFocus c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getFeedbackControl :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt GetFeedbackControlReply) getFeedbackControl c device_id = do receipt <- newEmptyReceiptIO let req = MkGetFeedbackControl device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getDeviceKeyMapping :: Graphics.XHB.Connection.Types.Connection -> GetDeviceKeyMapping -> IO (Receipt GetDeviceKeyMappingReply) getDeviceKeyMapping c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt changeDeviceKeyMapping :: Graphics.XHB.Connection.Types.Connection -> ChangeDeviceKeyMapping -> IO () changeDeviceKeyMapping c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getDeviceModifierMapping :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt GetDeviceModifierMappingReply) getDeviceModifierMapping c device_id = do receipt <- newEmptyReceiptIO let req = MkGetDeviceModifierMapping device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setDeviceModifierMapping :: Graphics.XHB.Connection.Types.Connection -> SetDeviceModifierMapping -> IO (Receipt SetDeviceModifierMappingReply) setDeviceModifierMapping c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getDeviceButtonMapping :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt GetDeviceButtonMappingReply) getDeviceButtonMapping c device_id = do receipt <- newEmptyReceiptIO let req = MkGetDeviceButtonMapping device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setDeviceButtonMapping :: Graphics.XHB.Connection.Types.Connection -> SetDeviceButtonMapping -> IO (Receipt SetDeviceButtonMappingReply) setDeviceButtonMapping c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryDeviceState :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> IO (Receipt QueryDeviceStateReply) queryDeviceState c device_id = do receipt <- newEmptyReceiptIO let req = MkQueryDeviceState device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt sendExtensionEvent :: Graphics.XHB.Connection.Types.Connection -> SendExtensionEvent -> IO () sendExtensionEvent c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk deviceBell :: Graphics.XHB.Connection.Types.Connection -> DeviceBell -> IO () deviceBell c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk setDeviceValuators :: Graphics.XHB.Connection.Types.Connection -> SetDeviceValuators -> IO (Receipt SetDeviceValuatorsReply) setDeviceValuators c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getDeviceControl :: Graphics.XHB.Connection.Types.Connection -> CARD16 -> CARD8 -> IO (Receipt GetDeviceControlReply) getDeviceControl c control_id device_id = do receipt <- newEmptyReceiptIO let req = MkGetDeviceControl control_id device_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt