¿Cómo obtener A con puntos en Dvorak de Ubuntu 16.04?


8

Quiero escribir A con puntos ( Ä/ ä) como combinación de teclas de un nivel en el teclado de Ubuntu 16.04 de Macbook Air 2013-mid, salida desetxkbmap -query

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

Por defecto, no hay AltGren el teclado, solo dos Alts. Este comando convierte a su derecha en la tecla componer ( AltGr) pero mantiene sus propias configuraciones de teclado personalizadas, etc., teniendo Capslock como CTRL caps:ctrl_modifier, vea aquí

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

Sería realmente genial tener xmodmapuna solución independiente si esto se va a cambiar porque se va a depreciar.

Enfoque de combinación de teclas de dos niveles

Solo podemos hacer un enfoque de combinación de teclas de dos niveles con Dvorak International con teclas muertas.

  • La respuesta de SeverusTux es un comando de dos niveles como AltGr- Shift- Q+ A, que solo funciona en us-drovak, international with deadkeys.
  • SeverusTux. Ctrl+ Shift+ u+ e4+ Enterfunciona y te da ä. ¿Cómo se expresa eso a una combinación de teclas de un nivel Alt- a?

Lo hago donde ves que la GUI hace el cambio en otra parte. Tengo muchas ganas de saber dónde

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 ]

Esto muestra que el servidor x no se actualiza rápidamente. Tienes que cambiar tu teclado a otra cosa y volver para el cambio.

Enfoque de combinación de teclas de un nivel

Quiero un comando de un nivel como AltGr- Afor äy AltGr- Shift- Afor Äen inglés (US-dvorak). Hago xev -e keyboard y presionoAltGr

[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

Puede obtener todos los cambios posibles more /usr/share/X11/xkb/rules/xorg.lst | grep lv3pero solo estamos interesados ​​enlv3:ralt_switch

  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

Mis diseños de teclado probaron pero el inglés principal (US-dvorak)

ingrese la descripción de la imagen aquí

Solución final [Sneetsher]

Puse A con puntos en inglés (dvorak) por AltGr- a. Fusionar los cambios en /usr/share/X11/xkb/symbols/us; ahora alemán-Dvorak porque también funciona muy bien para los idiomas escandinavos (desde aquí )

// 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)"
};

O use el script que, sin embargo, todavía tiene errores

# 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. 

Loco

  1. TODO problema al volver a cargar el teclado en xserver https://unix.stackexchange.com/q/290449/16920 El cambio manual no siempre funciona.
  2. Complicaciones: Xserver no carga esas claves rápidamente y ni siquiera en todos los casos después de reiniciar / cerrar sesión.

Sistemas: Ubuntu 16.04
Kernel de Linux: 4.4 - 4.6
Modelo de teclado: pc105
Diseño de teclado para enfoque de combinación de teclas de dos niveles: US-dvorak internacional con teclas muertas
Diseño de teclado para enfoque de combinación de teclas de un nivel: inglés (Dvorak) = US-dvorak , pero también inglés (Dvorak clásico)


1
Presione, ctrl+shift+uluego escriba e4y presione Entrar. Si esto funciona, puede intentar obtener una clave simple para eso.
Severus Tux

He escrito una respuesta a lo que dije antes, por favor deje comentarios si tiene alguna duda
Severus Tux

Respuestas:


8
  • Para escribir ä, unicode es U00E4

  • Para escribir Ä, unicode es U00C4

Si quieres los unicodes de otros personajes, puedes obtenerlos de gucharmap

Para ingresarlo manualmente, presione ctrl+ shift+ uy seguido de 00e4 y presione Enter, esto debería escribir ä

Pero hay una mejor manera de hacerlo usando Compose Keys .

Si desea establecer su Right alt clave de redacción mediante la línea de comandos: simplemente ejecute esto:

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

Si desea configurarlo demandando GUI:

Habilite la clave de redacción yendo a Configuración del sistema -> Teclado -> Escribir -> Alt derecho . (puede elegir una clave diferente si lo desea)

ingrese la descripción de la imagen aquí

Eso es todo !!

Ahora ve a tu editor de texto favorito y haz esto:

Presione y suelte Right Altseguido de "seguido de a. ahora deberías ver ä .

Lo mismo puede hacerse para Ä , presione y suelte Right Altseguido de "seguido deA

NOTA: es posible que deba presionar Shift+ 'para obtener"

PROPINA:

Si desea ver todos los accesos directos similares, vea este archivo: /usr/share/X11/locale/en_US.UTF-8/Compose


@ Masi Ese archivo es solo una lista de todos los combos de teclas Componer. Solo información extra.
UniversallyUniqueID

@Masi no tiene que editar ese archivo o reemplazar nada sed, es información adicional como dijo @BharadwajRaju, simplemente puede verlo si desea la tecla de acceso directo para algún otro símbolo especial. Esa es una lista enorme de todos estos atajos
Severus Tux

1
@ Masi, ¿así que solo quieres configurar la clave de redacción usando la línea de comandos en lugar de usar la GUI?
Severus Tux

Respuesta @Masi actualizada :-) no necesitas ningún script para hacerlo. solo un simple comando hará el truco. Espero que esto sea lo que querías
Severus Tux

¿Qué usaste para hacer ese increíble gif? Buen toque.
Bhikkhu Subhuti

7

