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": []
}