我正在运行几个月前安装的 Fedora 40。我注意到F10
我的 Emacs 无法运行我在 Emacs 中分配给它的功能:事实上,Emacs 不再看到该F10
键(我很确定这是在我升级到 Fedora 40 时开始发生的:它在 Fedora 38 中运行良好 - 我跳过了 Fedora 39)。
C-h C-k
通过使用(帮助功能描述某个键)并按下 ,我可以判断 Emacs 看不到该键F10
。通常,该键会在 Emacs 的回显区域中回显,并报告与其绑定的命令。在这种F10
情况下,回显区域中不会回显任何内容。相反,File
菜单会下拉。
这种行为似乎有些普遍:Firefox
和都Thunderbird
表现出相同的行为,这也是得出桌面环境正在执行此操作的另一个原因。然而,并非每个应用程序都会这样做:在gnome-terminal
和中xterm
,F10
显然只会生成转义序列:^[[21~
。
我确实gsettings list-recursively
发现了一个使用F10
: 的条目看起来很有希望,所以我将其设置为空:
$ gsettings get org.gnome.desktop.interface menubar-accel
'F10'
$ gsettings set org.gnome.desktop.interface menubar-accel ''
$ gsettings get org.gnome.desktop.interface menubar-accel
''
但据我所知,这没有任何作用(在多次重启之后:重启 Emacs、注销并重新登录、重启、关机并从头开始)。据我所知,所有图形小部件(设置、调整等)都在底层使用 Gsettings API,因此这应该可以找到罪魁祸首 - 但无济于事。
由于 Emacs 是使用 libgtk-3.0 构建的,因此我也尝试了按照此答案中所述进行 GTK 设置,但这也没有任何区别。
尽管我的主要兴趣是将其从当前的主人手中解放出来F10
并允许将其传递给 Emacs,但我也对您想出的任何解决类似问题的技巧/窍门/方法感兴趣。有什么想法吗?
版本信息:
- 操作系统:Fedora 40
- 内核:Linux 6.9.12-200.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC 星期六 7 月 27 日 15:56:15 UTC 2024 x86_64 GNU/Linux
- 侏儒:46.3
- Emacs:前沿上游,未发布(31.0.50),但 Fedora 40 附带的 Emacs 中也会出现这种情况:2024-07-16 的 GNU Emacs 29.4(build 1,x86_64-redhat-linux-gnu,GTK+ 版本 3.24.42,cairo 版本 1.18.0)
如果需要更多信息,我很乐意提供:请告诉我。
更新:回应下面 David G. 的评论,xev
确实可以看到F10
(并且如上所述,以及在 、 和 的情况下使菜单下拉的任何内容gnome-terminal
)。问题不在于它没有被看到:问题是它在我想要抓取它之前就被抓取了,而我不知道是什么抓取了它。这就是我试图找出的,希望我可以说服某些东西不要碰我:)xterm
File
Emacs
Firefox
Thunderbird
F10
为了回应 David G. 的进一步评论(感谢您的回复并让我保持诚实!),我尝试emacs -Q
在没有任何初始化文件(site-init(或 user-init 或 early-init))的情况下启动 Emacs site-start.el
。但 GTK 的建议很有趣。我构建了一个完全没有工具包的 Emacs,它的行为符合预期F10
:键是可见的,我可以将它绑定到命令。然后我在 GTK 文档中找到了这部分:它是关于 GTK4 的,我无法在 GTK3 文档中找到等效内容,但我假设两个版本中的行为是相同的。我不是 GTK 程序员,所以我还不知道如何关闭这种行为,但很明显,David G. 对 Emacs 中的 GTK 界面是罪魁祸首的说法是正确的。
我认为 emacs 使用两阶段输入处理过程(如果算上 GTK,前面还有另一个阶段),而 Ch k 只执行最后一个阶段。我不记得早期阶段的细节(但我认为是关于某些键重新映射)。
我建议尝试使用基本的调试程序,例如
xev
,看看它是否接收到F10
。这将让您确定问题出在 emacs 还是其外部。我怀疑您会发现大多数特殊/拦截键(如<Alt>F2
)也在 之前被拦截xev
。我怀疑
F10
是在 emacs 内部被拦截的,可能是在 GTK 界面中,可能是在 site lisp 中,也可能是在 GTK 界面的 elisp 配置和互连中。(最后要说的是:也许你应该在任何 GTK 特定的 elisp 文件中查找菜单栏和 F10 引用。)