3 (defcfun (keymap-get-default "gdk_keymap_get_default") (g-object keymap))
5 (export 'keymap-get-default)
7 (defcfun (keymap-get-for-display "gdk_keymap_get_for_display") (g-object keymap)
8 (display (g-object display)))
10 (export 'keymap-get-for-display)
12 (defcfun (keymap-lookup-key "gdk_keymap_lookup_key") :uint
13 (keymap (g-object keymap))
14 (key (g-boxed-foreign keymap-key)))
16 (export 'keymap-lookup-key)
18 (defcfun gdk_keymap_translate_keyboard_state :boolean
19 (keymap (g-object keymap))
20 (hardware-keycode :uint)
23 (keyval (:pointer :uint))
24 (effective-group (:pointer :int))
25 (level (:pointer :int))
26 (consumed-modifiers (:pointer modifier-type)))
28 (defun keymap-translate-keyboard-state (keymap hardware-keycode state group)
29 (with-foreign-objects ((keyval :uint) (effective-group :int) (level :int) (modifiers 'modifier-type))
30 (if (gdk_keymap_translate_keyboard_state keymap hardware-keycode state group keyval effective-group level modifiers)
31 (values (mem-ref keyval :uint)
32 (mem-ref effective-group :int)
34 (mem-ref modifiers 'modifier-type)))))
36 (export 'keymap-translate-keyboard-state)
38 (defcfun gdk_keymap_get_entries_for_keyval :boolean
39 (keymap (g-object keymap))
41 (keys (:pointer (:pointer keymap-key-cstruct)))
42 (n-keys (:pointer :int)))
44 (defun keymap-get-entries-for-keyval (keymap keyval)
45 (with-foreign-objects ((keys :pointer) (n-keys :int))
46 (when (gdk_keymap_get_entries_for_keyval keymap keyval keys n-keys)
47 (let ((keys (mem-ref keys :pointer))
48 (n-keys (mem-ref n-keys :int)))
50 (iter (for i from 0 below n-keys)
51 (for keymap-key = (mem-aref keys '(g-boxed-foreign keymap-key) i))
53 (glib:g-free keys))))))
55 (defcfun gdk_keymap_get_entries_for_keycode :boolean
56 (keymap (g-object keymap))
57 (hardware-keycode :uint)
58 (keys (:pointer (:pointer keymap-key-cstruct)))
59 (keyvals (:pointer (:pointer :uint)))
60 (n-entries (:pointer :int)))
62 (defun keymap-get-entries-for-keymap (keymap hardware-keycode)
63 (with-foreign-objects ((keys :pointer) (keyvals :pointer) (n-keys :int))
64 (when (gdk_keymap_get_entries_for_keycode keymap hardware-keycode keys keyvals n-keys)
65 (let ((keys (mem-ref keys :pointer))
66 (keyvals (mem-ref keyvals :pointer))
67 (n-keys (mem-ref n-keys :int)))
69 (iter (for i from 0 below n-keys)
70 (for keymap-key = (mem-aref keys '(g-boxed-foreign keymap-key) i))
71 (collect keymap-key into r-keys)
72 (for keyval = (mem-aref keyvals :uint))
73 (collect keyval into r-keyvals)
74 (finally (return (values r-keys r-keyvals))))
76 (glib:g-free keyvals))))))
78 (export 'keymap-get-entries-for-keymap)
80 (defcfun (keyval-name "gdk_keyval_name") (:string :free-from-foreign nil)
85 (defcfun (keyval-from-name "gdk_keyval_from_name") :uint
86 (keyval-name :string))
88 (export 'keyval-from-name)
90 (defcfun (keyval-to-upper "gdk_keyval_to_upper") :uint
93 (export 'keyval-to-upper)
95 (defcfun (keyval-to-lower "gdk_keyval_to_lower") :uint
98 (export 'keyval-to-lower)
100 (defcfun (keyval-is-upper "gdk_keyval_is_upper") :boolean
103 (export 'keyval-is-upper)
105 (defcfun (keyval-is-lower "gdk_keyval_is_lower") :boolean
109 ;; void gdk_keyval_convert_case (guint symbol,
113 (define-foreign-type unichar ()
115 (:actual-type :uint32)
116 (:simple-parser unichar))
118 (defmethod translate-from-foreign (value (type unichar))
121 (defmethod translate-to-foreign (value (type unichar))
124 (defcfun (keyval-to-char "gdk_keyval_to_unicode") unichar
127 (export 'keyval-to-char)
129 (defcfun (char-to-keyval "gdk_unicode_to_keyval") :uint
132 (export 'char-to-keyval)