566 votes

Remappez "Home" et "End" au début et à la fin de la ligne

La plupart de mon temps de calcul est passé sous Linux (avec un temps occasionnel sous Windows). Sur ces plateformes, le Home y End permettent de passer universellement au début ou à la fin de la ligne en cours.

Je m'habitue progressivement à utiliser le seul ordinateur Apple de ma vie, mais il est toujours frustrant que ces touches semblent être liées au début et à la fin du document et qu'il ne semble pas y avoir de touche pour les actions basées sur les lignes.

Ma question :

  1. Y a-t-il des combinaisons de touches existantes qui me manquent pour le début et la fin de la ligne ? (J'utilise principalement un Terminal, Chrome et LibreOffice)
  2. Existe-t-il un moyen de relier les fonctions de ces touches aux fonctions qui me sont familières ? Je suis prêt à renoncer aux versions basées sur des documents qui me semblent peu utiles.

Deux mises en garde également :

  1. Je ne suis pas le seul utilisateur du système. Il serait bon que mes paramètres d'utilisateur ne perturbent pas l'expérience des autres. Si cela n'est pas possible, je pense que j'ai probablement la préférence la plus forte !
  2. J'utilise plusieurs langues et je passe d'une disposition de clavier à l'autre. Toute solution devrait donc fonctionner même lorsque je passe d'une disposition de clavier à l'autre.

2 votes

Notez que si j'ai fini par trouver une solution et répondre à ma propre question, je suis ouvert à des solutions plus faciles ou plus polyvalentes. De plus, le processus de découverte n'est pas clair. Par exemple, où trouver les codes des touches et les noms des actions si je voulais remapper plus de touches ? N'hésitez pas à ajouter des réponses si vous avez des connaissances pertinentes !

7 votes

Je déteste mon Mac pour cette raison précise. Tous les systèmes utilisent home and end sauf le mac.

2 votes

C'est mon plus gros problème depuis que j'utilise le Mac.

10voto

Lari Hotari Points 191

J'utilise le génial KeyRemap4MacBook avec les paramètres personnalisés ci-dessous.

Il corrige les problèmes de Home/End dans la plupart des applications et ne perturbe pas iTerm2.

De https://gist.github.com/lhotari/6134223181439b9ed0a1

<?xml version="1.0"?>
<!-- ~/Library/Application Support/KeyRemap4MacBook/private.xml -->
<!-- Custom keyboard mappings for MBP using https://pqrs.org/macosx/keyremap4macbook/ -->
<root>
    <item>
        <name>Lari's PC Style Home/End</name>
        <appendix>(Change Home to Command+Left)</appendix>
        <appendix>(Change End to Command+Right)</appendix>
        <appendix></appendix>
        <appendix>{{ PC_STYLE_BINDINGS_IGNORE_APPS_DESCRIPTION }}</appendix>
        <identifier>lari.remap.pclikehomeend</identifier>
        <block>
            <only>DREAMWEAVER</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME, ModifierFlag::SHIFT_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END,  ModifierFlag::SHIFT_L</autogen>
        </block>
        <block>
            <only>BLUEFISH,WORD,EXCEL,POWERPOINT</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END</autogen>
        </block>
        <!--
        <block>
            <only>EMACS, TERMINAL, X11, ECLIPSE</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::A, ModifierFlag::CONTROL_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::E, ModifierFlag::CONTROL_L</autogen>
        </block>
         -->
        <block>
            <not>{{ PC_STYLE_BINDINGS_IGNORE_APPS }}</not>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME,             KeyCode::CURSOR_LEFT,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,              KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen>
        </block>
    </item>
</root>

0 votes

N'a pas été mis à jour pour fonctionner avec Sierra, selon le lien ci-dessus.

1 votes

Cet outil a été renommé en Mousqueton et fonctionne apparemment avec OS X El Capitan 10.11, Sierra 10.12 et High Sierra 10.13.

9voto

Eric Toombs Points 71

La réponse de @Lri est géniale ( Merci beaucoup, cela me rendait fou. ), mais j'ai fini par le modifier un peu.

(Dans cette réponse, j'utilise les noms non-Apple pour les touches, donc Command = Super y Option = Alt )

SuperLeft y SuperRight était en fait mappé sur moveToLeftEndOfLine y moveToRightEndOfLine . Utilisation de moveToBeginningOfLine y moveToEndOfLine comme le fait @Lri, peut entraîner un comportement incohérent.

Il y a tout un tas d'autres différences entre les raccourcis d'Apple et ceux de tout le monde que j'ai ajoutés. Par exemple, ControlLeft y ControlRight sont censés se déplacer entre les mots, pas AltLeft y AltLeft . Je ne pense pas que cela soit exhaustif, mais cela fonctionne plutôt bien pour moi pour le moment. J'ai supposé que l'utilisateur avait déjà échangé le Control y Super pour réparer les coupures, les copies et les collages.

~/Library/KeyBindings/DefaultKeyBinding.dict:
{
    "\UF729"   = moveToLeftEndOfLine:; // home
    "\UF72B"   = moveToRightEndOfLine:; // end
    "$\UF729"  = moveToBeginningOfLineAndModifySelection:; // shift-home
    "$\UF72B"  = moveToEndOfLineAndModifySelection:; // shift-end

    "@\UF700"  = moveUp:;  //super-up
    "@\UF701"  = moveDown:;  //super-down
    "@\UF702"  = moveWordLeft:;  //super-left
    "@\UF703"  = moveWordRight:;  //super-right

    "@$\UF700" = moveUpAndModifySelection:;  // super-shift-up
    "@$\UF701" = moveDownAndModifySelection:;  // super-shift-down
    "@$\UF702" = moveWordLeftAndModifySelection:;  // super-shift-left
    "@$\UF703" = moveWordRightAndModifySelection:;  // super-shift-right

    "@\UF728"  = deleteWordForward:;  // super-delete
    "@\U7F"    = deleteWordBackward:;  // super-backspace
}

8voto

J'ai trouvé les éléments suivants utiles pour iterm2 y zsh avec des citations de ici :

Ouvrir iTerm > Preference . Aller à profiles tab > Keys . Cliquez ensuite sur le + en bas de la liste des touches, appuyez sur Home (ou Fn+left arrow sur le clavier sans fil Apple), sous Action sélectionnez Send Escape Sequence puis tapez [1~

Répétez pour End avec [~4 pour la séquence de touches d'échappement.

Si vous utilisez zsh, faites également ceci :

1) Placez les éléments suivants dans votre ~/.zshrc fichier

bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line

2) Courir source ~/.zshrc dans toutes les bornes ouvertes.

0 votes

ITerm2 dispose également d'un préréglage de mappage des touches "édition de texte naturel" qui inclut ce comportement.

0 votes

Doit être changé en bindkey "^[[~4" end-of-line . Notez la position du 4.

0 votes

@Ty Merci, mais pouvez-vous expliquer pourquoi ? La source originale, ainsi que github.com/reenhanced/zsh-config/blob/master/lib/ y github.com/ThiefMaster/zsh-config/blob/master/zshrc.d/ utiliser "^[[4~"

8voto

Dio Phung Points 121
  1. Ouvrez ce fichier

     /Library/KeyBindings/DefaultKeyBinding.dict (apply to all users)

o

     ~/Library/KeyBindings/DefaultKeyBinding.dict (apply to yourself)
  1. Ajoutez ces lignes :

    {
      "\UF729"  = moveToBeginningOfParagraph:; // home
      "\UF72B"  = moveToEndOfParagraph:; // end
      "$\UF729" = moveToBeginningOfParagraphAndModifySelection:; // shift-home
      "$\UF72B" = moveToEndOfParagraphAndModifySelection:; // shift-end
      "^\UF729" = moveToBeginningOfDocument:; // ctrl-home
      "^\UF72B" = moveToEndOfDocument:; // ctrl-end
      "^$\UF729" = moveToBeginningOfDocumentAndModifySelection:; // ctrl-shift-home
      "^$\UF72B" = moveToEndOfDocumentAndModifySelection:; // ctrl-shift-end
    }

1 votes

Cette réponse ne fait que répéter ce qui a déjà été expliqué dans d'autres réponses, en y substituant votre jeu de clés préféré sans trop d'explications. Vous pourriez peut-être ajouter un peu plus de valeur en expliquant où cela diffère des autres solutions.

3 votes

@Caleb : il ajoute moveToBeginningOfDocument et moveToEndOfDocument, ce que je trouve indispensable.

0 votes

7voto

HaFr1954 Points 61

A mon avis, le meilleur outil pour effectuer des modifications de clavier est en effet Karabiner (ancien nom KeyRemap4MacBook). Open source ( https://github.com/tekezo/Karabiner ) mais également disponible en tant qu'application ( https://pqrs.org/osx/karabiner/index.html.en ). J'ai cherché pendant longtemps et je n'ai jamais rien trouvé de mieux.

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