Mercurial > core / lisp/ffi/xkb/pkg.lisp
changeset 149: |
2d1fe1d7b738 |
parent: |
797d729e14cc
|
child: |
b4bb3c52bc18 |
author: |
ellis <ellis@rwest.io> |
date: |
Sat, 30 Dec 2023 20:50:15 -0500 |
permissions: |
-rw-r--r-- |
description: |
ffi update to support darwin, smh |
1 ;;; ffi/xkb/pkg.lisp --- XKBCommon bindings 3 ;; We use the X Keyboard Configuration Database for keymaps. 5 ;; ref: https://xkbcommon.org/doc/current/ 6 ;; https://www.freedesktop.org/wiki/Software/XKeyboardConfig/ 7 ;; https://www.x.org/releases/X11R7.6/doc/xorg-docs/input/XKB-Config.html 8 ;; https://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11 13 (:use :cl :std :sb-alien) 15 :xkb-context :xkb-keymap 16 :xkb-keycode :xkb-keysym 17 :xkb-layout-index :xkb-layout-mask 18 :xkb-level-index :xkb-mod-index 19 :xkb-mod-mask :xkb-led-index :xkb-led-mask 20 :xkb-keysym-flags :xkb-context-flags 21 :xkb-keysym-get-name :xkb-keysym-from-name :xkb-keysym-to-utf8 22 :xkb-keysym-to-utf32 :xkb-utf32-to-keysym :xkb-keysym-to-upper 23 :xkb-keysym-to-lower :xkb-context-new :xkb-context-set-user-data 24 :xkb-context-get-user-data :xkb-context-include-path-append 25 :xkb-context-include-path-append-default :xkb-context-include-path-reset-defaults 26 :xkb-context-include-path-clear :xkb-context-num-include-paths :xkb-context-include-path-get)) 30 (define-alien-loader xkbcommon t) 32 (define-alien-type xkb-context (struct xkb-context)) 33 (define-alien-type xkb-keymap (struct xkb-keymap)) 34 (define-alien-type xkb-state (struct xkb-state)) 35 (define-alien-type xkb-keycode unsigned-int) 36 (define-alien-type xkb-keysym unsigned-int) 37 (define-alien-type xkb-layout-index unsigned-int) 38 (define-alien-type xkb-layout-mask unsigned-int) 39 (define-alien-type xkb-level-index unsigned-int) 40 (define-alien-type xkb-mod-index unsigned-int) 41 (define-alien-type xkb-mod-mask unsigned-int) 42 (define-alien-type xkb-led-index unsigned-int) 43 (define-alien-type xkb-led-mask unsigned-int) 44 (define-alien-type xkb-keysym-flags boolean) 45 (define-alien-type xkb-context-flags unsigned-char) 46 (define-alien-type xkb-keymap-compile-flags boolean) 47 (define-alien-type xkb-keymap-format boolean) 49 (define-alien-type xkb-rule-names 50 (struct xkb-rule-names 57 (define-alien-routine xkb-keysym-get-name int 58 (keysym xkb-keysym-flags) 62 (define-alien-routine xkb-keysym-from-name xkb-keysym 64 (flags xkb-keysym-flags)) 66 (define-alien-routine xkb-keysym-to-utf8 int 71 (define-alien-routine xkb-keysym-to-utf32 unsigned-int 74 (define-alien-routine xkb-utf32-to-keysym xkb-keysym 77 (define-alien-routine xkb-keysym-to-upper xkb-keysym 80 (define-alien-routine xkb-keysym-to-lower xkb-keysym 83 (define-alien-routine xkb-context-new (* xkb-context) 84 (flags xkb-context-flags)) 86 (define-alien-routine xkb-context-set-user-data void 87 (context (* xkb-context)) 90 (define-alien-routine xkb-context-get-user-data (* t) 91 (context (* xkb-context))) 93 (define-alien-routine xkb-context-include-path-append int 94 (context (* xkb-context)) 97 (define-alien-routine xkb-context-include-path-append-default int 98 (context (* xkb-context))) 100 (define-alien-routine xkb-context-include-path-reset-defaults int 101 (context (* xkb-context))) 103 (define-alien-routine xkb-context-include-path-clear void 104 (context (* xkb-context))) 106 (define-alien-routine xkb-context-num-include-paths unsigned-int 107 (context (* xkb-context))) 109 (define-alien-routine xkb-context-include-path-get c-string 110 (context (* xkb-context))) 114 ;; https://xkbcommon.org/doc/current/group__logging.html 117 (define-alien-routine xkb-keymap-new-from-names (* xkb-keymap) 118 (context (* xkb-context)) 119 (names (* xkb-rule-names)) 120 (flags xkb-keymap-compile-flags)) 122 (define-alien-routine xkb-keymap-new-from-file (* xkb-keymap) 123 (context (* xkb-context)) 125 (fmt xkb-keymap-format) 126 (flags xkb-keymap-compile-flags)) 128 (define-alien-routine xkb-keymap-new-from-string (* xkb-keymap) 129 (context (* xkb-context)) 131 (fmt xkb-keymap-format) 132 (flags xkb-keymap-compile-flags)) 134 (define-alien-routine xkb-keymap-new-from-buffer (* xkb-keymap) 135 (context (* xkb-context)) 138 (fmt xkb-keymap-format) 139 (flags xkb-keymap-compile-flags)) 141 ;;; Keymap Components 143 (define-alien-routine xkb-keymap-min-keycode xkb-keycode 144 (keymap (* xkb-keymap))) 146 (define-alien-routine xkb-keymap-max-keycode xkb-keycode 147 (keymap (* xkb-keymap))) 149 (define-alien-routine xkb-keymap-key-for-each void 150 (keymap (* xkb-keymap)) 154 (define-alien-routine xkb-keymap-key-get-name c-string 155 (keymap (* xkb-keymap)) 158 (define-alien-routine xkb-keymap-num-mods xkb-mod-index 159 (keymap (* xkb-keymap))) 161 (define-alien-routine xkb-keymap-mod-get-name c-string 162 (keymap (* xkb-keymap)) 165 (define-alien-routine xkb-keymap-get-index xkb-mod-index 166 (keymap (* xkb-keymap)) 169 (define-alien-routine xkb-keymap-num-layouts xkb-layout-index 170 (keymap (* xkb-keymap))) 172 (define-alien-routine xkb-keymap-layout-get-name c-string 173 (keymap (* xkb-keymap)) 174 (idx xkb-layout-index)) 176 (define-alien-routine xkb-keymap-layout-get-index xkb-layout-index 177 (keymap (* xkb-keymap)) 180 (define-alien-routine xkb-keymap-num-leds xkb-led-index 181 (keymap (* xkb-keymap))) 183 (define-alien-routine xkb-keymap-led-get-name c-string 184 (keymap (* xkb-keymap)) 187 (define-alien-routine xkb-keymap-led-get-index xkb-led-index 188 (keymap (* xkb-keymap)) 191 (define-alien-routine xkb-keymap-num-levels-for-key xkb-level-index 192 (keymap (* xkb-keymap)) 194 (layout xkb-layout-index)) 196 (define-alien-routine xkb-keymap-key-get-mods-for-level size-t 197 (keymap (* xkb-keymap)) 199 (layout xkb-layout-index) 200 (level xkb-level-index) 201 (masks-out (* xkb-mod-mask)) 204 (define-alien-routine xkb-keymap-key-get-syms-by-level int 205 (keymap (* xkb-keymap)) 207 (layout xkb-layout-index) 208 (level xkb-level-index) 209 (syms-out (* (* xkb-keysym)))) 211 (define-alien-routine xkb-keymap-key-repeats int 212 (keymap (* xkb-keymap)) 215 ;;; TODO Keyboard State 217 ;;; TODO Compose/Dead-keys support