Como posso fazer minhas super chaves (Windows Key) se comportarem mais como Ctrl / Alt / Shift no Linux?

7

Depois de usar as Ctrl + "teclas de seta" por 13 anos para alternar áreas de trabalho virtuais em X-windows, convencei recentemente a usar as teclas Super (a tecla Windows e a tecla tecla de menu de contexto, que eu remapeei). Isso tudo funciona bem na maior parte. No entanto, algo ainda está captando os principais eventos que essas chaves estão enviando como se fossem uma tecla alfanumérica normal.

Por exemplo, notei isso pela primeira vez na planilha do Google Docs dizendo que, se eu pressionar a tecla do Windows sozinha na parte superior de uma célula, ela começará a editá-la. Ele não insere nada, apenas envia um evento chave que o Firefox vê e começa a editar a célula. Isso causou problemas em um documento colaborativo no qual eu estava trabalhando, como a maneira como o Google trabalha, o que me levou a apagar acidentalmente os dados em alguns campos antes que eu percebesse o que estava acontecendo.

Eu gosto de usar as super teclas, mas eu quero que elas se comportem mais como uma tecla Ctrl ou Alt em que é uma tecla modificadora e não envia nada até que uma segunda tecla seja pressionada.

Minha configuração é a seguinte:

  • Ubuntu 10.10
  • XFCE 4
  • Teclado Microsoft Natural Ergo 4000 (com o logotipo riscado fora do curso)
  • O seguinte é o meu arquivo .Xmodmap:

remove Lock = Caps_Lock

keycode 66 = Escape

! The below maps my other windows context menu key.

keycode 135 = Super_R

Editar: Conforme solicitado, aqui está a saída relevante do xev para um pressionamento de tecla e liberação de tecla da minha Super_L (tecla do lado esquerdo do Windows)

KeyPress event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849430, (177,174), root:(182,228),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
    
por deltaray 16.02.2011 / 00:49

1 resposta

9

Material não relacionado ao XFCE

Não será exatamente uma resposta para o seu problema, desculpe, mas ainda deve ser útil para alguém, pelo menos. No Gnome foi consertado em Ubuntus recente. Por isso, quero dizer tratar Win não como uma tecla modificadora. Antigamente, por exemplo no Ubuntu 9.04, você teve que fazer o seguinte:

Vá para System -> Preferences -> Keyboard , sob Layouts clique no botão Layout options... e, em Alt/Win key behavior list, escolha Meta is mapped to Win keys (ou Meta is mapped to Left Win ) em vez de Default .

O que isso realmente faz? Altera a opção altwin no arquivo $HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml (ou cria-o se ele não existir):

<?xml version="1.0"?>
<gconf>
        <entry name="options" mtime="1298496603" type="list" ltype="string">
                <li type="string">
                        <stringvalue>altwin     altwin:meta_win</stringvalue>
                </li>
        </entry>
</gconf>

Se você escolheu Left Win , haverá o seguinte valor de string:

altwin     altwin:left_meta_win

No Ubuntu 10.10 não é necessário, já que Default aparentemente mudou.

Mas você tem o XFCE, não o Gnome, então isso não ajudará você.

Material relacionado ao XFCE

Eu baixei o Xubuntu (9.10), joguei com ele um pouco e finalmente encontrei uma solução.

Em primeiro lugar, devo dizer que as configurações do teclado estão realmente parafusadas no XFCE. Na guia Settings -> Keyboard under Layout , você não tem muitas opções. Você não pode alterar XkbOptions e mesmo que você o faça manualmente em ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml , ele será sobrescrito. Então, mudei /etc/default/console-setup adicionando altwin:meta_win a XKBOPTIONS (use vírgula como separador se já houver outras opções). Ainda assim, sem sorte.

tl; dr

Qual é a solução?

Não se importe com a maneira como o XFCE lida com o teclado, porque aparentemente ele está quebrado. Use setxkbmap diretamente:

setxkbmap -option altwin:meta_win

(ou left_meta_win , o que você preferir)

Agora você precisa verificar se isso realmente resolveu seu problema. :)

Como aplicá-lo permanentemente?

echo -option altwin:meta_win >>~/.Xkbmap

Isso também pode ser feito para todos os usuários, escrevendo para /etc/X11/Xkbmap .

Como posso verificar rapidamente se altwin:meta_win ou altwin:left_meta_win foi aplicado?

setxkbmap -print

A linha com xkb_symbols deve ter algo como altwin(meta_win) .

    
por 23.02.2011 / 22:53