Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / shuttle.C
index df2850dc8e4f22a5c6915e7062ddb151378b74d4..80d2fdff01a39bfeea539cebd89e6442ca93a46c 100644 (file)
@@ -504,6 +504,8 @@ int Shuttle::send_keycode(unsigned key, unsigned msk, int press, int send)
        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);
@@ -553,6 +555,11 @@ void Shuttle::key(unsigned short code, unsigned int value)
                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);
 }
 
@@ -603,6 +610,8 @@ void Shuttle::jogshuttle(unsigned short code, unsigned int value)
        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;
@@ -615,10 +624,16 @@ static const struct shuttle_dev {
 } shuttle_devs[] = {
        { "/dev/input/by-id/usb-Contour_Design_ShuttleXpress-event-if00",
                0x0b33, 0x0020 },
+       { "/dev/input/by-id/usb-Contour_Design_ShuttleXpress-event-mouse",
+               0x0b33, 0x0020 },
        { "/dev/input/by-id/usb-Contour_Design_ShuttlePRO_v2-event-if00",
                0x0b33, 0x0030 },
+       { "/dev/input/by-id/usb-Contour_Design_ShuttlePRO_v2-event-mouse",
+               0x0b33, 0x0030 },
        { "/dev/input/by-id/usb-Contour_Design_ShuttlePro-event-if00",
                0x0b33, 0x0030 },
+       { "/dev/input/by-id/usb-Contour_Design_ShuttlePro-event-mouse",
+               0x0b33, 0x0030 },
        { "/dev/input/by-id/usb-Contour_Design_ShuttlePRO_v2-event-joystick",
                0x0b33, 0x0030 },
 };
@@ -893,7 +908,7 @@ void Shuttle::run()
                        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));