* How to translate M-kp-multiply to M-* before key is mapped to function? @ 2004-07-02 15:10 paul 2004-07-02 15:28 ` Kai Grossjohann 2004-07-02 16:32 ` Kevin Rodgers 0 siblings, 2 replies; 8+ messages in thread From: paul @ 2004-07-02 15:10 UTC (permalink / raw) Hello all, I've nearly pulled out my hair for the following problem; I want to translate M-kp-multiply to M-* *BEFORE* the key gets bound to its default function (in my case pop-tag-mark). I do *not* want to use global-set-key but am looking for a general way to remap non-ascii input events. Using (define-key function-key-map ...) or (define-key key-translation-map ...) is too late; I can remap the key, but the function pop-tag-mark is not called. Trying an approach with keyboard-translate drives me nuts because it does not seem to support non-ascii events. Help! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-02 15:10 How to translate M-kp-multiply to M-* before key is mapped to function? paul @ 2004-07-02 15:28 ` Kai Grossjohann 2004-07-02 16:32 ` Kevin Rodgers 1 sibling, 0 replies; 8+ messages in thread From: Kai Grossjohann @ 2004-07-02 15:28 UTC (permalink / raw) litter@graffiti.net (paul) writes: > I've nearly pulled out my hair for the following problem; > I want to translate M-kp-multiply to M-* *BEFORE* the key > gets bound to its default function (in my case pop-tag-mark). Maybe (global-set-key (kbd "M-<kp_multiply>") (kbd "M-*")) is enough? Kai ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-02 15:10 How to translate M-kp-multiply to M-* before key is mapped to function? paul 2004-07-02 15:28 ` Kai Grossjohann @ 2004-07-02 16:32 ` Kevin Rodgers 2004-07-04 21:51 ` paul 1 sibling, 1 reply; 8+ messages in thread From: Kevin Rodgers @ 2004-07-02 16:32 UTC (permalink / raw) paul wrote: > I've nearly pulled out my hair for the following problem; > I want to translate M-kp-multiply to M-* *BEFORE* the key > gets bound to its default function (in my case pop-tag-mark). You must be running emacs without a window system (or under a window system, but with the -nw command line option). In an xterm on my platform (i386-pc-solaris2.7, X toolkit), `C-h k M-kp-multiply' shows | ESC * runs the command pop-tag-mark and then `C-h l' shows | C-h k ESC * C-h l The odd thing is that function-key-map contains this entry (kp-multiply . [42]) but no escape sequence that maps to [kp-multiply] in the way that `ESC [ 1 1 ~' is bound to [f1] or `ESC O p' is bound to [kp-1]. > I do *not* want to use global-set-key but am looking for > a general way to remap non-ascii input events. What non-ASCII input event do you think your terminal is sending to Emacs? > Using (define-key function-key-map ...) or (define-key key-translation-map ...) > is too late; I can remap the key, but the function pop-tag-mark is not > called. Since setting function-key-map and key-translation-map do not change the results reported by `C-h k' and `C-h l', I don't think they have anything to do with it: I think it means that the xterm is actually sending `*' to Emacs, not an escape sequence. > Trying an approach with keyboard-translate drives me nuts because > it does not seem to support non-ascii events. What do you want to do? It seems like you want to bind M-kp-multiply to a different command, but for some reason you don't want to use global-set-key like this: (global-set-key "\M-*" 'whatever) -- Kevin Rodgers paul wrote: > I've nearly pulled out my hair for the following problem; > I want to translate M-kp-multiply to M-* *BEFORE* the key > gets bound to its default function (in my case pop-tag-mark). You must be running emacs without a window system (or under a window system, but with the -nw command line option). In an xterm on my platform (i386-pc-solaris2.7, X toolkit), `C-h k M-kp-multiply' shows | ESC * runs the command pop-tag-mark and then `C-h l' shows | C-h k ESC * C-h l The odd thing is that function-key-map contains this entry (kp-multiply . [42]) but no escape sequence that maps to [kp-multiply] in the way that `ESC [ 1 1 ~' is bound to [f1] or `ESC O p' is bound to [kp-1]. > I do *not* want to use global-set-key but am looking for > a general way to remap non-ascii input events. What non-ASCII input event do you think your terminal is sending to Emacs? > Using (define-key function-key-map ...) or (define-key key-translation-map ...) > is too late; I can remap the key, but the function pop-tag-mark is not > called. Since setting function-key-map and key-translation-map do not change the results reported by `C-h k' and `C-h l', I don't think they have anything to do with it: I think it means that the xterm is actually sending `*' to Emacs, not an escape sequence. > Trying an approach with keyboard-translate drives me nuts because > it does not seem to support non-ascii events. What do you want to do? It seems like you want to bind M-kp-multiply to a different command, but for some reason you don't want to use global-set-key like this: (global-set-key "\M-*" 'whatever) -- Kevin Rodgers ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-02 16:32 ` Kevin Rodgers @ 2004-07-04 21:51 ` paul 2004-07-05 8:01 ` paul 2004-07-05 18:05 ` Stefan Monnier 0 siblings, 2 replies; 8+ messages in thread From: paul @ 2004-07-04 21:51 UTC (permalink / raw) My problem is, is that kp-multiply is bound to * somewhere down the line, but C-kp-multiply, M-kp-multiply and C-M-kp-multiply are not. I would like C-kp-multiply to act like C-*, M-multiply to act like M-*, and C-M-kp-multiply to act like C-M-* (without having to rely on information to what functions C-*, M-* and C-M-* are bound). How to tell keyboard-translate to do just this? I tried any sequence of char, strings, ints etc. to get keyboard-translate to do what I want, but the closest I get are errors which show that my literals are wrong or are interpreted as 'C-k' (with 'p-multiply' as the trail of the literal) etc. Kevin Rodgers <ihs_4664@yahoo.com> wrote in message news:<40E58E31.60508@yahoo.com>... > paul wrote: > > I've nearly pulled out my hair for the following problem; > > I want to translate M-kp-multiply to M-* *BEFORE* the key > > gets bound to its default function (in my case pop-tag-mark). > > You must be running emacs without a window system (or under a window > system, but with the -nw command line option). In an xterm on my > platform (i386-pc-solaris2.7, X toolkit), `C-h k M-kp-multiply' shows > > | ESC * runs the command pop-tag-mark > > and then `C-h l' shows > > | C-h k ESC * C-h l > > The odd thing is that function-key-map contains this entry > > (kp-multiply . [42]) > > but no escape sequence that maps to [kp-multiply] in the way that `ESC [ > 1 1 ~' is bound to [f1] or `ESC O p' is bound to [kp-1]. > > > I do *not* want to use global-set-key but am looking for > > a general way to remap non-ascii input events. > > What non-ASCII input event do you think your terminal is sending to > Emacs? > > > Using (define-key function-key-map ...) or (define-key key-translation-map ...) > > is too late; I can remap the key, but the function pop-tag-mark is not > > called. > > Since setting function-key-map and key-translation-map do not change the > results reported by `C-h k' and `C-h l', I don't think they have > anything to do with it: I think it means that the xterm is actually > sending `*' to Emacs, not an escape sequence. > > > Trying an approach with keyboard-translate drives me nuts because > > it does not seem to support non-ascii events. > > What do you want to do? It seems like you want to bind M-kp-multiply to > a different command, but for some reason you don't want to use > global-set-key like this: > > (global-set-key "\M-*" 'whatever) > > -- > Kevin Rodgers > paul wrote: > > I've nearly pulled out my hair for the following problem; > > I want to translate M-kp-multiply to M-* *BEFORE* the key > > gets bound to its default function (in my case pop-tag-mark). > > You must be running emacs without a window system (or under a window > system, but with the -nw command line option). In an xterm on my > platform (i386-pc-solaris2.7, X toolkit), `C-h k M-kp-multiply' shows > > | ESC * runs the command pop-tag-mark > > and then `C-h l' shows > > | C-h k ESC * C-h l > > The odd thing is that function-key-map contains this entry > > (kp-multiply . [42]) > > but no escape sequence that maps to [kp-multiply] in the way that `ESC [ > 1 1 ~' is bound to [f1] or `ESC O p' is bound to [kp-1]. > > > I do *not* want to use global-set-key but am looking for > > a general way to remap non-ascii input events. > > What non-ASCII input event do you think your terminal is sending to > Emacs? > > > Using (define-key function-key-map ...) or (define-key key-translation-map ...) > > is too late; I can remap the key, but the function pop-tag-mark is not > > called. > > Since setting function-key-map and key-translation-map do not change the > results reported by `C-h k' and `C-h l', I don't think they have > anything to do with it: I think it means that the xterm is actually > sending `*' to Emacs, not an escape sequence. > > > Trying an approach with keyboard-translate drives me nuts because > > it does not seem to support non-ascii events. > > What do you want to do? It seems like you want to bind M-kp-multiply to > a different command, but for some reason you don't want to use > global-set-key like this: > > (global-set-key "\M-*" 'whatever) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-04 21:51 ` paul @ 2004-07-05 8:01 ` paul 2004-07-05 18:05 ` Stefan Monnier 1 sibling, 0 replies; 8+ messages in thread From: paul @ 2004-07-05 8:01 UTC (permalink / raw) litter@graffiti.net (paul) wrote in message news:<bb3e39cd.0407041351.2c99aa97@posting.google.com>... Maybe I should add this to clarify things a bit; my emacs is GNU Emacs 21.3.1 (i386-mingw-nt5.0.2195) and my kp-multiply keys show up in C-h k as: *, <C-kp-multiply>, <M-kp-multiply> and <C-M-kp-multiply> and C-h l shows: C-h k <kp-multiply> C-h k <M-kp-multiply> C-h k <C-kp-multiply> C-h k <C-M-kp-multiply> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-04 21:51 ` paul 2004-07-05 8:01 ` paul @ 2004-07-05 18:05 ` Stefan Monnier 2004-07-06 9:23 ` paul 1 sibling, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2004-07-05 18:05 UTC (permalink / raw) > My problem is, is that kp-multiply is bound to * somewhere down the line, > but C-kp-multiply, M-kp-multiply and C-M-kp-multiply are not. I would > like C-kp-multiply to act like C-*, M-multiply to act like M-*, and > C-M-kp-multiply to act like C-M-* (without having to rely on information > to what functions C-*, M-* and C-M-* are bound). > How to tell keyboard-translate to do just this? You need something like (define-key function-key-map [M-kp-multiply] [?\M-*]) (define-key function-key-map [C-kp-multiply] [?\C-*]) (define-key function-key-map [C-M-kp-multiply] [?\C-\M-*]) I don't think there is an easy way to have all combinations mapped in a single step. Sadly. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-05 18:05 ` Stefan Monnier @ 2004-07-06 9:23 ` paul 2004-07-07 17:13 ` Stefan Monnier 0 siblings, 1 reply; 8+ messages in thread From: paul @ 2004-07-06 9:23 UTC (permalink / raw) Stefan Monnier <monnier@iro.umontreal.ca> wrote in message news:<jwvacyenxga.fsf-monnier+gnu.emacs.help@gnu.org>... > > My problem is, is that kp-multiply is bound to * somewhere down the line, > > but C-kp-multiply, M-kp-multiply and C-M-kp-multiply are not. I would > > like C-kp-multiply to act like C-*, M-multiply to act like M-*, and > > C-M-kp-multiply to act like C-M-* (without having to rely on information > > to what functions C-*, M-* and C-M-* are bound). > > > How to tell keyboard-translate to do just this? > > You need something like > > (define-key function-key-map [M-kp-multiply] [?\M-*]) > (define-key function-key-map [C-kp-multiply] [?\C-*]) > (define-key function-key-map [C-M-kp-multiply] [?\C-\M-*]) > > I don't think there is an easy way to have all combinations mapped in > a single step. Sadly. > > > Stefan Hi Stefan, Thanks for your reply. I don't mind having to do multiple steps for this. Unfortunately, the solution you propose is the one I tried too. It doesn't work. Although it indeed remaps the key unto the correct key, it does *NOT* call the function bound to that key. This is due to the order in which this remapping is done, it happens *after* the effects of global-set-key, as far as I can tell (at least it does for M-*, pop-tag-mark). Regards, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: How to translate M-kp-multiply to M-* before key is mapped to function? 2004-07-06 9:23 ` paul @ 2004-07-07 17:13 ` Stefan Monnier 0 siblings, 0 replies; 8+ messages in thread From: Stefan Monnier @ 2004-07-07 17:13 UTC (permalink / raw) > Although it indeed remaps the key unto the correct key, it does *NOT* call > the function bound to that key. This is due to the order in which this > remapping is done, it happens *after* the effects of global-set-key, as > far as I can tell (at least it does for M-*, pop-tag-mark). No, you are mistaken. The problem you're seeing must be due to something else. The way it works is: - if the key is bound in the normal maps, use the binding. - else if the key has a binding is function-key-map, do the rebinding and then look up the result in the normal maps. So one problem may be if you have M-kp-multiply bound to a function in one of the normal maps (global, of buffer-local), in which case function-key-map will indeed be ignored. Another problem might be if M-kp-multiply is not coming directly from the keyboard but is itself the result of mapping some keyboard's input through function-key-map, in which case it will not go through function-key-map again. This can happen e.g. if you run in a text terminal. You can also try (define-key key-translation-map [M-kp-multiply] [?\M-*]) because key-translation-map does the translation whether there is a normal binding or not. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-07-07 17:13 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-07-02 15:10 How to translate M-kp-multiply to M-* before key is mapped to function? paul 2004-07-02 15:28 ` Kai Grossjohann 2004-07-02 16:32 ` Kevin Rodgers 2004-07-04 21:51 ` paul 2004-07-05 8:01 ` paul 2004-07-05 18:05 ` Stefan Monnier 2004-07-06 9:23 ` paul 2004-07-07 17:13 ` Stefan Monnier
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).