| 78 | } |
| 79 | |
| 80 | KeyboardCode KeyboardCode::ReadKeyCode() { |
| 81 | #if defined(__WXGTK__) |
| 82 | char keys_return[32]; |
| 83 | |
| 84 | XQueryKeymap(((Display *) wxGetDisplay()), keys_return); |
| 85 | |
| 86 | // Given the keyboard state bitmap, return the scan code |
| 87 | // of the key is pressed down |
| 88 | // BUG: when multiple keys are pressed simultaneously |
| 89 | // the scan code is undefined |
| 90 | unsigned int kc = 0; |
| 91 | for(int i=0; i<32; i++) { |
| 92 | unsigned char keys = (unsigned char) keys_return[i]; |
| 93 | if (keys > 0) { |
| 94 | switch (keys) { |
| 95 | case 1: kc = 0; break; |
| 96 | case 2: kc = 1; break; |
| 97 | case 4: kc = 2; break; |
| 98 | case 8: kc = 3; break; |
| 99 | case 16: kc = 4; break; |
| 100 | case 32: kc = 5; break; |
| 101 | case 64: kc = 6; break; |
| 102 | case 128: kc = 7; break; |
| 103 | } |
| 104 | kc += 8 * i; |
| 105 | } |
| 106 | } |
| 107 | return FromScanCode (kc); |
| 108 | #else |
| 109 | // NOT implemented for Windows. This method is used to poll |
| 110 | // the keyboard to implement hotkeys. On Windows RegisterHotKey is used |
| 111 | assert(0); |
| 112 | return KeyboardCode(); |
| 113 | #endif |
| 114 | } |
| 115 | |
| 116 | KeyboardCode KeyboardCode::FromChar (char c) { |
| 117 | #if defined(__WXGTK__) |
nothing calls this directly
no test coverage detected