GNU/Linux >> Tutoriels Linux >  >> Linux

Relier Super+C Super+V pour copier et coller

Lier Super à Ctrl

Qu'en est-il de la liaison de votre Windows/Logo/Super gauche clé pour agir comme un 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 ayez enregistré les lignes ci-dessus sous le nom super_as_ctrl.xmodmap vous pouvez tester l'effet en exécutant

xmodmap super_as_ctrl.xmodmap

Pour rendre le changement permanent (survivre à la reconnexion/redémarrage), renommez le fichier en .Xmodmap dans votre dossier personnel.

(Ce qui précède a été testé sur le système live Ubuntu 11.10, mais il devrait en être de même pour les autres distributions Linux)

Ajustement des raccourcis Copier/Coller pour votre programme de terminal

Ayant lié Super à Ctrl vous pouvez maintenant utiliser Super-C à 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 a cette option maintenant (je ne l'avais pas jusqu'à ce que je m'habitue à Ctrl-Shift-C De toute façon). Si vous utilisez celui-là, allez à Edit / Keyboard Shortcuts... dans le menu et attribuez 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 reconnecté le raccourci de copie pour le terminal, vous pouvez simplement utiliser Ctrl-Shift-C comme vous avez utilisé Ctrl-C avant de. 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 pour le copier-coller :Apparemment ils n'ont aucun effet. Je l'ai testé rapidement en attribuant 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'

Appuyer dessus 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 les séquences de super-clés particulières 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 pour deux configurations de clavier de démarrage différentes ; J'espère que cela fournira suffisamment d'informations pour s'adapter à votre système. Cela suppose que vous êtes à l'aise avec la création et la modification de fichiers sur votre système, y compris ceux situés dans des emplacements système tels que /usr/share/X11/xkb .

  1. Décidez où vous voulez que votre arborescence de configuration XKB réside. Trouvez d'abord celui du 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'y est pas; vous pouvez simplement rechercher sur 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 celui du 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 beaucoup plus facilement vos modifications, mais l'inconvénient est que les futures mises à jour du système pourraient écraser vos modifications (vous avez été prévenu). 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 qu'il s'agit de votre répertoire courant.

  2. Déterminez quel "type" de clé XKB sont les clés x,c,v actuelles. Le moyen le 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 motif). Dans mon premier exemple de configuration, cela produit :

    key <AB02> {
        type= "ALPHABETIC",
        symbols[Group1]= [               x,               X ]
    };
    key <AB03> {
        type= "ALPHABETIC",
        symbols[Group1]= [               c,               C ]
    };
    key <AB04> {
        type= "ALPHABETIC",
        symbols[Group1]= [               v,               V ]
    };
    key <AB05> {
    

    alors que dans mon autre exemple de configuration, cela produit

    key <AB02> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               x,               X, approxeq,     dead_ogonek ]
    };
    key <AB03> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               c,               C, ccedilla,        Ccedilla ]
    };
    key <AB04> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               v,               V, squareroot,           U25CA ]
    };
    key <AB05> {
    

    Le résultat est que dans le premier exemple, les clés concernées sont de type "ALPHABETIC" alors 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 tout autre type. Dans ce qui suit, le type sera appelé $TYPE$, que vous devez remplacer par la chaîne réelle ALPHABETIC ou quoi que ce soit dans les commandes ci-dessous.

  3. Recherchez la définition de $TYPE$ et copiez-la dans un nouveau fichier du 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 à ce fichier de manière cohérente dans les étapes ultérieures. Dans la première configuration, ce fichier récupère le contenu

    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    

    et dans l'autre exemple, il obtient le contenu

    type "FOUR_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    
  4. 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 du type pour ajouter un niveau supplémentaire produit par le modificateur correspondant à Super. Vous devriez vérifier quel est ce modificateur 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 :

    default partial xkb_types "addsuper" {
        type "ALPHABETIC_SUPER" {
            modifiers= Shift+Lock+Mod4;
            map[Shift]= Level2;
            map[Lock]= Level2;
            map[Mod4]= Level3;
            map[Shift+Mod4]= Level3;
            map[Lock+Mod4]= Level3;
            level_name[Level1]= "Base";
            level_name[Level2]= "Caps";
            level_name[Level3]= "With Super";
        };
    };
    

    et

    default partial xkb_types "addsuper" {
        type "FOUR_LEVEL_SUPER" {
            modifiers= Shift+LevelThree+Mod4;
            map[Shift]= Level2;
            map[LevelThree]= Level3;
            map[Shift+LevelThree]= Level4;
            map[Mod4]= Level5;
            map[Shift+Mod4] = Level5;
            map[LevelThree+Mod4] = Level5;
            map[Shift+LevelThree+Mod4] = Level5;
            level_name[Level1]= "Base";
            level_name[Level2]= "Shift";
            level_name[Level3]= "Alt Base";
            level_name[Level4]= "Shift Alt";
            level_name[Level5]= "With Super"';
       };
    };
    
  5. Copiez les définitions de symboles de clé qui ont été générées par grep à la deuxième étape dans un deuxième nouveau fichier symboles/cutpaste, 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 produit par les versions Super. Les résultats de ceci dans nos deux exemples sont :

    default partial xkb_symbols "superversions" {
        replace key <AB02> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               x,               X, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               c,               C, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               v,               V, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    et

    default partial xkb_symbols "superversions" {
        replace key <AB02> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    Notez que dans le deuxième exemple, j'ai également supprimé certains des espaces blancs (non significatifs) pour garder un peu de contrôle sur la longueur de la ligne.

  6. Recherchez le nom de l'ensemble de règles que XKB utilise actuellement. C'est simple, c'est affiché dans le résultat de setxkbmap -query . Dans mon cas, c'était "evdev".

  7. 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 exemple. Vous trouvez la section du fichier de règles qui commence par ! option = symbols et ajoutez une ligne cutpaste:super = +cutpaste à cette section, et vous trouverez également la section du fichier de règles qui commence par ! option = types et une ligne cutpaste:super = +cutpaste à cette section également.

  8. 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 ajoutez une ligne comme celle-ci :cutpaste:super Add super equivalents of cut and paste operations à cette section.

  9. 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 . D'autre part, 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 ne peut-il pas, car finalement le serveur peut s'exécuter 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 donc setxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY .

J'espère que cela aidera/intéressera quelqu'un, car une bonne documentation/référence XKB définitive est rare. Une référence très utile était http://madduck.net/docs/extending-xkb/.


Voici ce que je fais. Ce n'est pas la solution ultime, mais j'ai essayé d'atteindre la solution ultime et je n'y suis pas parvenu après beaucoup d'efforts. J'ai donc opté pour quelque chose de simple et qui fonctionne pour plus de 90% de ce dont j'ai besoin. Je peux l'implémenter sur n'importe quel ordinateur sur lequel je vais (ou sur 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 dans Gnome et KDE. Dans Konsole, par exemple, accédez à 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.

En cas de conflit entre les raccourcis de copier-coller du terminal et les commandes du terminal, il existe également une solution simple. Par exemple, que se passe-t-il si quelqu'un veut utiliser CTRL-C pour copier (afin que le terminal X soit conforme à la norme CUA) ?

Dans ce cas, vous pouvez facilement modifier les raccourcis clavier 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 accomplit cela :

echo "stty intr \^b" >> ~/.bashrc 

Puis source .bashrc.

Toute la solution est aussi simple que d'utiliser les paramètres des terminaux X pour modifier les raccourcis, puis, éventuellement, de résoudre les conflits avec stty avec une commande echo d'une ligne. Mort simple et couvre presque tout ce dont j'ai besoin.


Linux
  1. Copiez et collez sur la ligne de commande Linux avec xclip

  2. Copier/couper et coller ne fonctionne parfois pas sur Nautilus ?

  3. Résoudre les erreurs de copier-coller avec Remote Desktop

  4. politique et mécanisme

  5. Rechercher et copier des fichiers

Copiez et collez du texte dans le terminal sur Ubuntu 22.04

Comment copier, couper et coller dans Vim / Vi

Comment copier et coller du texte dans le terminal Linux

Comment copier et coller dans Ubuntu

Histoire Unix et Linux

Comment générer et utiliser la clé SSH dans le système Linux ?