1

我想将 Alt_L + j 设置为'backward-char,并将 Alt_R + j 设置为'windmove-left。关注 OSX Emacs:解绑正确的 alt?,我尝试了以下配置。但它不起作用。

(setq ns-right-alternate-modifier nil)
(global-set-key (kbd "M-j") 'backward-char) ;; it works
(global-set-key (kbd "Alt_R-j") 'windmove-left) ;; it does not work
(global-set-key (kbd "M_R-j") 'windmove-left) ;; it does not work
(global-set-key (kbd "Meta_R-j") 'windmove-left) ;; it does not work

打开我的emacs时,出现error: Key sequence A lt _ R - j starts with non-prefix key A. 看来Alt_R, M_R, Meta_R是非法的。我不知道它应该是什么。任何建议表示赞赏。

我的 .emacs 除了上面的语句外没有其他内容。这是版本。GNU Emacs 23.1.1(i486-pc-linux-gnu, GTK + Version 2.20.1) 2012-05-18 在roseapple 上,由 Debian 修改。

4

2 回答 2

1

问问 Emacs。如果键序列被识别,那么在它前面C-hk总是会给你插入的语法kbd

编辑:

你读错了。

第一行告诉你“ (键序列)运行命令......”

会告诉您刚刚键入的序列。(同一命令也可能绑定到其他键的事实不是您要寻找的。)

您所做的是将命令绑定到 Ctrl + Meta + j (我确定如果您键入它,它将起作用)。

但是,从您所说的很明显,实际报告的键序列是M-j这意味着您的右 alt 键正在充当 Meta 修饰符(很可能就像您的左 alt 键一样),所以您可能没有成功在让您的操作系统以不同方式对待它们的第一步。

于 2013-06-23T16:28:09.900 回答
1

Alt_R 和 Alt_L 是键,而不是修饰符。这些键(通过例如xmodmap)与修饰符相关联,但如果您想区分它们,您需要将它们与不同的修饰符相关联(例如,一个与“meta”修饰符相关联,另一个与“alt”修饰符相关联)。Emacs 依靠窗口系统来进行这种分类,因此您必须通过 xmodmap 来进行。

完成后,您将能够将事物绑定到[?\A-j]一个和[?\M-j]另一个。

于 2013-06-23T19:47:23.547 回答