summaryrefslogtreecommitdiffstats
path: root/GLX.hs
diff options
context:
space:
mode:
Diffstat (limited to 'GLX.hs')
-rw-r--r--GLX.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/GLX.hs b/GLX.hs
index f457d78..8a1c52d 100644
--- a/GLX.hs
+++ b/GLX.hs
@@ -118,6 +118,18 @@ handleEvent glx disp xevent = do
keysym <- keycodeToKeysym disp (ev_keycode event) 0
case () of
_ | keysym == xK_Escape -> return $ Just $ SomeEvent QuitEvent
+ | keysym == xK_Up -> return $ Just $ SomeEvent $ KeyPressEvent KeyUp
+ | keysym == xK_Down -> return $ Just $ SomeEvent $ KeyPressEvent KeyDown
+ | keysym == xK_Left -> return $ Just $ SomeEvent $ KeyPressEvent KeyLeft
+ | keysym == xK_Right -> return $ Just $ SomeEvent $ KeyPressEvent KeyRight
+ | otherwise -> return Nothing
+ | evtype == keyRelease -> do
+ keysym <- keycodeToKeysym disp (ev_keycode event) 0
+ case () of
+ _ | keysym == xK_Up -> return $ Just $ SomeEvent $ KeyReleaseEvent KeyUp
+ | keysym == xK_Down -> return $ Just $ SomeEvent $ KeyReleaseEvent KeyDown
+ | keysym == xK_Left -> return $ Just $ SomeEvent $ KeyReleaseEvent KeyLeft
+ | keysym == xK_Right -> return $ Just $ SomeEvent $ KeyReleaseEvent KeyRight
| otherwise -> return Nothing
| evtype == clientMessage -> do
if ((glxDeleteWindow glx) == (fromIntegral . head . ev_data $ event))