/*\r
* JAWS.c -- Code for Windows front end to XBoard to use it with JAWS\r
- * $Id: winboard.c,v 2.3 2003/11/25 05:25:20 mann Exp $\r
*\r
* Copyright 1991 by Digital Equipment Corporation, Maynard,\r
- * Massachusetts. Enhancements Copyright\r
- * 1992-2001,2002,2003,2004,2005,2006,2007,2008,2009 Free Software\r
- * Foundation, Inc.\r
+ * Massachusetts.\r
+ *\r
+ * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,\r
+ * 2007, 2008, 2009 Free Software Foundation, Inc.\r
*\r
* XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess,\r
* which was written and is copyrighted by Wayne Christopher.\r
static int oldFromX, oldFromY;\r
static int timeflag;\r
static int suppressClocks = 0;\r
+static int suppressOneKey = 0;\r
\r
BOOL\r
InitJAWS()\r
return (x%3000 == 0);\r
}\r
\r
+#if 0\r
+ if(isalpha((char)wParam)) {\r
+ /* capitals of any ind are intercepted and distinguished by left and right shift */\r
+ int mine = GetKeyState(VK_RSHIFT) < 0;\r
+ if(mine || GetKeyState(VK_LSHIFT) < 0) {\r
+#endif\r
+\r
#define JAWS_ALT_INTERCEPT \\r
- if(isalpha((char)wParam)) {\\r
- /* capitals of any ind are intercepted and distinguished by left and right shift */\\r
- int mine = GetKeyState(VK_RSHIFT) < 0;\\r
- if(mine || GetKeyState(VK_LSHIFT) < 0) {\\r
-\\r
- if(gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) mine = !mine;\\r
-\\r
- if(ToLower((char)wParam) == 'x') {\\r
- SayPieces(mine ? WhitePlay : BlackPlay);\\r
- break;\\r
- } else\\r
- if(CharToPiece((char)wParam) != EmptySquare) {\\r
- SayPieces(CharToPiece(mine ? ToUpper((char)wParam) : ToLower((char)wParam)));\\r
- break;\\r
- }\\r
- }\\r
+ if(suppressOneKey) {\\r
+ suppressOneKey = 0;\\r
+ if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) break;\\r
}\\r
if ((char)wParam == 022 && gameMode == EditPosition) { /* <Ctl R>. Pop up piece menu */\\r
POINT pt; int x, y;\\r
#define JAWS_KB_NAVIGATION \\r
\\r
case WM_KEYDOWN:\\r
+\\r
+ if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) {\\r
+ /* Control + Alt + letter used for speaking piece positions */\\r
+ static int lastTime; static char lastChar;\\r
+ int mine = 0, time = GetTickCount(); char c;\\r
+\\r
+ if((char)wParam == lastChar && time-lastTime < 250) mine = 1;\\r
+ lastChar = wParam; lastTime = time;\\r
+ c = wParam;\\r
+\\r
+ if(gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) mine = !mine;\\r
+\\r
+ if(ToLower(c) == 'x') {\\r
+ SayPieces(mine ? WhitePlay : BlackPlay);\\r
+ suppressOneKey = 1;\\r
+ break;\\r
+ } else\\r
+ if(CharToPiece(c) != EmptySquare) {\\r
+ SayPieces(CharToPiece(mine ? ToUpper(c) : ToLower(c)));\\r
+ suppressOneKey = 1;\\r
+ break;\\r
+ }\\r
+ }\\r
+\\r
switch (wParam) {\\r
case VK_LEFT:\\r
case VK_RIGHT:\\r