Como obter um com pontos em Dvorak do Ubuntu 16.04?

8

Eu quero digitar A com pontos ( Ä / ä ) como um atalho de um nível no teclado do Ubuntu 16.04 do Macbook Air 2013-mid, saída de setxkbmap -query

rules:      evdev
model:      pc105
layout:     us,us
variant:    dvorak,
options:    ctrl:nocaps

Por padrão, não há AltGr no teclado, apenas dois Alts. Este comando faz o seu direito alt a tecla de composição ( AltGr ), mas mantém suas próprias configurações de teclado personalizado etc tendo Capslock como CTRL por caps:ctrl_modifier , veja aqui

gsettings set org.gnome.desktop.input-sources xkb-options \
    "$(gsettings get org.gnome.desktop.input-sources xkb-options \ 
    | sed "s/]/, 'compose:ralt']/")"

Seria muito bom ter xmodmap de solução independente, se isso for mudado, porque será depreciado.

Abordagem de atalhos de teclado de dois níveis

Nós só podemos fazer uma abordagem de keybinding de dois níveis com Dvorak International com deadkeys.

  • A resposta do SeverusTux é um comando de dois níveis como AltGr - Deslocamento - Q + A , que funciona apenas em código%.
  • SeverusTux. Ctrl + Desloc + u + e4 + Introduz funciona e fornece us-drovak, international with deadkeys . Como você pode mapear isso para uma tecla de atalho de um nível Alt - a ?

Eu faço onde você vê que a GUI faz a mudança em outro lugar. Eu realmente quero saber onde

masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test1
% I make here a change in the GUI as proposed by Severus: compose key = right Alt
masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test2
masi@masi:~$ diff /home/masi/Desktop/test1 /home/masi/Desktop/test2
[ no output ]

Isso mostra que o xserver não é atualizado rapidamente. Você tem que mudar o seu teclado para outra coisa e vice-versa, para a mudança.

Abordagem de Keybinding de um nível

Eu quero um comando de um nível como AltGr - A para ä e AltGr - Shift - A para ä em inglês (US-dvorak). Eu faço Ä e pressione AltGr

[ignore the beginning; press AltGr]
KeyPress event, serial 28, synthetic NO, window 0x4400001, 
root 0xd6, subw 0x0, time 13661220, (186,522), root:(186,574), 
state 0x0, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, 
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False 

KeyRelease event, serial 28, synthetic NO, window 0x4400001, 
root 0xd6, subw 0x0, time 13661284, (186,522), root:(186,574), 
state 0x8, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, 
XLookupString gives 0 bytes: 
XFilterEvent returns: False

Você pode obter todas as opções possíveis por xev -e keyboard , mas estamos interessados apenas em more /usr/share/X11/xkb/rules/xorg.lst | grep lv3

  lv3:switch           Right Ctrl
  lv3:menu_switch      Menu
  lv3:win_switch       Any Win key
  lv3:lwin_switch      Left Win
  lv3:rwin_switch      Right Win
  lv3:alt_switch       Any Alt key
  lv3:lalt_switch      Left Alt
  lv3:ralt_switch      Right Alt
  lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose
  lv3:ralt_alt         Right Alt key never chooses 3rd level
  lv3:enter_switch     Enter on keypad
  lv3:caps_switch      Caps Lock
  lv3:bksl_switch      Backslash
  lv3:lsgt_switch      <Less/Greater>
  lv3:caps_switch_latch Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
  lv3:bksl_switch_latch Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
  lv3:lsgt_switch_latch <Less/Greater> chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser

Meus layouts de teclado foram testados, mas o inglês principal (dvorak dos EUA)

Soluçãofinal[Sneetsher]

EudefinoAcompontoseminglês(dvorak)porAltGr-a.Mesclarasalteraçõesemlv3:ralt_switch;agoraalemão-Dvorakporquetambémfuncionamuitobemparaaslínguasescandinavas(de aqui )

// based on a keyboard map from an 'xkb/symbols/dk' file
// Added A with dots and O with dots for AltGr-A and AltGr-O, respectively. Sneether and Masi, 17-June-2016.

