7 votes

permutation du mappage des touches de déplacement gauche et droite

J'ai un problème étrange et très spécifique lorsque j'utilise mon clavier USB tiers avec mon MacBook Pro : option + left-shift + right-arrow (qui, comme les programmeurs Mac le savent, signifie "mettre en surbrillance le mot à droite du curseur") ne fonctionne pas. Les raisons de ce problème ne sont pas claires, mais je sais qu'il ne s'agit pas de préférences logicielles au niveau de l'utilisateur, ni directement d'un problème matériel de bas niveau (cf. ma question initiale sur le superutilisateur pour la logique complète de dépannage).

Je dois préciser qu'il s'agit d'un clavier conçu pour Windows : un Thinkpad USB Keyboard with Trackpoint, en fait - le trackpoint étant la raison pour laquelle je l'aime tant et que je le garde malgré ses problèmes. Donc, la touche que j'utilise est la suivante option dans les Préférences Système est en fait la touche "Logo Windows".

Il fait fonctionne si j'utilise option + RIGHT-shift + right-arrow mais c'est une position de main très maladroite pour se déplacer rapidement dans mes documents. J'aimerais donc essayer d'intervertir l'interprétation par le Mac des touches de déplacement gauche et droite. . Est-ce possible, et si oui, comment ?


Mise à jour :

Sur la suggestion de Tetsujin J'ai essayé le Karabiner mais il semble que le problème se situe à un niveau inférieur. L'événement clavier pour la flèche droite n'atteint même pas Karabiner si l'événement clavier pour la flèche droite est activé. Windows-logo et (physique) left-shift sont maintenues enfoncées (et il importe peu que les touches Windows logo est associé à un autre modificateur : le problème est lié à ce modificateur spécifique. physique combinaison de touches).

En réponse au commentaire de Insomniac Software Voici ce que dit l'EventViewer de Karabiner lorsque j'appuie sur :

Windows-logo + left-shift + left-arrow :

eventType:keyMod          code:0x3a       name:Option_L        flags:Opt                                misc:KeyCode::OPTION_L  characters:    
eventType:keyMod          code:0x38       name:Shift_L         flags:Shift Opt                          misc:KeyCode::SHIFT_L   characters:    
eventType:keyDown         code:0x7b       name:Left            flags:Shift Opt NumPad Fn                misc:KeyCode::CURSOR_LEFT   characters:    
eventType:keyUp           code:0x7b       name:Left            flags:Shift Opt NumPad Fn                misc:KeyCode::CURSOR_LEFT   characters:    
eventType:keyMod          code:0x38       name:Shift_L         flags:Opt                                misc:KeyCode::SHIFT_L   characters:    
eventType:keyMod          code:0x3a       name:Option_L        flags:                                   misc:KeyCode::OPTION_L  characters:    

Windows-logo + left-shift + right-arrow :

eventType:keyMod          code:0x3a       name:Option_L        flags:Opt                                misc:KeyCode::OPTION_L  characters:    
eventType:keyMod          code:0x38       name:Shift_L         flags:Shift Opt                          misc:KeyCode::SHIFT_L   characters:    
eventType:keyMod          code:0x38       name:Shift_L         flags:Opt                                misc:KeyCode::SHIFT_L   characters:    
eventType:keyMod          code:0x3a       name:Option_L        flags:                                   misc:KeyCode::OPTION_L  characters:    

Windows-logo + right-shift + right-arrow :

eventType:keyMod          code:0x3a       name:Option_L        flags:Opt                                misc:KeyCode::OPTION_L  characters:    
eventType:keyMod          code:0x3c       name:Shift_R         flags:Shift Opt                          misc:KeyCode::SHIFT_R   characters:    
eventType:keyDown         code:0x7c       name:Right           flags:Shift Opt NumPad Fn                misc:KeyCode::CURSOR_RIGHT  characters:    
eventType:keyUp           code:0x7c       name:Right           flags:Shift Opt NumPad Fn                misc:KeyCode::CURSOR_RIGHT  characters:    
eventType:keyMod          code:0x3c       name:Shift_R         flags:Opt                                misc:KeyCode::SHIFT_R   characters:    
eventType:keyMod          code:0x3a       name:Option_L        flags:                                   misc:KeyCode::OPTION_L  characters:    

