diff --git a/icons.config.ts b/icons.config.ts
index e3cf7b02..ba12b383 100644
--- a/icons.config.ts
+++ b/icons.config.ts
@@ -33,6 +33,12 @@ const config: IconsConfig = {
],
codePoints: {
speed: "e9e4",
+ arrow_split: "e985",
+ arrow_circle_down: "f181",
+ arrow_circle_up: "f182",
+ counter_1: "f784",
+ counter_2: "f783",
+ counter_3: "f782",
},
}
diff --git a/package-lock.json b/package-lock.json
index 383ca411..0ae0cc51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,10 +7,12 @@
"": {
"name": "cccs",
"version": "0.0.1",
+ "license": "AGPL-3.0-or-later",
"devDependencies": {
"@fontsource-variable/material-symbols-rounded": "^5.0.4",
"@fontsource-variable/noto-sans-mono": "^5.0.4",
"@material/material-color-utilities": "^0.2.7",
+ "@modyfi/vite-plugin-yaml": "^1.0.4",
"@sveltejs/adapter-static": "^2.0.2",
"@sveltejs/kit": "^1.20.4",
"@theaninova/prettier-config": "^1.0.0",
@@ -18,6 +20,7 @@
"@vite-pwa/sveltekit": "^0.2.5",
"autoprefixer": "^10.4.14",
"fontkit": "^2.0.2",
+ "glob": "^10.3.1",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.10.1",
"sass": "^1.63.6",
@@ -2207,6 +2210,73 @@
"integrity": "sha512-CC5p/9/OF3hep8EsSD0UKYMCaA58nqjm4vRKnwvmvHZPA9jFif6q1lRkmI2nx8C30UkdVA1L7JvOUmCUu+RgNA==",
"dev": true
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -2277,6 +2347,20 @@
"integrity": "sha512-0FCeqG6WvK4/Cc06F/xXMd/pv4FeisI0c1tUpBbfhA2n9Y8eZEv4Karjbmf2ZqQCPUWMrGp8A571tCjizxoTiQ==",
"dev": true
},
+ "node_modules/@modyfi/vite-plugin-yaml": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.0.4.tgz",
+ "integrity": "sha512-qkT0KiR3AQQRfUvDzLv4+1rYAzXj+QmGhAbyUd0Ordf9xynK76i758lk5GiEfxuQxbvdqDaJ9oXkH/KacbSjQQ==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "5.0.2",
+ "js-yaml": "4.1.0",
+ "tosource": "2.0.0-alpha.3"
+ },
+ "peerDependencies": {
+ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0"
+ }
+ },
"node_modules/@nicolo-ribaudo/semver-v6": {
"version": "6.3.3",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
@@ -2321,12 +2405,50 @@
"node": ">= 8"
}
},
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@polka/url": {
"version": "1.0.0-next.21",
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true
+ },
"node_modules/@surma/rollup-plugin-off-main-thread": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
@@ -3141,6 +3263,35 @@
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true
},
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -3370,6 +3521,12 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
"node_modules/ejs": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
@@ -3709,6 +3866,26 @@
"node": "^10.12.0 || >=12.0.0"
}
},
+ "node_modules/flat-cache/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/flat-cache/node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -3756,6 +3933,22 @@
"is-callable": "^1.1.3"
}
},
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/fraction.js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
@@ -3884,20 +4077,22 @@
}
},
"node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "version": "10.3.1",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz",
+ "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==",
"dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.10.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
},
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -3915,6 +4110,30 @@
"node": ">= 6"
}
},
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/global-modules": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
@@ -4566,6 +4785,24 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
+ "node_modules/jackspeak": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
+ "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/jake": {
"version": "10.8.7",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
@@ -5020,6 +5257,15 @@
"node": ">= 6"
}
},
+ "node_modules/minipass": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz",
+ "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@@ -5248,12 +5494,46 @@
"node": ">=0.10.0"
}
},
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
+ "node_modules/path-scurry": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz",
+ "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz",
+ "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -5751,6 +6031,26 @@
"rimraf": "bin.js"
}
},
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/rollup": {
"version": "3.26.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.0.tgz",
@@ -5895,6 +6195,27 @@
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
"dev": true
},
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -6111,6 +6432,21 @@
"node": ">=8"
}
},
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/string.prototype.matchall": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
@@ -6201,6 +6537,19 @@
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
@@ -6730,6 +7079,15 @@
"node": ">=8.0"
}
},
+ "node_modules/tosource": {
+ "version": "2.0.0-alpha.3",
+ "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz",
+ "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
@@ -7327,6 +7685,26 @@
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
"dev": true
},
+ "node_modules/workbox-build/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/workbox-build/node_modules/magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -7503,6 +7881,136 @@
"workbox-core": "7.0.0"
}
},
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/package.json b/package.json
index ba7dbbf5..43a455c2 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"stylelint-config-html": "^1.1.0",
"stylelint-config-recommended-scss": "^12.0.0",
"stylelint-config-clean-order": "^5.0.1",
+ "glob": "^10.3.1",
"@sveltejs/adapter-static": "^2.0.2",
"@sveltejs/kit": "^1.20.4",
"@material/material-color-utilities": "^0.2.7",
@@ -37,6 +38,7 @@
"typescript": "^5.0.0",
"vite": "^4.3.6",
"vite-plugin-pwa": "^0.16.4",
+ "@modyfi/vite-plugin-yaml": "^1.0.4",
"svelte-preprocess": "^5.0.4",
"autoprefixer": "^10.4.14",
"sass": "^1.63.6"
diff --git a/src/app.d.ts b/src/app.d.ts
index 0425013a..10e088bf 100644
--- a/src/app.d.ts
+++ b/src/app.d.ts
@@ -1,3 +1,5 @@
+///
+
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
diff --git a/src/lib/assets/key-symbols.json b/src/lib/assets/key-symbols.json
deleted file mode 100644
index f8f09cbf..00000000
--- a/src/lib/assets/key-symbols.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "SPACE": "␣",
- "SPACERIGHT": "␣ᴿ",
- "DEL": "⌦",
- "BKSP": "⌫",
- "MS_CLICK_LF": "\uD83D\uDDB0ᴸ",
- "MS_CLICK_RT": "\uD83D\uDDB0ᴿ",
- "MS_MOVE_UP": "\uD83D\uDDB0\uD83E\uDC51",
- "MS_MOVE_DN": "\uD83D\uDDB0\uD83E\uDC53",
- "MS_MOVE_LF": "\uD83E\uDC50\uD83D\uDDB0",
- "MS_MOVE_RT": "\uD83D\uDDB0\uD83E\uDC52",
- "MS_SCRL_UP": "\uD83D\uDDB0⍐",
- "MS_SCRL_DN": "\uD83D\uDDB0⍗",
- "MS_SCRL_LF": "⍇\uD83D\uDDB0",
- "MS_SCRL_RT": "\uD83D\uDDB0⍈",
- "AMBIRIGHT": "✍\uFE0Eᴿ",
- "AMBILEFT": "✍\uFE0Eᴸ",
- "ENTER": "⮠",
- "TAB": "⭾",
- "LEFT_CTRL": "⌥ᴸ",
- "RIGHT_CTRL": "⌥ᴿ",
- "LEFT_ALT": "⎇ᴸ",
- "RIGHT_ALT": "⎇ᴿ",
- "LEFT_SHIFT": "⇪ᴸ",
- "RIGHT_SHIFT": "⇪ᴸ",
- "KM_2_R": "⚇ᴿ",
- "KM_2_L": "⚇ᴸ",
- "ARROW_UP": "\uD83E\uDC2D",
- "ARROW_DN": "\uD83E\uDC2F",
- "ARROW_RT": "\uD83E\uDC2E",
- "ARROW_LF": "\uD83E\uDC2C",
- "ESC": "␛",
- "DUP": "⎘"
-}
diff --git a/src/lib/assets/keymap_codes.json b/src/lib/assets/keymap_codes.json
deleted file mode 100644
index 431848ba..00000000
--- a/src/lib/assets/keymap_codes.json
+++ /dev/null
@@ -1,7170 +0,0 @@
-[
- [
- "0",
- "None",
- "",
- "10-bit Action Codes 0x00",
- ""
- ],
- [
- "1",
- "None",
- "",
- "10-bit Action Codes 0x01",
- ""
- ],
- [
- "2",
- "None",
- "",
- "10-bit Action Codes 0x02",
- ""
- ],
- [
- "3",
- "None",
- "",
- "10-bit Action Codes 0x03",
- ""
- ],
- [
- "4",
- "None",
- "",
- "10-bit Action Codes 0x04",
- ""
- ],
- [
- "5",
- "None",
- "",
- "10-bit Action Codes 0x05",
- ""
- ],
- [
- "6",
- "None",
- "",
- "10-bit Action Codes 0x06",
- ""
- ],
- [
- "7",
- "None",
- "",
- "10-bit Action Codes 0x07",
- ""
- ],
- [
- "8",
- "None",
- "",
- "10-bit Action Codes 0x08",
- ""
- ],
- [
- "9",
- "None",
- "",
- "10-bit Action Codes 0x09",
- ""
- ],
- [
- "10",
- "None",
- "",
- "10-bit Action Codes 0x0A",
- ""
- ],
- [
- "11",
- "None",
- "",
- "10-bit Action Codes 0x0B",
- ""
- ],
- [
- "12",
- "None",
- "",
- "10-bit Action Codes 0x0C",
- ""
- ],
- [
- "13",
- "None",
- "",
- "10-bit Action Codes 0x0D",
- ""
- ],
- [
- "14",
- "None",
- "",
- "10-bit Action Codes 0x0E",
- ""
- ],
- [
- "15",
- "None",
- "",
- "10-bit Action Codes 0x0F",
- ""
- ],
- [
- "16",
- "None",
- "",
- "10-bit Action Codes 0x10",
- ""
- ],
- [
- "17",
- "None",
- "",
- "10-bit Action Codes 0x11",
- ""
- ],
- [
- "18",
- "None",
- "",
- "10-bit Action Codes 0x12",
- ""
- ],
- [
- "19",
- "None",
- "",
- "10-bit Action Codes 0x13",
- ""
- ],
- [
- "20",
- "None",
- "",
- "10-bit Action Codes 0x14",
- ""
- ],
- [
- "21",
- "None",
- "",
- "10-bit Action Codes 0x15",
- ""
- ],
- [
- "22",
- "None",
- "",
- "10-bit Action Codes 0x16",
- ""
- ],
- [
- "23",
- "None",
- "",
- "10-bit Action Codes 0x17",
- ""
- ],
- [
- "24",
- "None",
- "",
- "10-bit Action Codes 0x18",
- ""
- ],
- [
- "25",
- "None",
- "",
- "10-bit Action Codes 0x19",
- ""
- ],
- [
- "26",
- "None",
- "",
- "10-bit Action Codes 0x1A",
- ""
- ],
- [
- "27",
- "None",
- "",
- "10-bit Action Codes 0x1B",
- ""
- ],
- [
- "28",
- "None",
- "",
- "10-bit Action Codes 0x1C",
- ""
- ],
- [
- "29",
- "None",
- "",
- "10-bit Action Codes 0x1D",
- ""
- ],
- [
- "30",
- "None",
- "",
- "10-bit Action Codes 0x1E",
- ""
- ],
- [
- "31",
- "None",
- "",
- "10-bit Action Codes 0x1F",
- ""
- ],
- [
- "32",
- "ASCII",
- "SPACE",
- "Space",
- "While SPACE is used for keymaps and chord, just a \" \" is used in chord outputs. This action is unique in this way. Technically it is 'printable', but it is not visible."
- ],
- [
- "33",
- "ASCII",
- "!",
- "Exclamation Point",
- ""
- ],
- [
- "34",
- "ASCII",
- "\"",
- "Double Quote",
- ""
- ],
- [
- "35",
- "ASCII",
- "#",
- "Hash Symbol",
- ""
- ],
- [
- "36",
- "ASCII",
- "$",
- "Dollar Sign",
- ""
- ],
- [
- "37",
- "ASCII",
- "%",
- "Percent",
- ""
- ],
- [
- "38",
- "ASCII",
- "&",
- "Amperstand",
- ""
- ],
- [
- "39",
- "ASCII",
- "'",
- "Single Quote",
- ""
- ],
- [
- "40",
- "ASCII",
- "(",
- "Left Parenthesis",
- ""
- ],
- [
- "41",
- "ASCII",
- ")",
- "Right Parenthesis",
- ""
- ],
- [
- "42",
- "ASCII",
- "*",
- "Asterisk",
- ""
- ],
- [
- "43",
- "ASCII",
- "+",
- "Plus",
- ""
- ],
- [
- "44",
- "ASCII",
- ",",
- "Comma",
- ""
- ],
- [
- "45",
- "ASCII",
- "-",
- "Minus",
- ""
- ],
- [
- "46",
- "ASCII",
- ".",
- "Period",
- ""
- ],
- [
- "47",
- "ASCII",
- "/",
- "Forward Slash",
- ""
- ],
- [
- "48",
- "ASCII",
- "0",
- "Zero",
- ""
- ],
- [
- "49",
- "ASCII",
- "1",
- "One",
- ""
- ],
- [
- "50",
- "ASCII",
- "2",
- "Two",
- ""
- ],
- [
- "51",
- "ASCII",
- "3",
- "Three",
- ""
- ],
- [
- "52",
- "ASCII",
- "4",
- "Four",
- ""
- ],
- [
- "53",
- "ASCII",
- "5",
- "Five",
- ""
- ],
- [
- "54",
- "ASCII",
- "6",
- "Six",
- ""
- ],
- [
- "55",
- "ASCII",
- "7",
- "Seven",
- ""
- ],
- [
- "56",
- "ASCII",
- "8",
- "Eight",
- ""
- ],
- [
- "57",
- "ASCII",
- "9",
- "Nine",
- ""
- ],
- [
- "58",
- "ASCII",
- ":",
- "Colon",
- ""
- ],
- [
- "59",
- "ASCII",
- ";",
- "Semicolon",
- ""
- ],
- [
- "60",
- "ASCII",
- "<",
- "Less Than",
- ""
- ],
- [
- "61",
- "ASCII",
- "=",
- "Equals",
- ""
- ],
- [
- "62",
- "ASCII",
- ">",
- "Greater Than",
- ""
- ],
- [
- "63",
- "ASCII",
- "?",
- "Question Mark",
- ""
- ],
- [
- "64",
- "ASCII",
- "@",
- "At Symbol",
- ""
- ],
- [
- "65",
- "ASCII",
- "A",
- "Uppercase A",
- ""
- ],
- [
- "66",
- "ASCII",
- "B",
- "Uppercase B",
- ""
- ],
- [
- "67",
- "ASCII",
- "C",
- "Uppercase C",
- ""
- ],
- [
- "68",
- "ASCII",
- "D",
- "Uppercase D",
- ""
- ],
- [
- "69",
- "ASCII",
- "E",
- "Uppercase E",
- ""
- ],
- [
- "70",
- "ASCII",
- "F",
- "Uppercase F",
- ""
- ],
- [
- "71",
- "ASCII",
- "G",
- "Uppercase G",
- ""
- ],
- [
- "72",
- "ASCII",
- "H",
- "Uppercase H",
- ""
- ],
- [
- "73",
- "ASCII",
- "I",
- "Uppercase I",
- ""
- ],
- [
- "74",
- "ASCII",
- "J",
- "Uppercase J",
- ""
- ],
- [
- "75",
- "ASCII",
- "K",
- "Uppercase K",
- ""
- ],
- [
- "76",
- "ASCII",
- "L",
- "Uppercase L",
- ""
- ],
- [
- "77",
- "ASCII",
- "M",
- "Uppercase M",
- ""
- ],
- [
- "78",
- "ASCII",
- "N",
- "Uppercase N",
- ""
- ],
- [
- "79",
- "ASCII",
- "O",
- "Uppercase O",
- ""
- ],
- [
- "80",
- "ASCII",
- "P",
- "Uppercase P",
- ""
- ],
- [
- "81",
- "ASCII",
- "Q",
- "Uppercase Q",
- ""
- ],
- [
- "82",
- "ASCII",
- "R",
- "Uppercase R",
- ""
- ],
- [
- "83",
- "ASCII",
- "S",
- "Uppercase S",
- ""
- ],
- [
- "84",
- "ASCII",
- "T",
- "Uppercase T",
- ""
- ],
- [
- "85",
- "ASCII",
- "U",
- "Uppercase U",
- ""
- ],
- [
- "86",
- "ASCII",
- "V",
- "Uppercase V",
- ""
- ],
- [
- "87",
- "ASCII",
- "W",
- "Uppercase W",
- ""
- ],
- [
- "88",
- "ASCII",
- "X",
- "Uppercase X",
- ""
- ],
- [
- "89",
- "ASCII",
- "Y",
- "Uppercase Y",
- ""
- ],
- [
- "90",
- "ASCII",
- "Z",
- "Uppercase Z",
- ""
- ],
- [
- "91",
- "ASCII",
- "[",
- "Left Bracket",
- ""
- ],
- [
- "92",
- "ASCII",
- "\\",
- "Backslash",
- ""
- ],
- [
- "93",
- "ASCII",
- "]",
- "Right Bracket",
- ""
- ],
- [
- "94",
- "ASCII",
- "^",
- "Carrot",
- ""
- ],
- [
- "95",
- "ASCII",
- "_",
- "Underscore",
- ""
- ],
- [
- "96",
- "ASCII",
- "`",
- "Grave Mark",
- ""
- ],
- [
- "97",
- "ASCII",
- "a",
- "Lowercase a",
- "Lowercase ASCII letters are needed for the linguistics processing"
- ],
- [
- "98",
- "ASCII",
- "b",
- "Lowercase b",
- ""
- ],
- [
- "99",
- "ASCII",
- "c",
- "Lowercase c",
- ""
- ],
- [
- "100",
- "ASCII",
- "d",
- "Lowercase d",
- ""
- ],
- [
- "101",
- "ASCII",
- "e",
- "Lowercase e",
- ""
- ],
- [
- "102",
- "ASCII",
- "f",
- "Lowercase f",
- ""
- ],
- [
- "103",
- "ASCII",
- "g",
- "Lowercase g",
- ""
- ],
- [
- "104",
- "ASCII",
- "h",
- "Lowercase h",
- ""
- ],
- [
- "105",
- "ASCII",
- "i",
- "Lowercase i",
- ""
- ],
- [
- "106",
- "ASCII",
- "j",
- "Lowercase j",
- ""
- ],
- [
- "107",
- "ASCII",
- "k",
- "Lowercase k",
- ""
- ],
- [
- "108",
- "ASCII",
- "l",
- "Lowercase l",
- ""
- ],
- [
- "109",
- "ASCII",
- "m",
- "Lowercase m",
- ""
- ],
- [
- "110",
- "ASCII",
- "n",
- "Lowercase n",
- ""
- ],
- [
- "111",
- "ASCII",
- "o",
- "Lowercase o",
- ""
- ],
- [
- "112",
- "ASCII",
- "p",
- "Lowercase p",
- ""
- ],
- [
- "113",
- "ASCII",
- "q",
- "Lowercase q",
- ""
- ],
- [
- "114",
- "ASCII",
- "r",
- "Lowercase r",
- ""
- ],
- [
- "115",
- "ASCII",
- "s",
- "Lowercase s",
- ""
- ],
- [
- "116",
- "ASCII",
- "t",
- "Lowercase t",
- ""
- ],
- [
- "117",
- "ASCII",
- "u",
- "Lowercase u",
- ""
- ],
- [
- "118",
- "ASCII",
- "v",
- "Lowercase v",
- ""
- ],
- [
- "119",
- "ASCII",
- "w",
- "Lowercase w",
- ""
- ],
- [
- "120",
- "ASCII",
- "x",
- "Lowercase x",
- ""
- ],
- [
- "121",
- "ASCII",
- "y",
- "Lowercase y",
- ""
- ],
- [
- "122",
- "ASCII",
- "z",
- "Lowercase z",
- ""
- ],
- [
- "123",
- "ASCII",
- "{",
- "Left Curly Brace",
- ""
- ],
- [
- "124",
- "ASCII",
- "|",
- "Pipe",
- ""
- ],
- [
- "125",
- "ASCII",
- "}",
- "Right Curly Brace",
- ""
- ],
- [
- "126",
- "ASCII",
- "~",
- "Tilde",
- ""
- ],
- [
- "127",
- "ASCII",
- "DEL",
- "Delete",
- ""
- ],
- [
- "128",
- "CP-1252",
- "€",
- "Uppercase cedilla",
- ""
- ],
- [
- "129",
- "",
- "",
- "HOP (High Octet Preset)",
- ""
- ],
- [
- "130",
- "CP-1252",
- "‚",
- "Single Low-9 Quotation Mark",
- ""
- ],
- [
- "131",
- "CP-1252",
- "ƒ",
- "Latin Small Letter f with Hook; Florin",
- ""
- ],
- [
- "132",
- "CP-1252",
- "„",
- "Double Low-9 Quotation Mark",
- ""
- ],
- [
- "133",
- "CP-1252",
- "…",
- "Horizontal Ellipsis",
- ""
- ],
- [
- "134",
- "CP-1252",
- "†",
- "Dagger",
- ""
- ],
- [
- "135",
- "CP-1252",
- "‡",
- "Double Dagger",
- ""
- ],
- [
- "136",
- "CP-1252",
- "ˆ",
- "Circumflex",
- ""
- ],
- [
- "137",
- "CP-1252",
- "‰",
- "Per Mile",
- ""
- ],
- [
- "138",
- "CP-1252",
- "Š",
- "Captial S Caron",
- ""
- ],
- [
- "139",
- "CP-1252",
- "‹",
- "Left Guillemet",
- ""
- ],
- [
- "140",
- "CP-1252",
- "Œ",
- "Captial Ligature OE",
- ""
- ],
- [
- "141",
- "",
- "",
- "RI (Reverse Index)",
- ""
- ],
- [
- "142",
- "CP-1252",
- "Ž",
- "Captial Z Caron",
- ""
- ],
- [
- "143",
- "",
- "",
- "SS3 (Single-Shift G3)",
- ""
- ],
- [
- "144",
- "",
- "",
- "DCS (Device Control String)",
- ""
- ],
- [
- "145",
- "CP-1252",
- "‘",
- "Single Quote Left",
- ""
- ],
- [
- "146",
- "CP-1252",
- "’",
- "Single Quote Right",
- ""
- ],
- [
- "147",
- "CP-1252",
- "“",
- "Double Quote Left",
- ""
- ],
- [
- "148",
- "CP-1252",
- "”",
- "Double Quote Right",
- ""
- ],
- [
- "149",
- "CP-1252",
- "•",
- "Bullet",
- ""
- ],
- [
- "150",
- "CP-1252",
- "–",
- "En Dash",
- ""
- ],
- [
- "151",
- "CP-1252",
- "—",
- "Em Dash",
- ""
- ],
- [
- "152",
- "CP-1252",
- "˜",
- "Small Tilde",
- ""
- ],
- [
- "153",
- "CP-1252",
- "™",
- "Trademark",
- ""
- ],
- [
- "154",
- "CP-1252",
- "š",
- "Small s Carson",
- ""
- ],
- [
- "155",
- "CP-1252",
- "›",
- "Right Guillement",
- ""
- ],
- [
- "156",
- "CP-1252",
- "œ",
- "Small Ligature oe",
- ""
- ],
- [
- "157",
- "CP-1252",
- "",
- "Operating System Command",
- ""
- ],
- [
- "158",
- "CP-1252",
- "ž",
- "Small Z Caron",
- ""
- ],
- [
- "159",
- "CP-1252",
- "Ÿ",
- "Capital Y Diaresis",
- ""
- ],
- [
- "160",
- "CP-1252",
- " ",
- "No Break Space",
- ""
- ],
- [
- "161",
- "CP-1252",
- "¡",
- "Inverted Exclamation",
- ""
- ],
- [
- "162",
- "CP-1252",
- "¢",
- "Cent",
- ""
- ],
- [
- "163",
- "CP-1252",
- "£",
- "Pound",
- ""
- ],
- [
- "164",
- "CP-1252",
- "¤",
- "Currency",
- ""
- ],
- [
- "165",
- "CP-1252",
- "¥",
- "Yen",
- ""
- ],
- [
- "166",
- "CP-1252",
- "¦",
- "Broken Bar",
- ""
- ],
- [
- "167",
- "CP-1252",
- "§",
- "Section",
- ""
- ],
- [
- "168",
- "CP-1252",
- "¨",
- "Diaresis",
- ""
- ],
- [
- "169",
- "CP-1252",
- "©",
- "Copyright",
- ""
- ],
- [
- "170",
- "CP-1252",
- "ª",
- "Feminine Ordinal",
- ""
- ],
- [
- "171",
- "CP-1252",
- "«",
- "Double Left Guillement",
- ""
- ],
- [
- "172",
- "CP-1252",
- "¬",
- "Not",
- ""
- ],
- [
- "173",
- "CP-1252",
- "",
- "Soft Hyphen",
- ""
- ],
- [
- "174",
- "CP-1252",
- "®",
- "Registered",
- ""
- ],
- [
- "175",
- "CP-1252",
- "¯",
- "Macron",
- ""
- ],
- [
- "176",
- "CP-1252",
- "°",
- "Degree",
- ""
- ],
- [
- "177",
- "CP-1252",
- "±",
- "Plus Minus",
- ""
- ],
- [
- "178",
- "CP-1252",
- "²",
- "Superscript Two",
- ""
- ],
- [
- "179",
- "CP-1252",
- "³",
- "Superscript Three",
- ""
- ],
- [
- "180",
- "CP-1252",
- "´",
- "Acute",
- ""
- ],
- [
- "181",
- "CP-1252",
- "µ",
- "Micro",
- ""
- ],
- [
- "182",
- "CP-1252",
- "¶",
- "Pilcrow",
- ""
- ],
- [
- "183",
- "CP-1252",
- "·",
- "Middle Dot",
- ""
- ],
- [
- "184",
- "CP-1252",
- "¸",
- "Cedilla",
- ""
- ],
- [
- "185",
- "CP-1252",
- "¹",
- "Superscript One",
- ""
- ],
- [
- "186",
- "CP-1252",
- "º",
- "Masculine Ordinal",
- ""
- ],
- [
- "187",
- "CP-1252",
- "»",
- "Double Right Guillement",
- ""
- ],
- [
- "188",
- "CP-1252",
- "¼",
- "One Quarter Fraction",
- ""
- ],
- [
- "189",
- "CP-1252",
- "½",
- "One Half Fraction",
- ""
- ],
- [
- "190",
- "CP-1252",
- "¾",
- "Three Quarters Fraction",
- ""
- ],
- [
- "191",
- "CP-1252",
- "¿",
- "Inverted Question",
- ""
- ],
- [
- "192",
- "CP-1252",
- "À",
- "Captial A Grave",
- ""
- ],
- [
- "193",
- "CP-1252",
- "Á",
- "",
- ""
- ],
- [
- "194",
- "CP-1252",
- "Â",
- "",
- ""
- ],
- [
- "195",
- "CP-1252",
- "Ã",
- "",
- ""
- ],
- [
- "196",
- "CP-1252",
- "Ä",
- "",
- ""
- ],
- [
- "197",
- "CP-1252",
- "Å",
- "",
- ""
- ],
- [
- "198",
- "CP-1252",
- "Æ",
- "",
- ""
- ],
- [
- "199",
- "CP-1252",
- "Ç",
- "",
- ""
- ],
- [
- "200",
- "CP-1252",
- "È",
- "",
- ""
- ],
- [
- "201",
- "CP-1252",
- "É",
- "",
- ""
- ],
- [
- "202",
- "CP-1252",
- "Ê",
- "",
- ""
- ],
- [
- "203",
- "CP-1252",
- "Ë",
- "",
- ""
- ],
- [
- "204",
- "CP-1252",
- "Ì",
- "",
- ""
- ],
- [
- "205",
- "CP-1252",
- "Í",
- "",
- ""
- ],
- [
- "206",
- "CP-1252",
- "Î",
- "",
- ""
- ],
- [
- "207",
- "CP-1252",
- "Ï",
- "",
- ""
- ],
- [
- "208",
- "CP-1252",
- "Ð",
- "",
- ""
- ],
- [
- "209",
- "CP-1252",
- "Ñ",
- "",
- ""
- ],
- [
- "210",
- "CP-1252",
- "Ò",
- "",
- ""
- ],
- [
- "211",
- "CP-1252",
- "Ó",
- "",
- ""
- ],
- [
- "212",
- "CP-1252",
- "Ô",
- "",
- ""
- ],
- [
- "213",
- "CP-1252",
- "Õ",
- "",
- ""
- ],
- [
- "214",
- "CP-1252",
- "Ö",
- "",
- ""
- ],
- [
- "215",
- "CP-1252",
- "×",
- "",
- ""
- ],
- [
- "216",
- "CP-1252",
- "Ø",
- "",
- ""
- ],
- [
- "217",
- "CP-1252",
- "Ù",
- "",
- ""
- ],
- [
- "218",
- "CP-1252",
- "Ú",
- "",
- ""
- ],
- [
- "219",
- "CP-1252",
- "Û",
- "",
- ""
- ],
- [
- "220",
- "CP-1252",
- "Ü",
- "",
- ""
- ],
- [
- "221",
- "CP-1252",
- "Ý",
- "",
- ""
- ],
- [
- "222",
- "CP-1252",
- "Þ",
- "",
- ""
- ],
- [
- "223",
- "CP-1252",
- "ß",
- "",
- ""
- ],
- [
- "224",
- "CP-1252",
- "à",
- "",
- ""
- ],
- [
- "225",
- "CP-1252",
- "á",
- "",
- ""
- ],
- [
- "226",
- "CP-1252",
- "â",
- "",
- ""
- ],
- [
- "227",
- "CP-1252",
- "ã",
- "",
- ""
- ],
- [
- "228",
- "CP-1252",
- "ä",
- "",
- ""
- ],
- [
- "229",
- "CP-1252",
- "å",
- "",
- ""
- ],
- [
- "230",
- "CP-1252",
- "æ",
- "",
- ""
- ],
- [
- "231",
- "CP-1252",
- "ç",
- "",
- ""
- ],
- [
- "232",
- "CP-1252",
- "è",
- "",
- ""
- ],
- [
- "233",
- "CP-1252",
- "é",
- "",
- ""
- ],
- [
- "234",
- "CP-1252",
- "ê",
- "",
- ""
- ],
- [
- "235",
- "CP-1252",
- "ë",
- "",
- ""
- ],
- [
- "236",
- "CP-1252",
- "ì",
- "",
- ""
- ],
- [
- "237",
- "CP-1252",
- "í",
- "",
- ""
- ],
- [
- "238",
- "CP-1252",
- "î",
- "",
- ""
- ],
- [
- "239",
- "CP-1252",
- "ï",
- "",
- ""
- ],
- [
- "240",
- "CP-1252",
- "ð",
- "",
- ""
- ],
- [
- "241",
- "CP-1252",
- "ñ",
- "",
- ""
- ],
- [
- "242",
- "CP-1252",
- "ò",
- "",
- ""
- ],
- [
- "243",
- "CP-1252",
- "ó",
- "",
- ""
- ],
- [
- "244",
- "CP-1252",
- "ô",
- "",
- ""
- ],
- [
- "245",
- "CP-1252",
- "õ",
- "",
- ""
- ],
- [
- "246",
- "CP-1252",
- "ö",
- "",
- ""
- ],
- [
- "247",
- "CP-1252",
- "÷",
- "",
- ""
- ],
- [
- "248",
- "CP-1252",
- "ø",
- "",
- ""
- ],
- [
- "249",
- "CP-1252",
- "ù",
- "",
- ""
- ],
- [
- "250",
- "CP-1252",
- "ú",
- "",
- ""
- ],
- [
- "251",
- "CP-1252",
- "û",
- "",
- ""
- ],
- [
- "252",
- "CP-1252",
- "ü",
- "",
- ""
- ],
- [
- "253",
- "CP-1252",
- "ý",
- "",
- ""
- ],
- [
- "254",
- "CP-1252",
- "þ",
- "",
- ""
- ],
- [
- "255",
- "CP-1252",
- "ÿ",
- "Small y Diaeresis",
- ""
- ],
- [
- "256",
- "Raw Scancode",
- "KSC_00",
- "No Key Pressed",
- ""
- ],
- [
- "257",
- "Raw Scancode",
- "KSC_01",
- "Keyboard Error Roll Over",
- ""
- ],
- [
- "258",
- "Raw Scancode",
- "KSC_02",
- "Keyboard POST Fail",
- ""
- ],
- [
- "259",
- "Raw Scancode",
- "KSC_03",
- "Keyboard Error Undefined",
- ""
- ],
- [
- "260",
- "Raw Scancode",
- "KEY_A",
- "Keyboard a and A (US English)",
- "Non US English keyboard users may prefer these Raw Scancodes"
- ],
- [
- "261",
- "Raw Scancode",
- "KEY_B",
- "Keyboard b and B (US English)",
- ""
- ],
- [
- "262",
- "Raw Scancode",
- "KEY_C",
- "Keyboard c and C (US English)",
- ""
- ],
- [
- "263",
- "Raw Scancode",
- "KEY_D",
- "Keyboard d and D (US English)",
- ""
- ],
- [
- "264",
- "Raw Scancode",
- "KEY_E",
- "Keyboard e and E (US English)",
- ""
- ],
- [
- "265",
- "Raw Scancode",
- "KEY_F",
- "Keyboard f and F (US English)",
- ""
- ],
- [
- "266",
- "Raw Scancode",
- "KEY_G",
- "Keyboard g and G (US English)",
- ""
- ],
- [
- "267",
- "Raw Scancode",
- "KEY_H",
- "Keyboard h and H (US English)",
- ""
- ],
- [
- "268",
- "Raw Scancode",
- "KEY_I",
- "Keyboard i and I (US English)",
- ""
- ],
- [
- "269",
- "Raw Scancode",
- "KEY_J",
- "Keyboard j and J (US English)",
- ""
- ],
- [
- "270",
- "Raw Scancode",
- "KEY_K",
- "Keyboard k and K (US English)",
- ""
- ],
- [
- "271",
- "Raw Scancode",
- "KEY_L",
- "Keyboard l and L (US English)",
- ""
- ],
- [
- "272",
- "Raw Scancode",
- "KEY_M",
- "Keyboard m and M (US English)",
- ""
- ],
- [
- "273",
- "Raw Scancode",
- "KEY_N",
- "Keyboard n and N (US English)",
- ""
- ],
- [
- "274",
- "Raw Scancode",
- "KEY_O",
- "Keyboard o and O (US English)",
- ""
- ],
- [
- "275",
- "Raw Scancode",
- "KEY_P",
- "Keyboard p and P (US English)",
- ""
- ],
- [
- "276",
- "Raw Scancode",
- "KEY_Q",
- "Keyboard q and Q (US English)",
- ""
- ],
- [
- "277",
- "Raw Scancode",
- "KEY_R",
- "Keyboard r and R (US English)",
- ""
- ],
- [
- "278",
- "Raw Scancode",
- "KEY_S",
- "Keyboard s and S (US English)",
- ""
- ],
- [
- "279",
- "Raw Scancode",
- "KEY_T",
- "Keyboard t and T (US English)",
- ""
- ],
- [
- "280",
- "Raw Scancode",
- "KEY_U",
- "Keyboard u and U (US English)",
- ""
- ],
- [
- "281",
- "Raw Scancode",
- "KEY_V",
- "Keyboard v and V (US English)",
- ""
- ],
- [
- "282",
- "Raw Scancode",
- "KEY_W",
- "Keyboard w and W (US English)",
- ""
- ],
- [
- "283",
- "Raw Scancode",
- "KEY_X",
- "Keyboard x and X (US English)",
- ""
- ],
- [
- "284",
- "Raw Scancode",
- "KEY_Y",
- "Keyboard y and Y (US English)",
- ""
- ],
- [
- "285",
- "Raw Scancode",
- "KEY_Z",
- "Keyboard z and Z (US English)",
- ""
- ],
- [
- "286",
- "Raw Scancode",
- "KEY_1",
- "Keyboard 1 and ! (US English)",
- ""
- ],
- [
- "287",
- "Raw Scancode",
- "KEY_2",
- "Keyboard 2 and @ (US English)",
- ""
- ],
- [
- "288",
- "Raw Scancode",
- "KEY_3",
- "Keyboard 3 and # (US English)",
- ""
- ],
- [
- "289",
- "Raw Scancode",
- "KEY_4",
- "Keyboard 4 and $ (US English)",
- ""
- ],
- [
- "290",
- "Raw Scancode",
- "KEY_5",
- "Keyboard 5 and % (US English)",
- ""
- ],
- [
- "291",
- "Raw Scancode",
- "KEY_6",
- "Keyboard 6 and ^ (US English)",
- ""
- ],
- [
- "292",
- "Raw Scancode",
- "KEY_7",
- "Keyboard 7 and & (US English)",
- ""
- ],
- [
- "293",
- "Raw Scancode",
- "KEY_8",
- "Keyboard 8 and * (US English)",
- ""
- ],
- [
- "294",
- "Raw Scancode",
- "KEY_9",
- "Keyboard 9 and ( (US English)",
- ""
- ],
- [
- "295",
- "Raw Scancode",
- "KEY_0",
- "Keyboard 0 and ) (US English)",
- ""
- ],
- [
- "296",
- "Raw Scancode",
- "ENTER",
- "Keyboard Return (US English)",
- ""
- ],
- [
- "297",
- "Raw Scancode",
- "ESC",
- "Keyboard Escape (US English)",
- ""
- ],
- [
- "298",
- "Raw Scancode",
- "BKSP",
- "Keyboard Backspace (US English)",
- ""
- ],
- [
- "299",
- "Raw Scancode",
- "TAB",
- "Keyboard Tab (US English)",
- ""
- ],
- [
- "300",
- "Raw Scancode",
- "KSC_2C",
- "Keyboard Space (US English)",
- "The ASCII space is preferred over this raw scancode for the spacebar"
- ],
- [
- "301",
- "Raw Scancode",
- "KSC_2D",
- "Keyboard - and _ (US English)",
- ""
- ],
- [
- "302",
- "Raw Scancode",
- "KSC_2E",
- "Keyboard = and + (US English)",
- ""
- ],
- [
- "303",
- "Raw Scancode",
- "KSC_2F",
- "Keyboard [ and { (US English)",
- ""
- ],
- [
- "304",
- "Raw Scancode",
- "KSC_30",
- "Keyboard ] and } (US English)",
- ""
- ],
- [
- "305",
- "Raw Scancode",
- "KSC_31",
- "Keyboard \\ and | (US English)",
- ""
- ],
- [
- "306",
- "Raw Scancode",
- "KSC_32",
- "Keyboard Non-US # and ~ (US English)",
- ""
- ],
- [
- "307",
- "Raw Scancode",
- "KSC_33",
- "Keyboard ; and : (US English)",
- ""
- ],
- [
- "308",
- "Raw Scancode",
- "KSC_34",
- "Keyboard ' and \" (US English)",
- ""
- ],
- [
- "309",
- "Raw Scancode",
- "KSC_35",
- "Keyboard ` and ~ (US English)",
- ""
- ],
- [
- "310",
- "Raw Scancode",
- "KSC_36",
- "Keyboard , and < (US English)",
- ""
- ],
- [
- "311",
- "Raw Scancode",
- "KSC_37",
- "Keyboard . and > (US English)",
- ""
- ],
- [
- "312",
- "Raw Scancode",
- "KSC_38",
- "Keyboard / and ? (US English)",
- ""
- ],
- [
- "313",
- "Raw Scancode",
- "CAPSLOCK",
- "Keyboard Caps Lock",
- ""
- ],
- [
- "314",
- "Raw Scancode",
- "F1",
- "Keyboard F1",
- ""
- ],
- [
- "315",
- "Raw Scancode",
- "F2",
- "Keyboard F2",
- ""
- ],
- [
- "316",
- "Raw Scancode",
- "F3",
- "Keyboard F3",
- ""
- ],
- [
- "317",
- "Raw Scancode",
- "F4",
- "Keyboard F4",
- ""
- ],
- [
- "318",
- "Raw Scancode",
- "F5",
- "Keyboard F5",
- ""
- ],
- [
- "319",
- "Raw Scancode",
- "F6",
- "Keyboard F6",
- ""
- ],
- [
- "320",
- "Raw Scancode",
- "F7",
- "Keyboard F7",
- ""
- ],
- [
- "321",
- "Raw Scancode",
- "F8",
- "Keyboard F8",
- ""
- ],
- [
- "322",
- "Raw Scancode",
- "F9",
- "Keyboard F9",
- ""
- ],
- [
- "323",
- "Raw Scancode",
- "F10",
- "Keyboard F10",
- ""
- ],
- [
- "324",
- "Raw Scancode",
- "F11",
- "Keyboard F11",
- ""
- ],
- [
- "325",
- "Raw Scancode",
- "F12",
- "Keyboard F12",
- ""
- ],
- [
- "326",
- "Raw Scancode",
- "PRTSCN",
- "Keyboard Print Screen",
- ""
- ],
- [
- "327",
- "Raw Scancode",
- "SCRLK",
- "Keyboard Scroll Lock",
- ""
- ],
- [
- "328",
- "Raw Scancode",
- "PAUSE",
- "Keyboard Pause",
- ""
- ],
- [
- "329",
- "Raw Scancode",
- "INSERT",
- "Keyboard Insert",
- ""
- ],
- [
- "330",
- "Raw Scancode",
- "HOME",
- "Keyboard Home",
- ""
- ],
- [
- "331",
- "Raw Scancode",
- "PGUP",
- "Keyboard Page Up",
- ""
- ],
- [
- "332",
- "Raw Scancode",
- "DELETE",
- "Keyboard Delete Forward",
- ""
- ],
- [
- "333",
- "Raw Scancode",
- "END",
- "Keyboard End",
- ""
- ],
- [
- "334",
- "Raw Scancode",
- "PGDN",
- "Keyboard Page Down",
- ""
- ],
- [
- "335",
- "Raw Scancode",
- "ARROW_RT",
- "Keyboard Right Arrow",
- ""
- ],
- [
- "336",
- "Raw Scancode",
- "ARROW_LF",
- "Keyboard Left Arrow",
- ""
- ],
- [
- "337",
- "Raw Scancode",
- "ARROW_DN",
- "Keyboard Down Arrow",
- ""
- ],
- [
- "338",
- "Raw Scancode",
- "ARROW_UP",
- "Keyboard Up Arrow",
- ""
- ],
- [
- "339",
- "Raw Scancode",
- "NUMLOCK",
- "Keyboard Num Lock and Clear",
- ""
- ],
- [
- "340",
- "Raw Scancode",
- "KP_SLASH",
- "Keypad /",
- ""
- ],
- [
- "341",
- "Raw Scancode",
- "KP_ASTER",
- "Keypad *",
- ""
- ],
- [
- "342",
- "Raw Scancode",
- "KP_MINUS",
- "Keypad -",
- ""
- ],
- [
- "343",
- "Raw Scancode",
- "KP_PLUS",
- "Keypad +",
- ""
- ],
- [
- "344",
- "Raw Scancode",
- "KP_ENTER",
- "Keypad Enter",
- ""
- ],
- [
- "345",
- "Raw Scancode",
- "KP_1",
- "Keypad 1 and End",
- ""
- ],
- [
- "346",
- "Raw Scancode",
- "KP_2",
- "Keypad 2 and Down Arrow",
- ""
- ],
- [
- "347",
- "Raw Scancode",
- "KP_3",
- "Keypad 3 and Page Down",
- ""
- ],
- [
- "348",
- "Raw Scancode",
- "KP_4",
- "Keypad 4 and Left Arrow",
- ""
- ],
- [
- "349",
- "Raw Scancode",
- "KP_5",
- "Keypad 5",
- ""
- ],
- [
- "350",
- "Raw Scancode",
- "KP_6",
- "Keypad 6 and Rigth Arrow",
- ""
- ],
- [
- "351",
- "Raw Scancode",
- "KP_7",
- "Keypad 7 and Home",
- ""
- ],
- [
- "352",
- "Raw Scancode",
- "KP_8",
- "Keypad 8 and Up Arrow",
- ""
- ],
- [
- "353",
- "Raw Scancode",
- "KP_9",
- "Keypad 9 and Page Up",
- ""
- ],
- [
- "354",
- "Raw Scancode",
- "KP_0",
- "Keypad 0 and Insert",
- ""
- ],
- [
- "355",
- "Raw Scancode",
- "KP_DOT",
- "Keypad . and Delete",
- ""
- ],
- [
- "356",
- "Raw Scancode",
- "KSC_64",
- "Keyboard Non-US \\ and | (US English)",
- ""
- ],
- [
- "357",
- "Raw Scancode",
- "COMPOSE",
- "Keyboard Application",
- "Officially supported by Win, Unix, and Boot"
- ],
- [
- "358",
- "Raw Scancode",
- "POWER",
- "Keyboard Power",
- "Only officially supported by Mac and Unix"
- ],
- [
- "359",
- "Raw Scancode",
- "KP_EQUAL",
- "Keypad =",
- "Only officially supported by Mac"
- ],
- [
- "360",
- "Raw Scancode",
- "F13",
- "Keyboard F13",
- "Only officially supported by Mac"
- ],
- [
- "361",
- "Raw Scancode",
- "F14",
- "Keyboard F14",
- "Only officially supported by Mac"
- ],
- [
- "362",
- "Raw Scancode",
- "F15",
- "Keyboard F15",
- "Only officially supported by Mac"
- ],
- [
- "363",
- "Raw Scancode",
- "F16",
- "Keyboard F16",
- "Only officially supported by Mac"
- ],
- [
- "364",
- "Raw Scancode",
- "F17",
- "Keyboard F17",
- "Not required to be supported by any OS"
- ],
- [
- "365",
- "Raw Scancode",
- "F18",
- "Keyboard F18",
- "Not required to be supported by any OS"
- ],
- [
- "366",
- "Raw Scancode",
- "F19",
- "Keyboard F19",
- "Not required to be supported by any OS"
- ],
- [
- "367",
- "Raw Scancode",
- "F20",
- "Keyboard F20",
- "Not required to be supported by any OS"
- ],
- [
- "368",
- "Raw Scancode",
- "F21",
- "Keyboard F21",
- "Not required to be supported by any OS"
- ],
- [
- "369",
- "Raw Scancode",
- "F22",
- "Keyboard F22",
- "Not required to be supported by any OS"
- ],
- [
- "370",
- "Raw Scancode",
- "F23",
- "Keyboard F23",
- "Not required to be supported by any OS"
- ],
- [
- "371",
- "Raw Scancode",
- "F24",
- "Keyboard F24",
- "Not required to be supported by any OS"
- ],
- [
- "372",
- "Raw Scancode",
- "EXECUTE",
- "Keyboard Execute",
- "Only officially supported by Unix"
- ],
- [
- "373",
- "Raw Scancode",
- "HELP",
- "Keyboard Help",
- "Only officially supported by Unix"
- ],
- [
- "374",
- "Raw Scancode",
- "MENU",
- "Keyboard Menu",
- "Only officially supported by Unix"
- ],
- [
- "375",
- "Raw Scancode",
- "SELECT",
- "Keyboard Select",
- "Only officially supported by Unix"
- ],
- [
- "376",
- "Raw Scancode",
- "STOP",
- "Keyboard Stop",
- "Only officially supported by Unix"
- ],
- [
- "377",
- "Raw Scancode",
- "AGAIN",
- "Keyboard Again",
- "Only officially supported by Unix"
- ],
- [
- "378",
- "Raw Scancode",
- "UNDO",
- "Keyboard Undo",
- "Only officially supported by Unix"
- ],
- [
- "379",
- "Raw Scancode",
- "CUT",
- "Keyboard Cut",
- "Only officially supported by Unix"
- ],
- [
- "380",
- "Raw Scancode",
- "COPY",
- "Keyboard Copy",
- "Only officially supported by Unix"
- ],
- [
- "381",
- "Raw Scancode",
- "PASTE",
- "Keyboard Paste",
- "Only officially supported by Unix"
- ],
- [
- "382",
- "Raw Scancode",
- "FIND",
- "Keyboard Find",
- "Only officially supported by Unix"
- ],
- [
- "383",
- "Raw Scancode",
- "MUTE",
- "Keyboard Mute",
- "Only officially supported by Unix"
- ],
- [
- "384",
- "Raw Scancode",
- "VOL_UP",
- "Keyboard Volume Up",
- "Only officially supported by Unix"
- ],
- [
- "385",
- "Raw Scancode",
- "VOL_DN",
- "Keyboard Volume Down",
- "Only officially supported by Unix"
- ],
- [
- "386",
- "Raw Scancode",
- "KSC_82",
- "Keyboard Locking Caps Lock",
- "Only officially supported by Unix"
- ],
- [
- "387",
- "Raw Scancode",
- "KSC_83",
- "Keyboard Locking Num Lock",
- "Only officially supported by Unix"
- ],
- [
- "388",
- "Raw Scancode",
- "KSC_84",
- "Keyboard Locking Scroll Lock",
- "Only officially supported by Unix"
- ],
- [
- "389",
- "Raw Scancode",
- "KP_COMMA",
- "Keypad Comma",
- "Not required to be supported by any OS"
- ],
- [
- "390",
- "Raw Scancode",
- "KSC_86",
- "Keypad Equals Sign",
- "Not required to be supported by any OS"
- ],
- [
- "391",
- "Raw Scancode",
- "INTL1",
- "Keyboard International1",
- "Not required to be supported by any OS"
- ],
- [
- "392",
- "Raw Scancode",
- "INTL2",
- "Keyboard International2",
- "Not required to be supported by any OS"
- ],
- [
- "393",
- "Raw Scancode",
- "INTL3",
- "Keyboard International3",
- "Not required to be supported by any OS"
- ],
- [
- "394",
- "Raw Scancode",
- "INTL4",
- "Keyboard International4",
- "Not required to be supported by any OS"
- ],
- [
- "395",
- "Raw Scancode",
- "INTL5",
- "Keyboard International5",
- "Not required to be supported by any OS"
- ],
- [
- "396",
- "Raw Scancode",
- "INTL6",
- "Keyboard International6",
- "Not required to be supported by any OS"
- ],
- [
- "397",
- "Raw Scancode",
- "INTL7",
- "Keyboard International7",
- "Not required to be supported by any OS"
- ],
- [
- "398",
- "Raw Scancode",
- "INTL8",
- "Keyboard International8",
- "Not required to be supported by any OS"
- ],
- [
- "399",
- "Raw Scancode",
- "INTL9",
- "Keyboard International9",
- "Not required to be supported by any OS"
- ],
- [
- "400",
- "Raw Scancode",
- "LANG1",
- "Keyboard LANG1",
- "Not required to be supported by any OS"
- ],
- [
- "401",
- "Raw Scancode",
- "LANG2",
- "Keyboard LANG2",
- "Not required to be supported by any OS"
- ],
- [
- "402",
- "Raw Scancode",
- "LANG3",
- "Keyboard LANG3",
- "Not required to be supported by any OS"
- ],
- [
- "403",
- "Raw Scancode",
- "LANG4",
- "Keyboard LANG4",
- "Not required to be supported by any OS"
- ],
- [
- "404",
- "Raw Scancode",
- "LANG5",
- "Keyboard LANG5",
- "Not required to be supported by any OS"
- ],
- [
- "405",
- "Raw Scancode",
- "LANG6",
- "Keyboard LANG6",
- "Not required to be supported by any OS"
- ],
- [
- "406",
- "Raw Scancode",
- "LANG7",
- "Keyboard LANG7",
- "Not required to be supported by any OS"
- ],
- [
- "407",
- "Raw Scancode",
- "LANG8",
- "Keyboard LANG8",
- "Not required to be supported by any OS"
- ],
- [
- "408",
- "Raw Scancode",
- "LANG9",
- "Keyboard LANG9",
- "Not required to be supported by any OS"
- ],
- [
- "409",
- "Raw Scancode",
- "KSC_99",
- "Keyboard Alternate Erase",
- "Not required to be supported by any OS"
- ],
- [
- "410",
- "Raw Scancode",
- "KSC_9A",
- "Keyboard SysReq/Attention",
- "Not required to be supported by any OS"
- ],
- [
- "411",
- "Raw Scancode",
- "KSC_9B",
- "Keyboard Cancel",
- "Not required to be supported by any OS"
- ],
- [
- "412",
- "Raw Scancode",
- "KSC_9C",
- "Keyboard Clear",
- "Not required to be supported by any OS"
- ],
- [
- "413",
- "Raw Scancode",
- "KSC_9D",
- "Keyboard Prior",
- "Not required to be supported by any OS"
- ],
- [
- "414",
- "Raw Scancode",
- "KSC_9E",
- "Keyboard Return",
- "Not required to be supported by any OS"
- ],
- [
- "415",
- "Raw Scancode",
- "KSC_9F",
- "Keyboard Separator",
- "Not required to be supported by any OS"
- ],
- [
- "416",
- "Raw Scancode",
- "KSC_A0",
- "Keyboard Out",
- "Not required to be supported by any OS"
- ],
- [
- "417",
- "Raw Scancode",
- "KSC_A1",
- "Keyboard Oper",
- "Not required to be supported by any OS"
- ],
- [
- "418",
- "Raw Scancode",
- "KSC_A2",
- "Keyboard Clear/Again",
- "Not required to be supported by any OS"
- ],
- [
- "419",
- "Raw Scancode",
- "KSC_A3",
- "Keyboard CrSel/Props",
- "Not required to be supported by any OS"
- ],
- [
- "420",
- "Raw Scancode",
- "KSC_A4",
- "Keyboard ExSel",
- "Not required to be supported by any OS"
- ],
- [
- "421",
- "Raw Scancode",
- "KSC_A5",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "422",
- "Raw Scancode",
- "KSC_A6",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "423",
- "Raw Scancode",
- "KSC_A7",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "424",
- "Raw Scancode",
- "KSC_A8",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "425",
- "Raw Scancode",
- "KSC_A9",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "426",
- "Raw Scancode",
- "KSC_AA",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "427",
- "Raw Scancode",
- "KSC_AB",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "428",
- "Raw Scancode",
- "KSC_AC",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "429",
- "Raw Scancode",
- "KSC_AD",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "430",
- "Raw Scancode",
- "KSC_AE",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "431",
- "Raw Scancode",
- "KSC_AF",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "432",
- "Raw Scancode",
- "KSC_B0",
- "Keypad 00",
- "Not required to be supported by any OS"
- ],
- [
- "433",
- "Raw Scancode",
- "KSC_B1",
- "Keypad 000",
- "Not required to be supported by any OS"
- ],
- [
- "434",
- "Raw Scancode",
- "KSC_B2",
- "Thousands Separator",
- "Not required to be supported by any OS"
- ],
- [
- "435",
- "Raw Scancode",
- "KSC_B3",
- "Decimal Separator",
- "Not required to be supported by any OS"
- ],
- [
- "436",
- "Raw Scancode",
- "KSC_B4",
- "Currency Unit",
- "Not required to be supported by any OS"
- ],
- [
- "437",
- "Raw Scancode",
- "KSC_B5",
- "Currency Sub-unit",
- "Not required to be supported by any OS"
- ],
- [
- "438",
- "Raw Scancode",
- "KSC_B6",
- "Keypad (",
- "Not required to be supported by any OS"
- ],
- [
- "439",
- "Raw Scancode",
- "KSC_B7",
- "Keypad )",
- "Not required to be supported by any OS"
- ],
- [
- "440",
- "Raw Scancode",
- "KSC_B8",
- "Keypad {",
- "Not required to be supported by any OS"
- ],
- [
- "441",
- "Raw Scancode",
- "KSC_B9",
- "Keypad }",
- "Not required to be supported by any OS"
- ],
- [
- "442",
- "Raw Scancode",
- "KSC_BA",
- "Keypad Tab",
- "Not required to be supported by any OS"
- ],
- [
- "443",
- "Raw Scancode",
- "KSC_BB",
- "Keypad Backspace",
- "Not required to be supported by any OS"
- ],
- [
- "444",
- "Raw Scancode",
- "KSC_BC",
- "Keypad A",
- "Not required to be supported by any OS"
- ],
- [
- "445",
- "Raw Scancode",
- "KSC_BD",
- "Keypad B",
- "Not required to be supported by any OS"
- ],
- [
- "446",
- "Raw Scancode",
- "KSC_BE",
- "Keypad C",
- "Not required to be supported by any OS"
- ],
- [
- "447",
- "Raw Scancode",
- "KSC_BF",
- "Keypad D",
- "Not required to be supported by any OS"
- ],
- [
- "448",
- "Raw Scancode",
- "KSC_C0",
- "Keypad E",
- "Not required to be supported by any OS"
- ],
- [
- "449",
- "Raw Scancode",
- "KSC_C1",
- "Keypad F",
- "Not required to be supported by any OS"
- ],
- [
- "450",
- "Raw Scancode",
- "KSC_C2",
- "Keypad XOR",
- "Not required to be supported by any OS"
- ],
- [
- "451",
- "Raw Scancode",
- "KSC_C3",
- "Keypad ^",
- "Not required to be supported by any OS"
- ],
- [
- "452",
- "Raw Scancode",
- "KSC_C4",
- "Keypad %",
- "Not required to be supported by any OS"
- ],
- [
- "453",
- "Raw Scancode",
- "KSC_C5",
- "Keypad <",
- "Not required to be supported by any OS"
- ],
- [
- "454",
- "Raw Scancode",
- "KSC_C6",
- "Keypad >",
- "Not required to be supported by any OS"
- ],
- [
- "455",
- "Raw Scancode",
- "KSC_C7",
- "Keypad &",
- "Not required to be supported by any OS"
- ],
- [
- "456",
- "Raw Scancode",
- "KSC_C8",
- "Keypad &&",
- "Not required to be supported by any OS"
- ],
- [
- "457",
- "Raw Scancode",
- "KSC_C9",
- "Keypad |",
- "Not required to be supported by any OS"
- ],
- [
- "458",
- "Raw Scancode",
- "KSC_CA",
- "Keypad ||",
- "Not required to be supported by any OS"
- ],
- [
- "459",
- "Raw Scancode",
- "KSC_CB",
- "Keypad :",
- "Not required to be supported by any OS"
- ],
- [
- "460",
- "Raw Scancode",
- "KSC_CC",
- "Keypad #",
- "Not required to be supported by any OS"
- ],
- [
- "461",
- "Raw Scancode",
- "KSC_CD",
- "Keypad Space",
- "Not required to be supported by any OS"
- ],
- [
- "462",
- "Raw Scancode",
- "KSC_CE",
- "Keypad @",
- "Not required to be supported by any OS"
- ],
- [
- "463",
- "Raw Scancode",
- "KSC_CF",
- "Keypad !",
- "Not required to be supported by any OS"
- ],
- [
- "464",
- "Raw Scancode",
- "KSC_D0",
- "Keypad Memory Store",
- "Not required to be supported by any OS"
- ],
- [
- "465",
- "Raw Scancode",
- "KSC_D1",
- "Keypad Memory Recall",
- "Not required to be supported by any OS"
- ],
- [
- "466",
- "Raw Scancode",
- "KSC_D2",
- "Keypad Memory Clear",
- "Not required to be supported by any OS"
- ],
- [
- "467",
- "Raw Scancode",
- "KSC_D3",
- "Keypad Memory Add",
- "Not required to be supported by any OS"
- ],
- [
- "468",
- "Raw Scancode",
- "KSC_D4",
- "Keypad Memory Subtract",
- "Not required to be supported by any OS"
- ],
- [
- "469",
- "Raw Scancode",
- "KSC_D5",
- "Keypad Memory Multiply",
- "Not required to be supported by any OS"
- ],
- [
- "470",
- "Raw Scancode",
- "KSC_D6",
- "Keypad Memory Divide",
- "Not required to be supported by any OS"
- ],
- [
- "471",
- "Raw Scancode",
- "KSC_D7",
- "Keypad +/-",
- "Not required to be supported by any OS"
- ],
- [
- "472",
- "Raw Scancode",
- "KSC_D8",
- "Keypad Clear",
- "Not required to be supported by any OS"
- ],
- [
- "473",
- "Raw Scancode",
- "KSC_D9",
- "Keypad Clear Entry",
- "Not required to be supported by any OS"
- ],
- [
- "474",
- "Raw Scancode",
- "KSC_DA",
- "Keypad Binary",
- "Not required to be supported by any OS"
- ],
- [
- "475",
- "Raw Scancode",
- "KSC_DB",
- "Keypad Octal",
- "Not required to be supported by any OS"
- ],
- [
- "476",
- "Raw Scancode",
- "KSC_DC",
- "Keypad Decimal",
- "Not required to be supported by any OS"
- ],
- [
- "477",
- "Raw Scancode",
- "KSC_DD",
- "Keypad Hexadecimal",
- "Not required to be supported by any OS"
- ],
- [
- "478",
- "Raw Scancode",
- "KSC_DE",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "479",
- "Raw Scancode",
- "KSC_DF",
- "",
- "Not required to be supported by any OS"
- ],
- [
- "480",
- "Raw Scancode",
- "KSC_E0",
- "Keyboard Left Control",
- ""
- ],
- [
- "481",
- "Raw Scancode",
- "KSC_E1",
- "Keyboard Left Shift",
- ""
- ],
- [
- "482",
- "Raw Scancode",
- "KSC_E2",
- "Keyboard Left Alt",
- ""
- ],
- [
- "483",
- "Raw Scancode",
- "KSC_E3",
- "Keyboard Left GUI",
- ""
- ],
- [
- "484",
- "Raw Scancode",
- "KSC_E4",
- "Keyboard Right Control",
- ""
- ],
- [
- "485",
- "Raw Scancode",
- "KSC_E5",
- "Keyboard Right Shift",
- ""
- ],
- [
- "486",
- "Raw Scancode",
- "KSC_E6",
- "Keyboard Right Alt",
- ""
- ],
- [
- "487",
- "Raw Scancode",
- "KSC_E7",
- "Keyboard Right GUI",
- ""
- ],
- [
- "488",
- "Raw Scancode",
- "KSC_E8",
- "Media Play Pause",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "489",
- "Raw Scancode",
- "KSC_E9",
- "Media Stop CD",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "490",
- "Raw Scancode",
- "KSC_EA",
- "Media Previous Song",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "491",
- "Raw Scancode",
- "KSC_EB",
- "Media Next Song",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "492",
- "Raw Scancode",
- "KSC_EC",
- "Media Eject CD",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "493",
- "Raw Scancode",
- "KSC_ED",
- "Media Volume Up",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "494",
- "Raw Scancode",
- "KSC_EE",
- "Media Volume Down",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "495",
- "Raw Scancode",
- "KSC_EF",
- "Media Mute",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "496",
- "Raw Scancode",
- "KSC_F0",
- "Media www",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "497",
- "Raw Scancode",
- "KSC_F1",
- "Media Back",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "498",
- "Raw Scancode",
- "KSC_F2",
- "Media Forward",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "499",
- "Raw Scancode",
- "KSC_F3",
- "Media Stop",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "500",
- "Raw Scancode",
- "KSC_F4",
- "Media Find",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "501",
- "Raw Scancode",
- "KSC_F5",
- "Media Scroll Up",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "502",
- "Raw Scancode",
- "KSC_F6",
- "Media Scroll Down",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "503",
- "Raw Scancode",
- "KSC_F7",
- "Media Edit",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "504",
- "Raw Scancode",
- "KSC_F8",
- "Media Sleep",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "505",
- "Raw Scancode",
- "KSC_F9",
- "Media Coffee",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "506",
- "Raw Scancode",
- "KSC_FA",
- "Media Refresh",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "507",
- "Raw Scancode",
- "KSC_FB",
- "Media Calc",
- "Not required to be supported by any OS. Possibly deprecated."
- ],
- [
- "508",
- "Raw Scancode",
- "KSC_FC",
- "",
- "Not required to be supported by any OS."
- ],
- [
- "509",
- "Raw Scancode",
- "KSC_FD",
- "",
- "Not required to be supported by any OS."
- ],
- [
- "510",
- "Raw Scancode",
- "KSC_FE",
- "",
- "Not required to be supported by any OS."
- ],
- [
- "511",
- "Raw Scancode",
- "KSC_FF",
- "",
- "Not required to be supported by any OS."
- ],
- [
- "512",
- "Keyboard",
- "LEFT_CTRL",
- "Left Control Keyboard Modifier",
- ""
- ],
- [
- "513",
- "Keyboard",
- "LEFT_SHIFT",
- "Left Shift Keyboard Modifier",
- ""
- ],
- [
- "514",
- "Keyboard",
- "LEFT_ALT",
- "Left Alt Keyboard Modifier",
- ""
- ],
- [
- "515",
- "Keyboard",
- "LEFT_GUI",
- "Left GUI Keyboard Modifier",
- ""
- ],
- [
- "516",
- "Keyboard",
- "RIGHT_CTRL",
- "Right Control Keyboard Modifier",
- ""
- ],
- [
- "517",
- "Keyboard",
- "RIGHT_SHIFT",
- "Right Shift Keyboard Modifier",
- ""
- ],
- [
- "518",
- "Keyboard",
- "RIGHT_ALT",
- "Right Alt Keyboard Modifier",
- ""
- ],
- [
- "519",
- "Keyboard",
- "RIGHT_GUI",
- "Right GUI Keyboard Modifier",
- ""
- ],
- [
- "520",
- "Keyboard",
- "RELEASE_MOD",
- "Release all keyboard modifiers",
- ""
- ],
- [
- "521",
- "Keyboard",
- "RELEASE_ALL",
- "Release all keys and keyboard modifiers",
- ""
- ],
- [
- "522",
- "Keyboard",
- "RELEASE_KEYS",
- "Release all keys, but not keyboard modifiers",
- ""
- ],
- [
- "523",
- "",
- "",
- "",
- ""
- ],
- [
- "524",
- "",
- "",
- "",
- ""
- ],
- [
- "525",
- "",
- "",
- "",
- ""
- ],
- [
- "526",
- "",
- "",
- "",
- ""
- ],
- [
- "527",
- "",
- "",
- "",
- ""
- ],
- [
- "528",
- "CharaChorder",
- "RESTART",
- "Restart Device",
- ""
- ],
- [
- "529",
- "",
- "",
- "",
- ""
- ],
- [
- "530",
- "CharaChorder",
- "BOOT",
- "Bootloader Mode",
- ""
- ],
- [
- "531",
- "",
- "",
- "",
- ""
- ],
- [
- "532",
- "CharaChorder",
- "GTM",
- "Toggle GTM",
- ""
- ],
- [
- "533",
- "",
- "",
- "",
- ""
- ],
- [
- "534",
- "CharaChorder",
- "IMPULSE",
- "Toggle Impulse",
- ""
- ],
- [
- "535",
- "",
- "",
- "",
- ""
- ],
- [
- "536",
- "CharaChorder",
- "DUP",
- "Repeat Last Note",
- ""
- ],
- [
- "537",
- "",
- "",
- "",
- ""
- ],
- [
- "538",
- "CharaChorder",
- "SPUR",
- "Spur Toggle",
- ""
- ],
- [
- "539",
- "",
- "",
- "",
- ""
- ],
- [
- "540",
- "CharaChorder",
- "AMBILEFT",
- "AmbiThrow (left)",
- ""
- ],
- [
- "541",
- "",
- "",
- "",
- ""
- ],
- [
- "542",
- "CharaChorder",
- "AMBIRIGHT",
- "AmbiThrow (right)",
- ""
- ],
- [
- "543",
- "",
- "",
- "",
- ""
- ],
- [
- "544",
- "CharaChorder",
- "SPACERIGHT",
- "Right Spacebar (eg CC Lite)",
- ""
- ],
- [
- "545",
- "",
- "",
- "",
- ""
- ],
- [
- "546",
- "",
- "",
- "",
- ""
- ],
- [
- "547",
- "",
- "",
- "",
- ""
- ],
- [
- "548",
- "CharaChorder",
- "KM_1_L",
- "Primary Keymap (left key)",
- "Included for completeness"
- ],
- [
- "549",
- "CharaChorder",
- "KM_1_R",
- "Primary Keymap (right key)",
- "Included for completeness"
- ],
- [
- "550",
- "CharaChorder",
- "KM_2_L",
- "Secondary Keymap [Num-shift] (left key)",
- ""
- ],
- [
- "551",
- "CharaChorder",
- "KM_2_R",
- "Secondary Keymap [Num-shift] (right key)",
- ""
- ],
- [
- "552",
- "CharaChorder",
- "KM_3_L",
- "Tertiary Keymap (left key)",
- ""
- ],
- [
- "553",
- "CharaChorder",
- "KM_3_R",
- "Tertiary Keymap (right key)",
- ""
- ],
- [
- "554",
- "",
- "",
- "",
- ""
- ],
- [
- "555",
- "",
- "",
- "",
- ""
- ],
- [
- "556",
- "",
- "",
- "",
- ""
- ],
- [
- "557",
- "",
- "",
- "",
- ""
- ],
- [
- "558",
- "",
- "",
- "",
- ""
- ],
- [
- "559",
- "",
- "",
- "",
- ""
- ],
- [
- "560",
- "Mouse",
- "MS_CLICK_BWD",
- "Mouse Backward Button Press/Release",
- ""
- ],
- [
- "561",
- "Mouse",
- "MS_CLICK_FWD",
- "Mouse Forward Button Press/Release",
- ""
- ],
- [
- "562",
- "Mouse",
- "MS_CLICK_LF",
- "Mouse Left Button Press/Release",
- ""
- ],
- [
- "563",
- "Mouse",
- "MS_CLICK_RT",
- "Mouse Right Button Press/Release",
- ""
- ],
- [
- "564",
- "Mouse",
- "MS_CLICK_MD",
- "Mouse Middle Button Press/Release",
- ""
- ],
- [
- "565",
- "Mouse",
- "MS_MOVE_RT",
- "Mouse Move Right",
- ""
- ],
- [
- "566",
- "Mouse",
- "MS_MOVE_LF",
- "Mouse Move Left",
- ""
- ],
- [
- "567",
- "Mouse",
- "MS_MOVE_DN",
- "Mouse Move Down",
- ""
- ],
- [
- "568",
- "Mouse",
- "MS_MOVE_UP",
- "Mouse Move Up",
- ""
- ],
- [
- "569",
- "Mouse",
- "MS_SCRL_RT",
- "Mouse Scroll Coast Right",
- ""
- ],
- [
- "570",
- "Mouse",
- "MS_SCRL_LF",
- "Mouse Scroll Coast Left",
- ""
- ],
- [
- "571",
- "Mouse",
- "MS_SCRL_DN",
- "Mouse Scroll Coast Down",
- ""
- ],
- [
- "572",
- "Mouse",
- "MS_SCRL_UP",
- "Mouse Scroll Coast Up",
- ""
- ],
- [
- "573",
- "",
- "",
- "",
- ""
- ],
- [
- "574",
- "",
- "",
- "",
- ""
- ],
- [
- "575",
- "",
- "",
- "",
- ""
- ],
- [
- "576",
- "",
- "",
- "",
- ""
- ],
- [
- "577",
- "",
- "",
- "",
- ""
- ],
- [
- "578",
- "",
- "",
- "",
- ""
- ],
- [
- "579",
- "",
- "",
- "",
- ""
- ],
- [
- "580",
- "",
- "",
- "",
- ""
- ],
- [
- "581",
- "",
- "",
- "",
- ""
- ],
- [
- "582",
- "",
- "",
- "",
- ""
- ],
- [
- "583",
- "",
- "",
- "",
- ""
- ],
- [
- "584",
- "",
- "",
- "",
- ""
- ],
- [
- "585",
- "",
- "",
- "",
- ""
- ],
- [
- "586",
- "",
- "",
- "",
- ""
- ],
- [
- "587",
- "",
- "",
- "",
- ""
- ],
- [
- "588",
- "",
- "",
- "",
- ""
- ],
- [
- "589",
- "",
- "",
- "",
- ""
- ],
- [
- "590",
- "",
- "",
- "",
- ""
- ],
- [
- "591",
- "",
- "",
- "",
- ""
- ],
- [
- "592",
- "",
- "",
- "",
- ""
- ],
- [
- "593",
- "",
- "",
- "",
- ""
- ],
- [
- "594",
- "",
- "",
- "",
- ""
- ],
- [
- "595",
- "",
- "",
- "",
- ""
- ],
- [
- "596",
- "",
- "",
- "",
- ""
- ],
- [
- "597",
- "",
- "",
- "",
- ""
- ],
- [
- "598",
- "",
- "",
- "",
- ""
- ],
- [
- "599",
- "",
- "",
- "",
- ""
- ],
- [
- "600",
- "CharaChorder One",
- "LH_THUMB_3_3D",
- "Left Hand Thumb 3 Center Switch; No action",
- "No Action; Used for chords with unassigned 3D presses on the CC1"
- ],
- [
- "601",
- "CharaChorder One",
- "LH_THUMB_2_3D",
- "",
- ""
- ],
- [
- "602",
- "CharaChorder One",
- "LH_THUMB_1_3D",
- "",
- ""
- ],
- [
- "603",
- "CharaChorder One",
- "LH_INDEX_3D",
- "",
- ""
- ],
- [
- "604",
- "CharaChorder One",
- "LH_MID_1_3D",
- "",
- ""
- ],
- [
- "605",
- "CharaChorder One",
- "LH_RING_1_3D",
- "",
- ""
- ],
- [
- "606",
- "CharaChorder One",
- "LH_PINKY_3D",
- "",
- ""
- ],
- [
- "607",
- "CharaChorder One",
- "LH_MID_2_3D",
- "",
- ""
- ],
- [
- "608",
- "CharaChorder One",
- "LH_RING_2_3D",
- "",
- ""
- ],
- [
- "609",
- "CharaChorder One",
- "RH_THUMB_3_3D",
- "",
- ""
- ],
- [
- "610",
- "CharaChorder One",
- "RH_THUMB_2_3D",
- "",
- ""
- ],
- [
- "611",
- "CharaChorder One",
- "RH_THUMB_1_3D",
- "",
- ""
- ],
- [
- "612",
- "CharaChorder One",
- "RH_INDEX_3D",
- "",
- ""
- ],
- [
- "613",
- "CharaChorder One",
- "RH_MID_1_3D",
- "",
- ""
- ],
- [
- "614",
- "CharaChorder One",
- "RH_RING_1_3D",
- "",
- ""
- ],
- [
- "615",
- "CharaChorder One",
- "RH_PINKY_3D",
- "",
- ""
- ],
- [
- "616",
- "CharaChorder One",
- "RH_MID_2_3D",
- "",
- ""
- ],
- [
- "617",
- "CharaChorder One",
- "RH_RING_2_3D",
- "",
- ""
- ],
- [
- "618",
- "",
- "",
- "",
- ""
- ],
- [
- "619",
- "",
- "",
- "",
- ""
- ],
- [
- "620",
- "",
- "",
- "",
- ""
- ],
- [
- "621",
- "",
- "",
- "",
- ""
- ],
- [
- "622",
- "",
- "",
- "",
- ""
- ],
- [
- "623",
- "",
- "",
- "",
- ""
- ],
- [
- "624",
- "",
- "",
- "",
- ""
- ],
- [
- "625",
- "",
- "",
- "",
- ""
- ],
- [
- "626",
- "",
- "",
- "",
- ""
- ],
- [
- "627",
- "",
- "",
- "",
- ""
- ],
- [
- "628",
- "",
- "",
- "",
- ""
- ],
- [
- "629",
- "",
- "",
- "",
- ""
- ],
- [
- "630",
- "",
- "",
- "",
- ""
- ],
- [
- "631",
- "",
- "",
- "",
- ""
- ],
- [
- "632",
- "",
- "",
- "",
- ""
- ],
- [
- "633",
- "",
- "",
- "",
- ""
- ],
- [
- "634",
- "",
- "",
- "",
- ""
- ],
- [
- "635",
- "",
- "",
- "",
- ""
- ],
- [
- "636",
- "",
- "",
- "",
- ""
- ],
- [
- "637",
- "",
- "",
- "",
- ""
- ],
- [
- "638",
- "",
- "",
- "",
- ""
- ],
- [
- "639",
- "",
- "",
- "",
- ""
- ],
- [
- "640",
- "",
- "",
- "",
- ""
- ],
- [
- "641",
- "",
- "",
- "",
- ""
- ],
- [
- "642",
- "",
- "",
- "",
- ""
- ],
- [
- "643",
- "",
- "",
- "",
- ""
- ],
- [
- "644",
- "",
- "",
- "",
- ""
- ],
- [
- "645",
- "",
- "",
- "",
- ""
- ],
- [
- "646",
- "",
- "",
- "",
- ""
- ],
- [
- "647",
- "",
- "",
- "",
- ""
- ],
- [
- "648",
- "",
- "",
- "",
- ""
- ],
- [
- "649",
- "",
- "",
- "",
- ""
- ],
- [
- "650",
- "",
- "",
- "",
- ""
- ],
- [
- "651",
- "",
- "",
- "",
- ""
- ],
- [
- "652",
- "",
- "",
- "",
- ""
- ],
- [
- "653",
- "",
- "",
- "",
- ""
- ],
- [
- "654",
- "",
- "",
- "",
- ""
- ],
- [
- "655",
- "",
- "",
- "",
- ""
- ],
- [
- "656",
- "",
- "",
- "",
- ""
- ],
- [
- "657",
- "",
- "",
- "",
- ""
- ],
- [
- "658",
- "",
- "",
- "",
- ""
- ],
- [
- "659",
- "",
- "",
- "",
- ""
- ],
- [
- "660",
- "",
- "",
- "",
- ""
- ],
- [
- "661",
- "",
- "",
- "",
- ""
- ],
- [
- "662",
- "",
- "",
- "",
- ""
- ],
- [
- "663",
- "",
- "",
- "",
- ""
- ],
- [
- "664",
- "",
- "",
- "",
- ""
- ],
- [
- "665",
- "",
- "",
- "",
- ""
- ],
- [
- "666",
- "",
- "",
- "",
- ""
- ],
- [
- "667",
- "",
- "",
- "",
- ""
- ],
- [
- "668",
- "",
- "",
- "",
- ""
- ],
- [
- "669",
- "",
- "",
- "",
- ""
- ],
- [
- "670",
- "",
- "",
- "",
- ""
- ],
- [
- "671",
- "",
- "",
- "",
- ""
- ],
- [
- "672",
- "",
- "",
- "",
- ""
- ],
- [
- "673",
- "",
- "",
- "",
- ""
- ],
- [
- "674",
- "",
- "",
- "",
- ""
- ],
- [
- "675",
- "",
- "",
- "",
- ""
- ],
- [
- "676",
- "",
- "",
- "",
- ""
- ],
- [
- "677",
- "",
- "",
- "",
- ""
- ],
- [
- "678",
- "",
- "",
- "",
- ""
- ],
- [
- "679",
- "",
- "",
- "",
- ""
- ],
- [
- "680",
- "",
- "",
- "",
- ""
- ],
- [
- "681",
- "",
- "",
- "",
- ""
- ],
- [
- "682",
- "",
- "",
- "",
- ""
- ],
- [
- "683",
- "",
- "",
- "",
- ""
- ],
- [
- "684",
- "",
- "",
- "",
- ""
- ],
- [
- "685",
- "",
- "",
- "",
- ""
- ],
- [
- "686",
- "",
- "",
- "",
- ""
- ],
- [
- "687",
- "",
- "",
- "",
- ""
- ],
- [
- "688",
- "",
- "",
- "",
- ""
- ],
- [
- "689",
- "",
- "",
- "",
- ""
- ],
- [
- "690",
- "",
- "",
- "",
- ""
- ],
- [
- "691",
- "",
- "",
- "",
- ""
- ],
- [
- "692",
- "",
- "",
- "",
- ""
- ],
- [
- "693",
- "",
- "",
- "",
- ""
- ],
- [
- "694",
- "",
- "",
- "",
- ""
- ],
- [
- "695",
- "",
- "",
- "",
- ""
- ],
- [
- "696",
- "",
- "",
- "",
- ""
- ],
- [
- "697",
- "",
- "",
- "",
- ""
- ],
- [
- "698",
- "",
- "",
- "",
- ""
- ],
- [
- "699",
- "",
- "",
- "",
- ""
- ],
- [
- "700",
- "",
- "",
- "",
- ""
- ],
- [
- "701",
- "",
- "",
- "",
- ""
- ],
- [
- "702",
- "",
- "",
- "",
- ""
- ],
- [
- "703",
- "",
- "",
- "",
- ""
- ],
- [
- "704",
- "",
- "",
- "",
- ""
- ],
- [
- "705",
- "",
- "",
- "",
- ""
- ],
- [
- "706",
- "",
- "",
- "",
- ""
- ],
- [
- "707",
- "",
- "",
- "",
- ""
- ],
- [
- "708",
- "",
- "",
- "",
- ""
- ],
- [
- "709",
- "",
- "",
- "",
- ""
- ],
- [
- "710",
- "",
- "",
- "",
- ""
- ],
- [
- "711",
- "",
- "",
- "",
- ""
- ],
- [
- "712",
- "",
- "",
- "",
- ""
- ],
- [
- "713",
- "",
- "",
- "",
- ""
- ],
- [
- "714",
- "",
- "",
- "",
- ""
- ],
- [
- "715",
- "",
- "",
- "",
- ""
- ],
- [
- "716",
- "",
- "",
- "",
- ""
- ],
- [
- "717",
- "",
- "",
- "",
- ""
- ],
- [
- "718",
- "",
- "",
- "",
- ""
- ],
- [
- "719",
- "",
- "",
- "",
- ""
- ],
- [
- "720",
- "",
- "",
- "",
- ""
- ],
- [
- "721",
- "",
- "",
- "",
- ""
- ],
- [
- "722",
- "",
- "",
- "",
- ""
- ],
- [
- "723",
- "",
- "",
- "",
- ""
- ],
- [
- "724",
- "",
- "",
- "",
- ""
- ],
- [
- "725",
- "",
- "",
- "",
- ""
- ],
- [
- "726",
- "",
- "",
- "",
- ""
- ],
- [
- "727",
- "",
- "",
- "",
- ""
- ],
- [
- "728",
- "",
- "",
- "",
- ""
- ],
- [
- "729",
- "",
- "",
- "",
- ""
- ],
- [
- "730",
- "",
- "",
- "",
- ""
- ],
- [
- "731",
- "",
- "",
- "",
- ""
- ],
- [
- "732",
- "",
- "",
- "",
- ""
- ],
- [
- "733",
- "",
- "",
- "",
- ""
- ],
- [
- "734",
- "",
- "",
- "",
- ""
- ],
- [
- "735",
- "",
- "",
- "",
- ""
- ],
- [
- "736",
- "",
- "",
- "",
- ""
- ],
- [
- "737",
- "",
- "",
- "",
- ""
- ],
- [
- "738",
- "",
- "",
- "",
- ""
- ],
- [
- "739",
- "",
- "",
- "",
- ""
- ],
- [
- "740",
- "",
- "",
- "",
- ""
- ],
- [
- "741",
- "",
- "",
- "",
- ""
- ],
- [
- "742",
- "",
- "",
- "",
- ""
- ],
- [
- "743",
- "",
- "",
- "",
- ""
- ],
- [
- "744",
- "",
- "",
- "",
- ""
- ],
- [
- "745",
- "",
- "",
- "",
- ""
- ],
- [
- "746",
- "",
- "",
- "",
- ""
- ],
- [
- "747",
- "",
- "",
- "",
- ""
- ],
- [
- "748",
- "",
- "",
- "",
- ""
- ],
- [
- "749",
- "",
- "",
- "",
- ""
- ],
- [
- "750",
- "",
- "",
- "",
- ""
- ],
- [
- "751",
- "",
- "",
- "",
- ""
- ],
- [
- "752",
- "",
- "",
- "",
- ""
- ],
- [
- "753",
- "",
- "",
- "",
- ""
- ],
- [
- "754",
- "",
- "",
- "",
- ""
- ],
- [
- "755",
- "",
- "",
- "",
- ""
- ],
- [
- "756",
- "",
- "",
- "",
- ""
- ],
- [
- "757",
- "",
- "",
- "",
- ""
- ],
- [
- "758",
- "",
- "",
- "",
- ""
- ],
- [
- "759",
- "",
- "",
- "",
- ""
- ],
- [
- "760",
- "",
- "",
- "",
- ""
- ],
- [
- "761",
- "",
- "",
- "",
- ""
- ],
- [
- "762",
- "",
- "",
- "",
- ""
- ],
- [
- "763",
- "",
- "",
- "",
- ""
- ],
- [
- "764",
- "",
- "",
- "",
- ""
- ],
- [
- "765",
- "",
- "",
- "",
- ""
- ],
- [
- "766",
- "",
- "",
- "",
- ""
- ],
- [
- "767",
- "",
- "",
- "",
- ""
- ],
- [
- "768",
- "",
- "",
- "",
- ""
- ],
- [
- "769",
- "",
- "",
- "",
- ""
- ],
- [
- "770",
- "",
- "",
- "",
- ""
- ],
- [
- "771",
- "",
- "",
- "",
- ""
- ],
- [
- "772",
- "",
- "",
- "",
- ""
- ],
- [
- "773",
- "",
- "",
- "",
- ""
- ],
- [
- "774",
- "",
- "",
- "",
- ""
- ],
- [
- "775",
- "",
- "",
- "",
- ""
- ],
- [
- "776",
- "",
- "",
- "",
- ""
- ],
- [
- "777",
- "",
- "",
- "",
- ""
- ],
- [
- "778",
- "",
- "",
- "",
- ""
- ],
- [
- "779",
- "",
- "",
- "",
- ""
- ],
- [
- "780",
- "",
- "",
- "",
- ""
- ],
- [
- "781",
- "",
- "",
- "",
- ""
- ],
- [
- "782",
- "",
- "",
- "",
- ""
- ],
- [
- "783",
- "",
- "",
- "",
- ""
- ],
- [
- "784",
- "",
- "",
- "",
- ""
- ],
- [
- "785",
- "",
- "",
- "",
- ""
- ],
- [
- "786",
- "",
- "",
- "",
- ""
- ],
- [
- "787",
- "",
- "",
- "",
- ""
- ],
- [
- "788",
- "",
- "",
- "",
- ""
- ],
- [
- "789",
- "",
- "",
- "",
- ""
- ],
- [
- "790",
- "",
- "",
- "",
- ""
- ],
- [
- "791",
- "",
- "",
- "",
- ""
- ],
- [
- "792",
- "",
- "",
- "",
- ""
- ],
- [
- "793",
- "",
- "",
- "",
- ""
- ],
- [
- "794",
- "",
- "",
- "",
- ""
- ],
- [
- "795",
- "",
- "",
- "",
- ""
- ],
- [
- "796",
- "",
- "",
- "",
- ""
- ],
- [
- "797",
- "",
- "",
- "",
- ""
- ],
- [
- "798",
- "",
- "",
- "",
- ""
- ],
- [
- "799",
- "",
- "",
- "",
- ""
- ],
- [
- "800",
- "",
- "",
- "",
- ""
- ],
- [
- "801",
- "",
- "",
- "",
- ""
- ],
- [
- "802",
- "",
- "",
- "",
- ""
- ],
- [
- "803",
- "",
- "",
- "",
- ""
- ],
- [
- "804",
- "",
- "",
- "",
- ""
- ],
- [
- "805",
- "",
- "",
- "",
- ""
- ],
- [
- "806",
- "",
- "",
- "",
- ""
- ],
- [
- "807",
- "",
- "",
- "",
- ""
- ],
- [
- "808",
- "",
- "",
- "",
- ""
- ],
- [
- "809",
- "",
- "",
- "",
- ""
- ],
- [
- "810",
- "",
- "",
- "",
- ""
- ],
- [
- "811",
- "",
- "",
- "",
- ""
- ],
- [
- "812",
- "",
- "",
- "",
- ""
- ],
- [
- "813",
- "",
- "",
- "",
- ""
- ],
- [
- "814",
- "",
- "",
- "",
- ""
- ],
- [
- "815",
- "",
- "",
- "",
- ""
- ],
- [
- "816",
- "",
- "",
- "",
- ""
- ],
- [
- "817",
- "",
- "",
- "",
- ""
- ],
- [
- "818",
- "",
- "",
- "",
- ""
- ],
- [
- "819",
- "",
- "",
- "",
- ""
- ],
- [
- "820",
- "",
- "",
- "",
- ""
- ],
- [
- "821",
- "",
- "",
- "",
- ""
- ],
- [
- "822",
- "",
- "",
- "",
- ""
- ],
- [
- "823",
- "",
- "",
- "",
- ""
- ],
- [
- "824",
- "",
- "",
- "",
- ""
- ],
- [
- "825",
- "",
- "",
- "",
- ""
- ],
- [
- "826",
- "",
- "",
- "",
- ""
- ],
- [
- "827",
- "",
- "",
- "",
- ""
- ],
- [
- "828",
- "",
- "",
- "",
- ""
- ],
- [
- "829",
- "",
- "",
- "",
- ""
- ],
- [
- "830",
- "",
- "",
- "",
- ""
- ],
- [
- "831",
- "",
- "",
- "",
- ""
- ],
- [
- "832",
- "",
- "",
- "",
- ""
- ],
- [
- "833",
- "",
- "",
- "",
- ""
- ],
- [
- "834",
- "",
- "",
- "",
- ""
- ],
- [
- "835",
- "",
- "",
- "",
- ""
- ],
- [
- "836",
- "",
- "",
- "",
- ""
- ],
- [
- "837",
- "",
- "",
- "",
- ""
- ],
- [
- "838",
- "",
- "",
- "",
- ""
- ],
- [
- "839",
- "",
- "",
- "",
- ""
- ],
- [
- "840",
- "",
- "",
- "",
- ""
- ],
- [
- "841",
- "",
- "",
- "",
- ""
- ],
- [
- "842",
- "",
- "",
- "",
- ""
- ],
- [
- "843",
- "",
- "",
- "",
- ""
- ],
- [
- "844",
- "",
- "",
- "",
- ""
- ],
- [
- "845",
- "",
- "",
- "",
- ""
- ],
- [
- "846",
- "",
- "",
- "",
- ""
- ],
- [
- "847",
- "",
- "",
- "",
- ""
- ],
- [
- "848",
- "",
- "",
- "",
- ""
- ],
- [
- "849",
- "",
- "",
- "",
- ""
- ],
- [
- "850",
- "",
- "",
- "",
- ""
- ],
- [
- "851",
- "",
- "",
- "",
- ""
- ],
- [
- "852",
- "",
- "",
- "",
- ""
- ],
- [
- "853",
- "",
- "",
- "",
- ""
- ],
- [
- "854",
- "",
- "",
- "",
- ""
- ],
- [
- "855",
- "",
- "",
- "",
- ""
- ],
- [
- "856",
- "",
- "",
- "",
- ""
- ],
- [
- "857",
- "",
- "",
- "",
- ""
- ],
- [
- "858",
- "",
- "",
- "",
- ""
- ],
- [
- "859",
- "",
- "",
- "",
- ""
- ],
- [
- "860",
- "",
- "",
- "",
- ""
- ],
- [
- "861",
- "",
- "",
- "",
- ""
- ],
- [
- "862",
- "",
- "",
- "",
- ""
- ],
- [
- "863",
- "",
- "",
- "",
- ""
- ],
- [
- "864",
- "",
- "",
- "",
- ""
- ],
- [
- "865",
- "",
- "",
- "",
- ""
- ],
- [
- "866",
- "",
- "",
- "",
- ""
- ],
- [
- "867",
- "",
- "",
- "",
- ""
- ],
- [
- "868",
- "",
- "",
- "",
- ""
- ],
- [
- "869",
- "",
- "",
- "",
- ""
- ],
- [
- "870",
- "",
- "",
- "",
- ""
- ],
- [
- "871",
- "",
- "",
- "",
- ""
- ],
- [
- "872",
- "",
- "",
- "",
- ""
- ],
- [
- "873",
- "",
- "",
- "",
- ""
- ],
- [
- "874",
- "",
- "",
- "",
- ""
- ],
- [
- "875",
- "",
- "",
- "",
- ""
- ],
- [
- "876",
- "",
- "",
- "",
- ""
- ],
- [
- "877",
- "",
- "",
- "",
- ""
- ],
- [
- "878",
- "",
- "",
- "",
- ""
- ],
- [
- "879",
- "",
- "",
- "",
- ""
- ],
- [
- "880",
- "",
- "",
- "",
- ""
- ],
- [
- "881",
- "",
- "",
- "",
- ""
- ],
- [
- "882",
- "",
- "",
- "",
- ""
- ],
- [
- "883",
- "",
- "",
- "",
- ""
- ],
- [
- "884",
- "",
- "",
- "",
- ""
- ],
- [
- "885",
- "",
- "",
- "",
- ""
- ],
- [
- "886",
- "",
- "",
- "",
- ""
- ],
- [
- "887",
- "",
- "",
- "",
- ""
- ],
- [
- "888",
- "",
- "",
- "",
- ""
- ],
- [
- "889",
- "",
- "",
- "",
- ""
- ],
- [
- "890",
- "",
- "",
- "",
- ""
- ],
- [
- "891",
- "",
- "",
- "",
- ""
- ],
- [
- "892",
- "",
- "",
- "",
- ""
- ],
- [
- "893",
- "",
- "",
- "",
- ""
- ],
- [
- "894",
- "",
- "",
- "",
- ""
- ],
- [
- "895",
- "",
- "",
- "",
- ""
- ],
- [
- "896",
- "",
- "",
- "",
- ""
- ],
- [
- "897",
- "",
- "",
- "",
- ""
- ],
- [
- "898",
- "",
- "",
- "",
- ""
- ],
- [
- "899",
- "",
- "",
- "",
- ""
- ],
- [
- "900",
- "",
- "",
- "",
- ""
- ],
- [
- "901",
- "",
- "",
- "",
- ""
- ],
- [
- "902",
- "",
- "",
- "",
- ""
- ],
- [
- "903",
- "",
- "",
- "",
- ""
- ],
- [
- "904",
- "",
- "",
- "",
- ""
- ],
- [
- "905",
- "",
- "",
- "",
- ""
- ],
- [
- "906",
- "",
- "",
- "",
- ""
- ],
- [
- "907",
- "",
- "",
- "",
- ""
- ],
- [
- "908",
- "",
- "",
- "",
- ""
- ],
- [
- "909",
- "",
- "",
- "",
- ""
- ],
- [
- "910",
- "",
- "",
- "",
- ""
- ],
- [
- "911",
- "",
- "",
- "",
- ""
- ],
- [
- "912",
- "",
- "",
- "",
- ""
- ],
- [
- "913",
- "",
- "",
- "",
- ""
- ],
- [
- "914",
- "",
- "",
- "",
- ""
- ],
- [
- "915",
- "",
- "",
- "",
- ""
- ],
- [
- "916",
- "",
- "",
- "",
- ""
- ],
- [
- "917",
- "",
- "",
- "",
- ""
- ],
- [
- "918",
- "",
- "",
- "",
- ""
- ],
- [
- "919",
- "",
- "",
- "",
- ""
- ],
- [
- "920",
- "",
- "",
- "",
- ""
- ],
- [
- "921",
- "",
- "",
- "",
- ""
- ],
- [
- "922",
- "",
- "",
- "",
- ""
- ],
- [
- "923",
- "",
- "",
- "",
- ""
- ],
- [
- "924",
- "",
- "",
- "",
- ""
- ],
- [
- "925",
- "",
- "",
- "",
- ""
- ],
- [
- "926",
- "",
- "",
- "",
- ""
- ],
- [
- "927",
- "",
- "",
- "",
- ""
- ],
- [
- "928",
- "",
- "",
- "",
- ""
- ],
- [
- "929",
- "",
- "",
- "",
- ""
- ],
- [
- "930",
- "",
- "",
- "",
- ""
- ],
- [
- "931",
- "",
- "",
- "",
- ""
- ],
- [
- "932",
- "",
- "",
- "",
- ""
- ],
- [
- "933",
- "",
- "",
- "",
- ""
- ],
- [
- "934",
- "",
- "",
- "",
- ""
- ],
- [
- "935",
- "",
- "",
- "",
- ""
- ],
- [
- "936",
- "",
- "",
- "",
- ""
- ],
- [
- "937",
- "",
- "",
- "",
- ""
- ],
- [
- "938",
- "",
- "",
- "",
- ""
- ],
- [
- "939",
- "",
- "",
- "",
- ""
- ],
- [
- "940",
- "",
- "",
- "",
- ""
- ],
- [
- "941",
- "",
- "",
- "",
- ""
- ],
- [
- "942",
- "",
- "",
- "",
- ""
- ],
- [
- "943",
- "",
- "",
- "",
- ""
- ],
- [
- "944",
- "",
- "",
- "",
- ""
- ],
- [
- "945",
- "",
- "",
- "",
- ""
- ],
- [
- "946",
- "",
- "",
- "",
- ""
- ],
- [
- "947",
- "",
- "",
- "",
- ""
- ],
- [
- "948",
- "",
- "",
- "",
- ""
- ],
- [
- "949",
- "",
- "",
- "",
- ""
- ],
- [
- "950",
- "",
- "",
- "",
- ""
- ],
- [
- "951",
- "",
- "",
- "",
- ""
- ],
- [
- "952",
- "",
- "",
- "",
- ""
- ],
- [
- "953",
- "",
- "",
- "",
- ""
- ],
- [
- "954",
- "",
- "",
- "",
- ""
- ],
- [
- "955",
- "",
- "",
- "",
- ""
- ],
- [
- "956",
- "",
- "",
- "",
- ""
- ],
- [
- "957",
- "",
- "",
- "",
- ""
- ],
- [
- "958",
- "",
- "",
- "",
- ""
- ],
- [
- "959",
- "",
- "",
- "",
- ""
- ],
- [
- "960",
- "",
- "",
- "",
- ""
- ],
- [
- "961",
- "",
- "",
- "",
- ""
- ],
- [
- "962",
- "",
- "",
- "",
- ""
- ],
- [
- "963",
- "",
- "",
- "",
- ""
- ],
- [
- "964",
- "",
- "",
- "",
- ""
- ],
- [
- "965",
- "",
- "",
- "",
- ""
- ],
- [
- "966",
- "",
- "",
- "",
- ""
- ],
- [
- "967",
- "",
- "",
- "",
- ""
- ],
- [
- "968",
- "",
- "",
- "",
- ""
- ],
- [
- "969",
- "",
- "",
- "",
- ""
- ],
- [
- "970",
- "",
- "",
- "",
- ""
- ],
- [
- "971",
- "",
- "",
- "",
- ""
- ],
- [
- "972",
- "",
- "",
- "",
- ""
- ],
- [
- "973",
- "",
- "",
- "",
- ""
- ],
- [
- "974",
- "",
- "",
- "",
- ""
- ],
- [
- "975",
- "",
- "",
- "",
- ""
- ],
- [
- "976",
- "",
- "",
- "",
- ""
- ],
- [
- "977",
- "",
- "",
- "",
- ""
- ],
- [
- "978",
- "",
- "",
- "",
- ""
- ],
- [
- "979",
- "",
- "",
- "",
- ""
- ],
- [
- "980",
- "",
- "",
- "",
- ""
- ],
- [
- "981",
- "",
- "",
- "",
- ""
- ],
- [
- "982",
- "",
- "",
- "",
- ""
- ],
- [
- "983",
- "",
- "",
- "",
- ""
- ],
- [
- "984",
- "",
- "",
- "",
- ""
- ],
- [
- "985",
- "",
- "",
- "",
- ""
- ],
- [
- "986",
- "",
- "",
- "",
- ""
- ],
- [
- "987",
- "",
- "",
- "",
- ""
- ],
- [
- "988",
- "",
- "",
- "",
- ""
- ],
- [
- "989",
- "",
- "",
- "",
- ""
- ],
- [
- "990",
- "",
- "",
- "",
- ""
- ],
- [
- "991",
- "",
- "",
- "",
- ""
- ],
- [
- "992",
- "",
- "",
- "",
- ""
- ],
- [
- "993",
- "",
- "",
- "",
- ""
- ],
- [
- "994",
- "",
- "",
- "",
- ""
- ],
- [
- "995",
- "",
- "",
- "",
- ""
- ],
- [
- "996",
- "",
- "",
- "",
- ""
- ],
- [
- "997",
- "",
- "",
- "",
- ""
- ],
- [
- "998",
- "",
- "",
- "",
- ""
- ],
- [
- "999",
- "",
- "",
- "",
- ""
- ],
- [
- "1000",
- "",
- "",
- "",
- ""
- ],
- [
- "1001",
- "",
- "",
- "",
- ""
- ],
- [
- "1002",
- "",
- "",
- "",
- ""
- ],
- [
- "1003",
- "",
- "",
- "",
- ""
- ],
- [
- "1004",
- "",
- "",
- "",
- ""
- ],
- [
- "1005",
- "",
- "",
- "",
- ""
- ],
- [
- "1006",
- "",
- "",
- "",
- ""
- ],
- [
- "1007",
- "",
- "",
- "",
- ""
- ],
- [
- "1008",
- "",
- "",
- "",
- ""
- ],
- [
- "1009",
- "",
- "",
- "",
- ""
- ],
- [
- "1010",
- "",
- "",
- "",
- ""
- ],
- [
- "1011",
- "",
- "",
- "",
- ""
- ],
- [
- "1012",
- "",
- "",
- "",
- ""
- ],
- [
- "1013",
- "",
- "",
- "",
- ""
- ],
- [
- "1014",
- "",
- "",
- "",
- ""
- ],
- [
- "1015",
- "",
- "",
- "",
- ""
- ],
- [
- "1016",
- "",
- "",
- "",
- ""
- ],
- [
- "1017",
- "",
- "",
- "",
- ""
- ],
- [
- "1018",
- "",
- "",
- "",
- ""
- ],
- [
- "1019",
- "",
- "",
- "",
- ""
- ],
- [
- "1020",
- "",
- "",
- "",
- ""
- ],
- [
- "1021",
- "",
- "",
- "",
- ""
- ],
- [
- "1022",
- "",
- "",
- "",
- ""
- ],
- [
- "1023",
- "",
- "",
- "",
- ""
- ]
-]
\ No newline at end of file
diff --git a/src/lib/assets/keymaps/action-codes.yml b/src/lib/assets/keymaps/action-codes.yml
new file mode 100644
index 00000000..cb3156b3
--- /dev/null
+++ b/src/lib/assets/keymaps/action-codes.yml
@@ -0,0 +1,67 @@
+name: Action Codes
+description: 10-bit action codes 0x00-0x1F
+actions:
+ 0x00:
+ id: "0x00"
+ 0x01:
+ id: "0x01"
+ 0x02:
+ id: "0x02"
+ 0x03:
+ id: "0x03"
+ 0x04:
+ id: "0x04"
+ 0x05:
+ id: "0x05"
+ 0x06:
+ id: "0x06"
+ 0x07:
+ id: "0x07"
+ 0x08:
+ id: "0x08"
+ 0x09:
+ id: "0x09"
+ 0x0A:
+ id: "0x0A"
+ 0x0B:
+ id: "0x0B"
+ 0x0C:
+ id: "0x0C"
+ 0x0D:
+ id: "0x0D"
+ 0x0E:
+ id: "0x0E"
+ 0x0F:
+ id: "0x0F"
+ 0x10:
+ id: "0x10"
+ 0x11:
+ id: "0x11"
+ 0x12:
+ id: "0x12"
+ 0x13:
+ id: "0x13"
+ 0x14:
+ id: "0x14"
+ 0x15:
+ id: "0x15"
+ 0x16:
+ id: "0x16"
+ 0x17:
+ id: "0x17"
+ 0x18:
+ id: "0x18"
+ 0x19:
+ id: "0x19"
+ 0x1A:
+ id: "0x1A"
+ 0x1B:
+ id: "0x1B"
+ 0x1C:
+ id: "0x1C"
+ 0x1D:
+ id: "0x1D"
+ 0x1E:
+ id: "0x1E"
+ 0x1F:
+ id: "0x1F"
diff --git a/src/lib/assets/keymaps/ascii.yml b/src/lib/assets/keymaps/ascii.yml
new file mode 100644
index 00000000..3948fea2
--- /dev/null
+++ b/src/lib/assets/keymaps/ascii.yml
@@ -0,0 +1,295 @@
+name: ASCII
+description: ASCII Charset
+actions:
+ 32:
+ id: "SPACE"
+ icon: space_bar
+ description: |
+ While SPACE is used for keymaps and chord, just a " " is used in chord outputs.
+ This action is unique in this way. Technically it is "printable", but it is not visible.
+ 33:
+ id: "!"
+ title: Exclamation Point
+ 34:
+ id: '"'
+ title: Double Quote
+ 35:
+ id: "#"
+ title: Hash Symbol
+ 36:
+ id: "$"
+ title: Dollar Sign
+ 37:
+ id: "%"
+ title: Percent
+ 38:
+ id: "&"
+ title: Ampersand
+ 39:
+ id: "'"
+ title: Single Quote
+ 40:
+ id: "("
+ title: Opening Parenthesis
+ 41:
+ id: ")"
+ title: Closing Parenthesis
+ 42:
+ id: "*"
+ title: Asterisk
+ 43:
+ id: "+"
+ title: Plus
+ 44:
+ id: ","
+ title: Comma
+ 45:
+ id: "-"
+ title: Minus
+ 46:
+ id: "."
+ title: Period
+ 47:
+ id: "/"
+ title: Forward Slash
+ 48:
+ id: "0"
+ title: Zero
+ 49:
+ id: "1"
+ title: One
+ 50:
+ id: "2"
+ title: Two
+ 51:
+ id: "3"
+ title: Three
+ 52:
+ id: "4"
+ title: Four
+ 53:
+ id: "5"
+ title: Five
+ 54:
+ id: "6"
+ title: Six
+ 55:
+ id: "7"
+ title: Seven
+ 56:
+ id: "8"
+ title: Eight
+ 57:
+ id: "9"
+ title: Nine
+ 58:
+ id: ":"
+ title: Colon
+ 59:
+ id: ";"
+ title: Semicolon
+ 60:
+ id: "<"
+ title: Less Than
+ 61:
+ id: "="
+ title: Equals
+ 62:
+ id: ">"
+ title: Greater Than
+ 63:
+ id: "?"
+ title: Question Mark
+ 64:
+ id: "@"
+ title: At Symbol
+ 65:
+ id: "A"
+ title: Uppercase A
+ 66:
+ id: "B"
+ title: Uppercase B
+ 67:
+ id: "C"
+ title: Uppercase C
+ 68:
+ id: "D"
+ title: Uppercase D
+ 69:
+ id: "E"
+ title: Uppercase E
+ 70:
+ id: "F"
+ title: Uppercase F
+ 71:
+ id: "G"
+ title: Uppercase G
+ 72:
+ id: "H"
+ title: Uppercase H
+ 73:
+ id: "I"
+ title: Uppercase I
+ 74:
+ id: "J"
+ title: Uppercase J
+ 75:
+ id: "K"
+ title: Uppercase K
+ 76:
+ id: "L"
+ title: Uppercase L
+ 77:
+ id: "M"
+ title: Uppercase M
+ 78:
+ id: "N"
+ title: Uppercase N
+ 79:
+ id: "O"
+ title: Uppercase O
+ 80:
+ id: "P"
+ title: Uppercase P
+ 81:
+ id: "Q"
+ title: Uppercase Q
+ 82:
+ id: "R"
+ title: Uppercase R
+ 83:
+ id: "S"
+ title: Uppercase S
+ 84:
+ id: "T"
+ title: Uppercase T
+ 85:
+ id: "U"
+ title: Uppercase U
+ 86:
+ id: "V"
+ title: Uppercase V
+ 87:
+ id: "W"
+ title: Uppercase W
+ 88:
+ id: "X"
+ title: Uppercase X
+ 89:
+ id: "Y"
+ title: Uppercase Y
+ 90:
+ id: "Z"
+ title: Uppercase Z
+ 91:
+ id: "["
+ title: Left Bracket
+ 92:
+ id: "\\"
+ title: Backslash
+ 93:
+ id: "]"
+ title: Right Bracket
+ 94:
+ id: "^"
+ title: Caret
+ 95:
+ id: "_"
+ title: Underscore
+ 96:
+ id: "`"
+ title: Backtick
+ 97:
+ id: "a"
+ title: Lowercase a
+ 98:
+ id: "b"
+ title: Lowercase b
+ 99:
+ id: "c"
+ title: Lowercase c
+ 100:
+ id: "d"
+ title: Lowercase d
+ 101:
+ id: "e"
+ title: Lowercase e
+ 102:
+ id: "f"
+ title: Lowercase f
+ 103:
+ id: "g"
+ title: Lowercase g
+ 104:
+ id: "h"
+ title: Lowercase h
+ 105:
+ id: "i"
+ title: Lowercase i
+ 106:
+ id: "j"
+ title: Lowercase j
+ 107:
+ id: "k"
+ title: Lowercase k
+ 108:
+ id: "l"
+ title: Lowercase l
+ 109:
+ id: "m"
+ title: Lowercase m
+ 110:
+ id: "n"
+ title: Lowercase n
+ 111:
+ id: "o"
+ title: Lowercase o
+ 112:
+ id: "p"
+ title: Lowercase p
+ 113:
+ id: "q"
+ title: Lowercase q
+ 114:
+ id: "r"
+ title: Lowercase r
+ 115:
+ id: "s"
+ title: Lowercase s
+ 116:
+ id: "t"
+ title: Lowercase t
+ 117:
+ id: "u"
+ title: Lowercase u
+ 118:
+ id: "v"
+ title: Lowercase v
+ 119:
+ id: "w"
+ title: Lowercase w
+ 120:
+ id: "x"
+ title: Lowercase x
+ 121:
+ id: "y"
+ title: Lowercase y
+ 122:
+ id: "z"
+ title: Lowercase z
+ 123:
+ id: "{"
+ title: Left Curly Brace
+ 124:
+ id: "|"
+ title: Pipe
+ 125:
+ id: "}"
+ title: Right Curly Brace
+ 126:
+ id: "~"
+ title: Tilde
+ 127:
+ id: "DEL"
+ title: Delete
+ icon: delete_forever
\ No newline at end of file
diff --git a/src/lib/assets/keymaps/chara-chorder-one.yml b/src/lib/assets/keymaps/chara-chorder-one.yml
new file mode 100644
index 00000000..51c098c4
--- /dev/null
+++ b/src/lib/assets/keymaps/chara-chorder-one.yml
@@ -0,0 +1,39 @@
+name: "CharaChorder One"
+description: |
+ CharaChorder One specific actions.
+ Mainly used for chords with unassigned 3D presses
+type: unassigned
+actions:
+ 600:
+ id: "LH_THUMB_3_3D"
+ title: Left Hand Thumb Top 3D Click
+ 601:
+ id: "LH_THUMB_2_3D"
+ title: Left Hand Thumb Middle 3D Click
+ 602:
+ id: "LH_THUMB_1_3D"
+ title: Left Hand Thumb Bottom 3D Click
+ 603:
+ id: "LH_INDEX_3D"
+ title: Left Hand Index Finger 3D Click
+ 604:
+ id: "LH_MID_1_3D"
+ title: Left Hand Middle Finger 3D Click
+ 605:
+ id: "LH_RING_1_3D"
+ title: Left Hand Ring Finger 3D Click
+ 606:
+ id: "LH_PINKY_3D"
+ title: Left Hand Pinky 3D Click,
+ # TODO...
+ # ["607", "CharaChorder One", "LH_MID_2_3D", "", ""],
+ # ["608", "CharaChorder One", "LH_RING_2_3D", "", ""],
+ # ["609", "CharaChorder One", "RH_THUMB_3_3D", "", ""],
+ # ["610", "CharaChorder One", "RH_THUMB_2_3D", "", ""],
+ # ["611", "CharaChorder One", "RH_THUMB_1_3D", "", ""],
+ # ["612", "CharaChorder One", "RH_INDEX_3D", "", ""],
+ # ["613", "CharaChorder One", "RH_MID_1_3D", "", ""],
+ # ["614", "CharaChorder One", "RH_RING_1_3D", "", ""],
+ # ["615", "CharaChorder One", "RH_PINKY_3D", "", ""],
+ # ["616", "CharaChorder One", "RH_MID_2_3D", "", ""],
+ # ["617", "CharaChorder One", "RH_RING_2_3D", "", ""]
diff --git a/src/lib/assets/keymaps/chara-chorder.yml b/src/lib/assets/keymaps/chara-chorder.yml
new file mode 100644
index 00000000..a8b1e113
--- /dev/null
+++ b/src/lib/assets/keymaps/chara-chorder.yml
@@ -0,0 +1,93 @@
+name: CharaChorder
+description: CharaChorder specific actions
+actions:
+ 528:
+ id: "RESTART"
+ title: Restart Device
+ icon: restart_alt
+ 530:
+ id: "BOOT"
+ title: Reboot to Bootloader
+ icon: rule_settings
+ 532:
+ id: "GTM"
+ title: Toggle Generative Text Menu
+ icon: terminal
+ description: |
+ Text based menu which is accessible anywhere you can type.
+ It allows you to access various device settings and features
+ without the need for software and is activated by chording both alt keys together.
+ 534:
+ id: "IMPULSE"
+ title: Toggle Impulse
+ icon: heap_snapshot_multiple # TODO: find a better icon
+ description: |
+ An 'on-the-fly' custom chord which can be spontaneously created anywhere that you can type via the GTM
+ 536:
+ id: "DUP"
+ title: Repeat Last Note
+ icon: control_point_duplicate
+ description: |
+ In character entry, it repeats your last input.
+ In chorded entry, it is used for words with repeating letters.
+ 538:
+ id: "SPUR"
+ title: Spurring Toggle
+ icon: piano
+ description: |
+ 'Chording only' mode which tells your device to output chords on a press rather than a press & release.
+ It also enables you to jump from one chord to another without releasing everything and can be activated
+ in GTM or by chording both mirror keys. It can provide significant speed gains with chording,
+ but also takes away the flexibility of character entry.
+ Spurring also helps new users learn how to chord by eliminating the need to focus on timing.
+ Spurring is toggled by chording both of the 'mirror' keys together.
+ 540: &ambi_throw
+ id: "AMBILEFT"
+ title: Ambidextrous Throwover
+ icon: switch_left
+ variant: left
+ description: |
+ Entry mode designed for one-handed typing.
+ Characters from the opposite hand are mirrored to the hand which activates this feature.
+ 542:
+ variantOf: 540
+ <<: *ambi_throw
+ id: "AMBIRIGHT"
+ variant: right
+ icon: switch_right
+ 544:
+ variantOf: 36
+ id: "SPACERIGHT"
+ title: Right Spacebar (eg CC Lite)
+ icon: space_bar
+ variant: right
+ 548: &primary_keymap
+ id: "KM_1_L"
+ title: Primary Keymap
+ icon: counter_1
+ variant: left
+ 549:
+ variantOf: 548
+ <<: *primary_keymap
+ id: "KM_1_R"
+ variant: right
+ 550: &secondary_keymap
+ id: "KM_2_L"
+ title: Numeric Layer
+ icon: counter_2
+ variant: left
+ 551:
+ variantOf: 550
+ <<: *secondary_keymap
+ id: "KM_2_R"
+ variant: right
+ 552: &tertiary_keymap
+ id: "KM_3_L"
+ title: Function Layer
+ icon: counter_3
+ variant: left
+ 553:
+ variationOf: 552
+ <<: *tertiary_keymap
+ id: "KM_3_R"
+ variant: right
diff --git a/src/lib/assets/keymaps/cp-1252.yml b/src/lib/assets/keymaps/cp-1252.yml
new file mode 100644
index 00000000..2a65e57a
--- /dev/null
+++ b/src/lib/assets/keymaps/cp-1252.yml
@@ -0,0 +1,320 @@
+name: CP-1252
+description: CP-1252 Charset
+actions:
+ 128:
+ id: "€"
+ title: Uppercase cedilla
+ 129:
+ title: HOP (High Octet Preset)
+ 130:
+ id: "‚"
+ title: Single Low-9 Quotation Mark
+ 131:
+ id: "ƒ"
+ title: Latin Small Letter f with Hook; Florin
+ 132:
+ id: "„"
+ title: Double Low-9 Quotation Mark
+ 133:
+ id: "…"
+ title: Horizontal Ellipsis
+ 134:
+ id: "†"
+ title: Dagger
+ 135:
+ id: "‡"
+ title: Double Dagger
+ 136:
+ id: "ˆ"
+ title: Circumflex
+ 137:
+ id: "‰"
+ title: Per Mile
+ 138:
+ id: "Š"
+ title: Captial S Caron
+ 139:
+ id: "‹"
+ title: Left Guillemet
+ 140:
+ id: "Œ"
+ title: Captial Ligature OE
+ 141:
+ title: RI (Reverse Index)
+ 142:
+ id: "Ž"
+ title: Captial Z Caron
+ 143:
+ title: SS3 (Single-Shift G3)
+ 144:
+ title: DCS (Device Control String)
+ 145:
+ id: "‘"
+ title: Single Quote Left
+ 146:
+ id: "’"
+ title: Single Quote Right
+ 147:
+ id: "“"
+ title: Double Quote Left
+ 148:
+ id: "”"
+ title: Double Quote Right
+ 149:
+ id: "•"
+ title: Bullet
+ 150:
+ id: "–"
+ title: En Dash
+ 151:
+ id: "—"
+ title: Em Dash
+ 152:
+ id: "˜"
+ title: Small Tilde
+ 153:
+ id: "™"
+ title: Trademark
+ 154:
+ id: "š"
+ title: Small s Carson
+ 155:
+ id: "›"
+ title: Right Guillement
+ 156:
+ id: "œ"
+ title: Small Ligature oe
+ 157:
+ title: Operating System Command
+ 158:
+ id: "ž"
+ title: Small Z Caron
+ 159:
+ id: "Ÿ"
+ title: Capital Y Diaresis
+ 160:
+ id: " "
+ title: No Break Space
+ 161:
+ id: "¡"
+ title: Inverted Exclamation
+ 162:
+ id: "¢"
+ title: Cent
+ 163:
+ id: "£"
+ title: Pound
+ 164:
+ id: "¤"
+ title: Currency
+ 165:
+ id: "¥"
+ title: Yen
+ 166:
+ id: "¦"
+ title: Broken Bar
+ 167:
+ id: "§"
+ title: Section
+ 168:
+ id: "¨"
+ title: Diaresis
+ 169:
+ id: "©"
+ title: Copyright
+ 170:
+ id: "ª"
+ title: Feminine Ordinal
+ 171:
+ id: "«"
+ title: Double Left Guillement
+ 172:
+ id: "¬"
+ title: Not
+ 173:
+ id: ""
+ title: Soft Hyphen
+ 174:
+ id: "®"
+ title: Registered
+ 175:
+ id: "¯"
+ title: Macron
+ 176:
+ id: "°"
+ title: Degree
+ 177:
+ id: "±"
+ title: Plus Minus
+ 178:
+ id: "²"
+ title: Superscript Two
+ 179:
+ id: "³"
+ title: Superscript Three
+ 180:
+ id: "´"
+ title: Acute
+ 181:
+ id: "µ"
+ title: Micro
+ 182:
+ id: "¶"
+ title: Pilcrow
+ 183:
+ id: "·"
+ title: Middle Dot
+ 184:
+ id: "¸"
+ title: Cedilla
+ 185:
+ id: "¹"
+ title: Superscript One
+ 186:
+ id: "º"
+ title: Masculine Ordinal
+ 187:
+ id: "»"
+ title: Double Right Guillement
+ 188:
+ id: "¼"
+ title: One Quarter Fraction
+ 189:
+ id: "½"
+ title: One Half Fraction
+ 190:
+ id: "¾"
+ title: Three Quarters Fraction
+ 191:
+ id: "¿"
+ title: Inverted Question
+ 192:
+ id: "À"
+ title: Captial A Grave
+ 193:
+ id: "Á"
+ 194:
+ id: "Â"
+ 195:
+ id: "Ã"
+ 196:
+ id: "Ä"
+ 197:
+ id: "Å"
+ 198:
+ id: "Æ"
+ 199:
+ id: "Ç"
+ 200:
+ id: "È"
+ 201:
+ id: "É"
+ 202:
+ id: "Ê"
+ 203:
+ id: "Ë"
+ 204:
+ id: "Ì"
+ 205:
+ id: "Í"
+ 206:
+ id: "Î"
+ 207:
+ id: "Ï"
+ 208:
+ id: "Ð"
+ 209:
+ id: "Ñ"
+ 210:
+ id: "Ò"
+ 211:
+ id: "Ó"
+ 212:
+ id: "Ô"
+ 213:
+ id: "Õ"
+ 214:
+ id: "Ö"
+ 215:
+ id: "×"
+ 216:
+ id: "Ø"
+ 217:
+ id: "Ù"
+ 218:
+ id: "Ú"
+ 219:
+ id: "Û"
+ 220:
+ id: "Ü"
+ 221:
+ id: "Ý"
+ 222:
+ id: "Þ"
+ 223:
+ id: "ß"
+ 224:
+ id: "à"
+ 225:
+ id: "á"
+ 226:
+ id: "â"
+ 227:
+ id: "ã"
+ 228:
+ id: "ä"
+ 229:
+ id: "å"
+ 230:
+ id: "æ"
+ 231:
+ id: "ç"
+ 232:
+ id: "è"
+ 233:
+ id: "é"
+ 234:
+ id: "ê"
+ 235:
+ id: "ë"
+ 236:
+ id: "ì"
+ 237:
+ id: "í"
+ 238:
+ id: "î"
+ 239:
+ id: "ï"
+ 240:
+ id: "ð"
+ 241:
+ id: "ñ"
+ 242:
+ id: "ò"
+ 243:
+ id: "ó"
+ 244:
+ id: "ô"
+ 245:
+ id: "õ"
+ 246:
+ id: "ö"
+ 247:
+ id: "÷"
+ 248:
+ id: "ø"
+ 249:
+ id: "ù"
+ 250:
+ id: "ú"
+ 251:
+ id: "û"
+ 252:
+ id: "ü"
+ 253:
+ id: "ý"
+ 254:
+ id: "þ"
+ 255:
+ id: "ÿ"
+ title: Small y Diaeresis
diff --git a/src/lib/assets/keymaps/keyboard.yml b/src/lib/assets/keymaps/keyboard.yml
new file mode 100644
index 00000000..52863b94
--- /dev/null
+++ b/src/lib/assets/keymaps/keyboard.yml
@@ -0,0 +1,53 @@
+name: Keyboard
+description: Keyboard specific actions
+icon: keyboard
+actions:
+ 512: &left_ctrl
+ id: "LEFT_CTRL"
+ title: Control Keyboard Modifier
+ variant: left
+ icon: keyboard_control_key
+ 513: &left_shift
+ id: "LEFT_SHIFT"
+ title: Shift Keyboard Modifier
+ variant: left
+ icon: shift
+ 514: &left_alt
+ id: "LEFT_ALT"
+ title: Alt Keyboard Modifier
+ variant: left
+ icon: keyboard_option_key
+ 515: &left_gui
+ id: "LEFT_GUI"
+ title: GUI Keyboard Modifier
+ variant: left
+ icon: keyboard_command_key
+ 516:
+ variationOf: 512
+ <<: *left_ctrl
+ id: "RIGHT_CTRL"
+ variant: right
+ 517:
+ variationOf: 513
+ <<: *left_shift
+ id: "RIGHT_SHIFT"
+ 518:
+ variationOf: 514
+ <<: *left_alt
+ id: "RIGHT_ALT"
+ 519:
+ variationOf: 515
+ <<: *left_gui
+ id: "RIGHT_GUI"
+ 520:
+ id: "RELEASE_MOD"
+ title: Release all keyboard modifiers
+ icon: step_out
+ 521:
+ id: "RELEASE_ALL"
+ title: Release all keys and keyboard modifiers
+ icon: merge_type
+ 522:
+ id: "RELEASE_KEYS"
+ title: Release all keys, but not keyboard modifiers
+ icon: text_rotate_up
diff --git a/src/lib/assets/keymaps/keymap.d.ts b/src/lib/assets/keymaps/keymap.d.ts
new file mode 100644
index 00000000..ece7e611
--- /dev/null
+++ b/src/lib/assets/keymaps/keymap.d.ts
@@ -0,0 +1,16 @@
+export interface KeymapCategory {
+ name: string
+ description: string
+ icon?: string
+ type?: "unassigned"
+ actions: Record>
+}
+
+export interface ActionInfo {
+ id: string
+ title: string
+ icon: string
+ description: string
+ variant: "left" | "right"
+ variantOf: number
+}
diff --git a/src/lib/assets/keymaps/mouse.yml b/src/lib/assets/keymaps/mouse.yml
new file mode 100644
index 00000000..522d261a
--- /dev/null
+++ b/src/lib/assets/keymaps/mouse.yml
@@ -0,0 +1,56 @@
+name: Mouse
+description: Mouse Actions
+icon: mouse
+actions:
+ 560:
+ id: "MS_CLICK_BWD"
+ title: Mouse Backward Button Click
+ icon: drag_click
+ 561:
+ id: "MS_CLICK_FWD"
+ title: Mouse Forward Button Click
+ icon: ads_click
+ 562:
+ id: "MS_CLICK_LF"
+ title: Mouse Left Click
+ icon: left_click
+ 563:
+ id: "MS_CLICK_RT"
+ title: Mouse Right Click
+ icon: right_click
+ 564:
+ id: "MS_CLICK_MD"
+ title: Mouse Middle Click
+ icon: touchpad_mouse
+ 565:
+ id: "MS_MOVE_RT"
+ title: Mouse Move Right
+ icon: arrow_circle_right
+ 566:
+ id: "MS_MOVE_LF"
+ title: Mouse Move Left
+ icon: arrow_circle_left
+ 567:
+ id: "MS_MOVE_DN"
+ title: Mouse Move Down
+ icon: arrow_circle_down
+ 568:
+ id: "MS_MOVE_UP"
+ title: Mouse Move Up
+ icon: arrow_circle_up
+ 569:
+ id: "MS_SCRL_RT"
+ title: Mouse Scroll Right
+ icon: swipe_right
+ 570:
+ id: "MS_SCRL_LF"
+ title: Mouse Scroll Left
+ icon: swipe_left
+ 571:
+ id: "MS_SCRL_DN"
+ title: Mouse Scroll Down
+ icon: swipe_down
+ 572:
+ id: "MS_SCRL_UP"
+ title: "Mouse Scroll Up"
+ icon: swipe_up
diff --git a/src/lib/assets/keymaps/scancode.yml b/src/lib/assets/keymaps/scancode.yml
new file mode 100644
index 00000000..c622e923
--- /dev/null
+++ b/src/lib/assets/keymaps/scancode.yml
@@ -0,0 +1,933 @@
+name: Raw Scancodes
+description: Raw Keyboard Scancodes
+actions:
+ 256:
+ id: "KSC_00"
+ title: No Key Pressed
+ 257:
+ id: "KSC_01"
+ title: Keyboard Error Roll Over
+ 258:
+ id: "KSC_02"
+ title: Keyboard POST Fail
+ 259:
+ id: "KSC_03"
+ title: Keyboard Error Undefined
+ 260:
+ id: "KEY_A"
+ title: Keyboard a and A (US English)
+ description: Non US English keyboard users may prefer these Raw Scancodes
+ 261:
+ id: "KEY_B"
+ title: Keyboard b and B (US English)
+ 262:
+ id: "KEY_C"
+ title: Keyboard c and C (US English)
+ 263:
+ id: "KEY_D"
+ title: Keyboard d and D (US English)
+ 264:
+ id: "KEY_E"
+ title: Keyboard e and E (US English)
+ 265:
+ id: "KEY_F"
+ title: Keyboard f and F (US English)
+ 266:
+ id: "KEY_G"
+ title: Keyboard g and G (US English)
+ 267:
+ id: "KEY_H"
+ title: Keyboard h and H (US English)
+ 268:
+ id: "KEY_I"
+ title: Keyboard i and I (US English)
+ 269:
+ id: "KEY_J"
+ title: Keyboard j and J (US English)
+ 270:
+ id: "KEY_K"
+ title: Keyboard k and K (US English)
+ 271:
+ id: "KEY_L"
+ title: Keyboard l and L (US English)
+ 272:
+ id: "KEY_M"
+ title: Keyboard m and M (US English)
+ 273:
+ id: "KEY_N"
+ title: Keyboard n and N (US English)
+ 274:
+ id: "KEY_O"
+ title: Keyboard o and O (US English)
+ 275:
+ id: "KEY_P"
+ title: Keyboard p and P (US English)
+ 276:
+ id: "KEY_Q"
+ title: Keyboard q and Q (US English)
+ 277:
+ id: "KEY_R"
+ title: Keyboard r and R (US English)
+ 278:
+ id: "KEY_S"
+ title: Keyboard s and S (US English)
+ 279:
+ id: "KEY_T"
+ title: Keyboard t and T (US English)
+ 280:
+ id: "KEY_U"
+ title: Keyboard u and U (US English)
+ 281:
+ id: "KEY_V"
+ title: Keyboard v and V (US English)
+ 282:
+ id: "KEY_W"
+ title: Keyboard w and W (US English)
+ 283:
+ id: "KEY_X"
+ title: Keyboard x and X (US English)
+ 284:
+ id: "KEY_Y"
+ title: Keyboard y and Y (US English)
+ 285:
+ id: "KEY_Z"
+ title: Keyboard z and Z (US English)
+ 286:
+ id: "KEY_1"
+ title: Keyboard 1 and ! (US English)
+ 287:
+ id: "KEY_2"
+ title: Keyboard 2 and @ (US English)
+ 288:
+ id: "KEY_3"
+ title: Keyboard 3 and # (US English)
+ 289:
+ id: "KEY_4"
+ title: Keyboard 4 and $ (US English)
+ 290:
+ id: "KEY_5"
+ title: Keyboard 5 and % (US English)
+ 291:
+ id: "KEY_6"
+ title: Keyboard 6 and ^ (US English)
+ 292:
+ id: "KEY_7"
+ title: Keyboard 7 and & (US English)
+ 293:
+ id: "KEY_8"
+ title: Keyboard 8 and * (US English)
+ 294:
+ id: "KEY_9"
+ title: Keyboard 9 and ( (US English)
+ 295:
+ id: "KEY_0"
+ title: Keyboard 0 and ) (US English)
+ 296:
+ id: "ENTER"
+ title: Keyboard Return (US English)
+ icon: keyboard_return
+ 297:
+ id: "ESC"
+ title: Keyboard Escape (US English)
+ 298:
+ id: "BKSP"
+ title: Keyboard Backspace (US English)
+ icon: backspace
+ 299:
+ id: "TAB"
+ title: Keyboard Tab (US English)
+ icon: keyboard_tab
+ 300:
+ id: "KSC_2C"
+ title: Keyboard Space (US English)
+ description: |
+ The ASCII space is preferred over this raw scancode for the space bar.
+ icon: space_bar
+ 301:
+ id: "KSC_2D"
+ title: Keyboard - and _ (US English)
+ 302:
+ id: "KSC_2E"
+ title: Keyboard = and + (US English)
+ 303:
+ id: "KSC_2F"
+ title: Keyboard [ and { (US English)
+ 304:
+ id: "KSC_30"
+ title: Keyboard ] and } (US English)
+ 305:
+ id: "KSC_31"
+ title: Keyboard \ and | (US English)
+ 306:
+ id: "KSC_32"
+ title: Keyboard Non-US \# and ~ (US English)
+ 307:
+ id: "KSC_33"
+ title: "Keyboard ; and : (US English)"
+ 308:
+ id: "KSC_34"
+ title: Keyboard ' and " (US English)
+ 309:
+ id: "KSC_35"
+ title: Keyboard ` and ~ (US English)
+ 310:
+ id: "KSC_36"
+ title: Keyboard , and < (US English)
+ 311:
+ id: "KSC_37"
+ title: Keyboard . and > (US English)
+ 312:
+ id: "KSC_38"
+ title: Keyboard / and ? (US English)
+ 313:
+ id: "CAPSLOCK"
+ title: Keyboard Caps Lock
+ icon: shift_lock
+ 314:
+ id: "F1"
+ title: Keyboard F1
+ 315:
+ id: "F2"
+ title: Keyboard F2
+ 316:
+ id: "F3"
+ title: Keyboard F3
+ 317:
+ id: "F4"
+ title: Keyboard F4
+ 318:
+ id: "F5"
+ title: Keyboard F5
+ 319:
+ id: "F6"
+ title: Keyboard F6
+ 320:
+ id: "F7"
+ title: Keyboard F7
+ 321:
+ id: "F8"
+ title: Keyboard F8
+ 322:
+ id: "F9"
+ title: Keyboard F9
+ 323:
+ id: "F10"
+ title: Keyboard F10
+ 324:
+ id: "F11"
+ title: Keyboard F11
+ 325:
+ id: "F12"
+ title: Keyboard F12
+ 326:
+ id: "PRTSCN"
+ title: Keyboard Print Screen
+ icon: screenshot_monitor
+ 327:
+ id: "SCRLK"
+ title: Keyboard Scroll Lock
+ 328:
+ id: "PAUSE"
+ title: Keyboard Pause
+ 329:
+ id: "INSERT"
+ title: Keyboard Insert
+ icon: insert_text
+ 330:
+ id: "HOME"
+ title: Keyboard Home
+ icon: home
+ 331:
+ id: "PGUP"
+ title: Keyboard Page Up
+ icon: move_up
+ 332:
+ id: "DELETE"
+ title: Keyboard Delete Forward
+ 333:
+ id: "END"
+ title: Keyboard End
+ 334:
+ id: "PGDN"
+ title: Keyboard Page Down
+ icon: move_down
+ 335:
+ id: "ARROW_RT"
+ title: Keyboard Right Arrow
+ icon: keyboard_arrow_right
+ 336:
+ id: "ARROW_LF"
+ title: Keyboard Left Arrow
+ icon: keyboard_arrow_left
+ 337:
+ id: "ARROW_DN"
+ title: Keyboard Down Arrow
+ icon: keyboard_arrow_down
+ 338:
+ id: "ARROW_UP"
+ title: Keyboard Up Arrow
+ icon: keyboard_arrow_up
+ 339:
+ id: "NUMLOCK"
+ title: Keyboard Num Lock and Clear
+ 340:
+ id: "KP_SLASH"
+ title: Keypad /
+ 341:
+ id: "KP_ASTER"
+ title: Keypad *
+ 342:
+ id: "KP_MINUS"
+ title: Keypad -
+ 343:
+ id: "KP_PLUS"
+ title: Keypad +
+ 344:
+ id: "KP_ENTER"
+ title: Keypad Enter
+ 345:
+ id: "KP_1"
+ title: Keypad 1 and End
+ 346:
+ id: "KP_2"
+ title: Keypad 2 and Down Arrow
+ 347:
+ id: "KP_3"
+ title: Keypad 3 and Page Down
+ 348:
+ id: "KP_4"
+ title: Keypad 4 and Left Arrow
+ 349:
+ id: "KP_5"
+ title: Keypad 5
+ 350:
+ id: "KP_6"
+ title: Keypad 6 and Rigth Arrow
+ 351:
+ id: "KP_7"
+ title: Keypad 7 and Home
+ 352:
+ id: "KP_8"
+ title: Keypad 8 and Up Arrow
+ 353:
+ id: "KP_9"
+ title: Keypad 9 and Page Up
+ 354:
+ id: "KP_0"
+ title: Keypad 0 and Insert
+ 355:
+ id: "KP_DOT"
+ title: Keypad . and Delete
+ 356:
+ id: "KSC_64"
+ title: Keyboard Non-US \ and | (US English)
+ 357:
+ id: "COMPOSE"
+ title: Keyboard Application
+ description: Officially supported by Win, Unix, and Boot
+ 358:
+ id: "POWER"
+ title: Keyboard Power
+ description: Only officially supported by Mac and Unix
+ 359:
+ id: "KP_EQUAL"
+ title: Keypad =
+ description: Only officially supported by Mac
+ 360:
+ id: "F13"
+ title: Keyboard F13
+ description: Only officially supported by Mac
+ 361:
+ id: "F14"
+ title: Keyboard F14
+ description: Only officially supported by Mac
+ 362:
+ id: "F15"
+ title: Keyboard F15
+ description: Only officially supported by Mac
+ 363:
+ id: "F16"
+ title: Keyboard F16
+ description: Only officially supported by Mac
+ 364:
+ id: "F17"
+ title: Keyboard F17
+ description: Not required to be supported by any OS
+ 365:
+ id: "F18"
+ title: Keyboard F18
+ description: Not required to be supported by any OS
+ 366:
+ id: "F19"
+ title: Keyboard F19
+ description: Not required to be supported by any OS
+ 367:
+ id: "F20"
+ title: Keyboard F20
+ description: Not required to be supported by any OS
+ 368:
+ id: "F21"
+ title: Keyboard F21
+ description: Not required to be supported by any OS
+ 369:
+ id: "F22"
+ title: Keyboard F22
+ description: Not required to be supported by any OS
+ 370:
+ id: "F23"
+ title: Keyboard F23
+ description: Not required to be supported by any OS
+ 371:
+ id: "F24"
+ title: Keyboard F24
+ description: Not required to be supported by any OS
+ 372:
+ id: "EXECUTE"
+ title: Keyboard Execute
+ description: Only officially supported by Unix
+ icon: terminal
+ 373:
+ id: "HELP"
+ title: Keyboard Help
+ description: Only officially supported by Unix
+ icon: help
+ 374:
+ id: "MENU"
+ title: Keyboard Menu
+ description: Only officially supported by Unix
+ icon: menu
+ 375:
+ id: "SELECT"
+ title: Keyboard Select
+ description: Only officially supported by Unix
+ icon: select
+ 376:
+ id: "STOP"
+ title: Keyboard Stop
+ description: Only officially supported by Unix
+ icon: stop_circle
+ 377:
+ id: "AGAIN"
+ title: Keyboard Again
+ description: Only officially supported by Unix
+ icon: redo
+ 378:
+ id: "UNDO"
+ title: Keyboard Undo
+ description: Only officially supported by Unix
+ icon: undo
+ 379:
+ id: "CUT"
+ title: Keyboard Cut
+ description: Only officially supported by Unix
+ icon: content_cut
+ 380:
+ id: "COPY"
+ title: Keyboard Copy
+ description: Only officially supported by Unix
+ icon: content_copy
+ 381:
+ id: "PASTE"
+ title: Keyboard Paste
+ description: Only officially supported by Unix
+ icon: content_paste
+ 382:
+ id: "FIND"
+ title: Keyboard Find
+ description: Only officially supported by Unix
+ icon: search
+ 383:
+ id: "MUTE"
+ title: Keyboard Mute
+ description: Only officially supported by Unix
+ icon: no_sound
+ 384:
+ id: "VOL_UP"
+ title: Keyboard Volume Up
+ description: Only officially supported by Unix
+ icon: volume_up
+ 385:
+ id: "VOL_DN"
+ title: Keyboard Volume Down
+ description: Only officially supported by Unix
+ icon: volume_down
+ 386:
+ id: "KSC_82"
+ title: Keyboard Locking Caps Lock
+ description: Only officially supported by Unix
+ 387:
+ id: "KSC_83"
+ title: Keyboard Locking Num Lock
+ description: Only officially supported by Unix
+ 388:
+ id: "KSC_84"
+ title: Keyboard Locking Scroll Lock
+ description: Only officially supported by Unix
+ 389:
+ id: "KP_COMMA"
+ title: Keypad Comma
+ description: Not required to be supported by any OS
+ 390:
+ id: "KSC_86"
+ title: Keypad Equals Sign
+ description: Not required to be supported by any OS
+ 391:
+ id: "INTL1"
+ title: Keyboard International1
+ description: Not required to be supported by any OS
+ 392:
+ id: "INTL2"
+ title: Keyboard International2
+ description: Not required to be supported by any OS
+ 393:
+ id: "INTL3"
+ title: Keyboard International3
+ description: Not required to be supported by any OS
+ 394:
+ id: "INTL4"
+ title: Keyboard International4
+ description: Not required to be supported by any OS
+ 395:
+ id: "INTL5"
+ title: Keyboard International5
+ description: Not required to be supported by any OS
+ 396:
+ id: "INTL6"
+ title: Keyboard International6
+ description: Not required to be supported by any OS
+ 397:
+ id: "INTL7"
+ title: Keyboard International7
+ description: Not required to be supported by any OS
+ 398:
+ id: "INTL8"
+ title: Keyboard International8
+ description: Not required to be supported by any OS
+ 399:
+ id: "INTL9"
+ title: Keyboard International9
+ description: Not required to be supported by any OS
+ 400:
+ id: "LANG1"
+ title: Keyboard LANG1
+ description: Not required to be supported by any OS
+ 401:
+ id: "LANG2"
+ title: Keyboard LANG2
+ description: Not required to be supported by any OS
+ 402:
+ id: "LANG3"
+ title: Keyboard LANG3
+ description: Not required to be supported by any OS
+ 403:
+ id: "LANG4"
+ title: Keyboard LANG4
+ description: Not required to be supported by any OS
+ 404:
+ id: "LANG5"
+ title: Keyboard LANG5
+ description: Not required to be supported by any OS
+ 405:
+ id: "LANG6"
+ title: Keyboard LANG6
+ description: Not required to be supported by any OS
+ 406:
+ id: "LANG7"
+ title: Keyboard LANG7
+ description: Not required to be supported by any OS
+ 407:
+ id: "LANG8"
+ title: Keyboard LANG8
+ description: Not required to be supported by any OS
+ 408:
+ id: "LANG9"
+ title: Keyboard LANG9
+ description: Not required to be supported by any OS
+ 409:
+ id: "KSC_99"
+ title: Keyboard Alternate Erase
+ description: Not required to be supported by any OS
+ 410:
+ id: "KSC_9A"
+ title: Keyboard SysReq/Attention
+ description: Not required to be supported by any OS
+ 411:
+ id: "KSC_9B"
+ title: Keyboard Cancel
+ description: Not required to be supported by any OS
+ 412:
+ id: "KSC_9C"
+ title: Keyboard Clear
+ description: Not required to be supported by any OS
+ 413:
+ id: "KSC_9D"
+ title: Keyboard Prior
+ description: Not required to be supported by any OS
+ 414:
+ id: "KSC_9E"
+ title: Keyboard Return
+ description: Not required to be supported by any OS
+ 415:
+ id: "KSC_9F"
+ title: Keyboard Separator
+ description: Not required to be supported by any OS
+ 416:
+ id: "KSC_A0"
+ title: Keyboard Out
+ description: Not required to be supported by any OS
+ 417:
+ id: "KSC_A1"
+ title: Keyboard Oper
+ description: Not required to be supported by any OS
+ 418:
+ id: "KSC_A2"
+ title: Keyboard Clear/Again
+ description: Not required to be supported by any OS
+ 419:
+ id: "KSC_A3"
+ title: Keyboard CrSel/Props
+ description: Not required to be supported by any OS
+ 420:
+ id: "KSC_A4"
+ title: Keyboard ExSel
+ description: Not required to be supported by any OS
+ 421:
+ id: "KSC_A5"
+ description: Not required to be supported by any OS
+ 422:
+ id: "KSC_A6"
+ description: Not required to be supported by any OS
+ 423:
+ id: "KSC_A7"
+ description: Not required to be supported by any OS
+ 424:
+ id: "KSC_A8"
+ description: Not required to be supported by any OS
+ 425:
+ id: "KSC_A9"
+ description: Not required to be supported by any OS
+ 426:
+ id: "KSC_AA"
+ description: Not required to be supported by any OS
+ 427:
+ id: "KSC_AB"
+ description: Not required to be supported by any OS
+ 428:
+ id: "KSC_AC"
+ description: Not required to be supported by any OS
+ 429:
+ id: "KSC_AD"
+ description: Not required to be supported by any OS
+ 430:
+ id: "KSC_AE"
+ description: Not required to be supported by any OS
+ 431:
+ id: "KSC_AF"
+ description: Not required to be supported by any OS
+ 432:
+ id: "KSC_B0"
+ title: Keypad 00
+ description: Not required to be supported by any OS
+ 433:
+ id: "KSC_B1"
+ title: Keypad 000
+ description: Not required to be supported by any OS
+ 434:
+ id: "KSC_B2"
+ title: Thousands Separator
+ description: Not required to be supported by any OS
+ 435:
+ id: "KSC_B3"
+ title: Decimal Separator
+ description: Not required to be supported by any OS
+ 436:
+ id: "KSC_B4"
+ title: Currency Unit
+ description: Not required to be supported by any OS
+ 437:
+ id: "KSC_B5"
+ title: Currency Sub-unit
+ description: Not required to be supported by any OS
+ 438:
+ id: "KSC_B6"
+ title: Keypad (
+ description: Not required to be supported by any OS
+ 439:
+ id: "KSC_B7"
+ title: Keypad )
+ description: Not required to be supported by any OS
+ 440:
+ id: "KSC_B8"
+ title: Keypad {
+ description: Not required to be supported by any OS
+ 441:
+ id: "KSC_B9"
+ title: Keypad }
+ description: Not required to be supported by any OS
+ 442:
+ id: "KSC_BA"
+ title: Keypad Tab
+ description: Not required to be supported by any OS
+ 443:
+ id: "KSC_BB"
+ title: Keypad Backspace
+ description: Not required to be supported by any OS
+ 444:
+ id: "KSC_BC"
+ title: Keypad A
+ description: Not required to be supported by any OS
+ 445:
+ id: "KSC_BD"
+ title: Keypad B
+ description: Not required to be supported by any OS
+ 446:
+ id: "KSC_BE"
+ title: Keypad C
+ description: Not required to be supported by any OS
+ 447:
+ id: "KSC_BF"
+ title: Keypad D
+ description: Not required to be supported by any OS
+ 448:
+ id: "KSC_C0"
+ title: Keypad E
+ description: Not required to be supported by any OS
+ 449:
+ id: "KSC_C1"
+ title: Keypad F
+ description: Not required to be supported by any OS
+ 450:
+ id: "KSC_C2"
+ title: Keypad XOR
+ description: Not required to be supported by any OS
+ 451:
+ id: "KSC_C3"
+ title: Keypad ^
+ description: Not required to be supported by any OS
+ 452:
+ id: "KSC_C4"
+ title: Keypad %
+ description: Not required to be supported by any OS
+ 453:
+ id: "KSC_C5"
+ title: Keypad <
+ description: Not required to be supported by any OS
+ 454:
+ id: "KSC_C6"
+ title: Keypad >
+ description: Not required to be supported by any OS
+ 455:
+ id: "KSC_C7"
+ title: Keypad &
+ description: Not required to be supported by any OS
+ 456:
+ id: "KSC_C8"
+ title: Keypad &&
+ description: Not required to be supported by any OS
+ 457:
+ id: "KSC_C9"
+ title: Keypad |
+ description: Not required to be supported by any OS
+ 458:
+ id: "KSC_CA"
+ title: Keypad ||
+ description: Not required to be supported by any OS
+ 459:
+ id: "KSC_CB"
+ title:
+ Keypad:
+ description: Not required to be supported by any OS
+ 460:
+ id: "KSC_CC"
+ title: Keypad #
+ description: Not required to be supported by any OS
+ 461:
+ id: "KSC_CD"
+ title: Keypad Space
+ description: Not required to be supported by any OS
+ 462:
+ id: "KSC_CE"
+ title: Keypad @
+ description: Not required to be supported by any OS
+ 463:
+ id: "KSC_CF"
+ title: Keypad !
+ description: Not required to be supported by any OS
+ 464:
+ id: "KSC_D0"
+ title: Keypad Memory Store
+ description: Not required to be supported by any OS
+ 465:
+ id: "KSC_D1"
+ title: Keypad Memory Recall
+ description: Not required to be supported by any OS
+ 466:
+ id: "KSC_D2"
+ title: Keypad Memory Clear
+ description: Not required to be supported by any OS
+ 467:
+ id: "KSC_D3"
+ title: Keypad Memory Add
+ description: Not required to be supported by any OS
+ 468:
+ id: "KSC_D4"
+ title: Keypad Memory Subtract
+ description: Not required to be supported by any OS
+ 469:
+ id: "KSC_D5"
+ title: Keypad Memory Multiply
+ description: Not required to be supported by any OS
+ 470:
+ id: "KSC_D6"
+ title: Keypad Memory Divide
+ description: Not required to be supported by any OS
+ 471:
+ id: "KSC_D7"
+ title: Keypad +/-
+ description: Not required to be supported by any OS
+ 472:
+ id: "KSC_D8"
+ title: Keypad Clear
+ description: Not required to be supported by any OS
+ 473:
+ id: "KSC_D9"
+ title: Keypad Clear Entry
+ description: Not required to be supported by any OS
+ 474:
+ id: "KSC_DA"
+ title: Keypad Binary
+ description: Not required to be supported by any OS
+ 475:
+ id: "KSC_DB"
+ title: Keypad Octal
+ description: Not required to be supported by any OS
+ 476:
+ id: "KSC_DC"
+ title: Keypad Decimal
+ description: Not required to be supported by any OS
+ 477:
+ id: "KSC_DD"
+ title: Keypad Hexadecimal
+ description: Not required to be supported by any OS
+ 478:
+ id: "KSC_DE"
+ description: Not required to be supported by any OS
+ 479:
+ id: "KSC_DF"
+ description: Not required to be supported by any OS
+ 480:
+ id: "KSC_E0"
+ title: Keyboard Left Control
+ 481:
+ id: "KSC_E1"
+ title: Keyboard Left Shift
+ 482:
+ id: "KSC_E2"
+ title: Keyboard Left Alt
+ 483:
+ id: "KSC_E3"
+ title: Keyboard Left GUI
+ 484:
+ id: "KSC_E4"
+ title: Keyboard Right Control
+ 485:
+ id: "KSC_E5"
+ title: Keyboard Right Shift
+ 486:
+ id: "KSC_E6"
+ title: Keyboard Right Alt
+ 487:
+ id: "KSC_E7"
+ title: Keyboard Right GUI
+ 488:
+ id: "KSC_E8"
+ title: Media Play Pause
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 489:
+ id: "KSC_E9"
+ title: Media Stop CD
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 490:
+ id: "KSC_EA"
+ title: Media Previous Song
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 491:
+ id: "KSC_EB"
+ title: Media Next Song
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 492:
+ id: "KSC_EC"
+ title: Media Eject CD
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 493:
+ id: "KSC_ED"
+ title: Media Volume Up
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 494:
+ id: "KSC_EE"
+ title: Media Volume Down
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 495:
+ id: "KSC_EF"
+ title: Media Mute
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 496:
+ id: "KSC_F0"
+ title: Media www
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 497:
+ id: "KSC_F1"
+ title: Media Back
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 498:
+ id: "KSC_F2"
+ title: Media Forward
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 499:
+ id: "KSC_F3"
+ title: Media Stop
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 500:
+ id: "KSC_F4"
+ title: Media Find
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 501:
+ id: "KSC_F5"
+ title: Media Scroll Up
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 502:
+ id: "KSC_F6"
+ title: Media Scroll Down
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 503:
+ id: "KSC_F7"
+ title: Media Edit
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 504:
+ id: "KSC_F8"
+ title: Media Sleep
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 505:
+ id: "KSC_F9"
+ title: Media Coffee
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 506:
+ id: "KSC_FA"
+ title: Media Refresh
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 507:
+ id: "KSC_FB"
+ title: Media Calc
+ description: Not required to be supported by any OS. Possibly deprecated.
+ 508:
+ id: "KSC_FC"
+ description: Not required to be supported by any OS.
+ 509:
+ id: "KSC_FD"
+ description: Not required to be supported by any OS.
+ 510:
+ id: "KSC_FE"
+ description: Not required to be supported by any OS.
+ 511:
+ id: "KSC_FF"
+ description: Not required to be supported by any OS.
\ No newline at end of file
diff --git a/src/lib/components/RingInput.svelte b/src/lib/components/RingInput.svelte
index fee30cb2..02b36d41 100644
--- a/src/lib/components/RingInput.svelte
+++ b/src/lib/components/RingInput.svelte
@@ -39,11 +39,12 @@
{@const actions = getActions(id, $layout)}