I have a gyration 3101 remote which gets detected by the GO Cordless GC1005M #1812 template. According to its configuration string it need to repeat the volume up and down keys when they are being pressed:
voldn,122,R
VolUp,123,R
However while the orbiter receives a lot of key presses DCE router and so the general serial device that should use it do not, they only receive 2 of them and then stop while the orbiter still receives them. Anyone knows why this might be the case?
tail -f /var/log/pluto/21_LaunchOrbiter.sh.log | grep "GenericHIDInterface"
01 03/27/14 10:01:56.614 GenericHIDInterface::DecodeEventInFD() Successful read of 48 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:56.846 GenericHIDInterface::DecodeEventInFD() Successful read of 48 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:57.742 GenericHIDInterface::DecodeEventInFD() Successful read of 48 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:57.993 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.029 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.065 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.101 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.137 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.173 GenericHIDInterface::DecodeEventInFD() Successful read of 32 bytes from fd 18 <0xb09ffb40>
01 03/27/14 10:01:58.182 GenericHIDInterface::DecodeEventInFD() Successful read of 48 bytes from fd 18 <0xb09ffb40>
tail -f /var/log/pluto/DCERouter.log
08 03/27/14 10:01:56.616 Received Message from 21 (OnScreen Orbiter / Living Room) to 10 (Media Plug-in / Living Room), type 1 id 90 Command:Vol Down, retry none, parameters: <0x5ebf7b40>
08 03/27/14 10:01:56.617 Received Message from 21 (OnScreen Orbiter / Living Room) to 20 (The core/hybrid / Living Room), type 1 id 90 Command:Vol Down, retry none, parameters: <0x9bda0b40>
08 03/27/14 10:01:56.617 Forwarding 90 Command:Vol Down up pipe to 98 (AVC-A1SRA (RS232)) <0xb61f8b40>
05 03/27/14 10:01:56.618 The target device 20 (routed to 20) has not registered. <0xb61f8b40>
08 03/27/14 10:01:57.743 Received Message from 21 (OnScreen Orbiter / Living Room) to 10 (Media Plug-in / Living Room), type 1 id 90 Command:Vol Down, retry none, parameters: <0x5ebf7b40>
08 03/27/14 10:01:57.745 Received Message from 21 (OnScreen Orbiter / Living Room) to 20 (The core/hybrid / Living Room), type 1 id 90 Command:Vol Down, retry none, parameters: <0x9bda0b40>
08 03/27/14 10:01:57.745 Forwarding 90 Command:Vol Down up pipe to 98 (AVC-A1SRA (RS232)) <0xb61f8b40>
05 03/27/14 10:01:57.745 The target device 20 (routed to 20) has not registered. <0xb61f8b40>
tail -f /var/log/pluto/98_Generic_Serial_Device.log
05 03/27/14 10:01:56.618 GSDMessageTranslator isCmdImplemented = true <0xb54ffb40>
05 03/27/14 10:01:56.618 #### Pre-Process Queue = 1 <0xb54ffb40>
05 03/27/14 10:01:56.660 _QueueProc Pre - 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:56.660 GSD-Sleep Pre 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:56.660 Process Queue = 1 <0xb6e3eb40>
05 03/27/14 10:01:56.660 Parameter: <0xb4affb40>
05 03/27/14 10:01:56.680 GSD-Sleep Post 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:56.680 _QueueProc Post - 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:57.745 GSDMessageTranslator isCmdImplemented = true <0xb54ffb40>
05 03/27/14 10:01:57.745 #### Pre-Process Queue = 1 <0xb54ffb40>
05 03/27/14 10:01:57.782 _QueueProc Pre - 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:57.782 GSD-Sleep Pre 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:57.782 Process Queue = 1 <0xb6e3eb40>
05 03/27/14 10:01:57.782 Parameter: <0xb4affb40>
05 03/27/14 10:01:57.804 GSD-Sleep Post 90 : 0 <0xb6e3eb40>
05 03/27/14 10:01:57.804 _QueueProc Post - 90 : 0 <0xb6e3eb40>
It took me a while to remember the situation with the Gyration remote, as this was during the summer of 2009. I've slept since then...
If you were to look at the key press events coming in from the Gyration, you'd find that roughly 50 milliseconds after pressing a key down, it subsequently sends a key up.
This happens even when the key is held down. It is the result of the firmware on the remote itself, and it is literally what the linux kernel receives.
What this means essentially, is that there is NO way, to distinguish between a key that is toggled, or held, and thus, no way to handle either held keys or repeats.
Nothing that can be done about it. Sorry. Not our fault(tm). Blame Gyration.
-Thom