(NB : windows-logo + right-shift + left-arrow fonctionne également, au cas où vous vous poseriez la question).

Notez que dans le cas spécifique de windows-logo + left-shift + right-arrow Karabiner voit moins d'événements en premier lieu. Je constate la même chose (du moins, d'après ce que je peux voir) dans le journal de débogage de Karabiner : moins d'événements générés par cette combinaison problématique spécifique. J'ai supprimé tout ce qui allait jusqu'à --Debug-- sur chaque ligne, pour les trois mêmes cas :

# Windows-logo + left-shift + left-arrow
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x800a0022, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x000a0022, key 0x0038, kbdType  40, repeat = 0
UpdateEventFlagsCallback [ caught]: flags 0x002a0022
KeyboardEventCallback [ caught]: eventType 10, flags 0x802a0022, key 0x007b, kbdType  40, repeat = 0
UpdateEventFlagsCallback [sending]: flags 0x002a0022
KeyboardEventCallback [sending]: eventType 10, flags 0x002a0022, key 0x007b, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 11, flags 0x802a0022, key 0x007b, kbdType  40, repeat = 0
UpdateEventFlagsCallback [ caught]: flags 0x000a0022
KeyboardEventCallback [sending]: eventType 11, flags 0x002a0022, key 0x007b, kbdType  40, repeat = 0
UpdateEventFlagsCallback [sending]: flags 0x000a0022
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x80000000, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003a, kbdType  40, repeat = 0

# Windows-logo + left-shift + right-arrow
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x800a0022, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x000a0022, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x0038, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x80000000, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003a, kbdType  40, repeat = 0

# Windows-logo + right-shift + right-arrow
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x800a0024, key 0x003c, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x000a0024, key 0x003c, kbdType  40, repeat = 0
UpdateEventFlagsCallback [ caught]: flags 0x002a0024
KeyboardEventCallback [ caught]: eventType 10, flags 0x802a0024, key 0x007c, kbdType  40, repeat = 0
UpdateEventFlagsCallback [sending]: flags 0x002a0024
KeyboardEventCallback [sending]: eventType 10, flags 0x002a0024, key 0x007c, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 11, flags 0x802a0024, key 0x007c, kbdType  40, repeat = 0
UpdateEventFlagsCallback [ caught]: flags 0x000a0024
KeyboardEventCallback [sending]: eventType 11, flags 0x002a0024, key 0x007c, kbdType  40, repeat = 0
UpdateEventFlagsCallback [sending]: flags 0x000a0024
KeyboardEventCallback [ caught]: eventType 12, flags 0x80080020, key 0x003c, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00080020, key 0x003c, kbdType  40, repeat = 0
KeyboardEventCallback [ caught]: eventType 12, flags 0x80000000, key 0x003a, kbdType  40, repeat = 0
KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003a, kbdType  40, repeat = 0

0 votes

Une pensée tardive - que diriez-vous de Mousqueton ?

0 votes

