fix modifier key order, add EU badge template icons, rename build scripts

- fix modifier key order to Apple canonical: Option+Shift (not Shift+Option)
  across parser, validator, PDF generator, website keyboard viewer, README
- add EU badge template icons for v1.2/v1.3/v1.4 matching Apple's built-in
  keyboard layout icon style (edge-to-edge rounded square, text knockout)
- add build-icons.sh to generate .icns from SVG source via rsvg-convert
- rename create-dmg.sh → build-dmg.sh, update CI workflows
- add website feature icons (install, pdf, versions)
- update website icon to star-on-key design

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 11:01:56 +01:00
parent 1b9ce5dd86
commit 92422e1bf1
26 changed files with 412 additions and 772 deletions
+60 -179
View File
@@ -964,7 +964,8 @@
"24": {
"code": 24,
"keyName": "=",
"output": "^"
"action": "=",
"output": "="
},
"25": {
"code": 25,
@@ -999,7 +1000,8 @@
"30": {
"code": 30,
"keyName": "]",
"output": "["
"action": "]",
"output": "]"
},
"31": {
"code": 31,
@@ -1016,7 +1018,8 @@
"33": {
"code": 33,
"keyName": "[",
"output": "@"
"action": "[",
"output": "["
},
"34": {
"code": 34,
@@ -1050,7 +1053,8 @@
"39": {
"code": 39,
"keyName": "'",
"output": ":"
"action": "'",
"output": "'"
},
"40": {
"code": 40,
@@ -1067,7 +1071,7 @@
"42": {
"code": 42,
"keyName": "\\",
"output": "]"
"output": "\\"
},
"43": {
"code": 43,
@@ -1253,21 +1257,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "¥"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "_"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -1301,8 +1290,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -1312,8 +1300,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -1546,7 +1533,8 @@
"19": {
"code": 19,
"keyName": "2",
"output": "\""
"action": "@",
"output": "@"
},
"20": {
"code": 20,
@@ -1563,7 +1551,8 @@
"22": {
"code": 22,
"keyName": "6",
"output": "&"
"action": "^",
"output": "^"
},
"23": {
"code": 23,
@@ -1574,37 +1563,44 @@
"24": {
"code": 24,
"keyName": "=",
"output": "~"
"action": "+",
"output": "+"
},
"25": {
"code": 25,
"keyName": "9",
"output": ")"
"action": "(",
"output": "("
},
"26": {
"code": 26,
"keyName": "7",
"output": "'"
"action": "&",
"output": "&"
},
"27": {
"code": 27,
"keyName": "-",
"output": "="
"action": "_",
"output": "_"
},
"28": {
"code": 28,
"keyName": "8",
"output": "("
"action": "*",
"output": "*"
},
"29": {
"code": 29,
"keyName": "0",
"output": "0"
"action": ")",
"output": ")"
},
"30": {
"code": 30,
"keyName": "]",
"output": "{"
"action": "}",
"output": "}"
},
"31": {
"code": 31,
@@ -1621,7 +1617,8 @@
"33": {
"code": 33,
"keyName": "[",
"output": "`"
"action": "{",
"output": "{"
},
"34": {
"code": 34,
@@ -1655,7 +1652,8 @@
"39": {
"code": 39,
"keyName": "'",
"output": "*"
"action": "\"",
"output": "\""
},
"40": {
"code": 40,
@@ -1666,12 +1664,14 @@
"41": {
"code": 41,
"keyName": ";",
"output": "+"
"action": ":",
"output": ":"
},
"42": {
"code": 42,
"keyName": "\\",
"output": "}"
"action": "|",
"output": "|"
},
"43": {
"code": 43,
@@ -1859,21 +1859,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "|"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "_"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -1907,8 +1892,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -1918,8 +1902,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -2182,7 +2165,8 @@
"24": {
"code": 24,
"keyName": "=",
"output": "^"
"action": "=",
"output": "="
},
"25": {
"code": 25,
@@ -2217,7 +2201,7 @@
"30": {
"code": 30,
"keyName": "]",
"output": "["
"output": "]"
},
"31": {
"code": 31,
@@ -2234,7 +2218,7 @@
"33": {
"code": 33,
"keyName": "[",
"output": "@"
"output": "["
},
"34": {
"code": 34,
@@ -2268,7 +2252,7 @@
"39": {
"code": 39,
"keyName": "'",
"output": ":"
"output": "'"
},
"40": {
"code": 40,
@@ -2284,7 +2268,7 @@
"42": {
"code": 42,
"keyName": "\\",
"output": "]"
"output": "\\"
},
"43": {
"code": 43,
@@ -2469,21 +2453,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "¥"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "_"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -2517,8 +2486,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -2528,8 +2496,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -3055,22 +3022,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "\\"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"action": "`",
"deadKey": "dead: `"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -3104,8 +3055,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -3115,8 +3065,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -3231,7 +3180,7 @@
}
},
"4": {
"label": "Shift+Option",
"label": "Option+Shift",
"keys": {
"0": {
"code": 0,
@@ -3640,21 +3589,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "|"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "`"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -3688,8 +3622,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -3699,8 +3632,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -4221,21 +4153,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "\\"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "`"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -4269,8 +4186,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -4280,8 +4196,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -4396,7 +4311,7 @@
}
},
"6": {
"label": "Command+Option",
"label": "Option+Command",
"keys": {
"0": {
"code": 0,
@@ -4793,21 +4708,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "\\"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "_"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -4841,8 +4741,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -4852,8 +4751,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -5367,21 +5265,6 @@
"keyName": "KP9",
"output": "9"
},
"93": {
"code": 93,
"keyName": "ISO§",
"output": "|"
},
"94": {
"code": 94,
"keyName": "ISO_backslash",
"output": "_"
},
"95": {
"code": 95,
"keyName": "ISO_comma",
"output": ","
},
"96": {
"code": 96,
"keyName": "F5",
@@ -5415,8 +5298,7 @@
"102": {
"code": 102,
"keyName": "code102",
"action": "space",
"output": " "
"output": "\u0010"
},
"103": {
"code": 103,
@@ -5426,8 +5308,7 @@
"104": {
"code": 104,
"keyName": "code104",
"action": "space",
"output": " "
"output": "\u0010"
},
"105": {
"code": 105,
@@ -5984,4 +5865,4 @@
}
}
}
}
}