Win-Tastatur an Mac zu RDP zu Windows 🤪

An meinem Mac nutze ich die Microsoft Sculpt Tastatur. Das bringt in soweit gleich einmal „Probleme“ mit sich, als dass die Tasten [Win] und [Alt], an deren Stelle beim Mac die Tasten [Option] und [Command] liegen, getauscht sind.

So sollte also das Mapping sein, wenn ich unter macOS eine Windows-Tastatur nutze:

[Win] -> [Option]
[Alt] -> [Command]

So ist es aber nicht, da wie erwähnt, die Tasten gedreht sind. Das ganze lässt sich recht simpel über die Einstellungen der Tastatur lösen:

Nun bin ich aber dann und wann auch mal vom Mac aus per Remote Desktop am Windows-PC angemeldet und genau dort sind [Win] und [Alt] durch diese Einstellung wieder verdreht.

Was ich also benötige ist die Möglichkeit, die Tasten während ich den Remote Desktop nutze wieder zu tauschen.

Karabiner und frontmost_application_if

Achtung: Mit Karabiner können die Wahltastae und die Befehlstaste nicht über die Systemeinstellungen geändert werden. Macht man das, so kann Karabiner die Taste ALT nicht mehr korrekt mappen.

Das Programm Karabiner bietet die Möglichkeit, Tasten nur unter bestimmten Bedingungen (hier: nur wenn Remote Desktop im Vordergrund ist) zu tauschen. Es gibt aber keine UI-Einstellung dafür.

Ein wenig Doku wälzen hilft also (hier und hier).

Was wir benötigen ist eine Complex modification um die Condition frontmost_application_if erweitert. Die Erweiterung müssen wir dann im Editor machen. Wo genau die Karabiner-Konfiguration liegt, lässt sich über die UI herausfinden. Sollte man die JSON-File derart zerschießen, dass sie nicht mehr geladen werden kann, so findet man den entsprechenden Fehler ebenfalls über die UI. Sobald die Konfigurationsdatei gespeichert wird, lädt Karabine die Datei sofort neu. Ein Neustart ist also nicht nötig.

BundleID oder FilePath

Die Applikation für die Bedingung frontmost_application_if lässt sich laut Doku wahlweise per BundleID oder FilePath angeben. Beim Ermitteln der Werte hilft der Karabiner-EventViewer.

Konfiguration

Das war jetzt mal ein wenig Theorie, jetzt kommts nur eigentlichen Konfiguration.

Wahltaste und Befehlstaste für macOS tauschen

Über die Simple modifications werden zwei Regeln definiert, die die Tasten Option und Command tauschen.

WIN / ALT für Windows setzen

Für Windows (über Remote Desktop) müssen die Tasten wieder zurückgetauscht werden.

Tipp: Man kann sehr gut testen, was die angeschlossene Tastatur so macht, in dem man unter Windows die Bildschirmtastatur aufruft.

Benötigt werden 2 komplexe Modifikationen die nur unter Remote Desktop greifen sollen.

  1. left_command -> left_option um die Taste ALT zu definieren
  2. left_option -> left_command um die Tastae WIN zu definieren

Und so sieht eine mögliche Konfiguration dann aus:

"complex_modifications": {
    "parameters": {
        "basic.simultaneous_threshold_milliseconds": 50,
        "basic.to_delayed_action_delay_milliseconds": 500,
        "basic.to_if_alone_timeout_milliseconds": 1000,
        "basic.to_if_held_down_threshold_milliseconds": 500,
        "mouse_motion_to_scroll.speed": 100
    },
    "rules": [ {
        "description": "Map Keyboard to Windows",
        "manipulators": [{
            "conditions": [{
                "file_paths": [
                "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop"
                ],
                "type": "frontmost_application_if"
            }],
            "description": "[ALT] Left CMD -> Left OPT",
            "from": {
                "key_code": "left_command",
                "modifiers": {
                    "optional": ["any"]
                }
            },
            "to": [{
                "key_code": "left_option",
                "modifiers": ["any"]
            }],
            "type": "basic"
        },
        {
            "conditions": [{
                "file_paths": [
                "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop"
                ],
                "type": "frontmost_application_if"
            }],
            "description": "[WIN] Left OPT -> Left CMD",
            "from": {
                "key_code": "left_option",
                "modifiers": {
                    "optional": ["any"]
                }
            },
            "to": [{
                "key_code": "left_command",
                "modifiers": ["any"]
            }],
            "type": "basic"
        }]
    }]
}

Deine E-Mail-Adresse wird nicht veröffentlicht.