Coverage report: /home/ellis/comp/core/ffi/evdev/pkg.lisp
Kind | Covered | All | % |
expression | 0 | 21 | 0.0 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; pkg.lisp --- libevdev FFI
7
;; note that we also wrap the linux input subsystem linux/input.h which does
8
;; not require loading of the libevdev shared library. See input.lisp.
11
evdev is the generic input event interface. It passes the events
12
generated in the kernel straight to the program, with timestamps. The
13
API is still evolving, but should be usable now. It's described in
16
This should be the way for GPM and X to get keyboard and mouse
17
events. It allows for multihead in X without any specific multihead
18
kernel support. The event codes are the same on all architectures and
19
are hardware independent.
21
The devices are in /dev/input:
23
crw-r--r-- 1 root root 13, 64 Apr 1 10:49 event0
24
crw-r--r-- 1 root root 13, 65 Apr 1 10:50 event1
25
crw-r--r-- 1 root root 13, 66 Apr 1 10:50 event2
26
crw-r--r-- 1 root root 13, 67 Apr 1 10:50 event3
29
And so on up to event31.
33
(defpackage :evdev/input
34
(:use :cl :std :sb-alien)
40
(:use :cl :std :sb-alien :evdev/input)
44
#:libevdev-new-from-fd
51
(define-alien-loader evdev "/usr/lib/")
53
(define-alien-type libevdev (struct libevdev))
55
(define-alien-enum (libevdev-read-flag unsigned-char)
61
(defar libevdev-new (* libevdev))
63
(defar libevdev-new-from-fd int
65
(dev (* (* libevdev))))
67
(defar libevdev-free void
70
(define-alien-enum (libevdev-log-priority unsigned-char)
77
(define-alien-type va-list (struct va-list
78
(gp-offset unsigned-int)
79
(fp-offset unsigned-int)
80
(overflow-arg-area (* t))
81
(reg-save-area (* t))))
83
(define-alien-type libevdev-log-function
93
(defar libevdev-set-log-function void
94
(logfunc libevdev-log-function)
97
(defar libevdev-set-log-priority void
98
(priority libevdev-log-priority))
100
(defar libevdev-get-log-priority libevdev-log-priority)
102
(define-alien-type libevdev-device-log-function
105
libevdev-log-priority
113
(defar libevdev-set-device-log-function void
115
(logfunc libevdev-device-log-function)
116
(priority libevdev-log-priority)
119
(define-alien-enum (libevdev-grab-mode unsigned-char)
123
(defar libevdev-grab int
125
(grab libevdev-grab-mode))
127
(defar libevdev-set-fd int
131
(defar libevdev-get-fd int