6 votes

Terminal: mapper la touche super/commande dans stty

Je veux remapper les raccourcis du terminal (en particulier, je veux remapper INTR de CTRL+C à Commande+C) dans Terminal.

Voici donc mes liaisons stty actuelles

$ stty -a
speed 38400 baud; 38 lignes; 179 colonnes;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ;
    eol2 = ; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;

Et par exemple, si vous voulez remapper quelque chose, ce serait comme ça

stty intr \^c

Ce qui mappe SIGINT à CTRL+C

Mais je veux mapper SIGINT à COMMAND+C. Quelque chose comme ceci (qui est invalide) :

stty intr c

Je sais que le terminal ne reconnaît pas vraiment la touche Commande, mais y a-t-il un moyen créatif de le faire ?

Remarque: Je sais que cela peut être fait avec ITerm2 mais je me demande s'il y a un moyen de le faire avec le Terminal classique.

Merci

2voto

cozos Points 181

@Niklas J'ai résolu le problème, mais sans utiliser stty. Au lieu de cela, j'ai utilisé Karabiner-Elements pour effectuer une configuration personnalisée sur les touches du terminal (sans affecter le reste de mes raccourcis).

En gros, vous installez l'application Karabiner-Elements, puis vous rédigez une règle de "complex modifications" dans le fichier karabiner.json pour échanger ce que vous voulez. Voici un guide sur comment configurer le fichier json.

Mon karabiner.json ressemble à ceci:

{
  "name" : "com.apple.Terminal",
  "simple_modifications" : {
    "left_option" : "left_control",
    "left_command" : "left_option",
    "right_control" : "right_command",
    "right_option" : "right_control",
    "right_command" : "right_option",
    "left_control" : "left_command"
  },
  "complex_modifications" : {
    "rules" : [
      {
        "manipulators" : [
          {
            "to" : [
              {
                "key_code" : "c",
                "modifiers" : [
                  "left_command"
                ]
              }
            ],
            "type" : "basic",
            "from" : {
              "key_code" : "c",
              "modifiers" : {
                "mandatory" : [
                  "left_control"
                ],
                "optional" : [
                  "any"
                ]
              }
           }
        ]
      },
      ... plus de règles pour tous les caractères stty, etc
    ]
  }
}

0voto

Pavan Konduri Points 1

Pour les utilisateurs d'iTerm2 seulement

Vous avez juste besoin d'ajouter une combinaison de touches dans les Préférences. Préférences -> Clés -> Combinaisons de touches. Ajoutez une nouvelle combinaison de touches, choisissez votre raccourci clavier et choisissez l'action comme Envoyer un code hexadécimal. Par exemple, j'ai configuré Y en Ctl-C (interrompre).

Le code hexadécimal X03 est pour l'interruption Suivez ce lien pour trouver les codes hexadécimaux des codes de contrôle Ascii (caractères de contrôle, contrôles C0).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X