emacs -nw
我在 KDE 终端模拟器中以控制台模式运行konsole
。在 Emacs 中,我从包中定义了 Shift-Left 和 Shift-Right,windmove
以在缓冲区之间水平跳转。我看到的问题是konsole
似乎吞掉了 Shift-Left 和 Shift-Right 键。 Shift-Up 和 Shift-Down 键正在工作。我用 Emacs 读取了接收到的按键Ctrl-h l
,可以看到没有接收到 Shift-Left 和 Shift-Right 的按键,但是我得到了 Shift-Up 和 Shift-Down 的按键。
另一方面,我可以在内部运行 Emacs,xterm
也可以在内部运行 es Emacs gnome-terminal
,并接收 Shift-Left 和 Shift-Right 的正确键码:
ESC [ 1 ; 2 C [windmove-right]
ESC [ 1 ; 2 D [windmove-left]
看起来 KDEKonsole
本身正在处理 Shift-Left 和 Shieft-Right 组合键,而不是转发它们。我进入Settings->Edit-CurrentProfile->Keyboard
并编辑"Default (XFree 4)"
个人资料。然而,定义 Shift-Left 和 Shift-Right 不会生效:
Right+Shift \E[1;*C
Left+Shift \E[1;*D
并在“输入”对话框中进行测试,然后似乎会产生正确的输出:
但是,如果我应用设置并再次输入 Emacs,我不会收到任何 Shift-Left 和 Shift-Right 字符。我也尝试添加 -AppScreen 和 +AppScreen 但结果相同。
另一方面,我可以在“默认 (XFree 4)”配置文件中看到 Shift+Up 和 Shift+Down 的映射:
Up+Shift ScrollLineUp
Down+Shift ScrollLineDown
这些键码以以下形式到达 Emacs:
ESC [ 1 ; 2 A [windmove-up]
ESC [ 1 ; 2 B [windmove-down]
有谁知道为什么要特殊处理 Shift-Left 和 Shift-Right 以及如何让它们工作?
答案1
它们还被定义为全局 Konsole 快捷方式,用于切换到上一个/下一个选项卡。转到 Konsole 的“设置”->“配置快捷方式”并将其删除。
(我首先执行了此操作,然后执行您描述的步骤。我还必须重新启动 konsole 才能使更改生效;不确定您是否也需要重新启动。)