unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: "Per Starbäck" <per.starback@gmail.com>, emacs-devel@gnu.org
Subject: Re: Modified keypad keys
Date: Fri, 28 Sep 2012 18:29:27 +0300	[thread overview]
Message-ID: <87pq566yvs.fsf@mail.jurta.org> (raw)
In-Reply-To: <jwvehlmtv3j.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Fri, 28 Sep 2012 04:23:29 -0400")

>> I wonder what the rationale for that is?
>
> No good reason, AFAIK.
>
>> Would there be drawbacks in letting <M-kp-8> behave as M-8 as long as
>> there is no explicit binding for <M-kp-8>?
>
> No, other than the fact that doing it for all combinations of modifiers
> leads to adding lots and lots of entries to function-key-map.

Had the same problem and here is what I got so far.
Don't know if it's good to install something like this?

=== modified file 'lisp/bindings.el'
--- lisp/bindings.el	2012-09-23 10:21:34 +0000
+++ lisp/bindings.el	2012-09-28 15:27:42 +0000
@@ -1039,36 +1039,31 @@
 ;; FIXME: rather than list such mappings for every modifier-combination,
 ;;   we should come up with a way to do it generically, something like
 ;;   (define-key function-key-map [*-kp-home] [*-home])
-(define-key function-key-map [kp-home] [home])
-(define-key function-key-map [kp-left] [left])
-(define-key function-key-map [kp-up] [up])
-(define-key function-key-map [kp-right] [right])
-(define-key function-key-map [kp-down] [down])
-(define-key function-key-map [kp-prior] [prior])
-(define-key function-key-map [kp-next] [next])
-(define-key function-key-map [M-kp-next] [M-next])
-(define-key function-key-map [kp-end] [end])
-(define-key function-key-map [kp-begin] [begin])
-(define-key function-key-map [kp-insert] [insert])
+
+(defun powerset (list)
+  (if (null list)
+      '(nil)
+    (let ((ps (powerset (cdr list))))
+      (append ps (mapcar (lambda (e) (cons (car list) e)) ps)))))
+
+(let ((modifiers (powerset '(control meta super hyper)))
+      (keys '((kp-end . end) (kp-down . down) (kp-next . next)
+	      (kp-left . left) (kp-begin . begin) (kp-right . right)
+	      (kp-home . home) (kp-up . up) (kp-prior . prior)
+	      (kp-insert . insert) (kp-delete . delete) (kp-enter . enter)
+	      (kp-add . +) (kp-subtract . -) (kp-multiply . *) (kp-divide . /)
+	      (kp-1 . ?1) (kp-2 . ?2) (kp-3 . ?3) (kp-4 . ?4) (kp-5 . ?5)
+	      (kp-6 . ?6) (kp-7 . ?7) (kp-8 . ?8) (kp-9 . ?9) (kp-0 . ?0)
+	      (kp-decimal . .))))
+  (dolist (pair keys)
+    (dolist (mod modifiers)
+      (define-key function-key-map
+	(vector (append mod (list (car pair))))
+	(vector (append mod (list (cdr pair))))))))
+
 (define-key function-key-map [backspace] [?\C-?])
 (define-key function-key-map [delete] [?\C-?])
 (define-key function-key-map [kp-delete] [?\C-?])
-(define-key function-key-map [S-kp-end] [S-end])
-(define-key function-key-map [S-kp-down] [S-down])
-(define-key function-key-map [S-kp-next] [S-next])
-(define-key function-key-map [S-kp-left] [S-left])
-(define-key function-key-map [S-kp-right] [S-right])
-(define-key function-key-map [S-kp-home] [S-home])
-(define-key function-key-map [S-kp-up] [S-up])
-(define-key function-key-map [S-kp-prior] [S-prior])
-(define-key function-key-map [C-S-kp-end] [C-S-end])
-(define-key function-key-map [C-S-kp-down] [C-S-down])
-(define-key function-key-map [C-S-kp-next] [C-S-next])
-(define-key function-key-map [C-S-kp-left] [C-S-left])
-(define-key function-key-map [C-S-kp-right] [C-S-right])
-(define-key function-key-map [C-S-kp-home] [C-S-home])
-(define-key function-key-map [C-S-kp-up] [C-S-up])
-(define-key function-key-map [C-S-kp-prior] [C-S-prior])
 ;; Don't bind shifted keypad numeric keys, they reportedly
 ;; interfere with the feature of some keyboards to produce
 ;; numbers when NumLock is off.




  reply	other threads:[~2012-09-28 15:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-28  6:40 Modified keypad keys Per Starbäck
2012-09-28  8:23 ` Stefan Monnier
2012-09-28 15:29   ` Juri Linkov [this message]
2012-09-28 20:16     ` Stefan Monnier
2012-09-29  2:14       ` Stefan Monnier
2012-09-29 19:19       ` Juri Linkov
2012-09-30  1:41         ` Stefan Monnier
2012-09-30  9:56           ` Juri Linkov
2012-09-30 19:45             ` Stefan Monnier
2012-10-01  9:29               ` Juri Linkov
2012-10-01 15:03                 ` Stefan Monnier
2012-10-04 18:41                   ` Juri Linkov
2012-10-04 23:26                     ` Andreas Schwab
2012-10-05 14:41                       ` Andreas Schwab
2012-10-05 16:43                         ` Juri Linkov
2012-10-05 16:55                           ` Andreas Schwab
2012-10-05 17:05                             ` Juri Linkov
2012-10-01  8:02         ` power set (Re: Modified keypad keys) Stephen Berman
2012-10-01  8:35           ` Christopher Monsanto
2012-10-01  9:07             ` Stephen Berman
2012-10-01 12:42               ` Lars Magne Ingebrigtsen
2012-10-01 13:06                 ` Stephen Berman
2012-10-01  9:27           ` Juri Linkov

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87pq566yvs.fsf@mail.jurta.org \
    --to=juri@jurta.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=per.starback@gmail.com \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).