Emacs:带数字键盘的前缀命令参数

时间:2013-09-19 09:31:47

标签: emacs keyboard-shortcuts

使用法语键盘,在没有按住shift的情况下无法访问常规数字,我想使用numpad能够发送前缀/数字参数以及emacs命令。 例如M-4 C-bM-6 C-k等等......

在本地,如果我尝试按键盘,我会<M-kp-2> is undefined

如何使用emacs配置或系统设置(使用LinuxMint15)使其正常工作?

(我已经通过了emacs docs,但我没有找到任何线索)

2 个答案:

答案 0 :(得分:3)

这是一个很好的问题。 <kp-2>之类的密钥在universal-argument-mapdigit-argument中都正确绑定。并且<kp-subtract>绑定到universal-argument-minus等。但是,Meta修饰符并未通过universal-argument-map来处理它们。

认为这是要走的路,但我不确定这是最好的方法:

 (define-key local-function-key-map [M-kp-2] [?\C-2])

这是有效的,它似乎与local-function-key-map中的其他小键盘键绑定并行。

顺便说一下,这样做不足

 (define-key universal-argument-map (kbd "<M-kp-2>") 'digit-argument)

期待其他答案。 (FWIW,解决方法是仅使用ESC <kp-3>而不是<M-kp-3>等。)

答案 1 :(得分:1)

将以下代码添加到您的init文件中(解决方案取自Nicolas Richard消息https://lists.gnu.org/archive/html/bug-gnu-emacs/2013-05/msg00365.html):

(dotimes (i 10)                         ; for all keys
  (dolist (prefix (list "M" "C"))       ; for both modifiers
    (global-set-key
     (read (format "[%s-kp-%s]" prefix i))
     'digit-argument)
    (put 
     (read (format "%s-kp-%s" prefix i))
     'ascii-character
     (+ ?0 i))))

这会将C-<kp-num>M-<kp-num>映射到带有标准数字键的相应键绑定。