diff options
Diffstat (limited to 'GLX.hs')
-rw-r--r-- | GLX.hs | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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)) |