k->x = wx;
k->y = wy;
k->state = msk;
+// also clear modifiers state if a key is to be released
+ if( !press ) k->state = 0;
k->keycode = key;
k->same_screen = 1;
wdw->top_level->put_event((XEvent *) k);
fprintf(stderr, "key(%d, %d) out of range\n", code + EVENT_CODE_KEY1, value);
return;
}
+// Show help if Alt is pressed on the keyboard together with a shuttle button
+ if( wdw && wdw->alt_down() && value ) {
+ wdw->context_help_show("Shuttle key default arrangement");
+ return;
+ }
send_stroke_sequence(value ? KJS_KEY_DOWN : KJS_KEY_UP, code);
}
case EVENT_CODE_SHUTTLE:
shuttle(value);
break;
+ case EVENT_CODE_HI_JOG: // redundant report of JOG value*120
+ break;
default:
fprintf(stderr, "jogshuttle(%d, %d) invalid code\n", code, value);
break;
0x0b33, 0x0030 },
{ "/dev/input/by-id/usb-Contour_Design_ShuttlePro-event-if00",
0x0b33, 0x0030 },
+ { "/dev/input/by-id/usb-Contour_Design_ShuttlePRO_v2-event-joystick",
+ 0x0b33, 0x0030 },
};
#ifdef HAVE_SHUTTLE_USB
while( devsh && !done ) {
int len = 0;
static const int IN_ENDPOINT = 0x81;
- unsigned char dat[BCSTRLEN];
+ unsigned char dat[5];
int ret = libusb_interrupt_transfer(devsh,
IN_ENDPOINT, dat, sizeof(dat), &len, 100);
if( ret != 0 ) {
if( first_time ) break;
continue;
}
- if( !ioctl(fd, EVIOCGRAB, 1) ) { // exclusive access
+ if( 1 || !ioctl(fd, EVIOCGRAB, 1) ) { // exclusive access
first_time = 0;
while( !done ) {
int ret = read(fd, &ev, sizeof(ev));