Liaison de Super à Ctrl
Qu'en est-il de lier votre Windows/Logo/Super
touche gauche pour agir comme une autre Ctrl
clé?
Vous pouvez y parvenir avec les commandes xmodmap suivantes:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
En supposant que vous avez enregistré les lignes ci-dessus, super_as_ctrl.xmodmap
vous pouvez tester l'effet en exécutant
xmodmap super_as_ctrl.xmodmap
Pour rendre la modification permanente (reconnexion / redémarrage survivante), renommez le fichier .Xmodmap
dans votre dossier personnel.
(Ce qui précède a été testé sur le système live Ubuntu 11.10, mais il devrait être le même pour les autres distributions Linux)
Réglage des raccourcis Copier / Coller pour votre programme de terminal
Ayant lié Super
à Ctrl
vous pouvez maintenant utiliser Super-C
pour copier presque partout. La seule exception courante est votre programme de terminal. Cependant, vous pouvez y redéfinir les raccourcis.
J'ai découvert que même gnome-terminal
cette option était disponible (je n'en avais pas jusqu'à ce que je m'y habitue de Ctrl-Shift-C
toute façon). Dans le cas où vous l'utilisez, allez Edit / Keyboard Shortcuts...
dans le menu et affectez-le Ctrl-C
à copier et Ctrl-V
à coller. Devrait être similaire pour konsole
etc.
Et ne vous inquiétez pas, vous ne perdrez pas la possibilité de terminer un programme à l'aide d'un raccourci. Après avoir lié à nouveau le raccourci de copie pour le terminal, vous pouvez simplement l'utiliser Ctrl-Shift-C
comme vous l'avez utilisé Ctrl-C
auparavant. Le terminal ne distingue pas ici si Shift est enfoncé ou non. Et le raccourci n'est plus pris pour la copie. Vous pouvez également relier la terminaison à un autre raccourci, comme le suggère MountainX dans sa réponse.
XF86Copy etc. ne fonctionne pas
Concernant les symboles clés du copier-coller: Apparemment, ils n'ont aucun effet. Je l'ai testé rapidement en affectant l'action de copie à Shift-ScrollLock (elle n'était pas utilisée et je voulais tester avec une touche non modificatrice):
xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'
Le presser n'a eu aucun effet, ni avec XF86AudioMute. Cependant, cela a fonctionné lors de l'attribution de la lettre «a». Je suppose donc qu'il y a un problème spécifique avec ces symboles clés spéciaux XF86.
Si vous voulez lier seulement quelques séquences de la forme Super + x, Super + c, Super + v à d'autres séquences comme Ctrl + x, Ctrl + c, Ctrl + v, par exemple pour que (comme l'OP le souhaite) ces certaines séquences de Super-clés seront généralement mappées pour couper et coller sans affecter les autres utilisations de la Super clé sur votre système, il est possible d'utiliser uniquement l'extension XKB. La procédure ci-dessous décrit les étapes et donne deux exemples différents des détails de deux configurations de clavier de démarrage différentes; nous espérons que cela fournira suffisamment d'informations pour s'adapter à votre système. Il suppose que vous êtes à l'aise avec la création et la modification de fichiers sur votre système, y compris ceux qui se trouvent dans des emplacements système comme
/usr/share/X11/xkb
.Décidez où vous souhaitez que votre arborescence de configuration XKB réside. Trouvez d'abord le système. Il se trouve généralement dans / usr / share / X11 / xkb, et je ne sais pas trop comment le trouver s'il n'est pas là; vous pouvez simplement rechercher dans votre système des répertoires nommés "xkb". Quoi qu'il en soit, une fois que vous l'avez trouvé, vous pouvez soit modifier le système en place, soit utiliser n'importe quel répertoire de votre choix. L'avantage d'utiliser le répertoire système est que vous pouvez invoquer vos modifications beaucoup plus facilement, mais l'inconvénient est que les futures mises à jour du système peuvent écraser vos modifications (vous avez été averti). Dans tous les cas, tous les noms de fichiers mentionnés ci-après sont relatifs à ce répertoire, que j'appellerai en cas de besoin $ XKBLOCAL $, et toutes les commandes supposent que c'est votre répertoire actuel.
Déterminez quel "type" de clé XKB sont les clés x, c, v actuelles. La façon la plus simple de le faire est via la commande
xkbcomp -a $DISPLAY - | grep -C 6 c,
(notez que la virgule est intentionnellement incluse dans le modèle). Dans mon premier exemple d'installation, cela produit:alors que dans mon autre exemple de configuration, cela produit
Le résultat est que dans le premier exemple, les clés pertinentes sont de type "ALPHABETIC" tandis que dans le deuxième exemple, elles sont de type "FOUR_LEVEL". Selon la configuration de votre clavier, vous constaterez peut-être qu'ils sont d'un autre type. Dans ce qui suit, le type sera appelé $ TYPE $, que vous devez remplacer par la chaîne réelle ALPHABETIC ou autre dans les commandes ci-dessous.
Recherchez la définition de $ TYPE $ et copiez-la dans un nouveau fichier dans le répertoire $ XKBLOCAL $ / types. Voici une commande qui fait exactement cela:
xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. Le nom du fichier "cutpaste" que j'ai choisi est arbitraire, utilisez le nom que vous voulez, mais notez que vous devrez vous référer systématiquement à ce fichier dans les étapes ultérieures. Dans la première configuration, ce fichier obtient le contenuet dans l'autre exemple, il obtient le contenu
Modifiez les types de fichiers / cutpaste pour faire deux choses: ajoutez un préambule et un postambule qui en font une clause XKB appropriée, et modifiez le nom du type et la définition de type pour ajouter un niveau supplémentaire produit par le modificateur correspondant à Super. Vous devriez vérifier ce que ce modificateur est sur votre système, il s'agit probablement de Mod4 tel qu'utilisé ci-dessous. Les modifications nécessaires doivent être évidentes à partir des deux exemples de versions finales de types / cutpaste, à savoir:
et
Copiez les définitions de symboles clés qui ont été générées par grep dans la deuxième étape dans un deuxième nouveau fichier de symboles / coupe-pâte, et ajoutez un préambule et un postambule similaires, et modifiez les définitions pour utiliser les nouveaux types et ajoutez des actions à la définition pour gérer la clé souhaitée produite par les versions Super. Les résultats de ceci dans nos deux exemples sont:
et
Notez que dans le deuxième exemple, j'ai également supprimé certains des espaces (non significatifs) pour garder la longueur de la ligne sous un peu de contrôle.
Recherchez le nom de l'ensemble de règles que XKB utilise actuellement. C'est facile, c'est montré dans le résultat de
setxkbmap -query
. Dans mon cas, c'était "evdev".Copiez la version système de rules / evdev (ou quel que soit le nom de votre ensemble de règles) dans $ XKBLOCAL $ / rules / evdev et ajoutez des règles pointant vers les options que nous avons créées. Vous avez deux choix ici: vous pouvez copier tout evdev ou seulement les parties mentionnant le modèle de clavier, la disposition, la variante et les options que vous utilisez réellement. Bien sûr, si vous modifiez les fichiers système en place, vous n'avez pas besoin de faire de copie, juste d'éditer.
Dans ce cas, ce qui est ajouté est identique quelle que soit la configuration initiale du clavier, il n'y a donc qu'un seul exemple. Vous trouvez la section du fichier de règles qui commence par
! option = symbols
et ajoutez une lignecutpaste:super = +cutpaste
à cette section, et vous trouvez également la section du fichier de règles qui commence par! option = types
et une lignecutpaste:super = +cutpaste
à cette section également.Copiez la version système de evdev.lst et ajoutez une ligne pour votre nouvelle option. Notez que le nom de ce fichier correspond simplement au nom du fichier de règles avec .lst ajouté. Comme à l'étape précédente, vous pouvez copier l'intégralité du fichier ou uniquement la partie référencée par le modèle, la disposition, la variante et les options que vous utilisez. Il vous suffit de trouver la section de ce fichier qui commence par
! option
et d'ajouter une ligne comme celle-ci:cutpaste:super Add super equivalents of cut and paste operations
à cette section.OK, maintenant tous les fichiers de configuration sont en place. Si vous avez modifié les fichiers système, vous pouvez maintenant invoquer votre nouvelle option avec
setxkbmap -option cutpaste:super
. En revanche, si vous ne l'avez pas fait, vous devez indiquer à setxkbmap où se trouve votre répertoire $ XKBLOCAL $. Pire encore, le serveur ne sait pas non plus où se trouve ce répertoire, et setxkbmap ne le dit pas (ou peut-être pas, car finalement le serveur peut fonctionner sur une autre machine). Vous devez donc diriger la sortie de setxkbmap vers xkbcomp, et également indiquer à cette commande où se trouve votre répertoire $ XKBLOCAL. La ligne de commande complète est doncsetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.J'espère que cela peut aider / intéresser quelqu'un, car la bonne documentation / référence XKB définitive est rare. Une référence très utile était http://madduck.net/docs/extending-xkb/ .
la source
setxkbmap -option
. Ma configuration locale était presque identique à l'exemple FOUR_LEVEL à l'exception de certains symboles Group2, Group3 que j'ai omis du fichier de symboles partiels, mon fichier ressemblait donc aux exemples.Voici ce que je fais. Ce n'est pas la solution ultime, mais j'ai essayé d'atteindre la solution ultime et je n'ai pas pu y arriver après beaucoup d'efforts. J'ai donc opté pour quelque chose de simple et qui fonctionne pour plus de 90% de mes besoins. Je peux l'implémenter sur n'importe quel ordinateur auquel je vais (ou toute nouvelle installation Linux) en quelques minutes. C'est très simple.
Dans l'application du terminal X, définissez les préférences de raccourci. Je l'ai fait à la fois dans Gnome et KDE. Dans Konsole, par exemple, allez dans Menu> Paramètres> Configurer les raccourcis. Il existe un menu similaire dans le terminal Gnome X. Sélectionnez simplement le raccourci (par exemple, "copier") et entrez la séquence de touches souhaitée.
Dans le cas où les raccourcis du copier-coller du terminal entrent en conflit avec les commandes du terminal, il existe également une solution simple. Par exemple, que se passe-t-il si quelqu'un souhaite utiliser CTRL-C pour la copie (pour que le terminal X soit conforme à la norme CUA)?
Dans ce cas, vous pouvez facilement modifier les liaisons de touches stty (dans .bashrc). En continuant le CTRL-C pour l'exemple de copie, disons que vous voulez que la touche d'interruption soit maintenant CTRL-b (pour "break"). Cela permet:
Puis sourcez .bashrc.
L'ensemble de la solution est aussi simple que d'utiliser les paramètres des terminaux X pour modifier les raccourcis et, éventuellement, résoudre les conflits avec stty avec une commande d'écho sur une ligne. Dead simple et couvre presque tout ce dont j'ai besoin.
la source
La touche Windows est probablement la touche de modification. exécutez ceci et réessayez:
la source
xmodmap -e 'remove Mod1 = Meta_L'
et essayer vos commandes après) a bien fonctionné pour moi.J'ai pris une partie de ce que Glen Whitney avait dit et j'ai réussi à utiliser ces connaissances pour mapper le comportement de pire mot ou de manipulation de texte de macOS dans un clavier personnalisé.
J'ai déjà résolu le problème de copier-coller Ctrl vs Super sans impliquer cette solution spécifique, mais comme je l'ai dit, cela a été très utile pour d'autres choses. J'ai également évité des choses comme xmodmap car je vise à soutenir pleinement Wayland à un moment donné. Kinto utilise le xkb natif et respecte le comportement attendu du terminal comme macOS.
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Voici également un résumé, si vous voulez simplement voir ce qui est au cœur de tout cela, il n'alternera pas votre clavier si nécessaire. Le Gist n'inclut pas non plus de fichiers de mappage de touches xkb personnalisés qui configurent des curseurs de style macOS / des manipulations de mots qui utilisent Cmd et les touches de direction.
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
contenu essentiel
la source