Dazu erstmal eine Apple-Tastaturbelegung für Windows:

Transclude of Apple-Keyboard-Layout-Nodeadkey-v01.zip

Die Tastenkombinationen, die unter MacOS deutlich abweichen, kann man elegant in Hardware remappen:

jfedor2/hid-remapper: Programmable adapter for USB input devices

Konfiguration für die Remappings:

{
    "version": 18,
    "unmapped_passthrough_layers": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7
    ],
    "partial_scroll_timeout": 1000000,
    "tap_hold_threshold": 200000,
    "gpio_debounce_time_ms": 5,
    "interval_override": 0,
    "our_descriptor_number": 0,
    "ignore_auth_dev_inputs": false,
    "macro_entry_duration": 1,
    "gpio_output_mode": 0,
    "input_labels": 0,
    "normalize_gamepad_inputs": true,
    "mappings": [
        {
            "target_usage": "0xfff20015",
            "source_usage": "0x00070008",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x0007003c",
            "source_usage": "0x0007000a",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x000700e2",
            "source_usage": "0x000700e3",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x000700e3",
            "source_usage": "0x000700e2",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff10001",
            "source_usage": "0x000700e2",
            "scaling": 1000,
            "layers": [
                0,
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20001",
            "source_usage": "0x00070017",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20002",
            "source_usage": "0x0007001a",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20003",
            "source_usage": "0x00070027",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20004",
            "source_usage": "0x00070004",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20005",
            "source_usage": "0x00070006",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20006",
            "source_usage": "0x00070007",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20007",
            "source_usage": "0x00070009",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20008",
            "source_usage": "0x00070014",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20009",
            "source_usage": "0x00070015",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000a",
            "source_usage": "0x00070016",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000b",
            "source_usage": "0x00070018",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000c",
            "source_usage": "0x00070019",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000d",
            "source_usage": "0x0007001c",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000e",
            "source_usage": "0x0007001d",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff2000f",
            "source_usage": "0x0007001b",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20010",
            "source_usage": "0x00070030",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20011",
            "source_usage": "0x00070038",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20012",
            "source_usage": "0xfff30002",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20013",
            "source_usage": "0x0007000f",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20014",
            "source_usage": "0x0007002c",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0xfff20016",
            "source_usage": "0x00070037",
            "scaling": 1000,
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00010030",
            "source_usage": "0x00010030",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00010031",
            "source_usage": "0x00010031",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00010038",
            "source_usage": "0x00010038",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x000c0238",
            "source_usage": "0x000c0238",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00090001",
            "source_usage": "0x00090001",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00090002",
            "source_usage": "0x00090002",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "target_usage": "0x00090003",
            "source_usage": "0x00090003",
            "scaling": 1000,
            "layers": [
                0
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "source_port": 0,
            "target_port": 0
        },
        {
            "source_usage": "0x00070011",
            "target_usage": "0xfff20017",
            "layers": [
                1
            ],
            "sticky": false,
            "tap": false,
            "hold": false,
            "scaling": 1000,
            "source_port": 0,
            "target_port": 0
        }
    ],
    "macros": [
        [
            [
                "0x000700e0",
                "0x00070017"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x0007001a"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070027"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070004"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070006"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070007"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070009"
            ]
        ],
        [
            [
                "0x000700e2",
                "0x0007003d"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070015"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070016"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070018"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070019"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x0007001c"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x0007001d"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x0007001b"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070057"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070056"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x000700e1",
                "0x00070017"
            ]
        ],
        [
            [
                "0x000700e3",
                "0x0007000f"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x0007002c"
            ]
        ],
        [
            [
                "0x000700e3",
                "0x00070008"
            ]
        ],
        [
            [
                "0x000700e3",
                "0x00070037"
            ]
        ],
        [
            [
                "0x000700e0",
                "0x00070011"
            ]
        ],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        []
    ],
    "expressions": [
        "eol 0x000700e2 input_state_binary 0x000700e1 input_state_binary mul 0x00070017 input_state_binary mul",
        "0x00000000 input_state eol 0x00000000 input_state eol mul eol 0x00000000 input_state eol mul eol 1000 store eol",
        "",
        "",
        "",
        "",
        "",
        ""
    ],
    "quirks": []
}