summaryrefslogtreecommitdiff
path: root/src/Gdk/Internal.icl
diff options
context:
space:
mode:
authorCamil Staps2019-10-30 13:21:06 +0100
committerCamil Staps2019-10-30 13:21:06 +0100
commit79915057437b92095ed44667c269c8650a77a298 (patch)
tree7ff268809cc3a6b9c842d0b40bf42da7eabf9fd0 /src/Gdk/Internal.icl
parentAdd G modifier to ccalls gtk_sheet_thaw and gtk_sheet_row_set_visibility whic... (diff)
Add GdkEvent and KeyPressHandler
Diffstat (limited to 'src/Gdk/Internal.icl')
-rw-r--r--src/Gdk/Internal.icl44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/Gdk/Internal.icl b/src/Gdk/Internal.icl
new file mode 100644
index 0000000..a922d84
--- /dev/null
+++ b/src/Gdk/Internal.icl
@@ -0,0 +1,44 @@
+implementation module Gdk.Internal
+
+import StdEnv
+import StdMaybe
+
+import System._Pointer
+
+gdk_event_get_keyval :: !Pointer -> Maybe Int
+gdk_event_get_keyval event
+ # arr = {#0}
+ # ok = get event (get_array_pointer arr)
+ | ok
+ = Just (arr.[0])
+ = Nothing
+where
+ get :: !Pointer !Pointer -> Bool
+ get _ _ = code {
+ ccall gdk_event_get_keyval "pp:I"
+ }
+
+gdk_keyval_from_name :: !String -> Int
+gdk_keyval_from_name name = get (packString name)
+where
+ get :: !String -> Int
+ get _ = code {
+ ccall gdk_keyval_from_name "s:I"
+ }
+
+gdk_keyval_name :: !Int -> String
+gdk_keyval_name keyval = derefString (get keyval)
+where
+ get :: !Pointer -> Pointer
+ get _ = code {
+ ccall gdk_keyval_name "p:p"
+ }
+
+get_array_pointer :: !{#Int} -> Pointer
+get_array_pointer arr = get arr + IF_INT_64_OR_32 24 12
+where
+ get :: !{#Int} -> Pointer
+ get _ = code {
+ push_a_b 0
+ pop_a 1
+ }