Inglés (Dvorak, internacional con claves muertas): ¡ dvorak-intl funciona bien!

Puedo escribir Äusando ShiftAltGrqcon la configuración predeterminada. Ver archivo /usr/share/X11/xkb/symbols/usdonde la qclave declarada como

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

y con level3(ralt_switch)en la parte inferior para usar Right Alt/ AltGrcomo turno de tercer nivel de manera

  • Primera columna qq
  • 2da columna QShiftq
  • 3ra columna äAltGrq
  • 4ta columna ÄShiftAltGrq

Visualización

Niveles de diseño X11 XKB

  • dvorak-intl define solo 4 niveles, dibujo los 8 niveles que admite XKB para que pueda obtener una visión general.
  • Shiftes un cambio de nivel 2 estándar, AltGres el cambio de nivel 3 predeterminado para la mayoría de los diseños que necesitan niveles 3 y 4. Solo unos pocos diseños definen los niveles 5, 6, 7, 8 y, por lo tanto, la tecla de cambio de nivel 5, la utilicé RCtrlsolo como explicación.
  • Todas esas 4 líneas que definen la <AB02>clave son equivalentes.

Configuración äy Äen el tercer y cuarto nivel de aclave en inglés (Dvorak) - dvorakdiseño

Además öy Öen oclave. (No aparece en la captura de pantalla, ya que se agregó después de la captura de pantalla)

Igual que dvorak-intl, podemos hacer la misma configuración para dvorak.

  1. Borrar modificaciones previas

    sudo apt-get install --reinstall xkb-data
    gsettings set org.gnome.desktop.input-sources xkb-options "[]"
    
  2. Control

    • Prueba inglés (Dvorak, internacional con claves muertas) - dvorak-intl

      AltGrqimprime ä. Si no funcionó, entonces será el mismo problema con esta configuración. Hay algo que impide que Right Alt funcione como cambio de nivel 3.

      Inglés (Dvorak, internacional con claves muertas)

    • Verificar el mapa actual de dvorak

      Inglés (Dvorak)

    • Verifique el mapeo Alt derecho, debería ser Alt_R

      $ xev -e keyboard
      [ignore start things; press AltGr]
      
      KeyPress event, serial 28, synthetic NO, window 0x3400001,
          root 0x281, subw 0x0, time 1855861, (769,284), root:(834,336),
          state 0x10, 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 0x3400001,
          root 0x281, subw 0x0, time 1855965, (769,284), root:(834,336),
          state 0x18, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
          XLookupString gives 0 bytes: 
          XFilterEvent returns: False
      
  3. Modificar amapa

    $ sudo vim /usr/share/X11/xkb/symbols/us +224
    
    key <AD11> { [      slash,  question        ]       };
    key <AD12> { [      equal,  plus            ]       };
    
    key <AC01> { [          a,  A, adiaeresis, Adiaeresis ]       };
    key <AC02> { [          o,  O, odiaeresis, Odiaeresis ]       };
    key <AC03> { [          e,  E               ]       };
    
  4. Establecer Alt derecho como cambio de nivel 3

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

    Hay muchas claves que se pueden usar como ISO_Level3_Shift. Consultar opciones disponibles

    $ 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 ejemplo, si desea usar Bloq Mayús como el cambio de nivel 3, ingrese en include "level3(caps_switch)"lugar de include "level3(ralt_switch)".

  5. Forzar la recarga de diseños

    sudo dpkg-reconfigure xkb-data
    

    Cambie a otro diseño y luego regrese.

  6. Punto de control

    • Verificar el mapa actual de dvorak

      Inglés (Dvorak)

    • Verifique el mapeo Alt derecho. Debería serISO_Level3_Shift

      $ xev -e keyboard
      
      KeyPress event, serial 35, synthetic NO, window 0x3600001,
          root 0x281, subw 0x0, time 4755266, (154,154), root:(219,206),
          state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
          XKeysymToKeycode returns keycode: 92
          XLookupString gives 0 bytes: 
          XmbLookupString gives 0 bytes: 
          XFilterEvent returns: False
      
      KeyRelease event, serial 35, synthetic NO, window 0x3600001,
          root 0x281, subw 0x0, time 4755435, (154,154), root:(219,206),
          state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
          XKeysymToKeycode returns keycode: 92
          XLookupString gives 0 bytes: 
          XFilterEvent returns: False
      

¡Ahora debería funcionar!


Comando de una línea

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"

2
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Mitch

1
Descubrí que el cambio manual del teclado no siempre funciona. El cambio no es válido hasta que cierre sesión. Estoy pensando en una solución aquí unix.stackexchange.com/questions/290449/…
Léo Léopold Hertz 준영

Encontré un error que no entiendo. Esta línea sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/ushace que el teclado sea inutilizable en el inicio. No puede escribir ninguna tecla en el teclado. Simplemente agrega el nivel 3 al final del entorno Dvorak en la línea 249. ¿Es la línea 249 la posición correcta?
Léo Léopold Hertz 준영

@ Masi, sí, ¡pero debería estar en 248 no 249! y seguro que has ${pos[1]} definido antes.
user.dz

Abrí un nuevo hilo sobre el caso aquí unix.stackexchange.com/q/346073/16920 porque realmente necesito esas características de manera más estable en el sistema operativo.
Léo Léopold Hertz 준영
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.