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>
2
.github/workflows/build.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/release.yml
vendored
@@ -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
|
||||
|
||||
14
EurKEY-macOS-icon/drafts/badge-eu-template.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<!-- Template badge: rounded square nearly filling the canvas.
|
||||
Matches Apple's built-in keyboard layout icon style (ABC, DE, etc.). -->
|
||||
<defs>
|
||||
<mask id="textmask">
|
||||
<rect width="1024" height="1024" fill="white"/>
|
||||
<text x="512" y="700" text-anchor="middle"
|
||||
font-family="Helvetica, Arial, sans-serif"
|
||||
font-size="640" font-weight="bold"
|
||||
fill="black">EU</text>
|
||||
</mask>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="1024" height="1024" rx="220" fill="black" mask="url(#textmask)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 567 B |
13
EurKEY-macOS-icon/drafts/colored-c-star-key.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<!-- Draft C: Single key cap with EU star — minimal, reads well at any size -->
|
||||
<rect width="1024" height="1024" rx="180" fill="#003399"/>
|
||||
<!-- Large key cap shape, centered -->
|
||||
<rect x="172" y="172" width="680" height="680" rx="80" fill="rgba(255,255,255,0.92)"
|
||||
stroke="rgba(255,255,255,0.3)" stroke-width="8"/>
|
||||
<!-- Key shadow/depth -->
|
||||
<rect x="172" y="180" width="680" height="680" rx="80" fill="none"
|
||||
stroke="rgba(0,0,0,0.08)" stroke-width="8"/>
|
||||
<!-- Single EU gold star centered on key -->
|
||||
<polygon points="512,220 568,398 756,398 604,506 646,680 512,580 378,680 420,506 268,398 456,398"
|
||||
fill="#FFCC00"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 699 B |
7
EurKEY-macOS-icon/drafts/text-eu-template.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<!-- Template icon: "EU" — transparent bg, black text
|
||||
macOS TISIconIsTemplate renders this adaptively:
|
||||
light mode: dark text, light pill background
|
||||
dark mode: light text, dark pill background -->
|
||||
<text x="512" y="700" text-anchor="middle" font-family="'SF Pro Text', '.AppleSystemUIFont', 'Helvetica Neue', sans-serif" font-size="620" font-weight="600" fill="#000" letter-spacing="-10">EU</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 490 B |
4
EurKEY-macOS-icon/drafts/text-eur-template.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<!-- Template icon: "EUR" text — macOS renders black in light mode, white in dark mode -->
|
||||
<text x="512" y="640" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Helvetica Neue', sans-serif" font-size="480" font-weight="700" fill="#000" letter-spacing="-20">EUR</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 384 B |
@@ -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)
|
||||
|
||||
9
eurkey-macos.eu/img/icon-install.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none">
|
||||
<!-- DMG disk shape (rounded rectangle base) -->
|
||||
<rect x="6" y="26" width="36" height="18" rx="4" stroke="#003399" stroke-width="2.5" fill="none"/>
|
||||
<!-- Slot/opening on the disk -->
|
||||
<line x1="16" y1="38" x2="32" y2="38" stroke="#003399" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Download arrow -->
|
||||
<line x1="24" y1="4" x2="24" y2="22" stroke="#003399" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M18 17 L24 23 L30 17" stroke="#003399" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 604 B |
12
eurkey-macos.eu/img/icon-pdf.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none">
|
||||
<!-- Document with folded corner -->
|
||||
<path d="M10 4 H30 L38 12 V42 Q38 44 36 44 H12 Q10 44 10 42 Z" stroke="#003399" stroke-width="2.5" fill="none"/>
|
||||
<!-- Folded corner -->
|
||||
<path d="M30 4 V12 H38" stroke="#003399" stroke-width="2" fill="none" stroke-linejoin="round"/>
|
||||
<!-- Keyboard diagram lines on the document -->
|
||||
<line x1="16" y1="22" x2="32" y2="22" stroke="#003399" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="16" y1="27" x2="32" y2="27" stroke="#003399" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="16" y1="32" x2="28" y2="32" stroke="#003399" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<!-- PDF label -->
|
||||
<text x="24" y="40" text-anchor="middle" font-family="-apple-system, system-ui, sans-serif" font-size="7" font-weight="700" fill="#003399">PDF</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 915 B |
13
eurkey-macos.eu/img/icon-versions.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none">
|
||||
<!-- Stacked key caps representing multiple versions -->
|
||||
<!-- Back card -->
|
||||
<rect x="12" y="6" width="28" height="20" rx="3" stroke="#003399" stroke-width="2" fill="none" opacity="0.3"/>
|
||||
<!-- Middle card -->
|
||||
<rect x="8" y="12" width="28" height="20" rx="3" stroke="#003399" stroke-width="2" fill="none" opacity="0.6"/>
|
||||
<!-- Front card -->
|
||||
<rect x="4" y="18" width="28" height="20" rx="3" stroke="#003399" stroke-width="2.5" fill="none"/>
|
||||
<!-- Version label on front card -->
|
||||
<text x="18" y="32" text-anchor="middle" font-family="-apple-system, system-ui, sans-serif" font-size="10" font-weight="700" fill="#003399">2.0</text>
|
||||
<!-- Checkmark on front card -->
|
||||
<path d="M32 42 L36 46 L44 36" stroke="#003399" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 866 B |
@@ -1,28 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" fill="none">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<!-- EurKEY: EU star on a key cap -->
|
||||
<rect width="128" height="128" rx="28" fill="#003399"/>
|
||||
<g fill="#FFCC00">
|
||||
<circle cx="64" cy="34" r="3"/>
|
||||
<circle cx="71.5" cy="35.5" r="3"/>
|
||||
<circle cx="77.5" cy="40" r="3"/>
|
||||
<circle cx="80" cy="47" r="3"/>
|
||||
<circle cx="77.5" cy="54" r="3"/>
|
||||
<circle cx="71.5" cy="58.5" r="3"/>
|
||||
<circle cx="64" cy="60" r="3"/>
|
||||
<circle cx="56.5" cy="58.5" r="3"/>
|
||||
<circle cx="50.5" cy="54" r="3"/>
|
||||
<circle cx="48" cy="47" r="3"/>
|
||||
<circle cx="50.5" cy="40" r="3"/>
|
||||
<circle cx="56.5" cy="35.5" r="3"/>
|
||||
</g>
|
||||
<g fill="#fff" opacity=".9">
|
||||
<rect x="22" y="74" width="14" height="12" rx="3"/>
|
||||
<rect x="39" y="74" width="14" height="12" rx="3"/>
|
||||
<rect x="56" y="74" width="14" height="12" rx="3"/>
|
||||
<rect x="73" y="74" width="14" height="12" rx="3"/>
|
||||
<rect x="90" y="74" width="14" height="12" rx="3"/>
|
||||
<rect x="30" y="90" width="14" height="12" rx="3"/>
|
||||
<rect x="47" y="90" width="14" height="12" rx="3"/>
|
||||
<rect x="64" y="90" width="14" height="12" rx="3"/>
|
||||
<rect x="81" y="90" width="14" height="12" rx="3"/>
|
||||
</g>
|
||||
<rect x="22" y="22" width="84" height="84" rx="12" fill="rgba(255,255,255,0.92)"/>
|
||||
<polygon points="64,28 71,50 94,50 75,62 81,84 64,72 47,84 53,62 34,50 57,50" fill="#FFCC00"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 346 B |
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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..."
|
||||
66
scripts/build-icons.sh
Executable file
@@ -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"
|
||||
@@ -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 = {}
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||