From fc4f24da5c464976f2d4be1370ee1121a86bd5c4 Mon Sep 17 00:00:00 2001
From: "Richard M. Stallman" <rms@gnu.org>
Date: Sat, 5 Jun 1993 07:56:46 +0000
Subject: (term_get_fkeys): Use correct names for F10 and up. Use the key
 sequence, not the termcap cap name, in Fdefine_key.

---
 src/term.c | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

(limited to 'src/term.c')

diff --git a/src/term.c b/src/term.c
index 6d4cba2a10d..911f9f1feee 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1281,7 +1281,7 @@ term_get_fkeys (address)
   {
     char fcap[3], fkey[4];
 
-    fcap[0] = 'k'; fcap[2] = '\0';
+    fcap[0] = 'F'; fcap[2] = '\0';
     for (i = 11; i < 64; i++)
       {
 	if (i <= 19)
@@ -1291,13 +1291,16 @@ term_get_fkeys (address)
 	else
 	  fcap[1] = 'a' + i - 11;
 
-	if (tgetstr (fcap, address))
-	  {
-	    (void) sprintf (fkey, "f%d", i);	    
-	    Fdefine_key (Vfunction_key_map,
-			 build_string (fcap),
-			 Fmake_vector (make_number (1), intern (fkey)));
-	  }
+	{
+	  char *sequence = tgetstr (fcap, address);
+	  if (sequence)
+	    {
+	      (void) sprintf (fkey, "f%d", i);	    
+	      Fdefine_key (Vfunction_key_map,
+			   build_string (sequence),
+			   Fmake_vector (make_number (1), intern (fkey)));
+	    }
+	}
       }
    }
 
@@ -1305,11 +1308,15 @@ term_get_fkeys (address)
    * Various mappings to try and get a better fit.
    */
   {
-#define CONDITIONAL_REASSIGN(cap1, cap2, sym)			\
-      if (!tgetstr (cap1, address) && tgetstr (cap2, address))	\
-	Fdefine_key (Vfunction_key_map,				\
-		     build_string (cap2),			\
-		     Fmake_vector (make_number (1), intern (sym)))
+#define CONDITIONAL_REASSIGN(cap1, cap2, sym)				\
+      if (!tgetstr (cap1, address))					\
+	{								\
+	  char *sequence = tgetstr (cap2, address);			\
+	  if (sequence)							\
+	    Fdefine_key (Vfunction_key_map,				\
+			 build_string (sequence),			\
+			 Fmake_vector (make_number (1), intern (sym)));	\
+	}
 	  
       /* if there's no key_next keycap, map key_npage to `next' keysym */
       CONDITIONAL_REASSIGN ("%5", "kN", "next");
-- 
cgit v1.2.1