我正在使用GNU Emacs 23.2。我想将[Control]绑定到密钥 ö 在我的(德国)键盘上。这样我就可以轻松触发 C- 用右手在前缀命令中。不幸的是我不知道该怎么做。 Emacs中的 global-set-key
在这里没有帮助,因为紧迫 C- 不是命令。
更新: 我在Win32和GNU / Linux上。我想在emacs中只有这个绑定 - 用emacs自己的方式实现。
我正在使用GNU Emacs 23.2。我想将[Control]绑定到密钥 ö 在我的(德国)键盘上。这样我就可以轻松触发 C- 用右手在前缀命令中。不幸的是我不知道该怎么做。 Emacs中的 global-set-key
在这里没有帮助,因为紧迫 C- 不是命令。
更新: 我在Win32和GNU / Linux上。我想在emacs中只有这个绑定 - 用emacs自己的方式实现。
Answers:
怎么样? 控制锁 键?
完全等同于的一个障碍 控制 是它需要知道它何时被按下以及何时被释放。 Emacs键盘事件(与鼠标事件不同)不会被分成“向下”和“向上”部分,这使我们难以在那里检测到“释放”。例如,唯一的显着区别 C-x C-o 和 C-x o 是第二个角色之前的'控制'事件。但是,如果您“放开”部分通过键序列,这只是一个问题
此处的方法允许您将任何键绑定为 控制锁 在Emacs里面。我还为一些关键序列提供了一些简单的解决方法 控制 关键部分通过。
下面的代码为您提供了一个'Control Lock'绑定,它包含一个完整键序列的修饰符。以下示例将此绑定到 ö ,但你可以把它绑定到你喜欢的任何东西。
(defun read-control-sequence (prompt)
(let (keys)
(setq extra-keyboard-modifiers ?\C-a)
(setq keys (read-key-sequence-vector (or prompt "[Control lock]")))
(setq extra-keyboard-modifiers 0)
keys))
(define-key key-translation-map [?ö] 'read-control-sequence)
要使用它,只需按(并释放) ö 。下一个键就像是一样 控制 被压了。如果您输入的密钥是前缀密钥(例如,您已按下 X 要得到 C-X ) 然后 控制 将保留下一个键,依此类推,直到您按下非前缀键。
如果你经常使用它,你可能还想在你的中添加绑定 .emacs
对于没有“放手”的常见命令 控制 部分通过。例如,这个:
(global-set-key (kbd "C-x C-4")
(lookup-key (current-global-map)
(kbd "C-x 4")))
将使所有命令开始 C-x 4 可以在 C-x C-4 也是这样打字 öx4 f 会跑 find-file-other-window
。
您可能还会发现添加映射很有帮助(例如,对于资本 Ö )只是提供一个独立的 C-X :
(define-key key-translation-map [?Ö] [(control ?x)])
所有上述代码都可以通过添加到您的代码来安装(像往常一样) .emacs
文件并重新启动Emacs,或者输入 C-x C-e 在每个顶级表达式之后。你会发现这种方法或多或少地与Emacs的其他部分无缝集成。
不可能, 控制 是一个修饰键,由操作系统/窗口管理器处理。
在SO上看到这个问题: 将Caps Lock映射到Windows上的emacs内的Control