From 3ea187f3c44c8e1bcf91a7f587bcaa952f0ff348 Mon Sep 17 00:00:00 2001 From: ian Date: Sun, 13 Jul 2008 23:09:14 +0000 Subject: [PATCH] initial ebuyer kbd code --- hostside/gui | 86 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 5 deletions(-) diff --git a/hostside/gui b/hostside/gui index 731f751..d731723 100755 --- a/hostside/gui +++ b/hostside/gui @@ -491,6 +491,8 @@ register-event &train_*_signalling-problem {train problem} \ #---------- concrete input bindings ---------- +#----- wheelmouse + proc ib-wheelmouse-stepmap {offset oldspeed} { upvar #0 ib_wheelmouse_stepmap map set ixabove 0 @@ -525,12 +527,86 @@ proc ib-create/wheelmouse {devid wunique desc} { 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 ---------- -- 2.30.2