« Trucs et astuces » : différence entre les versions

De Disposition de clavier bépo
 
(10 versions intermédiaires par 6 utilisateurs non affichées)
Ligne 122 : Ligne 122 :
</source>
</source>


Et voici un petit script python (https://gist.github.com/jrd/7b75612d566b063eaeb85b276d565522) qui fait ça tout seul. Attention il faut l'exécuter à chaque fois que votre distribution met à jour le paquet xkb ou équivalent.


==== Je voudrais avoir une espace insécable automatique avec les guillemets====
==== Je voudrais avoir une espace insécable automatique avec les guillemets====
Ligne 169 : Ligne 170 :
* de Tiger à Mountain Lion  ''i.e'' OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes [http://pqrs.org/macosx/keyremap4macbook KeyRemap4macbook] (qui n’est pas que pour les MacBook, malgré son nom !)
* de Tiger à Mountain Lion  ''i.e'' OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes [http://pqrs.org/macosx/keyremap4macbook KeyRemap4macbook] (qui n’est pas que pour les MacBook, malgré son nom !)
* de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site
* de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site
* pour Sierra, une version est en cours de développement, appelée Karabiner-Element. Une version compilée par unconew (sans engagement) au 19 mai 2017 est disponible [https://dl.dropboxusercontent.com/u/61748843/Karabiner-Elements.sparkle_guided.pkg ici] . Vous pouvez également construire votre propre version en suivant les instruction données [https://github.com/tekezo/Karabiner-Elements/blob/master/README.md ici]
* pour Sierra, High Sierra et Mojave, on utilisera [https://pqrs.org/osx/karabiner/ Karabiner Elements].  
   
   
Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres).
Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres).
Ligne 187 : Ligne 188 :
* http://forum.bepo.fr/viewtopic.php?id=32 et http://bepo.fr/wiki/Pilote_Windows,   
* http://forum.bepo.fr/viewtopic.php?id=32 et http://bepo.fr/wiki/Pilote_Windows,   
* http://accentuez.mon.nom.free.fr/Clavier-CreationClavier.htm
* http://accentuez.mon.nom.free.fr/Clavier-CreationClavier.htm
Une solution assez simple pour inverser n’importe quelles touches de sa disposition, et qui ne demande pas de connaissances, est d’utiliser l’application [https://learn.microsoft.com/fr-fr/windows/powertoys/ Windows PowerToys]. Dans l’onglet Keyboard Manager, remapper les touches. Cette solution est pratique pour changer la disposition de quelques touches car elle très facilement désactivable. Elle nécessite tout de même d’avoir les droits administrateur pour installer l’application et la dispositon.




Ligne 260 : Ligne 263 :
=== Pour Windows ===
=== Pour Windows ===
Il est possible d'avoir cette fonctionnalité en utilisant [[Windows_portable#Touche_.C2.AB_extend_.C2.BB|PKL]].
Il est possible d'avoir cette fonctionnalité en utilisant [[Windows_portable#Touche_.C2.AB_extend_.C2.BB|PKL]].
Il est aussi possible d’utiliser l’application [https://learn.microsoft.com/fr-fr/windows/powertoys/ Windows PowerToys] et d’ajouter des raccourcis dans l’onglet Keyboard Manager (un pour chaque flèche par exemple).


== Modifier le comportement des touches mortes ==
== Modifier le comportement des touches mortes ==
Ligne 417 : Ligne 422 :
Pour remplacer les espaces insécables par des espaces : <code>bind $'"\u00a0":" "'</code>.
Pour remplacer les espaces insécables par des espaces : <code>bind $'"\u00a0":" "'</code>.


==== fishshell ====
==== zsh (et csh, tcsh) ====
Dans fish, la commande <code>bind <i>caractère_à_éviter</i> "commandline -i '<i>caractère_de_remplacement</i>'"</code> peut être utilisée. De même qu'en bash, cette commande s’applique au shell courant jusqu’à se fermeture et peut être placée dans le fichier <code>~/.config/fish/config.fish</code> pour l’appliquer à toutes les sessions.
Dans zsh, la commande <code>bindkey -s $'<i>caractère_à_éviter</i>' '<i>caractère_de_remplacement</i>'</code> peut être utilisée. De même qu'en bash, cette commande s'applique au shell courant jusqu'à sa fermeture et peut être placée dans le fichier <code>~/.zshrc</code> pour l'appliquer à toutes les sessions.
 
Pour remplacer les espaces insécables par des espaces : <code>bindkey -s $'\u00a0' ' '</code>.
 
==== fish ====
Dans fish, la commande <code>bind <i>caractère_à_éviter</i> "commandline -i '<i>caractère_de_remplacement</i>'"</code> peut être utilisée. De même que sur les précédents interpréteurs de commandes, cette commande s’applique au shell courant jusqu’à sa fermeture.
 
Pour remplacer les espaces insécables par des espaces : <code>bind \u00A0 "commandline -i ' '"</code>.
 
Pour rendre ce changement permanent, il suffit de créer ou d’éditer la fonction <code>fish_user_key_bindings</code> :
 
<code>
  function fish_user_key_bindings
    bind \u00A0 "commandline -i ' '"
  end
 
  funcsave fish_user_key_bindings
 
 
 
</code>
 
La fonction est sauvegardé dans le fichier <code>$HOME/.config/fish/functions/fish_user_key_bindings.fish</code>.


Pour remplacer les espaces insécables par des espaces : <code>bind \u00A0 "commandline -i ' '"</code>.
Voir la documentation sur [http://fishshell.com/docs/current/commands.html#bind le site officiel]


== Combinaisons de touches particulières ==
== Combinaisons de touches particulières ==
Ligne 432 : Ligne 459 :


[[Catégorie:Version 1.0]]
[[Catégorie:Version 1.0]]
[[Catégorie:Installation]]

Dernière version du 22 mars 2024 à 19:06

Ces trucs et astuces vous permettent de bidouiller les fichiers de configuration (Linux) et autres drivers et clé de registre (Windows) gérant le comportement du clavier.

Modifier la place des touches

Changer la disposition des touches système sous Linux

La définition de chaque caractère pour xkb se trouve dans le fichier /usr/include/X11/keysymdef.h.

Pour localiser le fichier xkb de la disposition de clavier, taper locate xkb/symbols en console. Ainsi sous Ubuntu, il vous suffira de modifier le fichier /usr/share/X11/xkb/symbols/fr avec votre éditeur préféré. Attention : depuis Ubuntu 13.10, pour que les modifications soient effectives, il faut supprimer les dispositions pré-compilées en tapant :

sudo rm /var/lib/xkb/*.xkm

puis fermer et ouvrir votre session si vous utilisez un environnement graphique.

Vous pouvez également vous créer des alias pour passer très rapidement d'une disposition à l'autre :

alias azerty='setxkbmap fr'
alias bepo='setxkbmap fr bepo'

En console tty, la commande est :

loadkeys fr-bepo

Utiliser les Options de xkb

La liste des options se trouve généralement dans /usr/share/X11/xkb/rules/base.lst

Quelques options intéressantes :

caps:swapescape      inverse ESC et Capslock.
shift:breaks_caps    Shift annule CapsLock.
compose:lwin         La touche windows gauche devient Compose.
compose:rwin         La touche windows droit devient Compose.
compose:menu         La touche menu devient Compose.
compose:caps         La touche capslock devient Compose.
compose:102          La touche Less-than/Greater-than (êÊ/¦) devient Compose.

Pour activer les options sur une session il suffit de taper :

setxkbmap fr bepo Option1,Option2

Pour désactiver toutes les options :

setxkbmap -option

Pour activer les options à chaque redémarrage il faut rajouter dans la section input device dotée de l'identifiant keyboard :

Option          "XkbOptions"    "Option1,Option2"


Je voudrais avoir les < et > en accès direct

Sous GNU/Linux, dans le fichier xkb de la disposition, déplacer less (<) et greater (>) en première colonne en les inversant avec guillemotleft («) et guillemotright (»). Le code :

key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less,  leftdoublequotemark ] }; // « 2 < “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ”

devient :

key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ less, 2, guillemotleft, leftdoublequotemark ] }; // < 2 « “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ greater, 3, guillemotright, rightdoublequotemark ] }; // > 3 » ”


Je voudrais avoir les chiffres en accès direct

La méthode présentée ici va uniquement intervertir la couche en accès direct avec celle en majuscule des touches sur lesquelles se trouvent les chiffres (les autres touches sont inchangées, de même que les autres couches, tel qu'altgr). En complément de cette modification, je vous conseille d'utiliser la touche verr-maj comme un deuxième altgr, et de dupliquer certains symboles en altgr main droite (notament les parenthèses).

Le moyen le plus simple de le faire, est de créer une disposition basé sur le bépo, en ajoutant ceci à la fin du fichier /usr/share/X11/xkb/symbols/fr :

partial alphanumeric_keys
xkb_symbols "bepo_invert_number" {

    // First row
    key <AE01> { [         1,        quotedbl ] };
    key <AE02> { [         2,   guillemotleft ] };
    key <AE03> { [         3,  guillemotright ] };
    key <AE04> { [         4,       parenleft ] };
    key <AE05> { [         5,      parenright ] };
    key <AE06> { [         6,              at ] };
    key <AE07> { [         7,            plus ] };
    key <AE08> { [         8,           minus ] };
    key <AE09> { [         9,           slash ] };
    key <AE10> { [         0,        asterisk ] };

};

partial alphanumeric_keys
xkb_symbols "bepo_modifie" {
    include "keypad(oss)"
    include "fr(bepo)"
    include "fr(bepo_invert_number)"
};

Vous pourrez désormais utiliser votre disposition fraichement créé avec la commande :

setxkbmap fr bepo_modifie


Je voudrais intervertir l’apostrophe typographique ( ’ ) avec l’apostrophe dactylographique ( ' )

Sous GNU/Linux, dans le fichier xkb de la disposition, intervertir rightsinglequotemark avec apostrophe. Les lignes :

key <AC05> { [           comma,    semicolon, rightsinglequotemark, dead_horn ] }; // , ; ’ ̛

et

key <AB06> { [      apostrophe,     question,   questiondown,      dead_hook ] }; // ' ? ¿ ̉

deviennent :

key <AC05> { [           comma,    semicolon, apostrophe, dead_horn ] }; // , ; ' ̛

et

key <AB06> { [ rightsinglequotemark,     question,   questiondown,      dead_hook ] }; // ’ ? ¿ ̉

Et voici un petit script python (https://gist.github.com/jrd/7b75612d566b063eaeb85b276d565522) qui fait ça tout seul. Attention il faut l'exécuter à chaque fois que votre distribution met à jour le paquet xkb ou équivalent.

Je voudrais avoir une espace insécable automatique avec les guillemets

Il faut ajouter les lignes suivantes dans votre ~/.XCompose. Assurez-vous que ce sont bien des espaces insécables qui sont après et avant les guillemets (autrement dit, méfiez-vous des copier-coller : certains éditeurs de texte vont les remplacer par des espaces normales, ou par un caractère quelconque). Les guillemets sans insécables sont encore accessibles avec <span class="touche" style="background: </>; ">clavier bépoCompose.

# Insécables automatiques
<guillemotleft> : "« "
<guillemotright> : " »"

Rendre capslock utile

Inverser Maj et CapsLock

Dans le fichier xkb de la disposition bépo :

key <CAPS> { [ Shift_L ], actions = [ SetMods(modifiers=Shift) ] };
key <LFSH> { [ Caps_Lock ], actions = [ LockMods(modifiers=Lock) ] };
Maj sur CapsLock en gardant CapsLock en AltGr au même endroit

Dans la section xkb_types :

type "ALTGR_TWO" { modifiers = LevelThree; map[None] = Level1; map[LevelThree] = Level2; level_name[Level1] = "Base"; level_name[Level2] = "AltGr"; };

Puis :

key <CAPS> { type = "ALTGR_TWO", [ Shift_L, Caps_Lock ], actions = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ] };
AltGr dupliqué à gauche

Choisir une touche, comme CAPS ou LFSH ou LWIN ou…

key <CAPS> { [ ISO_Level3_Shift ], actions = [ SetMods(modifiers=LevelThree) ] };
Mettre Backspace sur CapsLock

Sous linux à rajouter dans le xkb :

key <CAPS> { [ BackSpace ] };

Changer la disposition des touches sous Mac

Voir ConfigGenerator#Sous_Mac_OS_X

Changer la disposition des touches systèmes sur Mac

Sur un Mac :

  • de Tiger à Mountain Lion i.e OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes KeyRemap4macbook (qui n’est pas que pour les MacBook, malgré son nom !)
  • de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site
  • pour Sierra, High Sierra et Mojave, on utilisera Karabiner Elements.

Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres).

Exemple de changements :

  • transformer la touche Commande (= « Cmd » ou « Pomme ») qui est à droite de la barre espace en touche Alt (= « Option »), notamment pour les claviers de portables qui n’ont qu’une touche Alt (à gauche) : sélectionner « Change Command_R to Option_R » dans le sous-menu « Change Command_R Key » ;
  • pour ceux qui ont branché un clavier PC sur le Mac, mais veulent retrouver la touche Commande immédiatement à gauche de la barre espace : inverser à gauche les touches Alt et Commande en cliquant sur « Option_L to Command_L » et sur « Command_L to Option_L » dans les sous-menus appropriés (« Change Option_L Key » et « Change Command_L Key ») ;
  • échanger CapsLock et la touche Majuscule gauche (Shift_L) : 1. utiliser PCKeyboardHack pour mapper CapsLock sur Shift_L : cocher « Change CapsLock Key », et entrer à droite sur la même ligne le keycode correspondant à Shift_L (= 56, cf. liste indicative sur le panneau de Préférences Système de PCKeyboardHack) [note : sur certains modèles, il se peut que vous ayez à cocher d’abord l’option « Enable CapsLock LED Hack » dans KeyRemap4MacBook (dans le sous-menu « General ») pour que ça marche, cf. la page de PCKeyboardHack (en anglais)] ; 2. utiliser KeyRemap4MacBook pour mapper Shift_L sur CapsLock : dans le sous-menu « Change Shift_L Key », cocher l’option « Shift_L to CapsLock » ;
  • tirer profit des touches spéciales Couper/Copier/Coller qui existent sur certains claviers (p. ex. TypeMatrix 2030) : le clavier envoie des « combos » à l’ordi — en l’occurrence : Shift+Delete, Control+Insert et Shift+Insert, respectivement —, vous pouvez remapper ces combos vers Command+X, Command+C et Command+V en cochant l’option « Use PC Style Copy/Paste #3bis », que vous trouverez dans le sous-menu « Device Specific Settings ». [Attention, bien sélectionner l’option 3bis, correspondant au bépo ! Vous avez aussi l’option « Use PC Style Copy/Paste #3 » pour réaliser la même chose en azerty ou qwerty. Ce second réglage est disponible au sein du même sous-menu « Device Specific Mixed Settings » pour le clavier TypeMatrix 2030, mais aussi dans le sous-menu « For PC Users », pour d’autres claviers.]
  • bien entendu, vous pouvez faire en sorte que certains changements soient actifs sur un clavier, mais pas sur un autre (par exemple si vous branchez un chavier externe sur un portable : vous voulez peut-être que votre clavier interne fonctionne « normalement » — ou en tout cas différemment — quand vous débranchez le clavier externe) ;
  • et même, en théorie [en pratique : peut-être à venir prochainement ?…], avoir des changements actifs pour le bépo, mais pas pour l’azerty ;
  • si vous êtes un peu bidouilleur, vous pouvez facilement aller plus loin…

Changer la disposition des touches sous Windows

Voir

Une solution assez simple pour inverser n’importe quelles touches de sa disposition, et qui ne demande pas de connaissances, est d’utiliser l’application Windows PowerToys. Dans l’onglet Keyboard Manager, remapper les touches. Cette solution est pratique pour changer la disposition de quelques touches car elle très facilement désactivable. Elle nécessite tout de même d’avoir les droits administrateur pour installer l’application et la dispositon.


Changer la disposition des touches systèmes sous Windows

Windows Server 2003 et Vista : Remapkey

Pour Windows XP et Windows Server 2003, il existe le programme remapkey.exe disponible dans le Windows Server 2003 Resource Kit Tools.

Il n'a pas été « validé » pour Windows Vista, toutefois en le lançant en tant qu'administrateur (avec un clic droit sur l'exécutable), vous devriez être en mesure de réaliser des changements :


J'ai réussi à intervertir Alt avec Majuscule Gauche, j'ai pas poussé plus loin les tests.
Olympi, le 18 janvier 2009 à 12:25 (CET)



Windows 2000 et ultérieur : Scan code mapper

Fourni nativement avec Windows depuis 2000, le Scan code mapper for keyboards est configuré par la valeur Scancode Map à ajouter dans une certaine clé Keyboard Layout[1] du Registre. En présence de cette valeur (dont l’ajout nécessite un redémarrage pour devenir effectif) et en fonction de la chaîne binaire qui la constitue, tout scancode du clavier peut être remappé vers n’importe quel autre de Windows pour tous les utilisateurs du poste. Cela permet de permuter des touches, d’en désactiver ou d’en ajouter qui n’existent pas sur le clavier mais sont prévues pour la prise en charge d’autres claviers sous Windows.

À cause d’un problème de niveau d’implémentation, le scancode mapper peut ne pas fonctionner en mode terminal[2]. En plus, un bug a été relevé en lien avec le niveau Fonction du clavier intégré au portable[3]. L’utilisation de claviers externes n’est pas impactée par ce dysfonctionnement.

L’archive de la Mailing list renferme quelques exemples en pièce jointe[4] ainsi que plus de détails dans les corps des mails de plusieurs fils de discussion[5]. Notamment, la redisposition avec Majuscule sur Alt a été présentée par Julien (discussion) sur la ML, Tue, 03 Oct 2017 14:02:30 +0200.

Attention

Lors des mises à jour, Windows 10 ne conserve pas la valeur « Scancode Map », qu’il faudra donc exporter avant, surtout si elle a été modifiée directement dans le registre, afin de pouvoir la remettre après la mise à jour.

Sous Windows 10 (au moins sous la version 1709) les fichiers *.reg ne sont plus versés au registre à partir du fichier (panne à mettre en parallèle avec les nombreuses autres constatées). On peut les ajouter après avoir ouvert l’éditeur de registre regedit.exe, par Fichier > Importer.

Créer une touche de fonction Fn comme sur les portables

Pour XOrg (Linux, BSD, etc.)

Choisissez une touche comme Alt Gauche (LALT), Win Gauche ou droite (LWIN, RWIN), CAPS, etc. Puis

key <LALT> { [ VoidSymbol ], actions = [ SetControls(controls=Overlay1) ] };

Il ne vous reste plus qu’à choisir quelles touches vous voulez mettre en Fn: pavé numérique, flèches de déplacements, etc. Par exemple pour mettre une flèche de déplacement à gauche sur la touche clavier bépot:

key <AC07> {
 type[group1]="FOUR_LEVEL_ALPHABETIC", [t, T, thorn, THORN],
 overlay1 = <LEFT>
}

Vous trouverez un exemple complet ici (et ici une autre configuration plus adaptée pour les vimistes :-)).

Un exemple que l'on peut ajouter sur n'importe quel layout :

partial hidden alphanumeric_keys
xkb_symbols "pc78" {
	key <CAPS> { [ VoidSymbol ], actions = [ SetControls(controls=Overlay1), LockControls(controls=Overlay1) ] };
	key <AD07> {  overlay1 = <HOME> };
	key <AD08> {  overlay1 = <UP> };
	key <AD09> {  overlay1 = <PGDN> };
	key <AD11> {  overlay1 = <BKSP> };
	key <AC07> {  overlay1 = <LEFT> };
	key <AC08> {  overlay1 = <DOWN> };
	key <AC09> {  overlay1 = <RGHT> };
	key <AC10> {  overlay1 = <PGUP> };
	key <AC11> {  overlay1 = <RTRN> };
	key <AB07> {  overlay1 = <END> };
};

dont le bépo :

partial alphanumeric_keys
xkb_symbols "bepo-pc78" {
	include "fr(bepo)"
	include "fr(pc78)"
};

(à mettre dans votre fichier fr.)

Pour Mac

Grâce à KeyRemap4MacBook, vous pouvez en théorie changer une touche quelconque en touche Fn ; en pratique, en ce moment (= version 6.8.1 de KR4MB), les réglages sont disponibles pour les touches suivantes : Command_R (= touche « Cmd »/« Pomme » de droite), Control_L (= touche Control de gauche), Enter, Option_L (= touche Alt/Option de gauche), Option_R (= la même, mais à droite), Shift_L (= touche majuscule à gauche), Shift_R (= idem à droite), la touche Application d’un clavier PC (ce dernier réglage est disponible dans le sous-menu « For PC Users », puis « Change PC Application Key »). Le réglage est à trouver chaque fois dans le sous-menu correspondant : « Change Command_R », « Change Control_L », etc.

Si cette liste ne suffit pas à vos besoins, on peut la compléter :

  • soi-même, en apprenant la syntaxe (pas bien méchante + nombreux exemples dispos) du fichier XML de configuration de KR4MB (explications + tutoriel disponibles (en anglais) sur le site de KR4MB, page Source Code), et en envoyant ensuite sa contribution au développeur pour qu’elle soit intégrée aux prochaines versions (1. plus pratique, pour éviter de devoir recompiler/réinstaller quand on fait une mise à jour, 2. plus sympa, pour faire profiter les autres des additions créées) ;
  • si on n’y arrive pas, en demandant gentiment au développeur ce qu’on veut (attention à ne pas abuser de sa disponibilité, même si elle est très grande !).

Pour Windows

Il est possible d'avoir cette fonctionnalité en utilisant PKL.

Il est aussi possible d’utiliser l’application Windows PowerToys et d’ajouter des raccourcis dans l’onglet Keyboard Manager (un pour chaque flèche par exemple).

Modifier le comportement des touches mortes

Je suis espérantiste et je voudrais que ^+v=ŭ et ^+V=Ŭ

Il faut ajouter ce qui suit dans votre ~/.XCompose

<dead_circumflex> <v> : "ŭ" U016D
<dead_circumflex> <V> : "Ŭ" U016C

Je voudrais définir des touches mortes de modifieurs (Alt, AltGr, Ctrl,…) (X.Org)

Il vous faut avoir votre propre fichier .xkb pour pouvoir le modifier. Dans la section "xkb_symbols" rajoutez par exemple:

key <FK13> { actions = [ LatchMods(modifiers=Control) ] }; // dead ctrl
key <FK14> { actions = [ LatchMods(modifiers=Shift) ] };   // dead shift
key <FK15> { actions = [ LatchMods(modifiers=Alt) ] };     // dead alt
key <FK16> { actions = [ LatchMods(modifiers=AltGr) ] };   // dead altgr

Il ne vous reste plus qu'à utiliser ces keycodes comme bon vous semblera !

Par exemple, si vous avez défini une couche overlay1 (voir astuce plus haut):

key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar,  brokenbar ], overlay1 = <FK13> }; // b B | ¦

pour avoir un Control mort en fn+b :-)

GNU/Linux: configuration poussée

Vous pouvez consulter les différents documents concernant XKB.

Créer une disposition personnalisé

Attention, en modifiant la façon dont votre clavier est utilisé, il est possible que vous en perdiez l'usage (il m'est arrivé d'avoir de ne plus avoir accès à la touche `enter` ou `espace` en faisant de mauvaise manipulation) ! Faites donc des sauvegardes régulières dans des fichiers de backup, et ne redémarer pas votre ordinateur avec une disposition boggué.

1. Ce dont on va se servir :

  • /usr/share/X11/xkb/symbols/fr : contient entre autre la définition du bépo
  • /usr/include/X11/keysymdef.h : contient la liste des symboles (keysym)
  • http://www.charvolant.org/~doug/xkb/html/img3.png Pour la liste des codes de touches (keycode)

2. Rappel : faite une copie de sauvegarde de /usr/share/X11/xkb/symbols/fr (avant, en cas d'erreur, et après pour ne pas perdre votre travail lors d'une mise à jour).

3. Fabrication d'une dispo perso basé sur le bépo :

Ajouter à la fin du fichier /usr/share/X11/xkb/symbols/fr les lignes suivantes :

xkb_symbols "bepo_test" {
   include "keypad(oss)"
   include "fr(bepo)"
   name[Group1]= "French (Bepo, ergonomic, Dvorak way, Test de modification de la disposition bepo)";
   // ajoutez les différences entre votre disposition et le bépo ici
}

Include "keypad(oss)" m'a permis de régler certain problèmes (j'avais par exemple déclacé ma touche majuscule et shift + majuscule ne fonctionnait plus. Include "fr(bepo)" permet de se baser sur la disposition bepo, et donc avoir un clavier utilisable dès le début des modifications.

Votre disposition est maintenant prête à l'emploi. Il suffit désormais de taper :

setxkbmap fr bepo_test

pour basculer vers votre disposition (actuellement c'est un clone du bépo, donc vous ne verrez pas de différence), et inversement

setxkbmap fr bepo

pour revenir en bépo.

Vous pouvez désormais ajouter vos changements en piochant dans la liste des exemples présenté précédement dans cette page. Vous pourrez également vous inspirer des dispositions de clavier existante situées dans /usr/share/X11/xkb/symbols/*.

/!\ Si vous enlevez certains symboles de votre clavier, vous ne pourrez plus les écrire. C'est particulièrement problèmatique s’il s'agit de la touche « espace » ou « entrée ». Je vous conseille lors des phases de tests de toujours avoir une console accessible à la souris (pour pouvoir faire du copier-coller avec le clic milieu), avec la commande suivante prête à être validée : « setxkbmap fr bepo ».

Exemple

- Un exemple complet se trouve ici.

- La disposition perso de Robin à également été construite de cette manière.


Utiliser une disposition personnalisée avec du matériel Razer

Étant possesseur d’un Razer Orbweaver (il s’agit globalement d’un clavier main gauche prévu pour les jeux vidéos), je souhaitais modifier la disposition des touches. L’outil RazerSynapse n’étant pas disponible sous Linux, voici le script que j’utilise :

orbweaver_id=$(
    xinput list | sed -n 's/.*Orbweaver.*id=\([0-9]*\).*keyboard.*/\1/p'
)

[ "$orbweaver_id" ] || exit

mkdir -p /tmp/xkb/symbols
cat >/tmp/xkb/symbols/custom <<\EOF
xkb_symbols "orbweaver" {
    name[Group1]= "English (US) for orbweaver";

    key <TLDE> {	[     grave,	asciitilde	]	};
    key <AE01> {	[	  1,	exclam 		]	};
    key <AE02> {	[	  2,	at		]	};
    key <AE03> {	[	  3,	numbersign	]	};
    key <AE04> {	[	  4,	dollar		]	};

    key <TAB>  { type[group1] = "TWO_LEVEL", [ Tab,  ISO_Left_Tab ] };
    key <AD01> {	[	  q,	Q 		]	};
    key <AD02> {	[	  w,	W		]	};
    key <AD03> {	[	  e,	E		]	};
    key <AD04> {	[	  r,	R		]	};

    key <CAPS> { type[group1] = "ONE_LEVEL", [ Caps_Lock ] };
    key <AC01> {	[	  a,	A 		]	};
    key <AC02> {	[	  s,	S		]	};
    key <AC03> {	[	  d,	D		]	};
    key <AC04> {	[	  f,	F		]	};

    key <LFSH> { type[group1] = "ONE_LEVEL", [ Shift_L ] };
    key <AB01> {	[	  z,	Z 		]	};
    key <AB02> {	[	  x,	X		]	};
    key <AB03> {	[	  c,	C		]	};
    key <AB04> {	[	  v,	V		]	};

    key <LALT> { type[group1] = "ONE_LEVEL", [ Alt_L ] };
    key <UP>   {	[  Up			]	};
    key <LEFT> {	[  Left			]	};
    key <DOWN> {	[  Down			]	};
    key <RGHT> {	[  Right		]	};
    key <SPCE> {	[  space		]	};
};

xkb_symbols "orbweaver_custom" {
    include "custom(orbweaver)"
    name[Group1]= "custom mapping for orbweaver";

    key <CAPS> {	[ Control_L		]	};
};

EOF

setxkbmap -device $orbweaver_id -print | sed 's/\(xkb_symbols.*"\).*\(".*\)/\1custom(orbweaver_custom)\2/' | xkbcomp -I/tmp/xkb -i $orbweaver_id -synch - $DISPLAY 2>/dev/null

Cela me permet de ne pas modifier la disposition de mon clavier (qui est en bépo), tout en ayant une disposition qwerty sur mon orbweaver. J'ai de plus ajouté une touche control à la place du caps-lock de mon orbweaver. Ces modifications s'inspirent de cet article du forum archlinux.

setxkbmap ne fonctionne qu’une seule fois

Imaginez le scénario suivant :

  •  vous créez un nouveau layout dans un fichier /usr/share/X11/xkb/symbols/layout ;
  •  vous l’activez à l’aide de la commande setxkbmap layout variante ;
  •  vous modifiez votre layout ;
  •  vous retapez setxkbmap layout variante ;
  •  vous vous apercevez que vos dernières modifications n’ont pas été prises en compte.

En fait, la première fois que vous exécutez setxkbmap layout variante, la commande compile le clavier et le stocke dans /var/lib/xkb sous forme d’un fichier .xkm avec un nom du genre server-1AAD618ED4955FE03F2E50661CFAE17F431BAE8A.xkm
Aux appels suivants de la commande setxkbmap, le fichier .xkm ne sera plus compilé.

La manière la plus simple d’obtenir sa recompilation à partir du code xkb que vous venez de modifier est d’effacer au préalable les fichiers .xkm avec la commande
rm /var/lib/xkb/*.xkm si vous êtes su,
ou sudo rm /var/lib/xkb/*.xkm si vous êtes sudoer,
ou encore de renommer le fichier source.

Éviter les « fautes» de frappe de caractères invisibles dans les interfaces en ligne de commandes

En CLI, pour éviter les commandes infructueuses dues à des caractères invisibles – notamment l’espace insécable à la place de l’espace du fait de sa position en bépo sur clavier bépoMaj+clavier bépoEspace –, il est possible de remplacer ces caractères par d’autres à l’aide de raccourcis (bind).

bash

Dans bash, la commande bind $'"caractère_à_éviter":"caractère_de_remplacement"' peut être utilisée. Elle s’applique au shell courant jusqu’à sa fermeture et peut être placée dans le fichier ~/.bashrc pour l’appliquer à toutes les sessions.

Pour remplacer les espaces insécables par des espaces : bind $'"\u00a0":" "'.

zsh (et csh, tcsh)

Dans zsh, la commande bindkey -s $'caractère_à_éviter' 'caractère_de_remplacement' peut être utilisée. De même qu'en bash, cette commande s'applique au shell courant jusqu'à sa fermeture et peut être placée dans le fichier ~/.zshrc pour l'appliquer à toutes les sessions.

Pour remplacer les espaces insécables par des espaces : bindkey -s $'\u00a0' ' '.

fish

Dans fish, la commande bind caractère_à_éviter "commandline -i 'caractère_de_remplacement'" peut être utilisée. De même que sur les précédents interpréteurs de commandes, cette commande s’applique au shell courant jusqu’à sa fermeture.

Pour remplacer les espaces insécables par des espaces : bind \u00A0 "commandline -i ' '".

Pour rendre ce changement permanent, il suffit de créer ou d’éditer la fonction fish_user_key_bindings :

 function fish_user_key_bindings
   bind \u00A0 "commandline -i ' '"
 end
 
 funcsave fish_user_key_bindings


La fonction est sauvegardé dans le fichier $HOME/.config/fish/functions/fish_user_key_bindings.fish.

Voir la documentation sur le site officiel

Combinaisons de touches particulières

Commande telnet

Sous windows, l'échappement du telnet se fait avec [Ctrl] + [$] en azerty. En bépo, c'est …………

Notes et références

  1. Le chemin complet est [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout].
  2. Citation de la page indiquée plus haut : « Note that if the mapping of a scan code is necessary on a keypress, the step is performed in user mode just before the scan code is converted to a virtual key. Doing this conversion in user mode can present certain limitations, such as mapping not working correctly when running under Terminal Services. » Keyboard and mouse class drivers, section « Scan code mapper for keyboards »
  3. Ce bug, apparu quand VerrCap était remappé en Maj gauche, a disparu quand c’est Alt qui a été remappé en Maj gauche. Il empêchait la sélection de texte par Maj+flèche, et la sélection de fichiers multiples par Maj+clic.
  4. La dernière version archivée est attachée à ce mail sous le nom de Scancode_Map_2017-11-15T1658+0100.zip.
  5. Les deux fils à l’origine de l’envoi de cette suite de pièces jointes sont : Inversion Caps/Maj sous windows et Inversion Alt Gr/Maj sous windows. Ne pas hésiter à rechercher dans l’archive les autres occurrences du sujet : Remarques d'un néophyte sur la disposition bépo, Deux propositions, pour ne citer que les deux occurrences de "scancode map" trouvées par Google dans l’archive (le 15/10/2017).