Comment obtenir A avec des points dans Dvorak d'Ubuntu 16.04?


8

Je veux taper A avec des points ( Ä/ ä) comme liaison de touches à un niveau dans le clavier d'Ubuntu 16.04 du Macbook Air 2013-mid, sortie desetxkbmap -query

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

Par défaut, il n'y a pas AltGrde clavier, juste deux Alts. Cette commande fait de votre alt droite la touche de composition ( AltGr) mais conserve vos propres configurations de clavier personnalisées, etc. ayant Capslock comme CTRL par caps:ctrl_modifier, voir ici

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

Ce serait vraiment génial d'avoir xmodmapune solution indépendante si cela devait être changé parce qu'il allait être amorti.

Approche de liaison à deux niveaux

Nous ne pouvons faire une approche à deux niveaux avec Dvorak International avec des clés mortes.

  • La réponse de SeverusTux est une commande à deux niveaux comme AltGr- Shift- Q+ A, qui ne fonctionne que dans us-drovak, international with deadkeys.
  • SeverusTux. Ctrl+ Shift+ u+ e4+ Enterfonctionne et vous donne ä. Comment pouvez-vous associer cela à une liaison de touches à un niveau Alt- a?

Je fais où vous voyez que l'interface graphique fait le changement ailleurs. Je veux vraiment savoir où

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 ]

Cela montre que le xserver ne se met pas à jour rapidement. Vous devez changer votre clavier pour autre chose et inversement, pour le changement.

Approche de reliure à un niveau

Je veux une commande à un niveau comme AltGr- Apour äet AltGr- Shift- Apour Äen anglais (US-dvorak). Je fais xev -e keyboard et presseAltGr

[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

Vous pouvez obtenir tous les commutateurs possibles, more /usr/share/X11/xkb/rules/xorg.lst | grep lv3mais nous ne sommes intéressés que parlv3: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

Mes dispositions de clavier testées mais anglais principal (US-dvorak)

entrez la description de l'image ici

Solution finale [Sneetsher]

J'ai mis A avec des points en anglais (dvorak) par AltGr- a. Fusionnez les modifications dans /usr/share/X11/xkb/symbols/us; maintenant allemand-dvorak parce que ça marche très bien aussi pour les langues scandinaves (d' ici )

// 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 utilisez le script qui reste cependant buggé

# 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. Problème TODO avec le rechargement du clavier sur xserver https://unix.stackexchange.com/q/290449/16920 La modification manuelle ne fonctionne pas toujours.
  2. Complications: Xserver ne charge pas ces clés rapidement et même pas dans tous les cas après redémarrage / déconnexion.

Systèmes: Ubuntu 16.04
Noyau Linux: 4.4 - 4.6
Modèle de clavier: pc105
Disposition du clavier pour une approche à deux niveaux: US-dvorak international avec deadkeys
Disposition du clavier pour une approche à un niveau: Anglais (Dvorak) = US-dvorak , mais aussi en anglais (Dvorak classique)


1
Appuyez sur ctrl+shift+upuis tapez e4et appuyez sur entrée. Si cela fonctionne, vous pouvez essayer d'obtenir une clé simple pour cela.
— Severus Tux

J'ai écrit une réponse pour ce que j'ai dit plus tôt, veuillez laisser des commentaires si vous avez des doutes
— Severus Tux

Réponses:


8
  • Pour taper ä, l'unicode est U00E4

  • Pour taper Ä, l'unicode est U00C4

Si vous voulez les unicodes d'autres personnages, vous pouvez les obtenir auprès de gucharmap

Pour le saisir manuellement, appuyez sur ctrl+ shift+ upuis sur 00e4 et appuyez sur Enter, cela devrait taper ä

Mais il existe une meilleure façon de le faire en utilisant les touches de composition .

Si vous souhaitez définir votre Right alt clé de composition à l'aide de la ligne de commande: exécutez simplement ceci:

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

Si vous souhaitez le définir en poursuivant l'interface graphique:

Activez la touche de composition en allant dans Paramètres système -> Clavier -> Saisie -> Alt droite . (vous pouvez choisir une clé différente si vous le souhaitez)

entrez la description de l'image ici

C'est tout !!

Accédez maintenant à votre éditeur de texte préféré et procédez comme suit:

Appuyez et relâchez Right Altsuivi par "suivi a. vous devriez maintenant voir ä .

La même chose peut être faite pour Ä , Appuyez et relâchez Right Altsuivi de "suivi deA

REMARQUE: vous devrez peut-être appuyer sur Shift+ 'pour obtenir"

POINTE:

Si vous souhaitez voir tous les raccourcis similaires, consultez ce fichier: /usr/share/X11/locale/en_US.UTF-8/Compose


@Masi Ce fichier n'est qu'une liste de tous les combos de touches de composition. Juste des informations supplémentaires.
— UniversallyUniqueID

