Emacs:使用功能键(F19)作为元数据

Emacs:使用功能键(F19)作为元数据,emacs,elisp,key-bindings,Emacs,Elisp,Key Bindings,我在Mac电脑上,想使用功能键F19作为meta (有一个很好的理由,尽管这有点像黑客:我的Build(另外一个优秀的port by)不支持只使用左alt键作为元,同时保留右alt键的本机行为(插入特殊字符)。因此,我使用PCKeyboardHack在系统级将左alt键重新映射到一个未使用的键-F19(xmodmap被严重遗漏)并希望告诉Emacs将其用作元数据。) 那么,我如何使用功能键(在我的例子中是F19)作为Emacs中的元键呢 (我对Emacs还比较陌生,在谷歌搜索了一下之后,我尝试了

我在Mac电脑上,想使用功能键F19作为meta

(有一个很好的理由,尽管这有点像黑客:我的Build(另外一个优秀的port by)不支持只使用左alt键作为元,同时保留右alt键的本机行为(插入特殊字符)。因此,我使用PCKeyboardHack在系统级将左alt键重新映射到一个未使用的键-F19(xmodmap被严重遗漏)并希望告诉Emacs将其用作元数据。)

那么,我如何使用功能键(在我的例子中是F19)作为Emacs中的元键呢

(我对Emacs还比较陌生,在谷歌搜索了一下之后,我尝试了类似的东西

(define-key global-map [f19] \M)
但是,这当然不能起作用(
符号作为变量的值是空的:M

好吧,用

(setq x-alt-keysym symbol)
你可以告诉emacs什么键可以理解为meta,但它只接受“meta”、“alt”、“super”和“hyper”作为符号。也许可以用f19试试

另一个可行但需要适应新工作方式的选项是使用F19作为前缀键(就像使用C-h或F1调用帮助命令一样):

(定义前缀命令“f19映射”)
(全局设置键(kbd“”)f19映射)
(全局设置键(kbd“x”)'执行扩展命令)
(全局设置键(kbd“u”)'大写字)
...
编写配置应该不太难。只需按C-h b键即可获取所有现有的键绑定并编辑帮助缓冲区。删除所有不以M-开头的行,然后使用矩形替换所有出现的^M-by(全局设置键(kbd),依此类推


另一种选择是将密钥绑定到Esc而不是F19,只要您的系统支持,并使用Esc前缀而不是F19前缀。这样,您根本不必更改emacs配置。

此线程与下面链接中的另一个线程非常相似,这可能有助于您正确操作方向:谢谢你的链接。让我尝试了其他东西,我对它现在的工作方式很满意。如果它对某人有用:我将左(并且只有左)alt键重新映射到fn(函数)键,并将(setq mac函数修饰符的meta)放入我的.emacs中。这是相同的想法,但使用fn键而不是f19。
(define-prefix-command 'f19-map)
(global-set-key (kbd "<f19>") 'f19-map)
(global-set-key (kbd "<f19> x") 'execute-extended-command)
(global-set-key (kbd "<f19> u") 'upcase-word)
...