changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/evdev/input.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
 ;;; input.lisp --- Linux Input Subsystem Wrappers
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
 ;; 
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
 ;;; Code:
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 (in-package :evdev/input)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 ;; from linux/time.h
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 (define-alien-type timeval
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
     (struct timeval
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
             (tv-sec sb-unix:time-t)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
             (tv-nsec long)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 (define-alien-type input-event
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
     (struct input-event
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
             (time timeval)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
             (type (unsigned 16))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
             (code (unsigned 16))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
             (value (signed 32))))
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
 (define-alien-type input-id
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
     (struct input-id
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
             (bustype (unsigned 16))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
             (vendor (unsigned 16))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
             (product (unsigned 16))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
             (version (unsigned 16))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
 (define-alien-type input-absinfo
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
     (struct input-absinfo
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
             (value signed)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
             (minimum signed)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
             (maximum signed)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
             (fuzz signed)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
             (flat signed)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
             (resolution signed)))
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
 (define-alien-type input-keymap-entry
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
     (struct input-keymap-entry
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
             (flags unsigned-char)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
             (len unsigned-char)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
             (index unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
             (keycode unsigned)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
             (scancode (array (unsigned 8) 32))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
 (define-alien-type input-mask
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
     (struct input-mask
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
             (type unsigned)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
             (codes-size unsigned)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
             (codes-ptr (unsigned 64))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
 (define-alien-type ff-replay
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
     (struct ff-replay
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
             (length unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
             (delay unsigned-short)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
 (define-alien-type ff-trigger
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
     (struct ff-trigger
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
             (button unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
             (interval unsigned-short)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
 (define-alien-type ff-envelope
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
     (struct ff-envelope
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
             (attack-length unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
             (attack-level unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
             (fade-length unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
             (fade-level unsigned-short)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
 (define-alien-type ff-constant-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
     (struct ff-constant-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
             (level short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
             (envelop ff-envelope)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
72
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
73
 (define-alien-type ff-ramp-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
74
     (struct ff-ramp-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
75
             (start-level short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
76
             (end-level short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
77
             (envelope ff-envelope)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
78
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
79
 (define-alien-type ff-condition-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
80
     (struct ff-condition-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
81
             (right-saturation unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
82
             (left-saturation unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
83
             (right-coeff short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
84
             (left-coeff short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
85
             (deadband unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
86
             (center short)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
87
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
88
 (define-alien-type ff-periodic-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
89
     (struct ff-periodic-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
90
             (waveform unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
91
             (period unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
92
             (magnitutde short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
93
             (offset short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
94
             (phase unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
95
             (envelope ff-envelope)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
96
             (custom-len unsigned)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
97
             (custom-data (* short))))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
98
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
99
 (define-alien-type ff-rumble-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
100
     (struct ff-rumble-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
101
             (strong-magnitutde unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
102
             (weak-magnitude unsigned-short)))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
103
 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
104
 (define-alien-type ff-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
105
     (struct ff-effect
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
106
             (type unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
107
             (id short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
108
             (direction unsigned-short)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
109
             (trigger ff-trigger)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
110
             (replay ff-replay)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
111
             (u (sb-alien:union u 
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
112
                                (constant ff-constant-effect)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
113
                                (ramp ff-ramp-effect)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
114
                                (periodic ff-periodic-effect)
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
115
                                (condition (array ff-condition-effect 2))
29fe829a7ac3 evdev and io/kbd
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
116
                                (rumble ff-rumble-effect)))))