在 Kubuntu 上将 Emacs 的 Meta 键重新映射到 Windows 键

在 Kubuntu 上将 Emacs 的 Meta 键重新映射到 Windows 键

经过几个小时的搜索,我仍然不知道该如何做到这一点。

设置:

  • French Windows Comfort Curve Keyboard 2000(这就是我想要重新映射的原因)
  • 运行 Kubuntu 12.04 的 HP Pavilion dm4 笔记本电脑。
  • Emacs 24.3.1 cassou-emacs-precise

我只是希望这些⊞ Win键(如果更容易的话,+ 左Alt)映射到◆ MetaEmacs 中的键。我已经尝试了所有我能想到的方法 -xev告诉我这些键已映射到META_LKDEMETA_R的角度 - 我到底为什么会遇到这么多麻烦?

我看过很多关于重新映射“mac-...”和“w32-...”的内容,但我运行的既不是 Mac,也不是 Windows。为什么对我的? (right )Alt不起作用,它在法语键盘上用于表示很多字母,更改它不切实际,我想要键盘右侧的一个键。◆ MetaAlt GrAlt◆ Meta

因此我做了进一步的研究:使用 Konsoleemacs -nw不起作用,但如果我使用 KDE 的键盘管理应用程序更改它,xmodmap或者在 GUI 模式下使用 Emacs。Win_R-w 然后 Ch l 给出:

分子量

对于 GUI 模式下的 Emacs 和

ESC [ > 0 ; 1 1 5 ; 0 顺时针 Ch l

在 Konsole 中的 emacs -nw 中。

答案1

这似乎是由于 Konsole 处理 Meta 键的方式造成的,它需要源补丁进行修复。(以下,“a”表示未打补丁的版本,“b”表示打补丁的版本。)

--- a/konsole/konsole/TEmuVt102.cpp
+++ b/konsole/konsole/TEmuVt102.cpp
@@ -945,7 +945,8 @@  void TEmuVt102::onKeyPress( TQKeyEvent* ev )
                                      encodeMode(MODE_AppScreen     , BITS_AppScreen ) + // VT100 stuff
                                      encodeStat(TQt::ControlButton , BITS_Control   ) +
                                      encodeStat(TQt::ShiftButton   , BITS_Shift     ) +
-                                     encodeStat(TQt::AltButton     , BITS_Alt       ),
+                                     encodeStat(TQt::AltButton     , BITS_Alt       ) +
+                                     encodeStat(TQt::MetaButton        , BITS_Alt   ),
                           &cmd, &txt, &len, &metaspecified ))
 //printf("cmd: %d, %s, %d\n",cmd,txt,len);
   if (connected)
@@ -977,7 +978,7 @@  void TEmuVt102::onKeyPress( TQKeyEvent* ev )
     scr->setHistCursor(scr->getHistLines());

   if (cmd==CMD_send) {
-    if ((ev->state() & TQt::AltButton) && !metaspecified ) sendString("\033");
+    if (((ev->state() & TQt::AltButton) || (ev->state() & TQt::MetaButton)) && !metaspecified ) sendString("\033");
     emit sndBlock(txt,len);
     return;
   }

相关内容