From f070ba42d886025a6988afd1bd847057dca15b27 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Wed, 21 Feb 2024 12:18:28 -0700 Subject: Add the typed codepoint as an argument to the keyboard handler. --- src/Wetterhorn/Core.hs | 3 ++- src/Wetterhorn/FFI.hs | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') 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" -- cgit