Configurer le verrouillage des majuscules comme AltGr et des flèches comme dans vim

9

1. Comment mapper globalement Caps Lockà AltGr?

Je n'ai pas besoin de CapsLock et j'aimerais plutôt y avoir une clé AltGr facile d'accès

2. Je veux mapper toutes les touches de mouvement à des vimpositions similaires

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Je peux donc facilement parcourir mon code sans éloigner la main de la position à 10 doigts (comme dans l' viméditeur)

J'ai trouvé cette réponse: comment remapper la touche de verrouillage des majuscules à la touche de retour arrière?
suggérant d'utiliser

xmodmap -e "keycode [code] = [new key]"

voir: http://wiki.linuxquestions.org/wiki/List_of_Keysymes_Recognised_by_Xmodmap

Mais je ne peux pas comprendre comment ajouter ceci à une combinaison par exemple AltGr + J

Un autre point de départ serait de définir la "touche de caractère alternative" dans unity-control-center-> Clavier -> Raccourcis -> TaperCaps Lock

Mise à jour: J'ai trouvé quelques solutions (voir ci-dessous) mais toutes ne fonctionnent pas dans toutes les applications, je suppose que c'est un paramètre global appelé "XFree 4" qui est utilisé par certaines applications.

Comment puis-je également définir les raccourcis clavier pour XFree 4?

rubo77
la source
Je n'ai pas de clé AltGr, mais vous pourriez trouver que cette question similaire fournit des indices.
Elder Geek

Réponses:

4

1. ajoutez un nouveau fichier partiel XKB

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

avec ce contenu:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. inclure le partiel dans votre fichier de langue

par exemple pour l'allemand c'est /usr/share/X11/xkb/symbols/de(où /deest votre langue) ajoutez ceci à l'intérieur du premier bloc ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Remarque: Cette partie doit être répétée après chaque mise à jour de distribution

3. recharger la session de fenêtre

Appuyez sur ALT + F2, entrez "r" pour recharger la session gnome ou déconnectez-vous et reconnectez-vous. Maintenant, les nouvelles compositions clés seront disponibles

quelques problèmes

Certaines applications n'acceptent pas les paramètres, par exemple: sublimequi peuvent être remplacés par atom.

Certaines applications nécessitent des paramètres supplémentaires, par exemple dans yakuakeles raccourcis clavier définis sur "XFree 4", si vous les définissez sur "Linux" ou "Solaris", les paramètres XKB fonctionnent également là-bas:

rubo77
la source
1
je recommande fortement d'utiliser l'option XKB lv3:caps_switchau lieu de changer la <CAPS>définition comme vous le montrez. voir /usr/share/X11/xkb/symbols/level3(où cette option est définie).
Don Quichotte
@quixotic: pouvez-vous ajouter une nouvelle réponse avec les configurations qui seraient nécessaires? Je pourrais avoir besoin d'une bonne réponse complète ici pour la prime;)
rubo77
Cela a parfaitement fonctionné pour moi. Juste un avertissement cependant, voudrez peut-être changer "section" en "numérosign" pour shift + 3
mowwwalker
0

afin d'obtenir AltGr+ h, j, k, lou toute autre touche sans aucune application comme Autokey à peform vous pouvez personnaliser votre mise en page du clavier trouvée dans / usr / share / X11 / xkb / symboles / . Pour le moment, j'utilise la disposition allemande "de". Alors tout d'abord je voudrais:

1- copier la mise en page standard

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- Ouvrez votre mise en page avec votre éditeur de texte de préférence (ici: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

là tu vas voir quelque chose comme:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Comme vous pouvez le voir, AB, AC, AD, AE représente la ligne et le nombre représente sa position sur le clavier (il existe des touches spéciales, comme la touche moins / plus, qui peuvent également être remappées sur d'autres touches ..

Là, vous ne trouverez pas tous les claviers, seulement ceux qui diffèrent de la disposition sur laquelle le clavier est basé. L'allemand est basé sur "latin (type4)" comme vous pouvez le voir au début du fichier:

include "latin(type4)"

Il vous suffit ensuite de changer selon vos besoins. Cela fonctionne comme:

clé {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(il est également possible d'ajouter des modificateurs de 5ème niveau, ou plus)

si vous souhaitez vérifier les modifications sans redémarrer; (changer "de" pour votre mise en page ... voici une liste avec les mises en page possibles )

 setxkbmap -layout de

Les flèches sont étiquetées comme "Gauche, Droite, Bas, Haut", comme prévu. Voici une bonne liste de valeurs possibles.

voici un exemple de ma mise en page personnalisée. (mais pas utilisé pour le moment)

Ensuite, vous devrez remapper Capslock et AltGr, ou cela a-t-il déjà fonctionné à la suite de la question que vous avez posée ??

Si vous souhaitez également conserver une mise en page allemande "normale", vous pouvez modifier une autre mise en page que vous n'utilisez pas normalement (ou modifier les "clés allemandes sans clé morte") que vous pouvez trouver plus loin dans le même fichier "de". ..)

Source: lien vers une explication très complète des mises en page xbk et personnalisées.
lien vers une question similaire avec une bonne réponse.

Marcelo Avila
la source
1
dans Ubuntu moderne et ses dérivés, vous pouvez définir les dispositions et les options XKB /etc/default/keyboardune fois ces modifications apportées. voir man 5 keyboardpour plus de détails. je recommande d'ajouter de nouvelles variantes et options plutôt que de changer celles existantes.
Don Quichotte
0

Pour remapper CapsLock à AltGr, utilisez

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(source: https://superuser.com/a/138757/160420 )

Pour mapper les touches fléchées sur AltGr + h, j, k et l, utilisez xmodmap -pkepour trouver les bons paramètres:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

et changer le cinquième valeur pour les nouvelles clés et ajoutez tout cela dans un script bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(source: https://askubuntu.com/a/466315/34298 )

Mettez ce script bash dans vos applications de démarrage (choisissez Dash> Applications de démarrage> Ajouter et ajoutez la commande.)

Remarque: étrangement, gnome-terminalcela fonctionne bien, mais yakuakecela fonctionne pour BackSpace sur AltGr + F, mais il définit AltGr + h, j, k et l sur D, B, A et C, sauf si vous définissez le raccourci clavier sur "Linux" au lieu de "(Par défaut) XFree 4", et sublime-textcela ne fonctionne pas du tout

rubo77
la source
xmodmapest déconseillé et découragé. il fonctionne toujours dans les environnements X11 mais ne fonctionnera pas dans Wayland et autres remplacements X11. l'utilisation de solutions basées sur XKB est plutôt fortement encouragée.
Don Quichotte
Je suppose donc que je dois ajouter une nouvelle disposition de clavier personnalisée? askubuntu.com/questions/482678/…
rubo77
1
l'ajout d'une mise en page personnalisée est un moyen, bien que vous puissiez probablement vous en sortir en créant simplement une option personnalisée . dans GNOME ou Unity, vous devrez peut-être désactiver le plug-in du clavier settings-daemon pour que votre personnalisation xmodmap fonctionne, mais si vous créez une nouvelle disposition / variante / option XKB à l'échelle du système, vous pouvez les définir /etc/default/keyboard.
Don Quichotte
1
Cela semble beaucoup de travail, mais cela résoudra-t-il le problème que les nouvelles combinaisons de touches ne fonctionnent pas dans certaines applications?
rubo77