From f946e7b58b6aaf7203bc57f0be8abffdc7a09609 Mon Sep 17 00:00:00 2001 From: David Rose Date: Tue, 19 Feb 2002 17:23:39 +0000 Subject: [PATCH] hotkeys are now universally lowercase --- panda/src/framework/framework.cxx | 14 +++--- panda/src/framework/framework_multimon.cxx | 14 +++--- panda/src/testbed/demo.cxx | 4 +- panda/src/wdxdisplay/wdxGraphicsWindow.cxx | 53 ++++++---------------- panda/src/wgldisplay/wglGraphicsWindow.cxx | 51 ++++++--------------- 5 files changed, 45 insertions(+), 91 deletions(-) diff --git a/panda/src/framework/framework.cxx b/panda/src/framework/framework.cxx index 9aab8d3da0..ec9cecf5a6 100644 --- a/panda/src/framework/framework.cxx +++ b/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("w", event_w); 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("n", event_n); 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("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("shift-P", event_P); + event_handler.add_hook("shift-p", event_P); #ifdef USE_IPC event_handler.add_hook("x", event_x); diff --git a/panda/src/framework/framework_multimon.cxx b/panda/src/framework/framework_multimon.cxx index cb62a34c26..c7364c756c 100644 --- a/panda/src/framework/framework_multimon.cxx +++ b/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("w", event_w); 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("n", event_n); 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("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("shift-P", event_P); + event_handler.add_hook("shift-p", event_P); #ifdef USE_IPC event_handler.add_hook("x", event_x); diff --git a/panda/src/testbed/demo.cxx b/panda/src/testbed/demo.cxx index f891d83f0b..822705164e 100644 --- a/panda/src/testbed/demo.cxx +++ b/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-f8", 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("a", event_a); event_handler.add_hook("v", event_v); diff --git a/panda/src/wdxdisplay/wdxGraphicsWindow.cxx b/panda/src/wdxdisplay/wdxGraphicsWindow.cxx index 8f33faa9d0..21896befdd 100644 --- a/panda/src/wdxdisplay/wdxGraphicsWindow.cxx +++ b/panda/src/wdxdisplay/wdxGraphicsWindow.cxx @@ -2721,44 +2721,21 @@ lookup_key(WPARAM wparam) const { default: 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; } diff --git a/panda/src/wgldisplay/wglGraphicsWindow.cxx b/panda/src/wgldisplay/wglGraphicsWindow.cxx index 4aa0406a24..7b8f044b9f 100644 --- a/panda/src/wgldisplay/wglGraphicsWindow.cxx +++ b/panda/src/wgldisplay/wglGraphicsWindow.cxx @@ -1983,43 +1983,20 @@ lookup_key(WPARAM wparam) const { default: 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); + // 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; }