]> granicus.if.org Git - nethack/commitdiff
Windows keyhandling
authornhmall <nhmall@nethack.org>
Mon, 11 Apr 2022 19:24:55 +0000 (15:24 -0400)
committernhmall <nhmall@nethack.org>
Mon, 11 Apr 2022 19:24:55 +0000 (15:24 -0400)
sys/windows/consoletty.c

index b1eea58645ebaa2ad4d5b82a191551e703eaa4fb..3b5be30280b37a221d7176f4b0a79718656e77f0 100644 (file)
@@ -267,19 +267,16 @@ struct console_t {
 #endif /* VIRTUAL_TERMINAL_SEQUENCES */
 };
 
-static DWORD ccount, acount;
-#ifndef CLR_MAX
-#define CLR_MAX 16
-#endif
-
-int ttycolors[CLR_MAX];
-int ttycolors_inv[CLR_MAX];
+static const char default_name[] = "default";
+const char *const legal_key_handling[] = {
+    "none",
+    "default",
+    "ray",
+    "340",
+};
 
-#define MAX_OVERRIDES 256
-unsigned char key_overrides[MAX_OVERRIDES];
-static char nullstr[] = "";
-char erase_char, kill_char;
-#define DEFTEXTCOLOR ttycolors[7]
+enum windows_key_handling keyh[] = { no_keyhandling, default_keyhandling, ray_keyhandling,
+                                     nh340_keyhandling };
 
 int default_processkeystroke(HANDLE, INPUT_RECORD *, boolean *, boolean, int);
 int default_kbhit(HANDLE, INPUT_RECORD *);
@@ -297,19 +294,32 @@ int nh340_checkinput(HANDLE, INPUT_RECORD *, DWORD *, boolean,
                        int, int *, coord *);
 
 struct keyboard_handling_t {
-    char *pKeyHandlingName;
+    enum windows_key_handling khid;
     int (*pProcessKeystroke)(HANDLE, INPUT_RECORD *, boolean *,
                                           boolean, int);
     int (*pNHkbhit)(HANDLE, INPUT_RECORD *);
     int (*pCheckInput)(HANDLE, INPUT_RECORD *, DWORD *, boolean,
                                    int, int *, coord *);
 } keyboard_handling = {
-    "none",
+    no_keyhandling,
     default_processkeystroke,
     default_kbhit,
     default_checkinput
 };
 
+static DWORD ccount, acount;
+#ifndef CLR_MAX
+#define CLR_MAX 16
+#endif
+
+int ttycolors[CLR_MAX];
+int ttycolors_inv[CLR_MAX];
+
+#define MAX_OVERRIDES 256
+unsigned char key_overrides[MAX_OVERRIDES];
+static char nullstr[] = "";
+char erase_char, kill_char;
+#define DEFTEXTCOLOR ttycolors[7]
 static INPUT_RECORD bogus_key;
 
 #ifdef VIRTUAL_TERMINAL_SEQUENCES
@@ -2922,15 +2932,6 @@ nh340_numpad[PADKEYS] = {
 
 static struct pad keypad[PADKEYS], numpad[PADKEYS];
 static BYTE KeyState[256];
-static const char default_name[] = "default";
-const char *const legal_key_handling[] = {
-    "none",
-    "default",
-    "ray",
-    "340",
-};
-enum windows_key_handling keyh[] = { no_keyhandling, default_keyhandling, ray_keyhandling,
-                                     nh340_keyhandling };
 
 void set_altkeyhandling(const char *inName)
 {
@@ -2938,22 +2939,18 @@ void set_altkeyhandling(const char *inName)
     /*backward compatibility - so people's existing config files
       may work as is */
     if (!strcmpi(inName, "nhraykey.dll"))
-        inName = legal_key_handling[ray_keyhandling];
+         inName = legal_key_handling[ray_keyhandling];
     else if (!strcmpi(inName, "nh340key.dll"))
-        inName = legal_key_handling[nh340_keyhandling];
+         inName = legal_key_handling[nh340_keyhandling];
     else if (!strcmpi(inName, "nhdefkey.dll"))
-        inName = legal_key_handling[default_keyhandling];
+         inName = legal_key_handling[default_keyhandling];
 
     for (i = default_keyhandling; i < SIZE(legal_key_handling); i++) {
         if (!strcmpi(inName, legal_key_handling[i])) {
             iflags.key_handling = keyh[i];
-            if (keyboard_handling.pKeyHandlingName) {
-                free((genericptr_t) keyboard_handling.pKeyHandlingName);
-                keyboard_handling.pKeyHandlingName = (char *) 0;
-            }
             switch(iflags.key_handling) {
             case ray_keyhandling:
-                keyboard_handling.pKeyHandlingName = strdup("ray");
+                keyboard_handling.khid = ray_keyhandling;
                 keyboard_handling.pProcessKeystroke = ray_processkeystroke;
                 keyboard_handling.pNHkbhit = ray_kbhit;
                 keyboard_handling.pCheckInput = ray_checkinput;
@@ -2972,7 +2969,7 @@ void set_altkeyhandling(const char *inName)
                 }
                 break;
             case nh340_keyhandling:
-                keyboard_handling.pKeyHandlingName = strdup("340");
+                keyboard_handling.khid = nh340_keyhandling;
                 keyboard_handling.pProcessKeystroke = nh340_processkeystroke;
                 keyboard_handling.pNHkbhit = nh340_kbhit;
                 keyboard_handling.pCheckInput = nh340_checkinput;
@@ -2983,7 +2980,7 @@ void set_altkeyhandling(const char *inName)
                 break;
             case default_keyhandling:
             default:
-                keyboard_handling.pKeyHandlingName = strdup("default");
+                keyboard_handling.khid = default_keyhandling;
                 keyboard_handling.pProcessKeystroke
                                             = default_processkeystroke;
                 keyboard_handling.pNHkbhit = default_kbhit;