]> granicus.if.org Git - nethack/commitdiff
Some altkeyhandler tweaking
authornethack.allison <nethack.allison>
Mon, 12 May 2003 02:25:08 +0000 (02:25 +0000)
committernethack.allison <nethack.allison>
Mon, 12 May 2003 02:25:08 +0000 (02:25 +0000)
src/options.c
sys/winnt/defaults.nh
sys/winnt/nttty.c

index 25771d08242e79c8e8e854d376c70b15ed151696..17075865b3e0942a01d7166fc43f6fde2d5f2961 100644 (file)
@@ -2663,6 +2663,9 @@ char *buf;
                                   defopt);
        else if (!strcmp(optname,"align"))
                Sprintf(buf, "%s", rolestring(flags.initalign, aligns, adj));
+       else if (!strcmp(optname,"altkeyhandler"))
+               Sprintf(buf, "%s", iflags.altkeyhandler[0] ?
+                       iflags.altkeyhandler : "default");
        else if (!strcmp(optname, "boulder"))
                Sprintf(buf, "%c", iflags.bouldersym ?
                        iflags.bouldersym : oc_syms[(int)objects[BOULDER].oc_class]);
index 2173b4a68da32af3fcd6239f3e0a53b797b6cb9f..3151e368e0c43c2947d90008f64183b95e1f818e 100644 (file)
 # for tty window-port.
 OPTIONS=IBMGraphics
 
+# Keyboard handling
+# Different keyboard handlers can be loaded.
+# Default is nhdefkey.dll but you can override that.
+# Ray Chason's keyboard handler
+# OPTIONS=altkeyhandler:nhraykey.dll
+#
+# NetHack 3.4.0 keyboard handling
+# OPTIONS=altkeyhandler:nh340key.dll
+
 # *** Personal Preferences ***
 # Some options to set personal preferences.  Uncomment and change these to
 # suit your personal preference.  If several people are to use the same
index 2afdd6ee44f4f9d171b0a16aca9dbd664066bba8..70374b3781ceb2812b6a500955a67fd60493a294 100644 (file)
@@ -825,18 +825,28 @@ register char *op;
 void
 load_keyboard_handler()
 {
-       char suffx[] = ".dll";  
+       char suffx[] = ".dll";
+       char *truncspot;
 #define MAX_DLLNAME 25
        char kh[MAX_ALTKEYHANDLER];
        if (iflags.altkeyhandler[0]) {
                if (hLibrary) { /* already one loaded apparently */
                        FreeLibrary(hLibrary);
                        hLibrary = (HANDLE)0;
+                  pNHkbhit = (NHKBHIT)0;
+                  pCheckInput = (CHECKINPUT)0; 
+                  pSourceWhere = (SOURCEWHERE)0; 
+                  pSourceAuthor = (SOURCEAUTHOR)0; 
+                  pKeyHandlerName = (KEYHANDLERNAME)0; 
+                  pProcessKeystroke = (PROCESS_KEYSTROKE)0;
                }
+               if ((truncspot = strstri(iflags.altkeyhandler, suffx)) != 0)
+                       *truncspot = '\0';
                (void) strncpy(kh, iflags.altkeyhandler,
                                (MAX_ALTKEYHANDLER - sizeof suffx) - 1);
                kh[(MAX_ALTKEYHANDLER - sizeof suffx) - 1] = '\0';
                Strcat(kh, suffx);
+               Strcpy(iflags.altkeyhandler, kh);
                hLibrary = LoadLibrary(kh);
                if (hLibrary) {
                   pProcessKeystroke =
@@ -853,12 +863,21 @@ load_keyboard_handler()
                   (KEYHANDLERNAME) GetProcAddress (hLibrary, TEXT ("KeyHandlerName"));
                }
        }
-       if (!pProcessKeystroke || !pNHkbhit) {
+       if (!pProcessKeystroke || !pNHkbhit || !pCheckInput) {
                if (hLibrary) {
                        FreeLibrary(hLibrary);
                        hLibrary = (HANDLE)0;
+                       pNHkbhit = (NHKBHIT)0; 
+                       pCheckInput = (CHECKINPUT)0; 
+                       pSourceWhere = (SOURCEWHERE)0; 
+                       pSourceAuthor = (SOURCEAUTHOR)0; 
+                       pKeyHandlerName = (KEYHANDLERNAME)0; 
+                       pProcessKeystroke = (PROCESS_KEYSTROKE)0;
                }
-               hLibrary = LoadLibrary("nhdefkey.dll");
+               (void)strncpy(kh, "nhdefkey.dll", (MAX_ALTKEYHANDLER - sizeof suffx) - 1);
+               kh[(MAX_ALTKEYHANDLER - sizeof suffx) - 1] = '\0';
+               Strcpy(iflags.altkeyhandler, kh);
+               hLibrary = LoadLibrary(kh);
                if (hLibrary) {
                   pProcessKeystroke =
                   (PROCESS_KEYSTROKE) GetProcAddress (hLibrary, TEXT ("ProcessKeystroke"));
@@ -874,7 +893,7 @@ load_keyboard_handler()
                   (KEYHANDLERNAME) GetProcAddress (hLibrary, TEXT ("KeyHandlerName"));
                }
        }
-       if (!pProcessKeystroke || !pNHkbhit) {
+       if (!pProcessKeystroke || !pNHkbhit || !pCheckInput) {
                if (!hLibrary)
                        raw_printf("\nNetHack was unable to load keystroke handler.\n");
                else {