Modificando o layout do teclado no X11: usando Alt + shift + 2 para @

3

Estou usando um MacBook com layout croata. O layout comum do PC Croatian (no Windows e no Linux) usa combinações com AltGr para obter vários símbolos, como ...

  • AltGr + V para @
  • AltGr + F para [
  • AltGr + B para {

No OS X, isso é substituído por ..

  • Alt + Deslocamento + 2 para @
  • Alt + Š para [
  • Alt + Deslocamento + Š para {

- isto é, as posições de layout dos EUA + alt fornecem o símbolo necessário.

Quando estou trabalhando com o Linux, acho difícil voltar ao mapeamento de PC na Croácia. Por isso, tenho a tendência de usar o layout americano mais (e, em seguida, tenho o problema de não conseguir digitar símbolos locais como ČĆŽŠĐ, além do problema de NÃO ter que digitar Alt para @, [ {, etc.)

As definições de mapeamento do teclado, localizadas no Ubuntu em /usr/share/X11/xkb , fornecem uma maneira fácil de remapear símbolos no keydown, deslocamento + keydown , altgr + keydown e altgr + deslocamento + keydown . Não consegui encontrar uma maneira de mapear as coisas para alt + keydown e alt + shift + keydown .

Como posso mapear glifos para alt + keydown e alt + shift + keydown em X11?

    
por Ivan Vučica 13.05.2011 / 15:21

2 respostas

1

Bem, eu tenho uma ideia tola: você pode hackear isso com o xdotool e xbindkeys :

adicione o seguinte ao seu ~/.xbindkeysrc

"xdotool key at"
    Shift+Alt+Mod2 + 2

Taadaa!

(Tudo bem, traga os votos negativos!)

    
por 03.06.2011 / 20:56
3

Você não pode configurá-lo, porque Alt não é um modificador de código de chave em servidores X padrão. Em X11 chaves podem ser definidas e alteradas com xmodmap . O programa xev pode ser usado para identificar o código da chave. Inicie xev e pressione 2 . Em um teclado de PC alemão, parece assim:

KeyPress event, serial 33, synthetic NO, window 0x3000001,
    root 0x69, subw 0x0, time 3044226, (160,148), root:(164,198),
    state 0x0, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XmbLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: True

KeyRelease event, serial 33, synthetic NO, window 0x3000001,
    root 0x69, subw 0x0, time 3044305, (160,148), root:(164,198),
    state 0x0, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False

Você pode ver que o código da chave é 11. Agora você pode exibir a definição do código-chave com xmodmap :

$ xmodmap -pke|grep ' 11 ='
keycode  11 = 2 quotedbl twosuperior oneeighth twosuperior oneeighth

Você pode ver quatro chaves diferentes que o código de chave 11 pode gerar. A página man do xmodmap explica qual chave é gerada por qual modificador:

    keycode NUMBER = KEYSYMNAME ...
           The list of keysyms is assigned to the indicated keycode (which
           may be specified in decimal, hex or octal and can be determined
           by running the xev  program).   Up  to  eight  keysyms  may  be
           attached  to  a  key, however the last four are not used in any
           major X server implementation.  The first keysym is  used  when
           no  modifier  key  is pressed in conjunction with this key, the
           second with Shift, the third when the Mode_switch key  is  used
           with  this  key  and  the  fourth when both the Mode_switch and
           Shift keys are used.

Apenas Shift e Mode_switch são modificadores válidos para códigos-chave X11. Se você quiser que sua chave Alt seja um modificador válido, você terá que corrigir seu servidor X. Teoricamente é possível, porque existem 8 modificadores possíveis. Mas o seu servidor X deve saber disso.

    
por 01.06.2011 / 10:22