Comment personnaliser les mappages de clavier avec Wayland

20

J'utilise Linux sur un Macbook avec un clavier UK / GB et je personnalise la carte des touches pour résoudre certains problèmes provoqués par l'étrange disposition de clavier d'Apple. J'utilise xmodmappour cela. J'aimerais essayer Wayland, mais xmodmapça ne marche pas. Comment puis-je obtenir un résultat similaire dans Wayland? Le .Xmodmapfichier que j'utilise contient les éléments suivants:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Ligne 1: Sur les claviers britanniques Shift- 3est £, donc # a généralement sa propre clé à proximité Return. Mais sur le Mac # est obtenu avec Altgr- 3. En tant que programmeur, j'utilise # bien plus que £ donc cette ligne les échange. La sélection de la disposition américaine permet également d'atteindre cet objectif, mais cela sous Linux permute également certaines autres clés couramment utilisées, tandis que sous OS X, ces autres clés ne sont pas affectées par les États-Unis / Royaume-Uni.

Lignes 2 à 5: faites Cmden sorte que la touche droite agisse comme Droite Ctrl, car ce clavier n'a pas de Ctrltouche droite physique .

Ligne 6: CapsLockne fonctionne que si vous appuyez dessus avec Shift. Non spécifique à Mac, cela devrait être une option standard pour tous les systèmes d'exploitation et claviers.

realh
la source
J'en suis à mi-chemin: apparemment Wayland utilise xkb, et xmodmap est de toute façon obsolète dans X. Malheureusement, xkb est considérablement plus compliqué, et GNOME n'a jamais considéré que les utilisateurs pourraient avoir besoin de le personnaliser, j'ai donc posé une deuxième question .
Realh

Réponses:

11

Malheureusement, la modification de la base de données du système XKB /usr/share/X11/xkbest la seule façon; d'après votre autre question, il semble que vous ayez réussi à faire fonctionner cette partie.

