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 xmodmap
une 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 lv3
mais 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)
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
- Problème TODO avec le rechargement du clavier sur xserver https://unix.stackexchange.com/q/290449/16920 La modification manuelle ne fonctionne pas toujours.
- 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)
ctrl+shift+u
puis tapeze4
et appuyez sur entrée. Si cela fonctionne, vous pouvez essayer d'obtenir une clé simple pour cela.Réponses:
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:
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)
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
la source
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 raccourcisAnglais (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/us
où laq
clé déclarée commeet avec
level3(ralt_switch)
en bas à utiliser Right Alt/ AltGrcomme changement de 3ème niveau de telle sorte queq
←qQ
←Shiftqä
←AltGrqÄ
←ShiftAltGrqVisualisation
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.<AB02>
clé sont équivalentes.Réglage
ä
etÄ
au 3e et 4e niveau dea
clé en anglais (Dvorak) -dvorak
mise en pagePlus
ö
etÖ
à lao
clé. (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 pourdvorak
.Effacer les modifications précédentes
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.Vérifiez la carte actuelle de
dvorak
Vérifiez le mappage Alt droite, il doit être
Alt_R
Modifier la
a
carteDéfinir Alt droite comme décalage de niveau 3
Il existe de nombreuses clés qui peuvent être utilisées comme ISO_Level3_Shift. Vérifier les options disponibles
Par exemple, si vous souhaitez utiliser le verrouillage des majuscules comme décalage de niveau 3, entrez
include "level3(caps_switch)"
au lieu deinclude "level3(ralt_switch)"
.Forcer le rechargement des présentations
Passez à une autre disposition, puis revenez.
Point de contrôle
Vérifiez la carte actuelle de
dvorak
Vérifiez le mappage Alt droite. Ça devrait être
ISO_Level3_Shift
Maintenant, ça devrait marcher!
Commande à une ligne
la source
sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/us
rend 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?${pos[1]}
défini.