Remapeando o Meta do Emacs para as chaves do Windows no Kubuntu

2

Após algumas horas de pesquisa, ainda não consigo descobrir como fazer isso.

Configuração:

  • Francês Windows Comfort Curve Keyboard 2000 (é por isso que quero remapear)
  • Portátil HP Pavilion dm4 com o Kubuntu 12.04.
  • Emacs 24.3.1 cassou-emacs-precise

Eu simplesmente quero as teclas ⊞ Win (+ left Alt se for mais fácil) para mapear a tecla ◆ Meta no Emacs. Eu tentei tudo o que posso pensar - xev me diz que as chaves são mapeadas para META_L e META_R do ponto de vista do KDE - por que diabos estou tendo tantos problemas?

Eu já vi muitas coisas sobre o remapeamento de coisas "mac -..." e "w32 -...", mas não estou executando nem um Mac, nem o Windows. Por que Alt não é bom para o meu ◆ Meta ? Alt Gr (direita Alt ) é usado para muitas letras em um teclado francês e não é prático alterar isso e eu quero um ◆ Meta tecla no lado direito do teclado.

Então eu fiz mais pesquisas: Usando o Konsole e emacs -nw não funciona, mas se eu mudar isso com o aplicativo de gerenciamento de teclado do KDE ou xmodmap então funciona com o Emacs no modo GUI . Win_R-w então C-h l dá:

M-w C-h l

para o Emacs no modo GUI e

ESC [> 0; 1 1 5; 0 c w C-h l

no emacs -nw no Konsole.

    
por AntonOfTheWoods 23.08.2013 / 15:56

1 resposta

1

Isso parece resultar da maneira como o Konsole manipula a chave Meta e requer um patch de origem para corrigir . (A seguir, 'a' é a versão não corrigida e 'b' é o corrigido.)

--- 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("3");
+    if (((ev->state() & TQt::AltButton) || (ev->state() & TQt::MetaButton)) && !metaspecified ) sendString("3");
     emit sndBlock(txt,len);
     return;
   }
    
por 23.08.2013 / 16:57