(svn r11061) -Fix [FS#1086]: [win32] some keys were handled twice
authorglx
Sat, 08 Sep 2007 14:59:58 +0000
changeset 8037 3b28308ccda7
parent 8036 6f35eaf30c16
child 8038 ccb7143587d0
(svn r11061) -Fix [FS#1086]: [win32] some keys were handled twice
src/gfx.h
src/video/win32_v.cpp
--- a/src/gfx.h	Sat Sep 08 10:10:31 2007 +0000
+++ b/src/gfx.h	Sat Sep 08 14:59:58 2007 +0000
@@ -36,24 +36,6 @@
 	WKC_RETURN      = 13,
 	WKC_TAB         = 14,
 
-	/* Numerical keyboard */
-	WKC_NUM_0       = 16,
-	WKC_NUM_1       = 17,
-	WKC_NUM_2       = 18,
-	WKC_NUM_3       = 19,
-	WKC_NUM_4       = 20,
-	WKC_NUM_5       = 21,
-	WKC_NUM_6       = 22,
-	WKC_NUM_7       = 23,
-	WKC_NUM_8       = 24,
-	WKC_NUM_9       = 25,
-	WKC_NUM_DIV     = 26,
-	WKC_NUM_MUL     = 27,
-	WKC_NUM_MINUS   = 28,
-	WKC_NUM_PLUS    = 29,
-	WKC_NUM_ENTER   = 30,
-	WKC_NUM_DECIMAL = 31,
-
 	/* Space */
 	WKC_SPACE       = 32,
 
@@ -81,20 +63,35 @@
 	 * A-Z are mapped to 65-90
 	 * a-z are mapped to 97-122 */
 
-	/* Other keys, corresponding to their ascii values */
-	WKC_SLASH       = 47, ///< / Forward slash
-	WKC_SEMICOLON   = 59, ///< ; Semicolon
-	WKC_EQUALS      = 61, ///< = Equals
-	WKC_L_BRACKET   = 91, ///< [ Left square bracket
-	WKC_BACKSLASH   = 92, ///< \ Backslash
-	WKC_R_BRACKET   = 93, ///< ] Right square bracket
+	/* Numerical keyboard */
+	WKC_NUM_0       = 128,
+	WKC_NUM_1       = 129,
+	WKC_NUM_2       = 130,
+	WKC_NUM_3       = 131,
+	WKC_NUM_4       = 132,
+	WKC_NUM_5       = 133,
+	WKC_NUM_6       = 134,
+	WKC_NUM_7       = 135,
+	WKC_NUM_8       = 136,
+	WKC_NUM_9       = 137,
+	WKC_NUM_DIV     = 138,
+	WKC_NUM_MUL     = 139,
+	WKC_NUM_MINUS   = 140,
+	WKC_NUM_PLUS    = 141,
+	WKC_NUM_ENTER   = 142,
+	WKC_NUM_DECIMAL = 143,
 
-	/* Other keys of which their ascii value is already taken
-	 * - use unused ascii value not present on keyboard directly */
-	WKC_SINGLEQUOTE = 58, ///< ' Single quote
-	WKC_COMMA       = 60, ///< , Comma
-	WKC_PERIOD      = 62, ///< . Period
-	WKC_MINUS       = 95, ///< - Minus
+	/* Other keys */
+	WKC_SLASH       = 144, ///< / Forward slash
+	WKC_SEMICOLON   = 145, ///< ; Semicolon
+	WKC_EQUALS      = 146, ///< = Equals
+	WKC_L_BRACKET   = 147, ///< [ Left square bracket
+	WKC_BACKSLASH   = 148, ///< \ Backslash
+	WKC_R_BRACKET   = 149, ///< ] Right square bracket
+	WKC_SINGLEQUOTE = 150, ///< ' Single quote
+	WKC_COMMA       = 151, ///< , Comma
+	WKC_PERIOD      = 152, ///< . Period
+	WKC_MINUS       = 153, ///< - Minus
 };
 
 enum GameModes {
--- a/src/video/win32_v.cpp	Sat Sep 08 10:10:31 2007 +0000
+++ b/src/video/win32_v.cpp	Sat Sep 08 14:59:58 2007 +0000
@@ -494,6 +494,9 @@
 			 * WM_KEYDOWN only handles CTRL+ commands and special keys like VK_LEFT, etc. */
 			if (keycode == 0 || (keycode > WKC_PAUSE && GB(keycode, 13, 4) == 0)) return 0;
 
+			/* Keys handled in WM_CHAR */
+			if ((uint)(GB(keycode, 0, 12) - WKC_NUM_DIV) <= WKC_MINUS - WKC_NUM_DIV) return 0;
+
 			HandleKeypress(0 | (keycode << 16));
 			return 0;
 		}