diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00b61d1..03945b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: run: python3 scripts/validate_layouts.py - name: create DMG - run: bash scripts/create-dmg.sh + run: bash scripts/build-dmg.sh - name: upload DMG uses: actions/upload-artifact@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e77622..1eed67a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: run: bash scripts/build-bundle.sh --version "${{ steps.version.outputs.version }}" - name: create DMG - run: bash scripts/create-dmg.sh --version "${{ steps.version.outputs.version }}" + run: bash scripts/build-dmg.sh --version "${{ steps.version.outputs.version }}" - name: create GitHub release uses: softprops/action-gh-release@v2 diff --git a/EurKEY-macOS-icon/drafts/badge-eu-template.svg b/EurKEY-macOS-icon/drafts/badge-eu-template.svg new file mode 100644 index 0000000..b81a3e3 --- /dev/null +++ b/EurKEY-macOS-icon/drafts/badge-eu-template.svg @@ -0,0 +1,14 @@ + + + + + + EU + + + + diff --git a/EurKEY-macOS-icon/drafts/colored-c-star-key.svg b/EurKEY-macOS-icon/drafts/colored-c-star-key.svg new file mode 100644 index 0000000..066235e --- /dev/null +++ b/EurKEY-macOS-icon/drafts/colored-c-star-key.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/EurKEY-macOS-icon/drafts/text-eu-template.svg b/EurKEY-macOS-icon/drafts/text-eu-template.svg new file mode 100644 index 0000000..c567f71 --- /dev/null +++ b/EurKEY-macOS-icon/drafts/text-eu-template.svg @@ -0,0 +1,7 @@ + + + EU + diff --git a/EurKEY-macOS-icon/drafts/text-eur-template.svg b/EurKEY-macOS-icon/drafts/text-eur-template.svg new file mode 100644 index 0000000..1c22b5b --- /dev/null +++ b/EurKEY-macOS-icon/drafts/text-eur-template.svg @@ -0,0 +1,4 @@ + + + EUR + diff --git a/README.md b/README.md index 79b5cab..87d18df 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ The bundle ships 4 layout versions: | Version | Description | | ------- | ----------- | | **v1.3** | Official EurKEY spec implementation. **Recommended for most users.** | -| **v1.2** | Legacy version based on [Leonardo Schenkel's port](https://github.com/lbschenkel/EurKEY-Mac). Predates the v1.3 spec (no `¬` dead key, `§` instead of `ẞ` on Shift+Option+S). | +| **v1.2** | Legacy version based on [Leonardo Schenkel's port](https://github.com/lbschenkel/EurKEY-Mac). Predates the v1.3 spec (no `¬` dead key, `§` instead of `ẞ` on Option+Shift+S). | | **v1.4** | v1.3 with `ẞ` (capital sharp s) on Caps+`§` key. | | **v2.0** | Custom edition — complete rework. Every key configures exactly as printed on the MacBook keyboard. Removes left/right modifier key distinction. New monochrome template icon. | @@ -54,7 +54,7 @@ python3 scripts/parse_keylayout.py "EurKey-macOS.bundle/Contents/Resources/EurKE bash scripts/build-bundle.sh # create a DMG installer -bash scripts/create-dmg.sh +bash scripts/build-dmg.sh ``` ## Dead key compositions (v2.0) diff --git a/eurkey-macos.eu/img/icon-install.svg b/eurkey-macos.eu/img/icon-install.svg new file mode 100644 index 0000000..1157fe9 --- /dev/null +++ b/eurkey-macos.eu/img/icon-install.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/eurkey-macos.eu/img/icon-pdf.svg b/eurkey-macos.eu/img/icon-pdf.svg new file mode 100644 index 0000000..af135ac --- /dev/null +++ b/eurkey-macos.eu/img/icon-pdf.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + PDF + diff --git a/eurkey-macos.eu/img/icon-versions.svg b/eurkey-macos.eu/img/icon-versions.svg new file mode 100644 index 0000000..7922e15 --- /dev/null +++ b/eurkey-macos.eu/img/icon-versions.svg @@ -0,0 +1,13 @@ + + + + + + + + + + 2.0 + + + diff --git a/eurkey-macos.eu/img/icon.svg b/eurkey-macos.eu/img/icon.svg index 8dee6e4..cc772c0 100644 --- a/eurkey-macos.eu/img/icon.svg +++ b/eurkey-macos.eu/img/icon.svg @@ -1,28 +1,6 @@ - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/eurkey-macos.eu/keyboard.js b/eurkey-macos.eu/keyboard.js index 7ffbe85..da1fecb 100644 --- a/eurkey-macos.eu/keyboard.js +++ b/eurkey-macos.eu/keyboard.js @@ -35,11 +35,11 @@ const KEYBOARD_ROWS = [ const MOD_BASE = "0"; const MOD_SHIFT = "1"; const MOD_OPTION = "3"; -const MOD_SHIFT_OPTION = "4"; +const MOD_OPTION_SHIFT = "4"; const LAYERS = [ { mod: MOD_SHIFT, cls: "key-char--shift" }, - { mod: MOD_SHIFT_OPTION, cls: "key-char--shift-option" }, + { mod: MOD_OPTION_SHIFT, cls: "key-char--option-shift" }, { mod: MOD_BASE, cls: "key-char--base" }, { mod: MOD_OPTION, cls: "key-char--option" }, ]; @@ -261,7 +261,7 @@ function enterDeadKeyMode(deadState) { const shiftComposed = charMap[shiftChar] || ""; const spans = keyEl.querySelectorAll(".key-char"); - // order: shift, shift-option, base, option + // order: shift, option-shift, base, option if (spans[0]) spans[0].textContent = displayChar(shiftComposed); if (spans[1]) spans[1].textContent = ""; if (spans[2]) spans[2].textContent = displayChar(baseComposed); @@ -298,7 +298,7 @@ function exitDeadKeyMode() { keyEl.classList.remove("key--has-composition", "key--no-composition", "key--dead-active"); const spans = keyEl.querySelectorAll(".key-char"); - const layerOrder = [MOD_SHIFT, MOD_SHIFT_OPTION, MOD_BASE, MOD_OPTION]; + const layerOrder = [MOD_SHIFT, MOD_OPTION_SHIFT, MOD_BASE, MOD_OPTION]; for (let i = 0; i < spans.length; i++) { const info = charForKey(currentData, layerOrder[i], keyCode); spans[i].textContent = info ? displayChar(info.char) : ""; @@ -324,7 +324,7 @@ function updateActiveLayer() { const shift = activeModifiers.has("shift"); const option = activeModifiers.has("option"); let layer = null; - if (shift && option) layer = "shift-option"; + if (shift && option) layer = "option-shift"; else if (shift) layer = "shift"; else if (option) layer = "option"; @@ -338,7 +338,7 @@ function updateActiveLayer() { function getActiveModIndex() { const shift = activeModifiers.has("shift"); const option = activeModifiers.has("option"); - if (shift && option) return MOD_SHIFT_OPTION; + if (shift && option) return MOD_OPTION_SHIFT; if (shift) return MOD_SHIFT; if (option) return MOD_OPTION; return MOD_BASE; diff --git a/eurkey-macos.eu/style.css b/eurkey-macos.eu/style.css index 63b11f9..6243a64 100644 --- a/eurkey-macos.eu/style.css +++ b/eurkey-macos.eu/style.css @@ -308,7 +308,7 @@ img { color: #0028aa; } -.key-char--shift-option { +.key-char--option-shift { justify-content: flex-end; color: #780078; } @@ -427,7 +427,7 @@ img { .keyboard[data-active-layer="shift"] .key-char--shift, .keyboard[data-active-layer="option"] .key-char--option, -.keyboard[data-active-layer="shift-option"] .key-char--shift-option { +.keyboard[data-active-layer="option-shift"] .key-char--option-shift { opacity: 1; font-weight: 700; font-size: 15px; @@ -436,8 +436,8 @@ img { /* Pressed modifier key visual */ .keyboard[data-active-layer="shift"] .key--mod[data-mod="shift"], .keyboard[data-active-layer="option"] .key--mod[data-mod="option"], -.keyboard[data-active-layer="shift-option"] .key--mod[data-mod="shift"], -.keyboard[data-active-layer="shift-option"] .key--mod[data-mod="option"] { +.keyboard[data-active-layer="option-shift"] .key--mod[data-mod="shift"], +.keyboard[data-active-layer="option-shift"] .key--mod[data-mod="option"] { transform: translateY(1px); background: linear-gradient(to bottom, #d4d4d4, #ccc); box-shadow: @@ -454,7 +454,7 @@ img { background: linear-gradient(to bottom, #fef9e7, #fef3cd 95%, #f5e6a8); } -.keyboard--dead-mode .key--has-composition .key-char--shift-option, +.keyboard--dead-mode .key--has-composition .key-char--option-shift, .keyboard--dead-mode .key--has-composition .key-char--option { visibility: hidden; } diff --git a/scripts/build-bundle.sh b/scripts/build-bundle.sh index 7c88d3d..a6cdaa0 100755 --- a/scripts/build-bundle.sh +++ b/scripts/build-bundle.sh @@ -32,6 +32,9 @@ echo "Building ${BUNDLE_NAME} ${VERSION}" echo "Bundle: ${BUNDLE_DIR}" echo +# --- generate icons from SVG sources --- +bash "${SCRIPT_DIR}/build-icons.sh" + # --- assemble bundle from src/ --- rm -rf "${BUNDLE_DIR}" mkdir -p "${RESOURCES_DIR}" diff --git a/scripts/create-dmg.sh b/scripts/build-dmg.sh similarity index 89% rename from scripts/create-dmg.sh rename to scripts/build-dmg.sh index c55e0cd..cd4654b 100755 --- a/scripts/create-dmg.sh +++ b/scripts/build-dmg.sh @@ -26,11 +26,8 @@ STAGING_DIR="${BUILD_DIR}/dmg-staging" echo "Creating DMG: ${DMG_NAME}" -# --- auto-build bundle if missing --- -if [[ ! -f "${BUNDLE_DIR}/Contents/Info.plist" ]]; then - echo "Bundle not found, building..." - bash "${SCRIPT_DIR}/build-bundle.sh" --version "${VERSION}" -fi +# --- build bundle (includes validation) --- +bash "${SCRIPT_DIR}/build-bundle.sh" --version "${VERSION}" # --- auto-build PDFs --- echo "Building PDFs..." diff --git a/scripts/build-icons.sh b/scripts/build-icons.sh new file mode 100755 index 0000000..7ff6cbb --- /dev/null +++ b/scripts/build-icons.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +# Generate .icns icon files from SVG sources. +# +# Requires: rsvg-convert (librsvg), iconutil (macOS built-in) +# +# The v1.2/v1.3/v1.4 icon is a template badge with "EU" text. +# The v2.0 icon is a monochrome star ring (managed separately). +# +# Usage: bash scripts/build-icons.sh +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +ICON_DIR="${PROJECT_DIR}/src/icons" +SVG_DIR="${PROJECT_DIR}/EurKEY-macOS-icon/drafts" + +BADGE_SVG="${SVG_DIR}/badge-eu-template.svg" + +if ! command -v rsvg-convert &> /dev/null; then + echo "SKIP: rsvg-convert not found (install librsvg for icon generation)" + echo "Using existing .icns files from src/icons/" + exit 0 +fi + +if [[ ! -f "${BADGE_SVG}" ]]; then + echo "ERROR: ${BADGE_SVG} not found" + exit 1 +fi + +ICONSET="$(mktemp -d)/badge-eu.iconset" +mkdir -p "${ICONSET}" + +echo "Generating EU badge icon..." + +# render at all required sizes +for size in 16 32 64 128 256 512 1024; do + rsvg-convert -w "${size}" -h "${size}" "${BADGE_SVG}" -o "${ICONSET}/tmp_${size}.png" +done + +# map to iconset naming convention +cp "${ICONSET}/tmp_16.png" "${ICONSET}/icon_16x16.png" +cp "${ICONSET}/tmp_32.png" "${ICONSET}/icon_16x16@2x.png" +cp "${ICONSET}/tmp_32.png" "${ICONSET}/icon_32x32.png" +cp "${ICONSET}/tmp_64.png" "${ICONSET}/icon_32x32@2x.png" +cp "${ICONSET}/tmp_128.png" "${ICONSET}/icon_128x128.png" +cp "${ICONSET}/tmp_256.png" "${ICONSET}/icon_128x128@2x.png" +cp "${ICONSET}/tmp_256.png" "${ICONSET}/icon_256x256.png" +cp "${ICONSET}/tmp_512.png" "${ICONSET}/icon_256x256@2x.png" +cp "${ICONSET}/tmp_512.png" "${ICONSET}/icon_512x512.png" +cp "${ICONSET}/tmp_1024.png" "${ICONSET}/icon_512x512@2x.png" +rm "${ICONSET}"/tmp_*.png + +# convert to .icns +ICNS_PATH="${ICON_DIR}/badge-eu.icns" +iconutil --convert icns --output "${ICNS_PATH}" "${ICONSET}" + +# install for v1.2, v1.3, v1.4 (v2.0 keeps its own icon) +cp "${ICNS_PATH}" "${ICON_DIR}/EurKEY v1.2.icns" +cp "${ICNS_PATH}" "${ICON_DIR}/EurKEY v1.3.icns" +cp "${ICNS_PATH}" "${ICON_DIR}/EurKEY v1.4.icns" +rm "${ICNS_PATH}" + +# clean up +rm -rf "$(dirname "${ICONSET}")" + +echo "Icons generated for v1.2, v1.3, v1.4" diff --git a/scripts/generate_layout_pdf.py b/scripts/generate_layout_pdf.py index 216276c..f760624 100644 --- a/scripts/generate_layout_pdf.py +++ b/scripts/generate_layout_pdf.py @@ -2,7 +2,7 @@ """Generate keyboard layout PDFs from .keylayout files. Renders an ISO keyboard diagram showing Base, Shift, Option, and -Shift+Option layers on each key, plus dead key composition tables. +Option+Shift layers on each key, plus dead key composition tables. Requires: fpdf2 (pip install fpdf2) @@ -72,12 +72,12 @@ KEYBOARD_ROWS = [ MOD_BASE = "0" MOD_SHIFT = "1" MOD_OPTION = "3" -MOD_SHIFT_OPTION = "4" +MOD_OPTION_SHIFT = "4" # Display layers: (modifier_index, color_rgb, position) DISPLAY_LAYERS = [ (MOD_SHIFT, (0, 40, 170), "top_left"), - (MOD_SHIFT_OPTION, (120, 0, 120), "top_right"), + (MOD_OPTION_SHIFT, (120, 0, 120), "top_right"), (MOD_BASE, (0, 0, 0), "bottom_left"), (MOD_OPTION, (170, 0, 0), "bottom_right"), ] @@ -202,7 +202,7 @@ class LayoutPDF(FPDF): ((0, 0, 0), "Base"), ((0, 40, 170), "Shift"), ((170, 0, 0), "Option"), - ((120, 0, 120), "Shift+Option"), + ((120, 0, 120), "Option+Shift"), ] for color, label in items: self._color(color) @@ -316,7 +316,7 @@ class LayoutPDF(FPDF): """Find which key combo triggers a dead key state.""" mod_names = { "0": "", "1": "⇧ ", "2": "⇪ ", "3": "⌥ ", - "4": "⇧⌥ ", "5": "⇪⌥ ", + "4": "⌥⇧ ", "5": "⇪⌥ ", } # map key codes to physical labels from KEYBOARD_ROWS code_labels = {} diff --git a/scripts/parse_keylayout.py b/scripts/parse_keylayout.py index 1ccda1c..3faa28a 100644 --- a/scripts/parse_keylayout.py +++ b/scripts/parse_keylayout.py @@ -74,9 +74,9 @@ MODIFIER_LABELS = { 1: "Shift", 2: "Caps", 3: "Option", - 4: "Shift+Option", + 4: "Option+Shift", 5: "Caps+Option", - 6: "Command+Option", + 6: "Option+Command", 7: "Control", } diff --git a/scripts/validate_layouts.py b/scripts/validate_layouts.py index fa699c5..1dd5144 100644 --- a/scripts/validate_layouts.py +++ b/scripts/validate_layouts.py @@ -21,7 +21,7 @@ from parse_keylayout import parse_keylayout, TYPING_KEY_CODES, MODIFIER_LABELS, BUNDLE_DIR = Path(__file__).parent.parent / "build" / "EurKey-macOS.bundle" / "Contents" / "Resources" # modifier indices that contain meaningful typing output -# (exclude index 6 = Command+Option and 7 = Control — these are system shortcuts) +# (exclude index 6 = Option+Command and 7 = Control — these are system shortcuts) VALIDATED_MODIFIER_INDICES = {"0", "1", "2", "3", "4", "5"} @@ -182,14 +182,14 @@ def format_char_display(c): # v1.2 predates v1.3 — known differences documented here V1_2_EXCEPTIONS = { - # Shift+Option S: v1.2 has § where v1.3 has ẞ (capital sharp s) + # Option+Shift S: v1.2 has § where v1.3 has ẞ (capital sharp s) "4:1": {"output": "§"}, # v1.2 does not have the ¬ (negation) dead key — added in v1.3 # instead, Option+- has the © dead key, and Option+\ outputs plain ¬ "_dead_key_skip": ["dead: ¬"], "3:27": {"deadKey": "dead: ©"}, # Option+-: © dead key instead of ¬ dead key "3:42": {"output": "¬"}, # Option+\: plain ¬ instead of ¬ dead key - "4:27": {"output": "№"}, # Shift+Option+-: № instead of ✗ + "4:27": {"output": "№"}, # Option+Shift+-: № instead of ✗ "5:27": {"deadKey": "dead: ©"}, # Caps+Option+-: © dead key instead of ¬ dead key } diff --git a/spec/eurkey-v1.2-parsed.json b/spec/eurkey-v1.2-parsed.json index 6c021af..18d3ebf 100644 --- a/spec/eurkey-v1.2-parsed.json +++ b/spec/eurkey-v1.2-parsed.json @@ -954,7 +954,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "=", + "output": "=" }, "25": { "code": 25, @@ -989,7 +990,8 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "action": "]", + "output": "]" }, "31": { "code": 31, @@ -1006,7 +1008,8 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "action": "[", + "output": "[" }, "34": { "code": 34, @@ -1040,7 +1043,8 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "action": "'", + "output": "'" }, "40": { "code": 40, @@ -1057,7 +1061,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -1243,21 +1247,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", @@ -1291,8 +1280,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1302,8 +1290,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -1536,7 +1523,8 @@ "19": { "code": 19, "keyName": "2", - "output": "\"" + "action": "@", + "output": "@" }, "20": { "code": 20, @@ -1553,7 +1541,8 @@ "22": { "code": 22, "keyName": "6", - "output": "&" + "action": "^", + "output": "^" }, "23": { "code": 23, @@ -1564,37 +1553,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, @@ -1611,7 +1607,8 @@ "33": { "code": 33, "keyName": "[", - "output": "`" + "action": "{", + "output": "{" }, "34": { "code": 34, @@ -1645,7 +1642,8 @@ "39": { "code": 39, "keyName": "'", - "output": "*" + "action": "\"", + "output": "\"" }, "40": { "code": 40, @@ -1656,12 +1654,14 @@ "41": { "code": 41, "keyName": ";", - "output": "+" + "action": ":", + "output": ":" }, "42": { "code": 42, "keyName": "\\", - "output": "}" + "action": "|", + "output": "|" }, "43": { "code": 43, @@ -1849,21 +1849,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", @@ -1897,8 +1882,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1908,8 +1892,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -2172,7 +2155,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "=", + "output": "=" }, "25": { "code": 25, @@ -2207,7 +2191,7 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "output": "]" }, "31": { "code": 31, @@ -2224,7 +2208,7 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "output": "[" }, "34": { "code": 34, @@ -2258,7 +2242,7 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "output": "'" }, "40": { "code": 40, @@ -2274,7 +2258,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -2459,21 +2443,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", @@ -2507,8 +2476,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -2518,8 +2486,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3044,22 +3011,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", @@ -3093,8 +3044,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3104,8 +3054,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3220,7 +3169,7 @@ } }, "4": { - "label": "Shift+Option", + "label": "Option+Shift", "keys": { "0": { "code": 0, @@ -3629,21 +3578,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", @@ -3677,8 +3611,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3688,8 +3621,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4210,21 +4142,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", @@ -4258,8 +4175,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4269,8 +4185,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4385,7 +4300,7 @@ } }, "6": { - "label": "Command+Option", + "label": "Option+Command", "keys": { "0": { "code": 0, @@ -4782,21 +4697,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", @@ -4830,8 +4730,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4841,8 +4740,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -5356,21 +5254,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", @@ -5404,8 +5287,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -5415,8 +5297,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -5972,4 +5853,4 @@ } } } -} \ No newline at end of file +} diff --git a/spec/eurkey-v1.3-reference.json b/spec/eurkey-v1.3-reference.json index 6e0e65e..12dcdd1 100644 --- a/spec/eurkey-v1.3-reference.json +++ b/spec/eurkey-v1.3-reference.json @@ -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 @@ } } } -} \ No newline at end of file +} diff --git a/spec/eurkey-v1.4-parsed.json b/spec/eurkey-v1.4-parsed.json index f0928d3..e8f818e 100644 --- a/spec/eurkey-v1.4-parsed.json +++ b/spec/eurkey-v1.4-parsed.json @@ -951,7 +951,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "a27", + "output": "=" }, "25": { "code": 25, @@ -986,7 +987,8 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "action": "a57", + "output": "]" }, "31": { "code": 31, @@ -1003,7 +1005,8 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "action": "a56", + "output": "[" }, "34": { "code": 34, @@ -1037,7 +1040,8 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "action": "a6", + "output": "'" }, "40": { "code": 40, @@ -1054,7 +1058,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -1240,21 +1244,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", @@ -1288,8 +1277,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1299,8 +1287,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -1533,7 +1520,8 @@ "19": { "code": 19, "keyName": "2", - "output": "\"" + "action": "a29", + "output": "@" }, "20": { "code": 20, @@ -1550,7 +1538,8 @@ "22": { "code": 22, "keyName": "6", - "output": "&" + "action": "a58", + "output": "^" }, "23": { "code": 23, @@ -1561,37 +1550,44 @@ "24": { "code": 24, "keyName": "=", - "output": "~" + "action": "a10", + "output": "+" }, "25": { "code": 25, "keyName": "9", - "output": ")" + "action": "a7", + "output": "(" }, "26": { "code": 26, "keyName": "7", - "output": "'" + "action": "a5", + "output": "&" }, "27": { "code": 27, "keyName": "-", - "output": "=" + "action": "a59", + "output": "_" }, "28": { "code": 28, "keyName": "8", - "output": "(" + "action": "a9", + "output": "*" }, "29": { "code": 29, "keyName": "0", - "output": "0" + "action": "a8", + "output": ")" }, "30": { "code": 30, "keyName": "]", - "output": "{" + "action": "a90", + "output": "}" }, "31": { "code": 31, @@ -1608,7 +1604,8 @@ "33": { "code": 33, "keyName": "[", - "output": "`" + "action": "a88", + "output": "{" }, "34": { "code": 34, @@ -1642,7 +1639,8 @@ "39": { "code": 39, "keyName": "'", - "output": "*" + "action": "a1", + "output": "\"" }, "40": { "code": 40, @@ -1653,12 +1651,14 @@ "41": { "code": 41, "keyName": ";", - "output": "+" + "action": "a24", + "output": ":" }, "42": { "code": 42, "keyName": "\\", - "output": "}" + "action": "a89", + "output": "|" }, "43": { "code": 43, @@ -1846,21 +1846,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", @@ -1894,8 +1879,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1905,8 +1889,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -2169,7 +2152,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "a27", + "output": "=" }, "25": { "code": 25, @@ -2204,7 +2188,7 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "output": "]" }, "31": { "code": 31, @@ -2221,7 +2205,7 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "output": "[" }, "34": { "code": 34, @@ -2255,7 +2239,7 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "output": "'" }, "40": { "code": 40, @@ -2271,7 +2255,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -2456,21 +2440,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", @@ -2504,8 +2473,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -2515,8 +2483,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3041,22 +3008,6 @@ "keyName": "KP9", "output": "9" }, - "93": { - "code": 93, - "keyName": "ISO§", - "output": "\\" - }, - "94": { - "code": 94, - "keyName": "ISO_backslash", - "action": "a60", - "deadKey": "3" - }, - "95": { - "code": 95, - "keyName": "ISO_comma", - "output": "," - }, "96": { "code": 96, "keyName": "F5", @@ -3090,8 +3041,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3101,8 +3051,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3217,7 +3166,7 @@ } }, "4": { - "label": "Shift+Option", + "label": "Option+Shift", "keys": { "0": { "code": 0, @@ -3626,21 +3575,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", @@ -3674,8 +3608,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3685,8 +3618,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4201,21 +4133,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", @@ -4249,8 +4166,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4260,8 +4176,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4376,7 +4291,7 @@ } }, "6": { - "label": "Command+Option", + "label": "Option+Command", "keys": { "0": { "code": 0, @@ -4773,21 +4688,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", @@ -4821,8 +4721,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4832,8 +4731,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -5347,21 +5245,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", @@ -5395,8 +5278,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "a80", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -5406,8 +5288,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "a80", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -5960,4 +5841,4 @@ } } } -} \ No newline at end of file +} diff --git a/spec/eurkey-v2.0-parsed.json b/spec/eurkey-v2.0-parsed.json index 4e024a0..4729537 100644 --- a/spec/eurkey-v2.0-parsed.json +++ b/spec/eurkey-v2.0-parsed.json @@ -955,7 +955,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "=", + "output": "=" }, "25": { "code": 25, @@ -990,7 +991,8 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "action": "]", + "output": "]" }, "31": { "code": 31, @@ -1007,7 +1009,8 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "action": "[", + "output": "[" }, "34": { "code": 34, @@ -1041,7 +1044,8 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "action": "'", + "output": "'" }, "40": { "code": 40, @@ -1058,7 +1062,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -1259,21 +1263,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", @@ -1307,8 +1296,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1318,8 +1306,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -1553,7 +1540,8 @@ "19": { "code": 19, "keyName": "2", - "output": "\"" + "action": "@", + "output": "@" }, "20": { "code": 20, @@ -1570,7 +1558,8 @@ "22": { "code": 22, "keyName": "6", - "output": "&" + "action": "^", + "output": "^" }, "23": { "code": 23, @@ -1581,37 +1570,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, @@ -1628,7 +1624,8 @@ "33": { "code": 33, "keyName": "[", - "output": "`" + "action": "{", + "output": "{" }, "34": { "code": 34, @@ -1662,7 +1659,8 @@ "39": { "code": 39, "keyName": "'", - "output": "*" + "action": "\"", + "output": "\"" }, "40": { "code": 40, @@ -1673,12 +1671,14 @@ "41": { "code": 41, "keyName": ";", - "output": "+" + "action": ":", + "output": ":" }, "42": { "code": 42, "keyName": "\\", - "output": "}" + "action": "|", + "output": "|" }, "43": { "code": 43, @@ -1866,21 +1866,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", @@ -1914,8 +1899,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -1925,8 +1909,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -2189,7 +2172,8 @@ "24": { "code": 24, "keyName": "=", - "output": "^" + "action": "=", + "output": "=" }, "25": { "code": 25, @@ -2224,7 +2208,7 @@ "30": { "code": 30, "keyName": "]", - "output": "[" + "output": "]" }, "31": { "code": 31, @@ -2241,7 +2225,7 @@ "33": { "code": 33, "keyName": "[", - "output": "@" + "output": "[" }, "34": { "code": 34, @@ -2275,7 +2259,7 @@ "39": { "code": 39, "keyName": "'", - "output": ":" + "output": "'" }, "40": { "code": 40, @@ -2291,7 +2275,7 @@ "42": { "code": 42, "keyName": "\\", - "output": "]" + "output": "\\" }, "43": { "code": 43, @@ -2476,21 +2460,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", @@ -2524,8 +2493,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -2535,8 +2503,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3081,22 +3048,6 @@ "keyName": "KP9", "output": "9" }, - "93": { - "code": 93, - "keyName": "ISO§", - "output": "\\" - }, - "94": { - "code": 94, - "keyName": "ISO_backslash", - "action": "`", - "deadKey": "⌥`" - }, - "95": { - "code": 95, - "keyName": "ISO_comma", - "output": "," - }, "96": { "code": 96, "keyName": "F5", @@ -3130,8 +3081,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3141,8 +3091,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -3257,7 +3206,7 @@ } }, "4": { - "label": "Shift+Option", + "label": "Option+Shift", "keys": { "0": { "code": 0, @@ -3666,21 +3615,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", @@ -3714,8 +3648,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -3725,8 +3658,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4241,21 +4173,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", @@ -4289,8 +4206,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4300,8 +4216,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -4416,7 +4331,7 @@ } }, "6": { - "label": "Command+Option", + "label": "Option+Command", "keys": { "0": { "code": 0, @@ -4833,21 +4748,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", @@ -4881,8 +4781,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -4892,8 +4791,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -5417,21 +5315,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", @@ -5465,8 +5348,7 @@ "102": { "code": 102, "keyName": "code102", - "action": "space", - "output": " " + "output": "\u0010" }, "103": { "code": 103, @@ -5476,8 +5358,7 @@ "104": { "code": 104, "keyName": "code104", - "action": "space", - "output": " " + "output": "\u0010" }, "105": { "code": 105, @@ -6031,4 +5912,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/icons/EurKEY v1.2.icns b/src/icons/EurKEY v1.2.icns index fe3fb03..b54c18a 100644 Binary files a/src/icons/EurKEY v1.2.icns and b/src/icons/EurKEY v1.2.icns differ diff --git a/src/icons/EurKEY v1.3.icns b/src/icons/EurKEY v1.3.icns index fe3fb03..b54c18a 100644 Binary files a/src/icons/EurKEY v1.3.icns and b/src/icons/EurKEY v1.3.icns differ diff --git a/src/icons/EurKEY v1.4.icns b/src/icons/EurKEY v1.4.icns index 4811c8a..b54c18a 100644 Binary files a/src/icons/EurKEY v1.4.icns and b/src/icons/EurKEY v1.4.icns differ