La limitation est principalement due à l'immaturité de Wayland et à une erreur de conception dans XKB.

  • Des outils comme setxkbmapet xkbcompfournissent une -Ioption pour ajouter une base de données définie par l'utilisateur à la recherche (par exemple ~/.xkbou ~/.config/xkb, avec des fichiers et des sous-répertoires disposés comme la base de données système). Ces outils interagissent avec le serveur X, ils peuvent donc être utiles pour configurer la Xwaylandcouche de compatibilité pour exécuter des applications X sous Wayland. Mais ils ne parlent pas actuellement les protocoles Wayland.

  • Les protocoles Wayland arrivent à maturité. Actuellement, il semble que les protocoles input-methodet text-inputsoient les plus pertinents, et les deux sont instables. Ni mentionner quoi que ce soit sur la modification d'une image clé définie; ces détails sont laissés au compositeur.

  • GNOME et KDE fournissent tous deux des démons de paramètres de gestion du clavier qui devraient gérer les options du système XKB, y compris les modifications à la volée. À ma connaissance, il n'y a aucun moyen de parler des personnalisations des utilisateurs. Pour autant que je sache, Weston et d'autres compositeurs s'appuient sur des fichiers de configuration ou des variables d'environnement pour définir les options XKB au démarrage, et ne fournissent aucun moyen de les modifier autre que la fermeture et le redémarrage.

  • Même dans XKB lui-même, cela n'est pas entièrement pris en charge. Votre fichier de symboles personnalisé peut contenir d' includeautres fichiers de symboles système. Mais à l'heure actuelle, il n'y a pas de includefonctionnalité pour les fichiers de règles XKB, donc même si vous aviez un outil qui parlerait au compositeur Wayland et rechercherait vos personnalisations personnelles, vous devriez inclure manuellement toutes les règles que vous souhaitez utiliser (c'est-à-dire copier rules/evdev*du système XKB et le modifier). libxkbcommona un problème ouvert sur ce sujet et un bogue connexe .

chimérique
la source
1
J'aurais dû préciser que j'ai à peu près résolu cela maintenant. Je l'ai dit dans l'autre question, mais les informations sont un peu décousues. J'ai l'intention de documenter cela plus clairement lorsque j'arriverai à ajouter un blog à mon site Web, alors je devrai me rappeler de le lier ici.
Realh
bien sûr, mais c'était toujours une question sans réponse, j'ai donc essayé d'aborder l'équivalent de Wayland .Xmodmap.
Don Quichotte
3
J'ai maintenant documenté cela en détail dans un article de blog .
Realh
5

J'ai utilisé avec succès des outils d'interception pour Linux, et je connais des gens qui produisent également d'autres plugins pour leurs mappages personnalisés . caps2esc est un premier plug-in de preuve de concept que j'utilise tous les jours et qui fonctionne à la fois sur X et Wayland. L'outil est un peu plus bas que le logiciel de cartographie habituel, mais assez flexible, et mon plan pour un prochain plugin est un outil de cartographie des accords généralisés.

Avertissement: je suis l'auteur.

pepper_chico
la source
Les outils d'interception semblent vraiment intéressants! Merci pour votre travail!
balu
1
Je ne sais pas ce que je pense de l'exécution de toutes mes entrées au clavier via un script python
Ace.C
4

Pour ceux qui viennent ici en 2018 (Ubuntu 17.10), la partie la plus critique de cela peut être accomplie en utilisant l'outil GNOME Tweak.

Outil Gnome Tweak> Clavier et souris> Options de mise en page supplémentaires> Ctrl est mappé sur les touches Win (et les touches Ctrl habituelles).

Bardi Harborow
la source
2
Est-ce que l'utilisation de "Gnome Tweak Tool" (quel qu'il soit) définit également les nouveaux mappages pour d'autres gestionnaires / environnements / shells graphiques Windows?
Mali Remorker
Gnome Tweak Tool ne peut pas remapper le verrouillage des majuscules.
andyn
@andyn my gnome-tweaks-3.34.0-1.fc31.noarchpeut remapper Caps Lock.
maxschlepzig
2

Cette réponse a la même idée que la réponse de quickotic mais juste avec un exemple plus détaillé:

Gnome Tweaks a une liste de 20 ou 30 réglages de clavier que vous pouvez faire via xkb. Parfois, vous pouvez trouver le réglage que vous recherchez par défaut. Dans mon cas, je voulais échanger la touche écran d'impression avec Menu.

La seule option pour modifier la clé printscr disponible via xkb était de la remplacer par Win_R. Gunnar Hjalmarsson sur ce fil m'a suggéré de modifier les modifications de xkb pour que le printcr / win_r fasse plutôt le printcr / menu. Nous avons travaillé ensemble sur une solution et je vais la retransmettre ici:

Dans le terminal, entrez:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Au bas du fichier, vous trouverez:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Supprimez cette section et remplacez-la par ceci:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Pour supprimer dans nano, utilisez la touche de retour arrière (la mise en surbrillance et la suppression ne fonctionnent pas). Pour coller, utilisez shift-ctrl-v. Pour quitter et enregistrer, appuyez sur ctrl-x, sélectionnez oui pour remplacer et appuyez sur entrée.

Redémarrez. Dans Gnome / Ubuntu Allez dans gnome-tweak-tools Dans les outils de tweak, allez dans la section Clavier et souris, appuyez sur le bouton Options de mise en page supplémentaires et développez le comportement des touches Alt / Win. Sélection de l'option tout en bas: Win est mappé sur printscr (rappelez-vous que nous avons modifié ce comportement uniquement pour permuter l'impression et le menu au lieu de l'impression et de Win). (Je suis sûr qu'il existe un moyen d'activer l'option xkb modded dans KDE mais je ne l'utilise pas, donc je ne peux pas vous donner la procédure exacte).

thebunnyrules
la source