partial alphanumeric_keys
xkb_symbols "dvorak" {

    name[Group1]= "English (Dvorak)";

    key <TLDE> { [       grave, asciitilde, dead_grave, dead_tilde      ] };

    key <AE01> { [          1,  exclam          ]       };
    key <AE02> { [          2,  at              ]       };
    key <AE03> { [          3,  numbersign      ]       };
    key <AE04> { [          4,  dollar          ]       };
    key <AE05> { [          5,  percent         ]       };
    key <AE06> { [          6,  asciicircum, dead_circumflex, dead_circumflex ] };
    key <AE07> { [          7,  ampersand       ]       };
    key <AE08> { [          8,  asterisk        ]       };
    key <AE09> { [          9,  parenleft,  dead_grave] };
    key <AE10> { [          0,  parenright      ]       };
    key <AE11> { [ bracketleft, braceleft       ]       };
    key <AE12> { [ bracketright, braceright,  dead_tilde] };

    key <AD01> { [  apostrophe, quotedbl, dead_acute, dead_diaeresis    ] };
    key <AD02> { [      comma,  less,   dead_cedilla, dead_caron        ] };
    key <AD03> { [      period, greater, dead_abovedot, periodcentered  ] };
    key <AD04> { [          p,  P               ]       };
    key <AD05> { [          y,  Y               ]       };
    key <AD06> { [          f,  F               ]       };
    key <AD07> { [          g,  G               ]       };
    key <AD08> { [          c,  C               ]       };
    key <AD09> { [          r,  R               ]       };
    key <AD10> { [          l,  L               ]       };
    key <AD11> { [      slash,  question        ]       };
    key <AD12> { [      equal,  plus            ]       };

    key <AC01> {[ a,          A,    adiaeresis,       Adiaeresis ]      };
    key <AC02> {[ o,          O,    odiaeresis,       Odiaeresis ]      };
    key <AC03> { [ e, E, ediaeresis, Ediaeresis ] };
    key <AC04> { [ u, U, udiaeresis, Udiaeresis ] };
    key <AC05> { [          i,  I               ]       };
    key <AC06> { [          d,  D               ]       };
    key <AC07> { [          h,  H               ]       };
    key <AC08> { [          t,  T               ]       };
    key <AC09> { [          n,  N               ]       };
    key <AC10> { [ s, S, ssharp ] };
    key <AC11> { [      minus,  underscore      ]       };

    key <AB01> { [   semicolon, colon, dead_ogonek, dead_doubleacute ] };
    key <AB02> { [          q,  Q               ]       };
    key <AB03> { [          j,  J               ]       };
    key <AB04> { [          k,  K               ]       };
    key <AB05> { [          x,  X               ]       };
    key <AB06> { [          b,  B               ]       };
    key <AB07> { [          m,  M               ]       };
    key <AB08> { [          w,  W               ]       };
    key <AB09> { [          v,  V               ]       };
    key <AB10> { [          z,  Z               ]       };

    key <BKSL> { [  backslash,  bar             ]       };

    include "level3(ralt_switch)"
};

Ou use o script que ainda apresenta bugs

# restore your current keyboard settings 
sudo apt-get install --reinstall xkb-data
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt', 'caps:ctrl_modifier']"

sudo sed -i.bak 's/[[ \t]*a,[ \t]*A[ \t]*]/[ a,          A,    adiaeresis,       Adiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; 
sudo sed -i.bak 's/[[ \t]*o,[ \t]*O[ \t]*]/[ o,          O,    odiaeresis,       Odiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; 
# German-Dvorak feels better
#sudo sed -i.bak 's/[[ \t]*e,[ \t]*E[ \t]*]/[ e,          E,    ediaeresis,       Ediaeresis ]/g;' /usr/share/X11/xkb/symbols/us; 
#sudo sed -i.bak 's/[[ \t]*u,[ \t]*U[ \t]*]/[ u,          U,    udiaeresis,       Udiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; 
#sudo sed -i.bak 's/[[ \t]*s,[ \t]*S[ \t]*]/[ s,          S,    ssharp ]/g;' /usr/share/X11/xkb/symbols/us; 

# add     include "level3(ralt_switch)" to the end of the environment
# https://unix.stackexchange.com/a/290407/16920
# https://unix.stackexchange.com/q/290405/16920
pos=( $( sed -n -f - /usr/share/X11/xkb/symbols/us <<END_SED
    /xkb_symbols "dvorak" {/,/^};/{
            /xkb_symbols "dvorak" {/=
            /^};/=
    }
END_SED
) )
sudo sed -i.bak "${pos[1]}i\    include \"level3(ralt_switch)\"" /usr/share/X11/xkb/symbols/us

sudo dpkg-reconfigure xkb-data
# Change your keyboard. Change Back. Should work. But some bug. I cannot get the script works stably. 

Bugs

  1. Problema TODO com o recarregamento do teclado de volta ao servidor xs link A alteração manual não funciona sempre.
  2. Complicações: O Xserver não carrega essas chaves rapidamente e nem mesmo em todos os casos após o reinício / logout.