Merci - c'est une bonne réponse à cette question, même si elle ne s'avère pas utile. J'ai essayé Karabiner, et il me permet effectivement de remapper les touches modificatrices les unes aux autres, y compris les touches shift gauche et droite - plutôt cool ! Malheureusement, il s'avère que mon approche ne permet pas de résoudre le problème initial. Je suppose que ce problème très spécifique de Windows-logo + left-shift + right-arrow se produit à un niveau inférieur (c'est-à-dire que l'information n'atteint jamais Karabiner). Il est donc étrange que cela échoue alors que Windows-logo + right-shift + right-arrow fonctionne, et que Windows-logo + left-shift + left-arrow fonctionne. Ah bon.

1 votes

Avez-vous essayé de l'échanger contre n'importe quel vieux clavier Win, juste pour vérifier si c'est très spécifique à ce modèle ? [Cela ne résoudrait pas le problème, mais pourrait réduire un peu les possibilités.]

1voto

Andy Mayer Points 26

D'après vos modifications, il semble que le clavier spécifique que vous utilisez soit à l'origine du problème. Je ne connais aucun moyen de résoudre ce problème, malheureusement, mais j'ai pensé répondre à la question initiale de toute façon.

Vous pouvez remapper les touches de modification dans OS X depuis au moins la 10.4 jusqu'à la 10.10.4 en modifiant un fichier de liste de propriétés (.plist). Ce fichier est situé dans ~/Library/Preferences/ByHost et s'appelle .GlobalPreferences.[a long identifier].plist où l'identifiant long de chaque utilisateur varie. (Dans le Terminal, vous pouvez simplement utiliser la complétion par tabulation pour récupérer le nom spécifique de votre fichier).

Voici les étapes à suivre pour copier, convertir, modifier et remplacer le fichier .plist :

  1. Dans Préférences système > Clavier, cliquez sur "Touches de modification" et remappez au moins une des touches (par exemple Verrouillage des majuscules > Contrôle). Cela permettra de s'assurer que la section appropriée existe dans le fichier .plist et de la retrouver plus facilement.

  2. Dans le Terminal, allez dans ou créez un répertoire où vous ferez le travail, puis :

    1. cp ~/Library/Preferences/ByHost/.GlobalPreferences (puis appuyez sur Tab pour compléter automatiquement le nom de fichier unique)
    2. plutil -convert xml1 -o ./keys-xml.plist ./keys-binary.plist
  3. Ouvrez le fichier XML converti. (Vous pouvez utiliser open /Applications/TextEdit.app keys-xml.plist pour lancer TextEdit à partir du Terminal).

  4. Localisez la section dans le fichier appelé " com.apple.keyboard.modifiermapping ...". Vous devriez voir au moins un groupe "dict" dans cette section. Il s'agira en fait d'une entrée par touche spécifique qui a été remaniée, donc si vous avez remanié Control en Shift, vous verrez des entrées remaniant LeftControl en LeftShift et RightControl en RightShift.

  5. Modifiez l'entrée existante à l'aide du tableau ci-dessous, en changeant l'élément HIDKeyboardModifierMappingSrc à la touche Source (le bouton physique sur lequel vous allez appuyer, et la valeur de la touche HIDKeyboardModifierMappingDst à la clé de destination souhaitée (la clé qui doit prendre effet).

  6. Copiez la section entière de la dictée (de <dict> a </dict> et collez-en un pour chaque touche que vous voulez remodifier, en changeant le Src et le Dst pour chacun.

  7. Enregistrez et fermez le fichier. Puis, de retour dans le Terminal :

    1. plutil -convert binary1 -o ./keys-binary_new.plist keys-xml.plist
    2. cp ./keys-binary_new.plist ~/Library/Preferences/ByHost/.GlobalPreferences (puis Tab pour l'autocomplétion)
  8. Déconnectez-vous et reconnectez-vous pour que les changements prennent effet.

Voici les valeurs des clés à utiliser pour chaque clé modificatrice dans le mappage Src/Dst :

+-----------------+-----------+
|    Key Name     | Key Value |
+-----------------+-----------+
| None            |        -1 |
| Caps Lock       |         0 |
| Shift (Left)    |         1 |
| Control (Left)  |         2 |
| Option (Left)   |         3 |
| Command (Left)  |         4 |
| Keypad 0        |         5 |
| Help            |         6 |
| Shift (Right)   |         9 |
| Control (Right) |        10 |
| Option (Right)  |        11 |
| Command (Right) |        12 |
| ~~Kernel Panic~~|      ~~16~|
+-----------------+-----------+

NB : Le code clé 16 ne doit généralement pas être utilisé.

Source : Réécrit à partir de http://hints.macworld.com/article.php?story=20060825072451882

0voto

Douglas Points 10417

Je suis tombé sur cet article au cours de mes voyages et il semble qu'il puisse être utile.

Remappage des touches du clavier Mac OS X Mavericks

0voto

raster Points 39

J'ai eu un problème similaire avec un clavier DAS qui était en fait conçu pour mon Mac - la touche Option gauche entraînait une combinaison mystérieuse de touches à presser, plutôt que l'Option. Pour moi, cela s'est avéré être un problème matériel et j'ai dû remplacer le clavier par le fabricant.

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