all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Michael Marchionna <tralfaz@pacbell.net>
To: 8680@debbugs.gnu.org
Subject: bug#8680: nsterm.m does not distinguish key on the key pad
Date: Tue, 17 May 2011 10:34:01 -0700	[thread overview]
Message-ID: <93A6F1F6-C459-48BB-B9FB-956653A09D51@pacbell.net> (raw)
In-Reply-To: <625A3C9C-ACF2-42A0-B4E8-8ABDDA060131@pacbell.net>

In addition to the clear/NumLock key not being mapped the rest of the keypad keys do not seem to be
translated  as well, and hence can not be distinguished from keys on the main keyboard.  What follows
is a patch that remaps the keypad keys. at least on a aluminum apple keyboard, to the appropriate X11
virtual key codes.   Note the Clear/NumLock key is hardcoded to  XK_Clear.   There should probably be
a way to make it possible to configure it so that it translates to XK_Num_Lock.

diff --git a/src/nsterm.m b/src/nsterm.m
index 91f0cbb..322c9d9 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -87,6 +87,7 @@ static unsigned convert_ns_to_X_keysym[] =
   NSBeginFunctionKey,           0x58,
   NSSelectFunctionKey,          0x60,
   NSPrintFunctionKey,           0x61,
+  NSClearLineFunctionKey,       0x0B,
   NSExecuteFunctionKey,         0x62,
   NSInsertFunctionKey,          0x63,
   NSUndoFunctionKey,            0x65,
@@ -131,7 +132,24 @@ static unsigned convert_ns_to_X_keysym[] =
   NSNewlineCharacter,          0x0D,
   NSEnterCharacter,            0x8D,
 
-  0x1B,                                0x1B   /* escape */
+  0x1B,                                0x1B,  /* escape */
+
+  0x41,                         0xAE,  /* KP_Decimal */
+  0x43,                         0xAA,  /* KP_Multiply */
+  0x45,                         0xAB,  /* KP_Add */
+  0x4B,                         0xAF,  /* KP_Divide */
+  0x4E,                         0xAD,  /* KP_Subtract */
+  0x51,                         0xBD,  /* KP_Equal */
+  0x52,                         0xB0,  /* KP_0 */
+  0x53,                         0xB1,  /* KP_1 */
+  0x54,                         0xB2,  /* KP_2 */
+  0x55,                         0xB3,  /* KP_3 */
+  0x56,                         0xB4,  /* KP_4 */
+  0x57,                         0xB5,  /* KP_5 */
+  0x58,                         0xB6,  /* KP_6 */
+  0x59,                         0xB7,  /* KP_7 */
+  0x5B,                         0xB8,  /* KP_8 */
+  0x5C,                         0xB9   /* KP_9 */
 };
 
 
@@ -4503,10 +4521,10 @@ ns_term_shutdown (int sig)
   Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (emacsframe);
   int code;
   unsigned fnKeysym = 0;
-  int flags;
   static NSMutableArray *nsEvArray;
   static BOOL firstTime = YES;
   int left_is_none;
+  unsigned int flags = [theEvent modifierFlags];
 
   NSTRACE (keyDown);
 
@@ -4550,9 +4568,13 @@ ns_term_shutdown (int sig)
       code = ([[theEvent charactersIgnoringModifiers] length] == 0) ?
         0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0];
       /* (Carbon way: [theEvent keyCode]) */
+      
 
       /* is it a "function key"? */
-      fnKeysym = ns_convert_key (code);
+      if ( code < 0x00ff && (flags&NSNumericPadKeyMask) )
+       fnKeysym = ns_convert_key([theEvent keyCode]);
+      else
+        fnKeysym = ns_convert_key (code);
       if (fnKeysym)
         {
           /* COUNTERHACK: map 'Delete' on upper-right main KB to 'Backspace',
@@ -4565,7 +4587,6 @@ ns_term_shutdown (int sig)
 
       /* are there modifiers? */
       emacs_event->modifiers = 0;
-      flags = [theEvent modifierFlags];
 
       if (flags & NSHelpKeyMask)
           emacs_event->modifiers |= hyper_modifier;




  reply	other threads:[~2011-05-17 17:34 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-17  5:07 bug#8680: Cocoa Emacs not mapping Clear key on aluminum keyboards Michael Marchionna
2011-05-17 17:34 ` Michael Marchionna [this message]
2012-11-04  3:34   ` bug#8680: nsterm.m does not distinguish key on the key pad Chong Yidong
2011-05-23 20:11 ` bug#8680: emacs 24.0 OS X keypad patch Michael Marchionna
2011-07-04 17:42   ` Stefan Monnier
2011-07-07  3:04     ` Adrian Robert
2011-07-07 14:55       ` Michael Marchionna
2013-12-10 22:13 ` bug#8680: Bug #8680 Andrew Stein
2013-12-10 22:40   ` bug#8680: Glenn Morris
2013-12-10 22:54     ` bug#8680: Andrew Stein
2013-12-11  4:53       ` bug#8680: Stefan Monnier
2013-12-12  0:48         ` bug#8680: Leo Liu
2013-12-13 21:50           ` bug#8680: releases Juri Linkov
2013-12-19  3:00             ` Leo Liu
2013-12-19 13:43               ` Stefan Monnier
2013-12-19 17:12                 ` Glenn Morris
2013-12-19 18:09                   ` The next releases Stefan Monnier
2013-12-19 21:22                     ` Stefan Monnier
2013-12-19 22:31                       ` Bastien
2013-12-20  2:12                         ` Stefan Monnier
2013-12-22  0:54                       ` Xue Fuqiao
2013-12-23  0:57                         ` Glenn Morris
2013-12-23  1:37                           ` Ted Zlatanov
2013-12-23  3:11                             ` Glenn Morris
2013-12-23  3:47                               ` Glenn Morris
2013-12-23 13:05                               ` Ted Zlatanov
2013-12-20  7:25                     ` Chong Yidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=93A6F1F6-C459-48BB-B9FB-956653A09D51@pacbell.net \
    --to=tralfaz@pacbell.net \
    --cc=8680@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.