Sistemas: Ubuntu 16.04
Kernel do Linux: 4.4 - 4.6
Modelo de teclado: pc105
Layout de teclado para abordagem de keybinding de dois níveis: US-dvorak internacional com deadkeys
Layout do teclado para uma abordagem de keybinding de um nível: inglês (Dvorak) = US-dvorak , mas também inglês (Classic Dvorak)

    
por Léo Léopold Hertz 준영 15.07.2015 / 12:32

2 respostas

8

  • Para digitar ä, o unicode é U00E4

  • Para digitar Ä, o unicode é U00C4

Se você quiser os unicodes de outros personagens, você pode obtê-los em gucharmap

Para introduzi-lo manualmente, pressione ctrl + deslocamento + u e seguido por 00e4 e tecle Digite , isso deve digitar ä

Mas há uma maneira melhor de fazer isso usando Teclas de composição .

Se você quiser definir sua Direita alt como a chave de composição usando a linha de comando: apenas execute isto:

gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"

Se você quiser configurá-lo processando a GUI:

Ative a chave de composição acessando Configurações do sistema - > Teclado - > Digitação - > Alt direita . (você pode escolher uma chave diferente se quiser)

Issoétudo!!

Agoraváparaoseueditordetextofavoritoefaçaoseguinte:

PressioneesolteAltDireitaseguidopor" seguido por a . agora você deve ver ä .

O mesmo pode ser feito para Ä , pressione e solte Alt Direita seguido por " seguido por A

NOTA: pode ser necessário pressionar Shift + ' para obter "

DICA:

Se você deseja ver todos os atalhos semelhantes, veja este arquivo: /usr/share/X11/locale/en_US.UTF-8/Compose

    
por Severus Tux 07.06.2016 / 16:46
7

Inglês (Dvorak, internacional com chaves inativas) - dvorak-intl funciona bem!

Eu posso digitar Ä usando Shift AltGr q com a configuração padrão. Veja o arquivo /usr/share/X11/xkb/symbols/us onde a chave q declarada como

key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };

e com level3(ralt_switch) na parte inferior para usar Alt Direita / AltGr como deslocamento de 3º nível de tal forma que

  • 1a coluna q q
  • 2a coluna Q Deslocamento q
  • 3a coluna ä AltGr q
  • 4a coluna Ä Deslocamento AltGr q

Visualização

  • dvorak-intldefineapenas4níveis,eudesenhotodosos8níveiscomoXKBsuportaparaquevocêpossaobterumavisãogeral.
  • Shiftéumdeslocamentopadrãodenível2,AltGréodeslocamentopadrãodenível3paraamaioriadoslayoutsqueprecisamdenível3e4.Apenasalgunslayoutsdefinemlevels5,6,7,8e,assim,ashiftkeylevel5,euuseiRCtrlapenasparaexplicação.
  • Todasessas4linhasquedefinem<AB02>keysãoequivalentes.

Definindoä&Änonível3e4dateclaaeminglês(Dvorak)-dvoraklayout

Maisö&Önachaveo.(Elenãoaparecenacapturadetela,comofoiadicionadoapósacapturadetela)

