changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/io/kbd.lisp

changeset 684: 29fe829a7ac3
child: ebe3315b7add
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 29 Sep 2024 00:31:24 -0400
permissions: -rw-r--r--
description: evdev and io/kbd
684
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; kbd.lisp --- Keyboard-based IO
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;; Keyboard-like devices and input
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Commentary:
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 ;; refs:
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 ;; - https://www.kernel.org/doc/Documentation/input/event-codes.txt
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 ;;; Code:
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 (in-package :io/kbd)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 (load-xkbcommon)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
 (deferror kbd-error () ())
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 (defstruct keyboard path state compose-state)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
 (defconstant +evdev-offset+ 8)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 (defun evdev-bit-is-set (array bit))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
 (defun keyboard-device-p (path))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
   ;; (sb-posix:ioctl (fd path)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
 (defun make-keyboard-from-dev (dev keymap compose-table))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
 (defun get-keyboards (keymap compose-table &optional (dir "/dev/input"))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
   (let ((devices (directory dir)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
     (dolist (dev devices)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
       (let ((ret (make-keyboard-from-dev dev keymap compose-table)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
         ret))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
 ;; (with-open-file (file "/dev/input/event4")
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
 ;;   (let ((fd (sb-sys:fd-stream-fd file))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
 ;;         (evbits))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37