diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Wetterhorn/Core.hs | 3 | ||||
-rw-r--r-- | src/Wetterhorn/FFI.hs | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/Wetterhorn/Core.hs b/src/Wetterhorn/Core.hs index 16978bb..36b0f82 100644 --- a/src/Wetterhorn/Core.hs +++ b/src/Wetterhorn/Core.hs @@ -78,7 +78,8 @@ data KeyEvent = KeyEvent keycode :: Word32, state :: KeyState, modifiers :: Word32, - keysym :: Word32 + keysym :: Word32, + codepoint :: Char } deriving (Show, Read, Ord, Eq) diff --git a/src/Wetterhorn/FFI.hs b/src/Wetterhorn/FFI.hs index 969f86f..58c1aff 100644 --- a/src/Wetterhorn/FFI.hs +++ b/src/Wetterhorn/FFI.hs @@ -88,6 +88,7 @@ foreign export ccall "plugin_handle_keybinding" Ptr () -> Word32 -> Word32 -> + Word32 -> Ptr CInt -> Wetterhorn -> IO Wetterhorn @@ -96,10 +97,11 @@ pluginHandleKeybinding :: Ptr () -> Word32 -> Word32 -> + Word32 -> Ptr CInt -> Wetterhorn -> IO Wetterhorn -pluginHandleKeybinding eventPtr mods sym = +pluginHandleKeybinding eventPtr mods sym cp = runForeignWithReturn $ \config -> do event <- wio $ runForeignDemarshal eventPtr $ do @@ -114,6 +116,7 @@ pluginHandleKeybinding eventPtr mods sym = (if keyState == (0 :: Word8) then KeyReleased else KeyPressed) mods sym + (toEnum $ fromIntegral cp) (\b -> if b then 1 else 0) <$> keybindingHandler config event foreign export ccall "plugin_handle_surface_map" |