[BRLTTY] Cursor routing in DOS apps
Samuel Thibault
samuel.thibault at ens-lyon.org
Fri May 11 22:36:43 EDT 2007
Hi,
Lars Bjørndal, le Thu 03 May 2007 20:55:09 +0200, a écrit :
> - Try to rout the cursor to another location by using a cursor routing key
> on your braille display
>
> It would be great if we could get this working!
Ok, I got it working as well as a few ascii keypresses thanks to the
attached patch, but not so much should be expected, because the w32api
documentation is quite evasive...
Samuel
-------------- next part --------------
Index: ScreenDrivers/Windows/screen.c
===================================================================
--- ScreenDrivers/Windows/screen.c (revision 3031)
+++ ScreenDrivers/Windows/screen.c (working copy)
@@ -322,6 +322,49 @@
key &= ~ SCR_KEY_MOD_META;
}
keyE->uChar.AsciiChar = key;
+ if (key >= 'A' && key <= 'Z') {
+ keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = key;
+ } else if (key >= 'a' && key <= 'z') {
+ keyE->wVirtualKeyCode = key + 'A' - 'a';
+ } else if (key >= '0' && key <= '9') {
+ keyE->wVirtualKeyCode = key + VK_NUMPAD0 - '0';
+ } else switch(key) {
+ case ' ': keyE->wVirtualKeyCode = VK_SPACE; break;
+ case '+': keyE->wVirtualKeyCode = VK_ADD; break;
+ case '-': keyE->wVirtualKeyCode = VK_SUBTRACT; break;
+ case '*': keyE->wVirtualKeyCode = VK_MULTIPLY; break;
+ case '/': keyE->wVirtualKeyCode = VK_DIVIDE; break;
+#ifdef VK_OEM_COMMA
+ case ',': keyE->wVirtualKeyCode = VK_OEM_COMMA; break;
+#endif
+#ifdef VK_OEM_PERIOD
+ case '.': keyE->wVirtualKeyCode = VK_OEM_PERIOD;break;
+#endif
+ case ';': keyE->wVirtualKeyCode = VK_OEM_1; break;
+ case ':': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_1; break;
+ //case '/': keyE->wVirtualKeyCode = VK_OEM_2; break;
+ case '?': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_2; break;
+ case '`': keyE->wVirtualKeyCode = VK_OEM_3; break;
+ case '~': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_3; break;
+ case '[': keyE->wVirtualKeyCode = VK_OEM_4; break;
+ case '{': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_4; break;
+ case '\\':keyE->wVirtualKeyCode = VK_OEM_5; break;
+ case '|': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_5; break;
+ case ']': keyE->wVirtualKeyCode = VK_OEM_6; break;
+ case '}': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_6; break;
+ case '\'':keyE->wVirtualKeyCode = VK_OEM_7; break;
+ case '"': keyE->dwControlKeyState |= SHIFT_PRESSED;
+ keyE->wVirtualKeyCode = VK_OEM_7; break;
+ default: LogPrint(LOG_WARNING, "Char %2.2X not suported.", key);
+ return 0;
+ }
} else {
switch (key) {
case SCR_KEY_ENTER: keyE->wVirtualKeyCode = VK_RETURN; break;
@@ -369,6 +412,7 @@
keyE->wRepeatCount = 1;
keyE->bKeyDown = TRUE;
+ keyE->wVirtualScanCode = MapVirtualKey(keyE->wVirtualKeyCode, 0);
if (!doInsert(&buf))
return 0;
keyE->bKeyDown = FALSE;
More information about the BRLTTY
mailing list