#---------- concrete input bindings ----------
+#----- wheelmouse
+
proc ib-wheelmouse-stepmap {offset oldspeed} {
upvar #0 ib_wheelmouse_stepmap map
set ixabove 0
set in(speedw) $w
}
+proc ib-suppressions {args} {
+ set l {}
+ foreach supp $args {
+ set l [concat $l --redaction $supp --suppress]
+ }
+ return $l
+}
+
+proc ib-wheelmouse-redactions {} {
+ return [ib-suppressions \
+ {EV REL REL X} \
+ {EV REL REL Y}]
+}
+
proc ib-evcmd/wheelmouse {devid target} {
- return [ib-evcmd-construct $devid $target {
- --grab
- --redaction EV REL REL X --suppress
- --redaction EV REL REL Y --suppress
- }]
+ return [ib-evcmd-construct $devid $target [concat \
+ [list --grab] [ib-wheelmouse-redactions]]]
+}
+
+#----- ebuyer wireless keyboard
+
+proc ib-create/ebwikeb {devid wunique} {
+ upvar #0 input/$devid in
+ set in(desc) "main keyboard"
+ ib-create/wheelmouse $devid $wunique $desc
+ set in(modifiers) 0
+}
+
+proc ib-evcmd/ebwikeb {devid target} {
+ return [concat \
+ [list ./evdev-manip --redact --stdin-monitor] \
+ [ib-wheelmouse-redactions] \
+ [ib-suppressions \
+ {0x01 02} \
+ {EV MSC} \
+ {0x0c 01} \
+ {0xffbc 88 0xffbc 00}] \
+ [list --evdev /dev/input/event2 \
+ --evdev /dev/input/event3 \
+ --hiddev /dev/hiddev0]]
+}
+
+proc ib-ev/ebwikeb/EV_REL/REL_WHEEL {devid value} {
+ ib-ev/wheelmouse/EV_REL/REL_WHEEL $devid $value
+}
+
+proc ib-ebwikeb-modifier {devid value bitval} {
+ upvar #0 input/${devid}(modifiers) mod
+ if {$value} {
+ set mod [expr {$mod | $bitval}]
+ } else {
+ set mod [expr {$mod & ~$bitval}]
+ }
+}
+proc ib-ev/ebwikeb/EV_KEY/KEY_LEFTSHIFT {devid value} {
+ ib-ebwikeb-modifier $devid $value 0x0001
+}
+proc ib-ev/ebwikeb/EV_KEY/KEY_RIGHTSHIFT {devid value} {
+ ib-ebwikeb-modifier $devid $value 0x0002
+}
+proc ib-ev/ebwikeb/EV_KEY/KEY_LEFTCTRL {devid value} {
+ ib-ebwikeb-modifier $devid $value 0x0100
+}
+proc ib-ev/ebwikeb/EV_KEY/KEY_RIGHTCTRL {devid value} {
+ ib-ebwikeb-modifier $devid $value 0x0200
+}
+proc ib-ev/ebwikeb/EV_KEY/KEY_CAPSLOCK {devid value} {
+ ib-ebwikeb-modifier $devid $value 0x0400
+}
+
+proc ib-ev/ebwikeb/EV_KEY/KEY_BOOKMARKS {devid value} {
+ upvar #0 input/$devid in
+ if {!$value} return
+ if {!($in(mod) & 0xff00)} return
+ if {$in(mod) & 0x00ff} {
+ set how stop
+ } else {
+ set how auto
+ }
+ scmd routinecmd $in(desc) "!realtime $how"
}
#---------- input device evdev binding ----------