接受的答案与第一条评论中的链接相结合,足以开始一个完整的解决方案。步骤是:
- 使您的终端输出密钥的转义码
- 让 Emacs 将转义码识别为标准按键
- 在模式映射中绑定按键
第一个非常依赖终端和/或操作系统。
第一条评论中的链接显示了 X Window System 的一些示例。键名在/usr/X11R6/include/X11/keysymdef.h
(或 try locate keysymdef.h
)中可用,前缀为XK_
(出于我们的目的,应将其删除)。我读到符号名称优于键文字。
我目前没有运行 X,但我认为在你的情况下它应该是这样的:
XTerm.VT100.Translations: #override \
Ctrl ~Meta ~Shift <Key> equal: string(0x1b) string("[emacs-C-=")\n
第一个字符串是转义,第二个是您选择的。
在 iTerm 中,您可以使用Preferences->Keys
并选择. 例如,我有:Send Escape Sequence
Action
Emacs Wiki列出了其他终端的一些配置方法。
现在您可以教 Emacs 将其识别为C-=. 首先define-key
进入input-decode-map
. 我有几个辅助功能:
(defun my/global-map-and-set-key (key command &optional prefix suffix)
"`my/map-key' KEY then `global-set-key' KEY with COMMAND.
PREFIX or SUFFIX can wrap the key when passing to `global-set-key'."
(my/map-key key)
(global-set-key (kbd (concat prefix key suffix)) command))
(defun my/map-key (key)
"Map KEY from escape sequence \"\e[emacs-KEY\."
(define-key function-key-map (concat "\e[emacs-" key) (kbd key)))
那么:
(my/global-map-and-set-key "C-=" 'some-function-to-bind-to)
某些键(当前:()\|;'`"#.,
)将需要在字符串中转义,例如C-\.
.