Explorar el Código

hotkeys are now universally lowercase

David Rose hace 24 años
padre
commit
f946e7b58b

+ 7 - 7
panda/src/framework/framework.cxx

@@ -1399,18 +1399,18 @@ int framework_main(int argc, char *argv[]) {
   event_handler.add_hook("l", event_l);
   event_handler.add_hook("l", event_l);
   event_handler.add_hook("w", event_w);
   event_handler.add_hook("w", event_w);
   event_handler.add_hook("b", event_b);
   event_handler.add_hook("b", event_b);
-  event_handler.add_hook("shift-R", event_R);
+  event_handler.add_hook("shift-r", event_R);
   event_handler.add_hook("`", event_grave);
   event_handler.add_hook("`", event_grave);
   event_handler.add_hook("n", event_n);
   event_handler.add_hook("n", event_n);
   event_handler.add_hook("c", event_c);
   event_handler.add_hook("c", event_c);
-  event_handler.add_hook("shift-D", event_D);
+  event_handler.add_hook("shift-d", event_D);
   event_handler.add_hook("g", event_g);
   event_handler.add_hook("g", event_g);
-  event_handler.add_hook("shift-C", event_C);
-  event_handler.add_hook("shift-N", event_N);
-  event_handler.add_hook("shift-S", event_S);
-  event_handler.add_hook("shift-A", event_A);
+  event_handler.add_hook("shift-c", event_C);
+  event_handler.add_hook("shift-n", event_N);
+  event_handler.add_hook("shift-s", event_S);
+  event_handler.add_hook("shift-a", event_A);
   event_handler.add_hook("p", event_p);
   event_handler.add_hook("p", event_p);
-  event_handler.add_hook("shift-P", event_P);
+  event_handler.add_hook("shift-p", event_P);
 
 
 #ifdef USE_IPC
 #ifdef USE_IPC
   event_handler.add_hook("x", event_x);
   event_handler.add_hook("x", event_x);

+ 7 - 7
panda/src/framework/framework_multimon.cxx

@@ -1518,18 +1518,18 @@ int framework_main(int argc, char *argv[]) {
   event_handler.add_hook("l", event_l);
   event_handler.add_hook("l", event_l);
   event_handler.add_hook("w", event_w);
   event_handler.add_hook("w", event_w);
   event_handler.add_hook("b", event_b);
   event_handler.add_hook("b", event_b);
-  event_handler.add_hook("shift-R", event_R);
+  event_handler.add_hook("shift-r", event_R);
   event_handler.add_hook("`", event_grave);
   event_handler.add_hook("`", event_grave);
   event_handler.add_hook("n", event_n);
   event_handler.add_hook("n", event_n);
   event_handler.add_hook("c", event_c);
   event_handler.add_hook("c", event_c);
-  event_handler.add_hook("shift-D", event_D);
+  event_handler.add_hook("shift-d", event_D);
   event_handler.add_hook("g", event_g);
   event_handler.add_hook("g", event_g);
-  event_handler.add_hook("shift-C", event_C);
-  event_handler.add_hook("shift-N", event_N);
-  event_handler.add_hook("shift-S", event_S);
-  event_handler.add_hook("shift-A", event_A);
+  event_handler.add_hook("shift-c", event_C);
+  event_handler.add_hook("shift-n", event_N);
+  event_handler.add_hook("shift-s", event_S);
+  event_handler.add_hook("shift-a", event_A);
   event_handler.add_hook("p", event_p);
   event_handler.add_hook("p", event_p);
-  event_handler.add_hook("shift-P", event_P);
+  event_handler.add_hook("shift-p", event_P);
 
 
 #ifdef USE_IPC
 #ifdef USE_IPC
   event_handler.add_hook("x", event_x);
   event_handler.add_hook("x", event_x);

+ 2 - 2
panda/src/testbed/demo.cxx

@@ -513,9 +513,9 @@ void demo_keys(EventHandler&) {
   event_handler.add_hook("shift-f7", event_fkey);
   event_handler.add_hook("shift-f7", event_fkey);
   event_handler.add_hook("shift-f8", event_fkey);
   event_handler.add_hook("shift-f8", event_fkey);
   event_handler.add_hook("shift-f9", event_fkey);
   event_handler.add_hook("shift-f9", event_fkey);
-  event_handler.add_hook("shift-B", event_B);
+  event_handler.add_hook("shift-b", event_B);
 
 
-  event_handler.add_hook("shift-L", event_L);
+  event_handler.add_hook("shift-l", event_L);
   event_handler.add_hook("k", event_k);
   event_handler.add_hook("k", event_k);
   event_handler.add_hook("a", event_a);
   event_handler.add_hook("a", event_a);
   event_handler.add_hook("v", event_v);
   event_handler.add_hook("v", event_v);

+ 15 - 38
panda/src/wdxdisplay/wdxGraphicsWindow.cxx

@@ -2721,44 +2721,21 @@ lookup_key(WPARAM wparam) const {
 
 
         default:
         default:
             int key = MapVirtualKey(wparam, 2);
             int key = MapVirtualKey(wparam, 2);
-            if(isascii(key) && key != 0) {
-                bool bCapsLockDown=((GetKeyState(VK_CAPITAL) & 0x1)!=0);
-                bool bShiftUp = (GetKeyState(VK_SHIFT) >= 0);
-                if(bShiftUp) {
-                    if(bCapsLockDown) 
-                        key = toupper(key);
-                    else key = tolower(key);
-                } else {
-                    switch(key) {
-                        // these keys are unaffected by capslock
-                        case '1': key = '!'; break;
-                        case '2': key = '@'; break;
-                        case '3': key = '#'; break;
-                        case '4': key = '$'; break;
-                        case '5': key = '%'; break;
-                        case '6': key = '^'; break;
-                        case '7': key = '&'; break;
-                        case '8': key = '*'; break;
-                        case '9': key = '('; break;
-                        case '0': key = ')'; break;
-                        case '-': key = '_'; break;
-                        case '=': key = '+'; break;
-                        case ',': key = '<'; break;
-                        case '.': key = '>'; break;
-                        case '/': key = '?'; break;
-                        case ';': key = ':'; break;
-                        case '\'': key = '"'; break;
-                        case '[': key = '{'; break;
-                        case ']': key = '}'; break;
-                        case '\\': key = '|'; break;
-                        case '`': key = '~'; break;
-                        default:
-                            if(bCapsLockDown) 
-                                key = tolower(key);
-                            else key = toupper(key);
-                    }
-                }
-                return KeyboardButton::ascii_key((uchar)key);
+            if (isascii(key) && key != 0) {
+              // We used to try to remap lowercase to uppercase keys
+              // here based on the state of the shift and/or caps lock
+              // keys.  But that's a mistake, and doesn't allow for
+              // international or user-defined keyboards; let Windows
+              // do that mapping.
+
+              // Nowadays, we make a distinction between a "button"
+              // and a "keystroke".  A button corresponds to a
+              // physical button on the keyboard and has a down and up
+              // event associated.  A keystroke may or may not
+              // correspond to a physical button, but will be some
+              // Unicode character and will not have a corresponding
+              // up event.
+              return KeyboardButton::ascii_key(tolower(key));
             }
             }
             break;
             break;
     }
     }

+ 14 - 37
panda/src/wgldisplay/wglGraphicsWindow.cxx

@@ -1983,43 +1983,20 @@ lookup_key(WPARAM wparam) const {
         default:
         default:
             int key = MapVirtualKey(wparam, 2);
             int key = MapVirtualKey(wparam, 2);
             if (isascii(key) && key != 0) {
             if (isascii(key) && key != 0) {
-                bool bCapsLockDown=((GetKeyState(VK_CAPITAL) & 0x1)!=0);
-                bool bShiftUp = (GetKeyState(VK_SHIFT) >= 0);
-                if (bShiftUp) {
-                    if (bCapsLockDown)
-                        key = toupper(key);
-                    else key = tolower(key);
-                } else {
-                    switch(key) {
-                        // these keys are unaffected by capslock
-                        case '1': key = '!'; break;
-                        case '2': key = '@'; break;
-                        case '3': key = '#'; break;
-                        case '4': key = '$'; break;
-                        case '5': key = '%'; break;
-                        case '6': key = '^'; break;
-                        case '7': key = '&'; break;
-                        case '8': key = '*'; break;
-                        case '9': key = '('; break;
-                        case '0': key = ')'; break;
-                        case '-': key = '_'; break;
-                        case '=': key = '+'; break;
-                        case ',': key = '<'; break;
-                        case '.': key = '>'; break;
-                        case '/': key = '?'; break;
-                        case ';': key = ':'; break;
-                        case '\'': key = '"'; break;
-                        case '[': key = '{'; break;
-                        case ']': key = '}'; break;
-                        case '\\': key = '|'; break;
-                        case '`': key = '~'; break;
-                        default:
-                            if (bCapsLockDown)
-                                key = tolower(key);
-                            else key = toupper(key);
-                    }
-                }
-                return KeyboardButton::ascii_key((uchar)key);
+              // We used to try to remap lowercase to uppercase keys
+              // here based on the state of the shift and/or caps lock
+              // keys.  But that's a mistake, and doesn't allow for
+              // international or user-defined keyboards; let Windows
+              // do that mapping.
+
+              // Nowadays, we make a distinction between a "button"
+              // and a "keystroke".  A button corresponds to a
+              // physical button on the keyboard and has a down and up
+              // event associated.  A keystroke may or may not
+              // correspond to a physical button, but will be some
+              // Unicode character and will not have a corresponding
+              // up event.
+              return KeyboardButton::ascii_key(tolower(key));
             }
             }
             break;
             break;
     }
     }