linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ShuttlePROv2 jog dial reports EV_REL events with absolute position event values; pos 0 events get dropped
@ 2014-02-07  7:51 Harald Albrecht
  0 siblings, 0 replies; only message in thread
From: Harald Albrecht @ 2014-02-07  7:51 UTC (permalink / raw)
  To: linux-input

I have a ShuttlePRO v2 (Contour Design Inc) that identifies itself as a 
USB HID. The kernel properly detects its and I can receive events from 
the device. The ShuttlePRO v2 is a media controller for use with video 
editing software, as well as for many other applications. The controller 
itself has a jog dial for frame-by-frame movement. Next, it has a 
so-called shuttle, which is ring around the dial, but separate from it. 
The shuttle can be turned CW and CCW up to 7 positions and a spring 
ensures it returns to its center position when you take your hand off of 
it. The shuttle is used to play video or audio forwards or backwards, 
with varying speed. Finally, there are 15 buttons on the ShuttlePRO v2.

However, there is an annoying quirk of which I don't at this time where 
it comes from. The Linux event/input system does not report when the 
shuttle returns to its home/center position. It seems as if the event 
sent by the device gets swallowed. I know that the device sends such an 
event, as in Windows there is no such problem. Similar, when turning the 
jog dial, every 256th position gets swallowed as well.

I suspect the device manufacturer to have messed up this, but I may be 
wrong. Anyway, I'm looking for help to get around this annoying quirk.

When I point evtest at the ShuttlePro v2, it reports the following 
information:

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xb33 product 0x30 version 0x110
Input device name: "Contour Design ShuttlePRO v2"
Supported events:
   Event type 0 (EV_SYN)
   Event type 1 (EV_KEY)
     Event code 256 (BTN_0)
     Event code 257 (BTN_1)
     Event code 258 (BTN_2)
     Event code 259 (BTN_3)
     Event code 260 (BTN_4)
     Event code 261 (BTN_5)
     Event code 262 (BTN_6)
     Event code 263 (BTN_7)
     Event code 264 (BTN_8)
     Event code 265 (BTN_9)
     Event code 266 (?)
     Event code 267 (?)
     Event code 268 (?)
     Event code 269 (?)
     Event code 270 (?)
   Event type 2 (EV_REL)
     Event code 7 (REL_DIAL)
     Event code 8 (REL_WHEEL)
   Event type 4 (EV_MSC)
     Event code 4 (MSC_SCAN)

Please notice that for whatever reason, the ShuttlePRO v2 uses relative 
events for the dial and shuttle (wheel). Unfortunately, the device sends 
events that contain the dial and shuttle absolute positions.

Please notice that for whatever reason, the ShuttlePRO v2 uses relative 
events for the dial and shuttle (wheel). At least that is my 
understanding of the output from evtest. Unfortunately, the ShuttlePRO 
device sends events that contain the dial and shuttle absolute 
positions. This can be clearly seen from evtest output:

Event: type 2 (EV_REL), code 8 (REL_WHEEL), value 1
Event: -------------- SYN_REPORT ------------
Event: type 2 (EV_REL), code 8 (REL_WHEEL), value 2
Event: -------------- SYN_REPORT ------------
Event: type 2 (EV_REL), code 8 (REL_WHEEL), value 1
Event: -------------- SYN_REPORT ------------
Event: type 2 (EV_REL), code 8 (REL_WHEEL), value -1
Event: -------------- SYN_REPORT ------------

My impression is that the Linux HID module correctly assumes that 
relative events without any position movement can be dropped. Can 
someone please confirm, if this actually is the case?

The issue for the jog dial is similar, here whenever the position 
counter which is in the range of 0 to 255 doesn't get reported when it 
reaches pos 0.

Event: type 2 (EV_REL), code 7 (REL_DIAL), value 2
Event: -------------- SYN_REPORT ------------
Event: type 2 (EV_REL), code 7 (REL_DIAL), value 1
Event: -------------- SYN_REPORT ------------
Event: type 2 (EV_REL), code 7 (REL_DIAL), value 255
Event: -------------- SYN_REPORT ------------

Is there any change of getting the handling of the ShuttlePRO v2 fixed 
i? I asked on the linux-usb mailing list and someone pointed me in the 
direction of this mailing list. As I see the situation, it would be 
preferable if dropping the events could be fixed because then existing 
software does not need to be changed, as it currently expects REL_DIAL 
and REL_WHEEL events. In contrast, trying to fix the issue by mapping 
the EV_REL to EV_ABS events, would cause all existing software that 
works with the ShuttlePRO v2 to break completely.

Any help and points greatly appreciated!
-- TheDiveO

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-02-07  7:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-07  7:51 ShuttlePROv2 jog dial reports EV_REL events with absolute position event values; pos 0 events get dropped Harald Albrecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).