【发布时间】:2014-03-23 23:49:25
【问题描述】:
我在没有 X 组织的笔记本电脑上使用 emacs24,只有 Llinux 控制台。笔记本电脑是联想 Ideapad。当我点击 Fn(我在各种组合中使用它来调整音量、亮度等)时,选择标记的设置与我点击 C-SPC 时类似。这是不切实际的,因为我想在不选择文本的情况下改变音量。
在 emacs 中使用 C-h k <kbd>Fn</kbd> 检查我得到的输出与按下 C-h k C-SPC 时完全相同:
C-@ runs the command set-mark-command, which is an interactive compiledLisp function.
It is bound to C-@, C-SPC.
(set-mark-command ARG)
...
检查$ acpi_listen 按C-SPC、Fn 键和C-@ 都给了我相同的输出:^@。换句话说,它们都被解释为同一个 acpi 事件。
我可以取消设置C-@:
(global-set-key (kbd "\C-@") 'ignore)
但这会阻止C-SPC 正常工作,并且结合以上内容我无法通过以下方式重新设置它:
(global-set-key (kbd "C-SPC") 'set-mark-command)
同时,如果我使用 $ showkey,我会通过按 Fn 得到:keycode 143 press 和 keycode 143 release。
什么 elisp 代码可以使 emacs 区分 C-SPC 和 Fn 并使我能够取消设置后者而不取消设置前者?
【问题讨论】:
-
如果 acpi_listen 为每个键报告相同的值,那么 Emacs 将无法区分它们。 Emacs 只能使用操作系统提供的信息,而这里的问题是操作系统。我认为您需要检查 xmodmap 以在 Emacs 之外解决这个问题。
-
我的笔记本电脑上没有安装 X org 服务器 - 在线控制台。 xmodmap 会起作用吗?或者改为查看 /etc/inputrc 是否有意义?
-
抱歉,错过了您只是在控制台中。 xmodmap 需要 X。我不知道用什么来代替 :(
标签: emacs elisp keyboard-shortcuts