@Masi vous n'avez pas à modifier ce fichier ou à remplacer quoi que ce soit par sed, c'est une information supplémentaire comme l'a dit @BharadwajRaju, vous pouvez simplement le voir si vous voulez la touche de raccourci pour un autre symbole spécial. C'est une énorme liste de tous ces raccourcis
— Severus Tux

1
@Masi donc vous voulez juste définir la clé de composition en utilisant la ligne de commande au lieu d'utiliser l'interface graphique ??
— Severus Tux

@Masi Réponse mise à jour :-) vous n'avez besoin d'aucun script pour le faire. une simple commande suffira. j'espère que c'est ce que vous vouliez
— Severus Tux

Qu'avez-vous utilisé pour faire ce gif génial? Belle touche.
— Bhikkhu Subhuti

7

Anglais (Dvorak, international avec touches mortes) - dvorak-intl fonctionne très bien!

Je peux taper Äusing ShiftAltGrqavec la configuration par défaut. Voir le fichier /usr/share/X11/xkb/symbols/usoù la qclé déclarée comme

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

et avec level3(ralt_switch)en bas à utiliser Right Alt/ AltGrcomme changement de 3ème niveau de telle sorte que

  • 1ère colonne q←q
  • 2e colonne Q←Shiftq
  • 3e colonne ä←AltGrq
  • 4ème colonne Ä←ShiftAltGrq

Visualisation

Niveaux de disposition X11 XKB

  • dvorak-intl ne définit que 4 niveaux, je dessine les 8 niveaux en tant que XKB prend en charge afin que vous puissiez obtenir un aperçu général.
  • Shiftest un décalage de niveau 2 standard, AltGrest le décalage de niveau 3 par défaut pour la plupart des mises en page qui nécessitent les niveaux 3 et 4. Seules quelques mises en page définissent les niveaux 5, 6, 7, 8 et donc la touche de décalage de niveau 5, j'ai utilisé RCtrljuste pour l'explication.
  • Toutes les 4 lignes qui définissent la <AB02>clé sont équivalentes.

Réglage äet Äau 3e et 4e niveau de aclé en anglais (Dvorak) - dvorakmise en page

Plus öet Öà la oclé. (Il n'apparaît pas dans la capture d'écran, car il a été ajouté après la capture d'écran)

Identique à dvorak-intl, nous pouvons faire la même configuration pour dvorak.

  1. Effacer les modifications précédentes

    sudo apt-get install --reinstall xkb-data
    gsettings set org.gnome.desktop.input-sources xkb-options "[]"
    
  2. Point de contrôle

    • Essayez l'anglais (Dvorak, international avec les touches mortes) - dvorak-intl

      AltGrqimprime ä. Si cela n'a pas fonctionné, ce sera le même problème avec cette configuration. Il y a quelque chose qui empêche Right Alt de fonctionner comme décalage de niveau 3.

      Anglais (Dvorak, international avec touches mortes)

    • Vérifiez la carte actuelle de dvorak

      Anglais (Dvorak)

    • Vérifiez le mappage Alt droite, il doit être 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. Modifier la acarte

    $ 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. Définir Alt droite comme décalage de niveau 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
    

    Il existe de nombreuses clés qui peuvent être utilisées comme ISO_Level3_Shift. Vérifier les options 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
    

    Par exemple, si vous souhaitez utiliser le verrouillage des majuscules comme décalage de niveau 3, entrez include "level3(caps_switch)"au lieu de include "level3(ralt_switch)".

  5. Forcer le rechargement des présentations

    sudo dpkg-reconfigure xkb-data
    

    Passez à une autre disposition, puis revenez.

  6. Point de contrôle

    • Vérifiez la carte actuelle de dvorak

      Anglais (Dvorak)

    • Vérifiez le mappage Alt droite. Ça devrait êtreISO_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
      

Maintenant, ça devrait marcher!


Commande à une ligne

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
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
— Mitch

1
J'ai découvert que le changement manuel du clavier ne fonctionne pas toujours. La modification n'est valide que lorsque vous vous déconnectez. Je pense à une solution ici unix.stackexchange.com/questions/290449/…
— Léo Léopold Hertz

J'ai trouvé un bug que je ne comprends pas. Cette ligne sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/usrend le clavier inutilisable au démarrage. Vous ne pouvez taper aucune touche du clavier. Il ajoute simplement le niveau 3 à la fin de l'environnement Dvorak à la ligne 249. La ligne 249 est-elle correctement positionnée?
— Léo Léopold Hertz

@Masi, oui mais ça devrait être en 248 pas en 249! et bien sûr, vous avez déjà ${pos[1]} défini.
— user.dz

J'ai ouvert un nouveau sujet sur le cas ici unix.stackexchange.com/q/346073/16920 car j'ai vraiment besoin de telles fonctionnalités de manière plus stable dans le système d'exploitation.
— Léo Léopold Hertz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.