Omesmoquedvorak-intl,podemosfazeramesmaconfiguraçãoparadvorak.

  1. Limparasmodificaçõesanteriores

    sudoapt-getinstall--reinstallxkb-datagsettingssetorg.gnome.desktop.input-sourcesxkb-options"[]"
    
  2. Ponto de verificação

    • Experimente o inglês (Dvorak, internacional com chaves inativas) - dvorak-intl

      AltGr q imprime ä .Se não funcionou, então será o mesmo problema com esta configuração. Há algo que impede o Alt Direito de funcionar como mudança de nível 3.

    • Verifiqueomapaatualdedvorak

    • VerifiqueomapeamentoAltDireito,deveserAlt_R

      $xev-ekeyboard[ignorestartthings;pressAltGr]KeyPressevent,serial28,syntheticNO,window0x3400001,root0x281,subw0x0,time1855861,(769,284),root:(834,336),state0x10,keycode108(keysym0xffea,Alt_R),same_screenYES,XLookupStringgives0bytes:XmbLookupStringgives0bytes:XFilterEventreturns:FalseKeyReleaseevent,serial28,syntheticNO,window0x3400001,root0x281,subw0x0,time1855965,(769,284),root:(834,336),state0x18,keycode108(keysym0xffea,Alt_R),same_screenYES,XLookupStringgives0bytes:XFilterEventreturns:False
  3. Modifiqueamap

    $sudovim/usr/share/X11/xkb/symbols/us+224key<AD11>{[slash,question]};key<AD12>{[equal,plus]};key<AC01>{[a,A,adiaeresis,Adiaeresis]};key<AC02>{[o,O,odiaeresis,Odiaeresis]};key<AC03>{[e,E]};
  4. DefinindoAltDireitacomodeslocamentodenível3

    $sudovim/usr/share/X11/xkb/symbols/us+248key<AB09>{[v,V]};key<AB10>{[z,Z]};key<BKSL>{[backslash,bar]};include"level3(ralt_switch)"
    };
    
    // Dvorak international with dead keys
    

    Existem muitas chaves que podem ser usadas como ISO_Level3_Shift. Verifique as opções disponíveis

    $ more /usr/share/X11/xkb/rules/xorg.lst | grep lv3:
      lv3:switch           Right Ctrl
      lv3:menu_switch      Menu
      lv3:win_switch       Any Win key
      lv3:lwin_switch      Left Win
      lv3:rwin_switch      Right Win
      lv3:alt_switch       Any Alt key
      lv3:lalt_switch      Left Alt
      lv3:ralt_switch      Right Alt
      lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose
      lv3:ralt_alt         Right Alt key never chooses 3rd level
      lv3:enter_switch     Enter on keypad
      lv3:caps_switch      Caps Lock
      lv3:bksl_switch      Backslash
      lv3:lsgt_switch      &lt;Less/Greater&gt;
      lv3:caps_switch_latch Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
      lv3:bksl_switch_latch Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
      lv3:lsgt_switch_latch &lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
    

    Por exemplo, se você quiser usar o Caps Lock como deslocamento de nível 3, insira include "level3(caps_switch)" em vez de include "level3(ralt_switch)" .

  5. Forçar o recarregamento de layouts

    sudo dpkg-reconfigure xkb-data
    

    Mude para outro layout e, em seguida, volte.

  6. Ponto de verificação

    • Verifique o mapa atual de dvorak

    • VerifiqueomapeamentoAltDireito.DeveserISO_Level3_Shift

      $xev-ekeyboardKeyPressevent,serial35,syntheticNO,window0x3600001,root0x281,subw0x0,time4755266,(154,154),root:(219,206),state0x0,keycode108(keysym0xfe03,ISO_Level3_Shift),same_screenYES,XKeysymToKeycodereturnskeycode:92XLookupStringgives0bytes:XmbLookupStringgives0bytes:XFilterEventreturns:FalseKeyReleaseevent,serial35,syntheticNO,window0x3600001,root0x281,subw0x0,time4755435,(154,154),root:(219,206),state0x80,keycode108(keysym0xfe03,ISO_Level3_Shift),same_screenYES,XKeysymToKeycodereturnskeycode:92XLookupStringgives0bytes:XFilterEventreturns:False

Agora,devefuncionar!

Comandodeumalinha

cd/;\echo-e"--- /usr/share/X11/xkb/symbols/us\t2016-01-22 09:38:25.000000000 +0100\n+++ /usr/share/X11/xkb/symbols/us\t2016-06-17 15:43:07.656076074 +0100\n@@ -221,8 +221,8 @@\n     key <AD11> { [\tslash,\tquestion\t]\t};\n     key <AD12> { [\tequal,\tplus\t\t]\t};\n \n-    key <AC01> { [\t    a,\tA \t\t]\t};\n-    key <AC02> { [\t    o,\tO\t\t]\t};\n+    key <AC01> { [\t    a,\tA, adiaeresis, Adiaeresis ]\t};\n+    key <AC02> { [\t    o,\tO, odiaeresis, Odiaeresis ]\t};\n     key <AC03> { [\t    e,\tE\t\t]\t};\n     key <AC04> { [\t    u,\tU\t\t]\t};\n     key <AC05> { [\t    i,\tI\t\t]\t};\n@@ -245,6 +245,8 @@\n     key <AB10> { [\t    z,\tZ\t\t]\t};\n \n     key <BKSL> { [  backslash,  bar             ]       };\n+\n+    include \"level3(ralt_switch)\"\n };\n \n // Dvorak international with dead keys\n" \
| sudo patch -p1; \
sudo dpkg-reconfigure xkb-data; \
cl=$(gsettings get org.gnome.desktop.input-sources current); \
gsettings set org.gnome.desktop.input-sources current 0; \
gsettings set org.gnome.desktop.input-sources current 1; \
gsettings set org.gnome.desktop.input-sources current "$cl"
    
por user.dz 07.06.2016 / 16:00