From 7c39d747aa0133c91daf074f7a31c1e3a3dc3d4f Mon Sep 17 00:00:00 2001 From: Nick Coutsos Date: Fri, 30 Jun 2023 17:07:05 -0400 Subject: Rudimentary GitHub API status check --- 5858.6e8f5975904a2a2282f5.js | 3 +++ 5858.6e8f5975904a2a2282f5.js.LICENSE.txt | 1 + 5858.6e8f5975904a2a2282f5.js.map | 1 + 9657.aa3c39fe6f827e094083.js | 3 +++ 9657.aa3c39fe6f827e094083.js.LICENSE.txt | 1 + 9657.aa3c39fe6f827e094083.js.map | 1 + index.html | 2 +- main.8019d5f4a7d8269a3c78.js | 3 +++ main.8019d5f4a7d8269a3c78.js.LICENSE.txt | 1 + main.8019d5f4a7d8269a3c78.js.map | 1 + runtime.018f688d4e1244776013.js | 2 ++ runtime.018f688d4e1244776013.js.map | 1 + shared.8d18858839cd2d379cfe.js | 2 ++ shared.8d18858839cd2d379cfe.js.map | 1 + 14 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 5858.6e8f5975904a2a2282f5.js create mode 100644 5858.6e8f5975904a2a2282f5.js.LICENSE.txt create mode 100644 5858.6e8f5975904a2a2282f5.js.map create mode 100644 9657.aa3c39fe6f827e094083.js create mode 100644 9657.aa3c39fe6f827e094083.js.LICENSE.txt create mode 100644 9657.aa3c39fe6f827e094083.js.map create mode 100644 main.8019d5f4a7d8269a3c78.js create mode 100644 main.8019d5f4a7d8269a3c78.js.LICENSE.txt create mode 100644 main.8019d5f4a7d8269a3c78.js.map create mode 100644 runtime.018f688d4e1244776013.js create mode 100644 runtime.018f688d4e1244776013.js.map create mode 100644 shared.8d18858839cd2d379cfe.js create mode 100644 shared.8d18858839cd2d379cfe.js.map diff --git a/5858.6e8f5975904a2a2282f5.js b/5858.6e8f5975904a2a2282f5.js new file mode 100644 index 0000000..349bc08 --- /dev/null +++ b/5858.6e8f5975904a2a2282f5.js @@ -0,0 +1,3 @@ +/*! For license information please see 5858.6e8f5975904a2a2282f5.js.LICENSE.txt */ +(self.webpackChunkapp=self.webpackChunkapp||[]).push([[5858],{27926:function(t,e,r){"use strict";r.d(e,{Z:function(){return k}});var n=r(93379),o=r.n(n),i=r(7795),a=r.n(i),c=r(90569),u=r.n(c),l=r(3565),s=r.n(l),f=r(19216),h=r.n(f),p=r(44589),y=r.n(p),d=r(56281),v={};v.styleTagTransform=y(),v.setAttributes=s(),v.insert=u().bind(null,"head"),v.domAPI=a(),v.insertStyleElement=h(),o()(d.Z,v);var m=d.Z&&d.Z.locals?d.Z.locals:void 0,g=r(85893);function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}var w=["children","secondary","className"];function x(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function j(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,w);return(0,g.jsx)("button",j(j({className:[n,m.action,r&&m.secondary].join(" ")},o),{},{children:e}))}E.defaultProps={className:""};var k=E},8101:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return Pt}});var n=r(50361),o=r.n(n),i=r(67294),a=r(69247),c=r(41051);function u(t){return new Promise(((e,r)=>{t.oncomplete=t.onsuccess=()=>e(t.result),t.onabort=t.onerror=()=>r(t.error)}))}let l;function s(){return l||(l=function(t,e){const r=indexedDB.open("keyval-store");r.onupgradeneeded=()=>r.result.createObjectStore(e);const n=u(r);return(t,r)=>n.then((n=>r(n.transaction(e,t).objectStore(e))))}(0,"keyval")),l}function f(t,e=s()){return e("readonly",(e=>u(e.get(t))))}function h(t,e,r=s()){return r("readwrite",(r=>(r.put(e,t),u(r.transaction))))}var p=r(97168),y=r(85893);function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function v(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function m(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:L(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function I(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function C(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){I(i,n,o,a,c,"next",t)}function c(t){I(i,n,o,a,c,"throw",t)}a(void 0)}))}}function F(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:L(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Y(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function H(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){Y(i,n,o,a,c,"next",t)}function c(t){Y(i,n,o,a,c,"throw",t)}a(void 0)}))}}function D(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:L(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function X(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function V(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){X(i,n,o,a,c,"next",t)}function c(t){X(i,n,o,a,c,"throw",t)}a(void 0)}))}}function Q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&(0,y.jsx)("p",{children:(0,y.jsx)("em",{children:"Some keymap files could not be matched with known keyboards and will not be imported. This is a work in progress and in the future you will have the option to import your own metadata file."})}),(0,y.jsxs)("div",{style:{textAlign:"center"},children:[(0,y.jsx)(R.Z,{onClick:s,children:"Continue"}),(0,y.jsx)(R.Z,{onClick:f,secondary:!0,children:"Cancel"})]})]})})}function et(t){return t.replace(".keymap","")in U}function rt(t){var e=t.value;return(0,y.jsxs)(y.Fragment,{children:[et(e.name)?(0,y.jsx)(c.Z,{name:"check",style:{color:"mediumseagreen"}}):(0,y.jsx)(c.Z,{name:"question",style:{color:"firebrick"}})," ",e.name]})}var nt=r(18446),ot=r.n(nt),it=r(95998),at=r(83858),ct=r.n(at);function ut(t){return ut="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ut(t)}function lt(){lt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new k(o||[]);return n(a,"_invoke",{value:x(t,r,c)}),a}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function h(){}function p(){}function y(){}var d={};u(d,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(L([])));m&&m!==e&&r.call(m,i)&&(d=m);var g=y.prototype=h.prototype=Object.create(d);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=s(t[n],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==ut(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function x(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=j(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function j(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,j(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=s(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function L(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:L(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function st(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function ft(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){st(i,n,o,a,c,"next",t)}function c(t){st(i,n,o,a,c,"throw",t)}a(void 0)}))}}function ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:L(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function At(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function St(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?(0,y.jsx)(q,{}):(0,y.jsx)(N,{}),(null==l?void 0:l.keymapParsed)&&(0,y.jsx)(mt,{}),s&&(0,y.jsx)(tt,{}),(0,y.jsx)(bt,{}),h&&(0,y.jsx)(Et,{})]})},function(t){return(0,y.jsx)(S,{children:(0,y.jsx)(_t,m({},t))})})},56281:function(t,e,r){"use strict";var n=r(87537),o=r.n(n),i=r(23645),a=r.n(i)()(o());a.push([t.id,"button.pi2Ig8c3Fdh4H2Jpxdo7 {\n display: inline-block;\n cursor: pointer;\n background-color: var(--hover-selection);\n color: white;\n\n font-size: 16px;\n border: none;\n border-radius: 5px;\n padding: 0 5px;\n\n height: 30px;\n line-height: 30px;\n vertical-align: middle;\n}\n\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\n color: var(--fg);\n background-color: transparent;\n}\n\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\n filter: saturate(20%);\n opacity: .5;\n cursor: not-allowed;\n}\n","",{version:3,sources:["webpack://./src/Common/action-button.module.css"],names:[],mappings:"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB",sourcesContent:["button.action {\n display: inline-block;\n cursor: pointer;\n background-color: var(--hover-selection);\n color: white;\n\n font-size: 16px;\n border: none;\n border-radius: 5px;\n padding: 0 5px;\n\n height: 30px;\n line-height: 30px;\n vertical-align: middle;\n}\n\nbutton.secondary {\n color: var(--fg);\n background-color: transparent;\n}\n\nbutton.action[disabled] {\n filter: saturate(20%);\n opacity: .5;\n cursor: not-allowed;\n}\n"],sourceRoot:""}]),a.locals={action:"pi2Ig8c3Fdh4H2Jpxdo7",secondary:"Ctpu4E2dZYJ6g8CUGFOF"},e.Z=a},25690:function(t,e,r){var n={"./a_dux.json":[73158,3712],"./bat43.json":[60888,3712],"./bdn9_rev2.json":[94591,3712],"./bfo9000.json":[19684,3712],"./boardsource3x4.json":[88602,3712],"./boardsource5x12.json":[8058,3712],"./bt60_v1.json":[92628,3712],"./bt60_v1_hs.json":[84628,3712],"./bt60_v2.json":[9417,3712],"./bt65_v1.json":[88455,3712],"./bt75_v1.json":[25397,3712],"./chalice.json":[7936,3712],"./clog.json":[31638,3712],"./contra.json":[42718,3712],"./corne.json":[26453,3712],"./corneish_zen.json":[39757,3712],"./cradio.json":[62089,3712],"./crbn.json":[48945,3712],"./eek.json":[63072,3712],"./elephant42.json":[83634,3712],"./ergodash.json":[68972,3712],"./ergodox.json":[75507,3712],"./eternal_keypad.json":[69416,3712],"./eternal_keypad_lefty.json":[56785,3712],"./ferris_rev02.json":[97365,3712],"./fourier.json":[14446,3712],"./helix.json":[73549,3712],"./hummingbird.json":[98321,3712],"./iris.json":[55262,3712],"./jian.json":[46228,3712],"./jiran.json":[14465,3712],"./jorne.json":[19151,3712],"./kbdfans_tofu65_v2.json":[7450,3712],"./knob_goblin.json":[71497,3712],"./kyria.json":[34458,3712],"./kyria_rev2.json":[70165,3712],"./kyria_rev3.json":[33669,3712],"./leeloo.json":[53677,3712],"./lily58.json":[21479,3712],"./lotus58.json":[63918,3712],"./m60.json":[53132,3712],"./microdox.json":[56792,3712],"./murphpad.json":[8662,3712],"./naked60.json":[79707,3712],"./nibble.json":[58244,3712],"./nice60.json":[41501,3712],"./osprette.json":[13467,3712],"./pancake.json":[19011,3712],"./planck_rev6.json":[55991,3712],"./preonic_rev3.json":[47308,3712],"./qaz.json":[46923,3712],"./quefrency.json":[23956,3712],"./redox.json":[17104,3712],"./reviung41.json":[71414,3712],"./reviung5.json":[31009,3712],"./romac.json":[15683,3712],"./romac_plus.json":[55318,3712],"./s40nc.json":[56036,3712],"./snap.json":[24380,3712],"./sofle.json":[45082,3712],"./splitkb_aurora_corne.json":[20216,3712],"./splitkb_aurora_lily58.json":[2674,3712],"./splitkb_aurora_sweep.json":[9738,3712],"./splitreus62.json":[47003,3712],"./tg4x.json":[87454,3712],"./tidbit.json":[60386,3712],"./two_percent_milk.json":[67150,3712],"./waterfowl.json":[14194,3712],"./zmk_uno.json":[71578,3712],"./zodiark.json":[12069,3712]};function o(t){if(!r.o(n,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=n[t],o=e[0];return r.e(e[1]).then((function(){return r.t(o,19)}))}o.keys=function(){return Object.keys(n)},o.id=25690,t.exports=o},66317:function(){},99918:function(){}}]); +//# sourceMappingURL=5858.6e8f5975904a2a2282f5.js.map \ No newline at end of file diff --git a/5858.6e8f5975904a2a2282f5.js.LICENSE.txt b/5858.6e8f5975904a2a2282f5.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/5858.6e8f5975904a2a2282f5.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/5858.6e8f5975904a2a2282f5.js.map b/5858.6e8f5975904a2a2282f5.js.map new file mode 100644 index 0000000..f2274a0 --- /dev/null +++ b/5858.6e8f5975904a2a2282f5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"5858.6e8f5975904a2a2282f5.js","mappings":"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U,uBACV,UAAa,wBAEd,6BCXA,IAAIlF,EAAM,CACT,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,mBAAoB,CACnB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,yBAA0B,CACzB,KACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,iBAAkB,CACjB,KACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,KACA,MAED,cAAe,CACd,MACA,MAED,gBAAiB,CAChB,MACA,MAED,eAAgB,CACf,MACA,MAED,sBAAuB,CACtB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,cAAe,CACd,MACA,MAED,aAAc,CACb,MACA,MAED,oBAAqB,CACpB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,eAAgB,CACf,MACA,MAED,qBAAsB,CACrB,MACA,MAED,cAAe,CACd,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,2BAA4B,CAC3B,KACA,MAED,qBAAsB,CACrB,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,kBAAmB,CAClB,KACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,aAAc,CACb,MACA,MAED,mBAAoB,CACnB,MACA,MAED,eAAgB,CACf,MACA,MAED,mBAAoB,CACnB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,eAAgB,CACf,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,+BAAgC,CAC/B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,qBAAsB,CACrB,MACA,MAED,cAAe,CACd,MACA,MAED,gBAAiB,CAChB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,OAGF,SAASmF,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEtF,EAAKoF,GAC9B,OAAOrL,QAAQC,UAAUmB,MAAK,WAC7B,IAAIoK,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,CACP,IAGD,IAAIG,EAAM1F,EAAIoF,GAAMjF,EAAKuF,EAAI,GAC7B,OAAOL,EAAoBE,EAAEG,EAAI,IAAIvK,MAAK,WACzC,OAAOkK,EAAoBM,EAAExF,EAAI,GAClC,GACD,CACAgF,EAAoBxG,KAAO,WAAa,OAAOD,OAAOC,KAAKqB,EAAM,EACjEmF,EAAoBhF,GAAK,MACzB8E,EAAOW,QAAUT","sources":["webpack:///./src/Common/action-button.module.css?ed83","webpack:///./src/Common/ActionButton.js","webpack:///./node_modules/idb-keyval/dist/index.js","webpack:///./src/Sources/FileSystem/store.js","webpack:///./src/Sources/FileSystem/ImportKeymapsButton.js","webpack:///./src/Sources/FileSystem/FileSystemKeymapPicker.js","webpack:///./src/Sources/FileSystem/ImportKeymapsDialog.js","webpack:///./src/Sources/FileSystem/updater.js","webpack:///./src/Sources/FileSystem/ExportKeymapButton.js","webpack:///./src/Sources/FileSystem/FeedbackModalButton.js","webpack:///./src/Sources/FileSystem/FeedbackDialog.js","webpack:///./src/Sources/FileSystem/FileSystemPicker.js","webpack:///./src/Common/action-button.module.css","webpack:///./node_modules/keymap-editor-contrib/keyboard-data/ lazy ^\\.\\/.*\\.json$ include: \\.json$ chunkName: keyboard-data/[request]-metadata namespace object"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './action-button.module.css'\n\nfunction ActionButton ({ children, secondary, className, ...props }) {\n return (\n \n {children}\n \n )\n}\n\nActionButton.defaultProps = {\n className: ''\n}\n\nexport default ActionButton\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n","import { get as idbGet, set as idbSet } from 'idb-keyval'\nimport { createContext, useMemo, useReducer } from 'react'\nimport { createSlice } from '@reduxjs/toolkit'\n\nconst STORAGE_KEY_HANDLES = 'KEYMAP_EDITOR_IDB_FS_KEYMAP_HANDLES'\nconst STORAGE_KEY_SELECTED_HANDLE_INDEX = 'KEYMAP_EDITOR_IDB_FS_KEYMAP_SELECTED_HANDLE_INDEX'\n\n// Using thunks would be better but because I'm not putting this slice into a\n// proper redux store I don't actually have the thunk middleware loaded\n// TODO: is adding the middleware manually feasible?\n// TODO: is having multiple independent stores possible?\nexport const loadHandles = () => idbGet(STORAGE_KEY_HANDLES)\nexport const saveHandles = handles => idbSet(STORAGE_KEY_HANDLES, handles)\nexport const loadActiveHandle = () => idbGet(STORAGE_KEY_SELECTED_HANDLE_INDEX)\nexport const saveActiveHandle = index => idbSet(STORAGE_KEY_SELECTED_HANDLE_INDEX, index)\n\nconst initialState = () => ({\n keymapHandles: [],\n selectedHandleIndex: null,\n activeKeymap: {\n handleIndex: null,\n keymapRaw: null,\n keymapParsed: null,\n metadataParsed: null\n },\n importModalOpen: false,\n feedbackModalOpen: false,\n pendingImports: null\n})\n\nconst slice = createSlice({\n name: 'filesystem-picker',\n initialState,\n reducers: {\n openImportModal (state) { state.importModalOpen = true },\n closeImportModal (state) { state.importModalOpen = false },\n openFeedbackModal (state) { state.feedbackModalOpen = true },\n closeFeedbackModal (state) { state.feedbackModalOpen = false },\n selectFilesForImport (state, action) {\n const { handles } = action.payload\n state.pendingImports = handles\n },\n updatedHandles (state, action) {\n state.keymapHandles = action.payload.handles\n },\n initHandles (state, action) {\n const { handles = [] } = action.payload\n // No point in trying to initialize the active handle based on a previous\n // session, as this is likely happening during the initial load before any\n // user interaction and therefore we can't request user permissions.\n state.keymapHandles = handles\n },\n selectHandle (state, action) {\n state.selectedHandleIndex = action.payload.index\n },\n selectKeymap (state, action) {\n const { handleIndex, keymapRaw, keymapParsed, metadataParsed } = action.payload\n state.activeKeymap = {\n handleIndex,\n keymapRaw,\n keymapParsed,\n metadataParsed\n }\n },\n updateActiveKeymap (state, action) {\n const { keymapParsed, keymapRaw } = action.payload\n state.activeKeymap.keymapParsed = keymapParsed\n state.activeKeymap.keymapRaw = keymapRaw\n }\n }\n})\n\nfunction useActionDispatchers (dispatch) {\n return useMemo(() => (\n Object.keys(slice.actions).reduce((actions, action) => {\n actions[action] = (...args) => dispatch(slice.actions[action](...args))\n return actions\n }, {})\n ), [dispatch])\n}\n\nexport function useFileSystemStore () {\n const [state, dispatch] = useReducer(slice.reducer, null, initialState)\n const dispatchers = useActionDispatchers(dispatch)\n\n return [state, dispatchers]\n}\n\nexport const FileSystemContext = createContext([{}, {}])\n\nexport function FileSystemStore ({ children }) {\n const [state, dispatchers] = useFileSystemStore()\n\n return (\n \n {children}\n \n )\n}\n\nexport function withFileSystemStore (Component) {\n return props => (\n \n \n \n )\n}\n","import { useCallback, useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { FileSystemContext } from './store'\n\nexport default function ImportKeymapsButton () {\n const [, { openImportModal, selectFilesForImport }] = useContext(FileSystemContext)\n const handleClick = useCallback(async () => {\n const handles = await window.showOpenFilePicker({\n mode: 'readwrite',\n multiple: true,\n excludeAcceptAllOption: true,\n types: [{\n accept: {\n 'text/plain': ['.keymap']\n }\n }]\n })\n\n selectFilesForImport({ handles })\n openImportModal()\n }, [openImportModal, selectFilesForImport])\n\n return (\n \n )\n}\n","import { useCallback, useContext, useEffect, useMemo } from 'react'\n\nimport { Select } from '../Controls'\nimport ImportKeymapsButton from './ImportKeymapsButton'\nimport { FileSystemContext, saveActiveHandle } from './store'\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\nimport { stripLegacyProperties } from '../../keymap'\n\nconst fileOptions = { mode: 'read' }\n\nexport default function FileSystemKeymapPicker () {\n const [{ keymapHandles, selectedHandleIndex }, { selectHandle, selectKeymap }] = useContext(FileSystemContext)\n const choices = useMemo(() => keymapHandles.map((handle, i) => ({\n id: i, name: handle.name\n })), [keymapHandles])\n\n const handleSelect = useCallback(async choice => {\n await saveActiveHandle(choice.id)\n selectHandle({ index: choice.id })\n }, [selectHandle])\n\n useEffect(() => {\n const index = selectedHandleIndex\n const handle = keymapHandles[index]\n\n if (!handle) {\n return\n }\n\n ;(async function () {\n if (\n await handle.queryPermission(fileOptions) !== 'granted' &&\n await handle.requestPermission(fileOptions) !== 'granted'\n ) {\n return\n }\n\n const name = handle.name.replace('.keymap', '')\n const file = await handle.getFile()\n const text = await file.text()\n const parsed = await extractKeymapData(text)\n const metadata = await import(\n /* webpackInclude: /\\.json$/ */\n /* webpackMode: \"lazy\" */\n /* webpackChunkName: \"keyboard-data/[request]-metadata\" */\n `keymap-editor-contrib/keyboard-data/${name}.json`\n )\n\n stripLegacyProperties(parsed)\n selectKeymap({\n handleIndex: index,\n keymapRaw: text,\n keymapParsed: parsed,\n metadataParsed: metadata\n })\n })()\n }, [keymapHandles, selectedHandleIndex, selectKeymap])\n\n const value = useMemo(\n () => choices[selectedHandleIndex],\n [choices, selectedHandleIndex]\n )\n\n return (\n option.name}\n getOptionValue={option => option.id}\n >\n \n \n )\n}\n","import { useCallback, useContext, useMemo } from 'react'\n\nimport keyboardCatalog from 'keymap-editor-contrib/keyboard-catalog.json'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Icon from '../../Common/Icon'\nimport Modal from '../../Common/Modal'\nimport { FileSystemContext, saveHandles } from './store'\n\nexport default function ImportKeymapsDialog () {\n const [{ pendingImports }, { closeImportModal, updatedHandles }] = useContext(FileSystemContext)\n const acceptedImports = useMemo(() => pendingImports.filter(handle => keymapInCatalog(handle.name)), [pendingImports])\n const rejectedImports = useMemo(() => pendingImports.filter(handle => !keymapInCatalog(handle.name)), [pendingImports])\n\n const handleConfirm = useCallback(async () => {\n await saveHandles(acceptedImports)\n saveHandles(acceptedImports)\n updatedHandles({ handles: acceptedImports })\n closeImportModal()\n }, [acceptedImports, updatedHandles, closeImportModal])\n\n const handleCancel = useCallback(() => {\n closeImportModal()\n }, [closeImportModal])\n\n return (\n \n \n

Importing Keymaps

\n

Keymap files ready to be imported

\n
    \n {pendingImports.map((handle, i) => (\n
  • \n ))}\n
\n {rejectedImports.length > 0 && (\n

\n \n Some keymap files could not be matched with known keyboards and\n will not be imported. This is a work in progress and in the future\n you will have the option to import your own metadata file.\n \n

\n )}\n
\n Continue\n Cancel\n
\n
\n
\n )\n}\n\nfunction keymapInCatalog (name) {\n return name.replace('.keymap', '') in keyboardCatalog\n}\n\nfunction Handle ({ value }) {\n return (\n <>\n {keymapInCatalog(value.name)\n ? \n : \n } {value.name}\n \n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport isEqual from 'lodash/isEqual'\nimport { useCallback, useContext, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { FileSystemContext } from './store'\nimport applyKeymapChanges from 'keymap-editor-zmk-backend/lib/apply-keymap-changes'\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\nimport { stripLegacyProperties } from '../../keymap'\n\nconst keymapSelector = state => state.keyboard?.keymap\nconst settingsSelector = state => state.experimentalSettings\n\nconst fileOptions = { mode: 'readwrite' }\n\nexport default function useKeymapUpdater () {\n const appKeymapState = useSelector(keymapSelector)\n const { enableBehaviorEditing = false } = useSelector(settingsSelector)\n const [\n { keymapHandles, activeKeymap },\n { updateActiveKeymap }\n ] = useContext(FileSystemContext)\n\n const updateNeeded = useMemo(() => (\n appKeymapState &&\n activeKeymap?.keymapParsed &&\n !isEqual(appKeymapState, activeKeymap.keymapParsed)\n ), [appKeymapState, activeKeymap])\n\n const update = useCallback(async function () {\n const handle = keymapHandles[activeKeymap.handleIndex]\n\n if (!handle) {\n return\n }\n\n if (\n await handle.queryPermission(fileOptions) !== 'granted' &&\n await handle.requestPermission(fileOptions) !== 'granted'\n ) {\n return\n }\n\n // When opening the clipboard dialog and a previously parsed keymap differs\n // from the app's current keymap state we're probably wanting to update the\n // keymap source\n const { layouts } = activeKeymap.metadataParsed\n const preferredLayout = appKeymapState.chosen['zmk,matrix_transform']\n ? appKeymapState.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n const defaultLayout = Object.keys(layouts)[0]\n const { layout } = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n const raw = await applyKeymapChanges(layout, cloneDeep(appKeymapState), activeKeymap.keymapRaw, { enableBehaviorEditing })\n const parsed = await extractKeymapData(raw)\n stripLegacyProperties(parsed)\n\n const stream = await handle.createWritable()\n await stream.write(raw)\n stream.close()\n\n updateActiveKeymap({ keymapParsed: parsed, keymapRaw: raw })\n }, [appKeymapState, keymapHandles, activeKeymap, updateActiveKeymap, enableBehaviorEditing])\n\n return [updateNeeded, update]\n}\n","import Icon from '../../Common/Icon'\nimport useKeymapUpdater from './updater'\n\nexport default function ExportKeymapButton () {\n const [updateNeeded, update] = useKeymapUpdater()\n return (\n \n \n \n )\n}\n","import { useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { FileSystemContext } from './store'\n\nexport default function FeedbackModalButton () {\n const [, { openFeedbackModal }] = useContext(FileSystemContext)\n\n return (\n \n )\n}\n","import { useContext } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\nimport Link from '../../Common/Link'\nimport {\n GitHubIssuesLink,\n DiscordProfileLink\n} from '../../Dialogs/support'\n\nimport { FileSystemContext } from './store'\n\nconst discussionUrl = 'https://github.com/nickcoutsos/keymap-editor/discussions/106'\nconst DiscussionLink = (\n \n Feature Discussion\n \n)\n\nexport default function FeedbackDialog () {\n const [, { closeFeedbackModal }] = useContext(FileSystemContext)\n\n return (\n \n \n

Beta Feedback

\n

Hey, feel free to ignore this!

\n

\n I just launched this feature very quickly, I hope it's working well\n for you! Your feedback, if you can spare a moment, would be immensely\n helpful to me. This feature is completely browser-based which means I\n have no server analytics, so even just letting me know that it worked\n would be cool!\n

\n

Good ways to contact me:

\n
    \n
  • Ping me at {DiscordProfileLink}
  • \n
  • File an issue at {GitHubIssuesLink}
  • \n
  • Join the {DiscussionLink}
  • \n
\n
\n \n Back to editor\n \n
\n
\n
\n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport { useContext, useEffect } from 'react'\n\nimport FileSystemKeymapPicker from './FileSystemKeymapPicker'\nimport ImportKeymapsButton from './ImportKeymapsButton'\nimport ImportKeymapsDialog from './ImportKeymapsDialog'\nimport ExportKeymapButton from './ExportKeymapButton'\nimport { loadHandles, FileSystemContext, withFileSystemStore, loadActiveHandle } from './store'\nimport FeedbackModalButton from './FeedbackModalButton'\nimport FeedbackDialog from './FeedbackDialog'\n\nfunction FileSystemPicker ({ onSelect }) {\n const [{\n keymapHandles,\n activeKeymap,\n importModalOpen,\n feedbackModalOpen\n }, { initHandles }] = useContext(FileSystemContext)\n\n useEffect(() => {\n ;(async () => {\n const handles = await loadHandles()\n const activeHandle = await loadActiveHandle()\n\n initHandles({ handles, activeHandle })\n })()\n }, [initHandles])\n\n useEffect(() => {\n if (!activeKeymap.keymapParsed) {\n return\n }\n\n const { keymapParsed: keymap, metadataParsed: metadata } = activeKeymap\n const { layouts } = metadata\n const preferredLayout = keymap.chosen['zmk,matrix_transform']\n ? keymap.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n const defaultLayout = Object.keys(layouts)[0]\n const layoutMetadata = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n onSelect(cloneDeep({\n source: 'filesystem',\n keyboard: metadata.id,\n layoutMetadata,\n layout: layoutMetadata.layout,\n keymap,\n sensors: layoutMetadata.sensors || []\n }))\n }, [activeKeymap, onSelect])\n\n return (\n <>\n {keymapHandles.length > 0\n ? \n : }\n {activeKeymap?.keymapParsed && }\n {importModalOpen && }\n \n {feedbackModalOpen && }\n \n )\n}\n\nexport default withFileSystemStore(FileSystemPicker)\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button.pi2Ig8c3Fdh4H2Jpxdo7 {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/action-button.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB\",\"sourcesContent\":[\"button.action {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.secondary {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.action[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"action\": \"pi2Ig8c3Fdh4H2Jpxdo7\",\n\t\"secondary\": \"Ctpu4E2dZYJ6g8CUGFOF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./a_dux.json\": [\n\t\t73158,\n\t\t3712\n\t],\n\t\"./bat43.json\": [\n\t\t60888,\n\t\t3712\n\t],\n\t\"./bdn9_rev2.json\": [\n\t\t94591,\n\t\t3712\n\t],\n\t\"./bfo9000.json\": [\n\t\t19684,\n\t\t3712\n\t],\n\t\"./boardsource3x4.json\": [\n\t\t88602,\n\t\t3712\n\t],\n\t\"./boardsource5x12.json\": [\n\t\t8058,\n\t\t3712\n\t],\n\t\"./bt60_v1.json\": [\n\t\t92628,\n\t\t3712\n\t],\n\t\"./bt60_v1_hs.json\": [\n\t\t84628,\n\t\t3712\n\t],\n\t\"./bt60_v2.json\": [\n\t\t9417,\n\t\t3712\n\t],\n\t\"./bt65_v1.json\": [\n\t\t88455,\n\t\t3712\n\t],\n\t\"./bt75_v1.json\": [\n\t\t25397,\n\t\t3712\n\t],\n\t\"./chalice.json\": [\n\t\t7936,\n\t\t3712\n\t],\n\t\"./clog.json\": [\n\t\t31638,\n\t\t3712\n\t],\n\t\"./contra.json\": [\n\t\t42718,\n\t\t3712\n\t],\n\t\"./corne.json\": [\n\t\t26453,\n\t\t3712\n\t],\n\t\"./corneish_zen.json\": [\n\t\t39757,\n\t\t3712\n\t],\n\t\"./cradio.json\": [\n\t\t62089,\n\t\t3712\n\t],\n\t\"./crbn.json\": [\n\t\t48945,\n\t\t3712\n\t],\n\t\"./eek.json\": [\n\t\t63072,\n\t\t3712\n\t],\n\t\"./elephant42.json\": [\n\t\t83634,\n\t\t3712\n\t],\n\t\"./ergodash.json\": [\n\t\t68972,\n\t\t3712\n\t],\n\t\"./ergodox.json\": [\n\t\t75507,\n\t\t3712\n\t],\n\t\"./eternal_keypad.json\": [\n\t\t69416,\n\t\t3712\n\t],\n\t\"./eternal_keypad_lefty.json\": [\n\t\t56785,\n\t\t3712\n\t],\n\t\"./ferris_rev02.json\": [\n\t\t97365,\n\t\t3712\n\t],\n\t\"./fourier.json\": [\n\t\t14446,\n\t\t3712\n\t],\n\t\"./helix.json\": [\n\t\t73549,\n\t\t3712\n\t],\n\t\"./hummingbird.json\": [\n\t\t98321,\n\t\t3712\n\t],\n\t\"./iris.json\": [\n\t\t55262,\n\t\t3712\n\t],\n\t\"./jian.json\": [\n\t\t46228,\n\t\t3712\n\t],\n\t\"./jiran.json\": [\n\t\t14465,\n\t\t3712\n\t],\n\t\"./jorne.json\": [\n\t\t19151,\n\t\t3712\n\t],\n\t\"./kbdfans_tofu65_v2.json\": [\n\t\t7450,\n\t\t3712\n\t],\n\t\"./knob_goblin.json\": [\n\t\t71497,\n\t\t3712\n\t],\n\t\"./kyria.json\": [\n\t\t34458,\n\t\t3712\n\t],\n\t\"./kyria_rev2.json\": [\n\t\t70165,\n\t\t3712\n\t],\n\t\"./kyria_rev3.json\": [\n\t\t33669,\n\t\t3712\n\t],\n\t\"./leeloo.json\": [\n\t\t53677,\n\t\t3712\n\t],\n\t\"./lily58.json\": [\n\t\t21479,\n\t\t3712\n\t],\n\t\"./lotus58.json\": [\n\t\t63918,\n\t\t3712\n\t],\n\t\"./m60.json\": [\n\t\t53132,\n\t\t3712\n\t],\n\t\"./microdox.json\": [\n\t\t56792,\n\t\t3712\n\t],\n\t\"./murphpad.json\": [\n\t\t8662,\n\t\t3712\n\t],\n\t\"./naked60.json\": [\n\t\t79707,\n\t\t3712\n\t],\n\t\"./nibble.json\": [\n\t\t58244,\n\t\t3712\n\t],\n\t\"./nice60.json\": [\n\t\t41501,\n\t\t3712\n\t],\n\t\"./osprette.json\": [\n\t\t13467,\n\t\t3712\n\t],\n\t\"./pancake.json\": [\n\t\t19011,\n\t\t3712\n\t],\n\t\"./planck_rev6.json\": [\n\t\t55991,\n\t\t3712\n\t],\n\t\"./preonic_rev3.json\": [\n\t\t47308,\n\t\t3712\n\t],\n\t\"./qaz.json\": [\n\t\t46923,\n\t\t3712\n\t],\n\t\"./quefrency.json\": [\n\t\t23956,\n\t\t3712\n\t],\n\t\"./redox.json\": [\n\t\t17104,\n\t\t3712\n\t],\n\t\"./reviung41.json\": [\n\t\t71414,\n\t\t3712\n\t],\n\t\"./reviung5.json\": [\n\t\t31009,\n\t\t3712\n\t],\n\t\"./romac.json\": [\n\t\t15683,\n\t\t3712\n\t],\n\t\"./romac_plus.json\": [\n\t\t55318,\n\t\t3712\n\t],\n\t\"./s40nc.json\": [\n\t\t56036,\n\t\t3712\n\t],\n\t\"./snap.json\": [\n\t\t24380,\n\t\t3712\n\t],\n\t\"./sofle.json\": [\n\t\t45082,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_corne.json\": [\n\t\t20216,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_lily58.json\": [\n\t\t2674,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_sweep.json\": [\n\t\t9738,\n\t\t3712\n\t],\n\t\"./splitreus62.json\": [\n\t\t47003,\n\t\t3712\n\t],\n\t\"./tg4x.json\": [\n\t\t87454,\n\t\t3712\n\t],\n\t\"./tidbit.json\": [\n\t\t60386,\n\t\t3712\n\t],\n\t\"./two_percent_milk.json\": [\n\t\t67150,\n\t\t3712\n\t],\n\t\"./waterfowl.json\": [\n\t\t14194,\n\t\t3712\n\t],\n\t\"./zmk_uno.json\": [\n\t\t71578,\n\t\t3712\n\t],\n\t\"./zodiark.json\": [\n\t\t12069,\n\t\t3712\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 25690;\nmodule.exports = webpackAsyncContext;"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","ActionButton","children","secondary","className","props","styles","join","defaultProps","promisifyRequest","request","Promise","resolve","reject","oncomplete","onsuccess","result","onabort","onerror","error","defaultGetStoreFunc","defaultGetStore","dbName","storeName","indexedDB","open","onupgradeneeded","createObjectStore","dbp","txMode","callback","then","db","transaction","objectStore","createStore","get","key","customStore","store","set","value","put","STORAGE_KEY_HANDLES","STORAGE_KEY_SELECTED_HANDLE_INDEX","saveHandles","handles","idbSet","saveActiveHandle","index","initialState","keymapHandles","selectedHandleIndex","activeKeymap","handleIndex","keymapRaw","keymapParsed","metadataParsed","importModalOpen","feedbackModalOpen","pendingImports","slice","createSlice","name","reducers","openImportModal","state","closeImportModal","openFeedbackModal","closeFeedbackModal","selectFilesForImport","action","payload","updatedHandles","initHandles","selectHandle","selectKeymap","updateActiveKeymap","FileSystemContext","createContext","FileSystemStore","dispatch","useReducer","reducer","dispatchers","useMemo","Object","keys","actions","reduce","useFileSystemStore","Provider","ImportKeymapsButton","useContext","handleClick","useCallback","window","showOpenFilePicker","mode","multiple","excludeAcceptAllOption","types","accept","onClick","Icon","fileOptions","FileSystemKeymapPicker","choices","map","handle","i","id","handleSelect","choice","useEffect","queryPermission","requestPermission","replace","getFile","file","text","extractKeymapData","parsed","metadata","stripLegacyProperties","onChange","getOptionLabel","option","getOptionValue","ImportKeymapsDialog","acceptedImports","filter","keymapInCatalog","rejectedImports","handleConfirm","handleCancel","Modal","DialogBox","dismissText","Handle","length","style","textAlign","keyboardCatalog","color","keymapSelector","keyboard","keymap","settingsSelector","experimentalSettings","ExportKeymapButton","appKeymapState","enableBehaviorEditing","useSelector","isEqual","layouts","preferredLayout","chosen","defaultLayout","layout","applyKeymapChanges","cloneDeep","raw","createWritable","stream","write","close","updateNeeded","update","disabled","title","FeedbackModalButton","DiscussionLink","Link","external","href","FeedbackDialog","onDismiss","DiscordProfileLink","GitHubIssuesLink","Component","onSelect","idbGet","activeHandle","layoutMetadata","source","sensors","___CSS_LOADER_EXPORT___","push","module","locals","webpackAsyncContext","req","__webpack_require__","o","e","Error","code","ids","t","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/9657.aa3c39fe6f827e094083.js b/9657.aa3c39fe6f827e094083.js new file mode 100644 index 0000000..2abc2ce --- /dev/null +++ b/9657.aa3c39fe6f827e094083.js @@ -0,0 +1,3 @@ +/*! For license information please see 9657.aa3c39fe6f827e094083.js.LICENSE.txt */ +(self.webpackChunkapp=self.webpackChunkapp||[]).push([[9657],{80460:function(t,e,r){var n=r(58354),o=r(80351);t.exports=function(t){return"number"==typeof t||o(t)&&"[object Number]"==n(t)}},27926:function(t,e,r){"use strict";r.d(e,{Z:function(){return E}});var n=r(93379),o=r.n(n),i=r(7795),a=r.n(i),c=r(90569),u=r.n(c),l=r(3565),s=r.n(l),f=r(19216),d=r.n(f),p=r(44589),y=r.n(p),h=r(56281),v={};v.styleTagTransform=y(),v.setAttributes=s(),v.insert=u().bind(null,"head"),v.domAPI=a(),v.insertStyleElement=d(),o()(h.Z,v);var m=h.Z&&h.Z.locals?h.Z.locals:void 0,b=r(85893);function g(t){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g(t)}var w=["children","secondary","className"];function j(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function A(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,w);return(0,b.jsx)("button",A(A({className:[n,m.action,r&&m.secondary].join(" ")},o),{},{children:e}))}O.defaultProps={className:""};var E=O},62928:function(t,e,r){"use strict";r.r(e),r.d(e,{ClipboardPicker:function(){return ie},default:function(){return ce}});var n=r(50361),o=r.n(n),i=r(67294),a=r(97168),c=r(85893);function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function l(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function s(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:k(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Q(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function V(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){Q(i,n,o,a,c,"next",t)}function c(t){Q(i,n,o,a,c,"throw",t)}a(void 0)}))}}function X(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:k(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function ot(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function it(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){ot(i,n,o,a,c,"next",t)}function c(t){ot(i,n,o,a,c,"throw",t)}a(void 0)}))}}function at(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function ct(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r"},getOptionValue:function(t){return t.id},formatOptionLabel:function(t){return t.name||(0,c.jsx)("em",{children:"[unnamed]"})},children:(0,c.jsx)(xt,{})})}function kt(t){return kt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kt(t)}var St=["value","onChange"];function Ct(){Ct=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,o){var i=e&&e.prototype instanceof d?e:d,a=Object.create(i.prototype),c=new E(o||[]);return n(a,"_invoke",{value:j(t,r,c)}),a}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function y(){}var h={};u(h,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(k([])));m&&m!==e&&r.call(m,i)&&(h=m);var b=y.prototype=d.prototype=Object.create(h);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=s(t[n],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==kt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function j(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=A(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function A(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,A(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=s(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function k(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:k(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Lt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Pt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function _t(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,St),o=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Bt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Bt(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((0,i.useState)({raw:e,parsed:null}),2),a=o[0].raw,u=o[1];(0,i.useEffect)((function(){u((function(t){return _t(_t({},t),{},{raw:e})}))}),[e,u]);var l=(0,i.useCallback)((function(t){var e=t.target.value;u((function(t){return _t(_t({},t),{},{raw:e})}))}),[u]);return(0,i.useEffect)((function(){function t(){var e;return e=Ct().mark((function t(){var e;return Ct().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,q()(a);case 2:e=t.sent,(0,W.u)(e),u((function(t){return _t(_t({},t),{},{parsed:e})})),r({raw:a,parsed:e});case 6:case"end":return t.stop()}}),t)})),t=function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(t){Lt(i,n,o,a,c,"next",t)}function c(t){Lt(i,n,o,a,c,"throw",t)}a(void 0)}))},t.apply(this,arguments)}a&&function(){t.apply(this,arguments)}()}),[a,u,r]),(0,c.jsx)("textarea",_t({onChange:l,value:a},n))}var Tt=r(98553),Ft=r(91829),Mt=r(62608);function Gt(t){return Gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gt(t)}var Dt=["value","onChange"];function Ut(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Zt(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,Dt),o=(0,i.useRef)(),a=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Kt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Kt(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((0,i.useState)({raw:e,parsed:null,error:null}),2),u=a[0],l=u.raw,s=u.error,f=a[1],d=(0,i.useCallback)((function(t){var e=t.target.value,n=null,o=null;try{n=JSON.parse(e),(0,Mt.validateInfoJson)(n)}catch(t){o=t,n=null}f({raw:e,parsed:n,error:o}),r({raw:e,parsed:n})}),[f,r]);return(0,i.useEffect)((function(){f((function(t){return Zt(Zt({},t),{},{raw:e})}))}),[e,f]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("textarea",Zt({ref:o,onChange:d,value:l},n)),s&&(0,c.jsx)("p",{className:F.parseError,children:s instanceof Mt.InfoValidationError?s.errors[0]:s.toString()})]})}function Rt(t){return Rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Rt(t)}function Jt(){Jt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,o){var i=e&&e.prototype instanceof d?e:d,a=Object.create(i.prototype),c=new E(o||[]);return n(a,"_invoke",{value:j(t,r,c)}),a}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function y(){}var h={};u(h,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(k([])));m&&m!==e&&r.call(m,i)&&(h=m);var b=y.prototype=d.prototype=Object.create(h);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=s(t[n],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==Rt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function j(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=A(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function A(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,A(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=s(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function k(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:k(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function qt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Wt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||$t(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $t(t,e){if(t){if("string"==typeof t)return Ht(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ht(t,e):void 0}}function Ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './action-button.module.css'\n\nfunction ActionButton ({ children, secondary, className, ...props }) {\n return (\n \n {children}\n \n )\n}\n\nActionButton.defaultProps = {\n className: ''\n}\n\nexport default ActionButton\n","import cloneDeep from 'lodash/cloneDeep'\nimport { createContext, useMemo, useReducer } from 'react'\nimport { createSlice } from '@reduxjs/toolkit'\n\nconst STORAGE_KEY_KEYBOARDS = 'keymap_editor_clipboard_slots'\nconst STORAGE_KEY_KEYBOARD = `${STORAGE_KEY_KEYBOARDS}:`\nconst STORAGE_KEY_SELECTED_KEYBOARD = 'keymap_editor_clipboard_selected_slot'\n\nconst BLANK_KEYBOARD_ENTRY = JSON.stringify({\n keyboardId: null,\n isCustom: true,\n keymap: null,\n keymapRaw: '',\n metadata: null,\n metadataRaw: ''\n})\n\nfunction initialState () {\n const storedKeyboardId = JSON.parse(localStorage.getItem(STORAGE_KEY_SELECTED_KEYBOARD) || 'null')\n\n const INITIAL_KEYBOARDS = JSON.parse(localStorage.getItem(STORAGE_KEY_KEYBOARDS) || '[]')\n const INITIAL_KEYBOARD_SLOT_ID = storedKeyboardId || INITIAL_KEYBOARDS[0]?.id\n\n const INITIAL_KEYBOARD_DATA = JSON.parse(\n localStorage.getItem(`${STORAGE_KEY_KEYBOARD}${INITIAL_KEYBOARD_SLOT_ID}`) || 'null'\n )\n\n const INITIAL_KEYBOARD_ID = INITIAL_KEYBOARD_DATA?.keyboardId || 'custom'\n const INITIAL_KEYBOARD_IS_CUSTOM = INITIAL_KEYBOARD_DATA?.isCustom || INITIAL_KEYBOARD_ID === 'custom'\n const INITIAL_KEYMAP_PARSED = INITIAL_KEYBOARD_DATA?.keymap\n const INITIAL_KEYMAP_RAW = INITIAL_KEYBOARD_DATA?.keymapRaw\n const INITIAL_METADATA_PARSED = INITIAL_KEYBOARD_DATA?.metadata\n const INITIAL_METADATA_RAW = INITIAL_KEYBOARD_DATA?.metadataRaw\n\n return {\n keyboards: INITIAL_KEYBOARDS,\n selectedKeyboard: INITIAL_KEYBOARD_SLOT_ID,\n modalOpen: !INITIAL_KEYMAP_RAW,\n feedbackModalOpen: false,\n selection: {\n keyboardId: INITIAL_KEYBOARD_ID,\n isCustom: INITIAL_KEYBOARD_IS_CUSTOM,\n keymap: INITIAL_KEYMAP_PARSED,\n keymapRaw: INITIAL_KEYMAP_RAW,\n metadata: INITIAL_METADATA_PARSED,\n metadataRaw: INITIAL_METADATA_RAW\n },\n pending: {}\n }\n}\n\nexport const pickerSlice = createSlice({\n name: 'clipboard-picker',\n initialState,\n reducers: {\n selectedKeyboard (state, action) {\n state.selectedKeyboard = action.payload.keyboard\n\n const key = `${STORAGE_KEY_KEYBOARD}${state.selectedKeyboard}`\n state.selection = JSON.parse(localStorage.getItem(key) || BLANK_KEYBOARD_ENTRY)\n\n localStorage.setItem(STORAGE_KEY_SELECTED_KEYBOARD, JSON.stringify(state.selectedKeyboard))\n },\n addKeyboard (state, action) {\n const { id, name = null } = action.payload\n const keyboard = { id, name }\n\n state.keyboards.push(keyboard)\n localStorage.setItem(STORAGE_KEY_KEYBOARDS, JSON.stringify(state.keyboards))\n localStorage.setItem(`${STORAGE_KEY_KEYBOARD}${id}`, BLANK_KEYBOARD_ENTRY)\n },\n setKeymap (state, action) {\n const { raw, parsed, pending = false } = action.payload\n if (!state.pending) {\n state.pending = cloneDeep(state.selection)\n }\n state.pending.keymap = parsed\n state.pending.keymapRaw = raw\n if (!pending) {\n state.selection.keymap = parsed\n state.selection.keymapRaw = raw\n }\n },\n setMetadata (state, action) {\n const { keyboardId, isCustom = false, raw, parsed, pending = false } = action.payload\n if (pending && !state.pending) {\n state.pending = cloneDeep(state.selection)\n }\n const target = pending ? state.pending : state.selection\n target.keyboardId = keyboardId || target.keyboardId\n target.isCustom = isCustom\n target.metadata = parsed\n target.metadataRaw = raw\n },\n confirmPending (state) {\n state.selection = state.pending\n state.pending = null\n\n // TODO: should have an action to create and select the initial slot and\n // have Picker automatically dispatch when mounted with 0 keyboards.\n if (!state.selectedKeyboard) {\n state.selectedKeyboard = Date.now()\n }\n\n const key = `${STORAGE_KEY_KEYBOARD}${state.selectedKeyboard}`\n localStorage.setItem(key, JSON.stringify(state.selection))\n\n if (!state.keyboards.length) {\n state.keyboards.push({ id: state.selectedKeyboard })\n }\n\n const keyboard = state.keyboards.find(keyboard => keyboard.id === state.selectedKeyboard)\n if (!keyboard.name) {\n keyboard.name = state.selection.metadata.name\n localStorage.setItem(STORAGE_KEY_KEYBOARDS, JSON.stringify(state.keyboards))\n }\n },\n openModal (state) {\n state.modalOpen = true\n state.pending = state.selection\n if (state.pending.metadataRaw && !state.pending.metadata) {\n try {\n state.pending.metadata = JSON.parse(state.pending.metadataRaw)\n } catch (err) {}\n }\n },\n closeModal (state) {\n state.modalOpen = false\n },\n openFeedbackModal (state) { state.feedbackModalOpen = true },\n closeFeedbackModal (state) { state.feedbackModalOpen = false }\n }\n})\n\nfunction useActionDispatchers (dispatch) {\n return useMemo(() => (\n Object.keys(pickerSlice.actions).reduce((actions, action) => {\n actions[action] = (...args) => dispatch(pickerSlice.actions[action](...args))\n return actions\n }, {})\n ), [dispatch])\n}\n\nexport function usePickerStore () {\n const [state, dispatch] = useReducer(pickerSlice.reducer, null, initialState)\n const dispatchers = useActionDispatchers(dispatch)\n\n return [state, dispatchers]\n}\n\nexport const ClipboardContext = createContext([{}, {}])\n\nexport function PickerStore ({ children }) {\n const [state, dispatchers] = usePickerStore()\n\n return (\n \n {children}\n \n )\n}\n\nexport function withPickerStore (Component) {\n return props => (\n \n \n \n )\n}\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { ClipboardContext } from './store'\n\nexport default function FeedbackModalButton () {\n const [, { openFeedbackModal }] = useContext(ClipboardContext)\n\n return (\n \n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport isEqual from 'lodash/isEqual'\nimport { useCallback, useContext, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport applyKeymapChanges from 'keymap-editor-zmk-backend/lib/apply-keymap-changes'\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\n\nimport { stripLegacyProperties } from '../../keymap'\nimport { ClipboardContext } from './store'\n\nconst keymapSelector = state => state.keyboard?.keymap\nconst settingsSelector = state => state.experimentalSettings\n\nexport function useKeymapUpdater () {\n const appKeymapState = useSelector(keymapSelector)\n const { enableBehaviorEditing = false } = useSelector(settingsSelector)\n const [{ selection }, actions] = useContext(ClipboardContext)\n\n const updateNeeded = useMemo(() => (\n appKeymapState &&\n selection.keymap &&\n !isEqual(appKeymapState, selection.keymap)\n ), [appKeymapState, selection.keymap])\n\n const update = useCallback(async function () {\n // When opening the clipboard dialog and a previously parsed keymap differs\n // from the app's current keymap state we're probably wanting to update the\n // keymap source\n const { layouts } = selection.metadata\n const preferredLayout = appKeymapState.chosen['zmk,matrix_transform']\n ? appKeymapState.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n const defaultLayout = Object.keys(layouts)[0]\n const { layout } = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n try {\n const raw = await applyKeymapChanges(layout, cloneDeep(appKeymapState), selection.keymapRaw, { enableBehaviorEditing })\n const parsed = await extractKeymapData(raw)\n stripLegacyProperties(parsed)\n\n actions.setKeymap({ raw, parsed })\n return raw\n } catch (err) {\n console.error('Failed to update/parse', appKeymapState)\n console.error(err)\n throw err\n }\n }, [appKeymapState, selection, actions, enableBehaviorEditing])\n\n return [updateNeeded, update]\n}\n","import { useCallback, useContext, useState } from 'react'\nimport { ClipboardContext } from './store'\n\nimport styles from './styles.module.css'\nimport FeedbackModalButton from './FeedbackModalButton'\nimport { Button } from '../Controls'\nimport Icon from '../../Common/Icon'\nimport { useKeymapUpdater } from './updater'\n\nexport default function ClipboardActions () {\n const [updateNeeded, update] = useKeymapUpdater()\n const props = { updateNeeded, update }\n\n return (\n <>\n \n \n \n \n )\n}\n\nexport function ModalButton ({ updateNeeded, update }) {\n const [{ selectedKeyboard }, { openModal }] = useContext(ClipboardContext)\n const handleOpenModal = useCallback(async () => {\n if (updateNeeded) {\n await update()\n }\n\n openModal()\n }, [openModal, update, updateNeeded])\n\n if (!selectedKeyboard) {\n return\n }\n\n return (\n \n )\n}\n\nexport function CopyButton ({ updateNeeded, update }) {\n const title = updateNeeded ? 'Copy updated keymap' : 'No changes'\n const [{ selection }] = useContext(ClipboardContext)\n const [isCopiedVisible, showCopied] = useState(false)\n\n const handleCopy = useCallback(async function () {\n try {\n const raw = await update()\n await navigator.clipboard.writeText(raw)\n showCopied(true)\n setTimeout(() => showCopied(false), 1500)\n } catch (err) {\n console.error('Clipboard write failed')\n console.log(err)\n }\n }, [update])\n\n if (!selection.keymap) {\n return null\n }\n\n return (\n \n \n \n )\n}\n","import { useContext } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\nimport Link from '../../Common/Link'\nimport {\n GitHubIssuesLink,\n DiscordProfileLink\n} from '../../Dialogs/support'\n\nimport { ClipboardContext } from './store'\n\nconst discussionUrl = 'https://github.com/nickcoutsos/keymap-editor/discussions/105'\nconst DiscussionLink = (\n \n Feature Discussion\n \n)\n\nexport default function FeedbackDialog () {\n const [, { closeFeedbackModal }] = useContext(ClipboardContext)\n\n return (\n \n \n

Beta Feedback

\n

Hey, feel free to ignore this!

\n

\n I just launched this feature very quickly, I hope it's working well\n for you! Your feedback, if you can spare a moment, would be immensely\n helpful to me. This feature is completely browser-based which means I\n have no server analytics, so even just letting me know that it worked\n would be cool!\n

\n

Good ways to contact me:

\n
    \n
  • Ping me at {DiscordProfileLink}
  • \n
  • File an issue at {GitHubIssuesLink}
  • \n
  • Join the {DiscussionLink}
  • \n
\n
\n \n Back to editor\n \n
\n
\n
\n )\n}\n","import { useCallback, useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { ClipboardContext } from './store'\n\nexport default function KeyboardAddButton () {\n const [, { selectedKeyboard, addKeyboard, openModal }] = useContext(ClipboardContext)\n\n const handleAddKeyboard = useCallback(() => {\n const id = Date.now()\n addKeyboard({ id })\n selectedKeyboard({ keyboard: id })\n openModal()\n }, [addKeyboard, selectedKeyboard, openModal])\n\n return (\n \n )\n}\n","import { useCallback, useContext, useMemo } from 'react'\n\nimport { Select } from '../Controls'\nimport { ClipboardContext } from './store'\nimport KeyboardAddButton from './KeyboardAddButton'\n\nexport default function KeyboardSelector () {\n const [{ keyboards, selectedKeyboard: selectedKeyboardId }, { selectedKeyboard }] = useContext(ClipboardContext)\n\n const selectedKeyboardChoice = useMemo(() => (\n keyboards.find(keyboard => keyboard.id === selectedKeyboardId)\n ), [keyboards, selectedKeyboardId])\n\n const handleSelectKeyboard = useCallback(choice => {\n selectedKeyboard({ keyboard: choice.id })\n }, [selectedKeyboard])\n\n if (keyboards.length === 0) {\n return \n }\n\n return (\n option.name || ''}\n getOptionValue={option => option.id}\n formatOptionLabel={option => option.name || [unnamed]}\n >\n \n \n )\n}\n","import { useCallback, useEffect, useState } from 'react'\n\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\nimport { stripLegacyProperties } from '../../keymap'\n\nexport default function KeymapRaw ({ value, onChange, ...props }) {\n const [{ raw }, setState] = useState({ raw: value, parsed: null })\n\n useEffect(() => {\n setState(state => ({ ...state, raw: value }))\n }, [value, setState])\n\n const handleChange = useCallback(event => {\n const raw = event.target.value\n setState(state => ({ ...state, raw }))\n }, [setState])\n\n useEffect(() => {\n async function parse () {\n // debounce? handle errors?\n const parsed = await extractKeymapData(raw)\n stripLegacyProperties(parsed)\n setState(state => ({ ...state, parsed }))\n onChange({ raw, parsed })\n }\n\n if (raw) {\n parse()\n }\n }, [raw, setState, onChange])\n\n return (\n \n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { validateInfoJson, InfoValidationError } from 'keymap-layout-tools/lib/validate.js'\n\nimport styles from './styles.module.css'\n\nexport default function MetadataRawInput ({ value, onChange, ...props }) {\n const ref = useRef()\n const [{ raw, error }, setState] = useState({ raw: value, parsed: null, error: null })\n\n const handleMetadataChange = useCallback(event => {\n const raw = event.target.value\n let parsed = null\n let error = null\n\n try {\n parsed = JSON.parse(raw)\n validateInfoJson(parsed)\n } catch (err) {\n error = err\n parsed = null\n }\n\n setState({ raw, parsed, error })\n onChange({ raw, parsed })\n }, [setState, onChange])\n\n useEffect(() => {\n setState(state => ({ ...state, raw: value }))\n }, [value, setState])\n\n return (\n <>\n \n {error && (\n

\n {error instanceof InfoValidationError ? error.errors[0] : error.toString()}\n

\n )}\n \n )\n}\n","import { useCallback, useContext, useMemo, useState } from 'react'\n\nimport keyboardCatalog from 'keymap-editor-contrib/keyboard-catalog.json'\n\nimport useToggle from '../../Common/hooks/use-toggle'\nimport { GitHubWikiLayoutsLink } from '../../Dialogs/support'\nimport { Select } from '../Controls'\nimport MetadataRawInput from './MetadataRawInput'\nimport styles from './styles.module.css'\nimport { ClipboardContext } from './store'\n\nconst choices = [\n { id: 'custom', name: 'Custom...' },\n ...Object.values(keyboardCatalog)\n]\n\nexport default function MetadataSelector ({ value, onChange }) {\n const [{ pending }, actions] = useContext(ClipboardContext)\n\n const [sectionExpanded, toggleSection, expandSection] = useToggle(!pending?.metadataRaw)\n const [selection, setSelection] = useState(value)\n const selectedChoice = useMemo(() => (\n choices.find(choice => choice.id === selection)\n ), [selection])\n\n const handleChange = useCallback(async choice => {\n setSelection(choice.id)\n\n if (choice.id === 'custom') {\n actions.setMetadata({ pending: true, keyboardId: 'custom', isCustom: true, raw: '', parsed: null })\n expandSection()\n } else {\n try {\n const metadata = await import(\n /* webpackInclude: /\\.json$/ */\n /* webpackMode: \"lazy\" */\n /* webpackChunkName: \"keyboard-metadata/[request]\" */\n `keymap-editor-contrib/keyboard-data/${choice.id}.json`\n )\n actions.setMetadata({ pending: true, isCustom: false, keyboardId: choice.id, parsed: metadata, raw: '' })\n } catch (err) {\n console.error(`Failed to load metadata for ${choice.id}`, err)\n }\n }\n }, [actions, setSelection, expandSection])\n\n const handleMetadataChange = useCallback(({ raw, parsed, errors }) => {\n actions.setMetadata({\n pending: true,\n id: selectedChoice.id,\n custom: selectedChoice.id === 'custom',\n raw,\n parsed,\n errors\n })\n }, [selectedChoice, actions])\n\n return (\n
\n

\n Keyboard {(\n \n option.id}\n getOptionLabel={option => option.name}\n />\n \n )}\n

\n {selectedChoice?.id === 'custom' && (\n
\n

\n In order to understand what keyboard you're using and now to display\n it visually, please paste the JSON source metadata file below.\n

\n {pending.metadata && (\n

Parsed metadata for: {pending.metadata.name}

\n )}\n \n {!pending.metadata && (\n
\n

Not sure what to put here?

\n

\n The Keymap Editor app depends on a defined keyboard\n layout both to provide a friendly graphical representation to\n edit and a readable textual representation. You can learn more\n about this at {GitHubWikiLayoutsLink}.\n

\n

\n Note: If your keyboard works with QMK's Configurator you may\n be able to quickly get a visual representation by pasting the\n contents of that keyboard's info.json file here.\n

\n
\n )}\n
\n )}\n
\n )\n}\n","import { useCallback, useContext } from 'react'\n\nimport Modal from '../../Common/Modal'\nimport DialogBox from '../../Common/DialogBox'\nimport ActionButton from '../../Common/ActionButton'\n\nimport { ClipboardContext } from './store'\nimport KeymapRaw from './KeymapRawInput'\nimport MetadataSelector from './MetadataSelector'\n\nexport default function KeymapSourceDialog ({ onSubmit, onCancel }) {\n const [state, actions] = useContext(ClipboardContext)\n const { pending } = state\n\n const handleKeymapChange = useCallback(({ raw, parsed }) => {\n actions.setKeymap({ pending: true, raw, parsed })\n }, [actions])\n\n const handleSubmit = useCallback(() => {\n actions.confirmPending()\n onSubmit({\n keymap: pending.keymap,\n metadata: pending.metadata\n })\n }, [actions, pending, onSubmit])\n\n const disabled = (\n !pending?.metadata ||\n !pending?.keymap\n )\n\n return (\n \n \n \n\n

Keymap

\n

Paste the devicetree source from your .keymap file below.

\n

\n You can technically make changes directly to the DeviceTree\n code here, but this isn't intended as an editor.\n

\n \n

\n Set Keymap\n Cancel\n

\n
\n
\n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport { useCallback, useContext, useEffect, useState } from 'react'\n\nimport { ClipboardContext, withPickerStore } from './store'\nimport ClipboardActions from './ClipboardActions'\nimport FeedbackDialog from './FeedbackDialog'\nimport KeyboardSelector from './KeyboardSelector'\nimport KeymapSourceDialog from './KeymapSourceDialog'\n\nexport function ClipboardPicker ({ onSelect, onError }) {\n const [state, { closeModal }] = useContext(ClipboardContext)\n const [initState, setInitState] = useState(null)\n\n const selectKeymap = useCallback((keymap, metadata) => {\n const { layouts, sensors = [] } = metadata\n const preferredLayout = keymap.chosen['zmk,matrix_transform']\n ? keymap.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n if (typeof layouts !== 'object') {\n console.error('Invalid metadata loaded', metadata)\n return\n }\n\n const defaultLayout = Object.keys(layouts)[0]\n const layoutMetadata = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n onSelect(cloneDeep({\n source: 'clipboard',\n keyboard: '',\n layoutMetadata,\n layout: layoutMetadata.layout,\n keymap,\n sensors\n }))\n }, [onSelect])\n\n useEffect(() => {\n if (state.selection?.keymap && state.selection?.metadata) {\n selectKeymap(state.selection?.keymap, state.selection?.metadata)\n }\n }, [selectKeymap, state.selection?.keymap, state.selection?.metadata])\n\n const handleSelectKeymap = useCallback(({ keymap, metadata }) => {\n selectKeymap(keymap, metadata)\n closeModal()\n }, [selectKeymap, closeModal])\n\n useEffect(() => {\n if (initState) {\n return\n }\n\n setInitState(true)\n\n if (state.selection?.keymap && state.selection?.metadata) {\n selectKeymap(state.selection?.keymap, state.selection?.metadata)\n }\n }, [initState, setInitState, selectKeymap, state])\n\n return (\n <>\n \n \n {state.modalOpen && (\n \n )}\n {state.feedbackModalOpen && }\n \n )\n}\n\nexport default withPickerStore(ClipboardPicker)\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button.pi2Ig8c3Fdh4H2Jpxdo7 {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/action-button.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB\",\"sourcesContent\":[\"button.action {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.secondary {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.action[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"action\": \"pi2Ig8c3Fdh4H2Jpxdo7\",\n\t\"secondary\": \"Ctpu4E2dZYJ6g8CUGFOF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fnnwBtqwiwSQgnuN5sqg h2 {\\n cursor: pointer;\\n}\\n\\n.meN56P3rXkTYWdDY0oZq {\\n height: auto;\\n transition: height 100ms ease-out;\\n}\\n\\n.H4OUxP43w5pZ9RYBB72x {\\n background-color: rgba(0, 0, 0, 0.1);\\n margin: 10px;\\n padding: 0 10px;\\n border-radius: 4px;\\n}\\n\\n[data-expanded=\\\"false\\\"] .meN56P3rXkTYWdDY0oZq {\\n height: 0;\\n overflow: hidden;\\n}\\n\\n[data-expanded=\\\"false\\\"] h2 {\\n margin-bottom: 0;\\n}\\n\\n.lFxBan5aXNzTEl2SGBzU {\\n color: firebrick;\\n background-color: pink;\\n padding: 4px 8px;\\n border-radius: 4px;\\n}\\n\\n.eVrbmh_w8MbnDUOfUD2N {\\n position: relative;\\n}\\n.eVrbmh_w8MbnDUOfUD2N span {\\n font-size: 120%;\\n margin: auto 5px;\\n}\\n\\n.eVrbmh_w8MbnDUOfUD2N[data-show-copied=\\\"true\\\"]::after {\\n content: \\\"Copied!\\\";\\n position: absolute;\\n right: -5px;\\n top: 50%;\\n\\n transform: translate(100%, -50%);\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 4px;\\n\\n animation: normal 1.5s h0IIQBfKFzrLn6r9v5qG;\\n}\\n\\n@keyframes h0IIQBfKFzrLn6r9v5qG {\\n 0% { opacity: 0; width: 0; margin-left: -100%; }\\n 2.5% { opacity: 1; width: auto; }\\n 75% { opacity: 1; margin-left: 0; }\\n 100% { opacity: 0; }\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Sources/Clipboard/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;AACjB;;AAEA;EACE,YAAY;EACZ,iCAAiC;AACnC;;AAEA;EACE,oCAAoC;EACpC,YAAY;EACZ,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,sBAAsB;EACtB,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,kBAAkB;EAClB,WAAW;EACX,QAAQ;;EAER,gCAAgC;EAChC,kCAAkC;EAClC,YAAY;EACZ,aAAa;EACb,kBAAkB;;EAElB,2CAA+B;AACjC;;AAEA;EACE,KAAK,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE;EAC/C,OAAO,UAAU,EAAE,WAAW,EAAE;EAChC,MAAM,UAAU,EAAE,cAAc,EAAE;EAClC,OAAO,UAAU,EAAE;AACrB\",\"sourcesContent\":[\".source h2 {\\n cursor: pointer;\\n}\\n\\n.sourceContent {\\n height: auto;\\n transition: height 100ms ease-out;\\n}\\n\\n.metadataHelp {\\n background-color: rgba(0, 0, 0, 0.1);\\n margin: 10px;\\n padding: 0 10px;\\n border-radius: 4px;\\n}\\n\\n[data-expanded=\\\"false\\\"] .sourceContent {\\n height: 0;\\n overflow: hidden;\\n}\\n\\n[data-expanded=\\\"false\\\"] h2 {\\n margin-bottom: 0;\\n}\\n\\n.parseError {\\n color: firebrick;\\n background-color: pink;\\n padding: 4px 8px;\\n border-radius: 4px;\\n}\\n\\n.copyButton {\\n position: relative;\\n}\\n.copyButton span {\\n font-size: 120%;\\n margin: auto 5px;\\n}\\n\\n.copyButton[data-show-copied=\\\"true\\\"]::after {\\n content: \\\"Copied!\\\";\\n position: absolute;\\n right: -5px;\\n top: 50%;\\n\\n transform: translate(100%, -50%);\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 4px;\\n\\n animation: normal 1.5s popInOut;\\n}\\n\\n@keyframes popInOut {\\n 0% { opacity: 0; width: 0; margin-left: -100%; }\\n 2.5% { opacity: 1; width: auto; }\\n 75% { opacity: 1; margin-left: 0; }\\n 100% { opacity: 0; }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"source\": \"fnnwBtqwiwSQgnuN5sqg\",\n\t\"sourceContent\": \"meN56P3rXkTYWdDY0oZq\",\n\t\"metadataHelp\": \"H4OUxP43w5pZ9RYBB72x\",\n\t\"parseError\": \"lFxBan5aXNzTEl2SGBzU\",\n\t\"copyButton\": \"eVrbmh_w8MbnDUOfUD2N\",\n\t\"popInOut\": \"h0IIQBfKFzrLn6r9v5qG\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./a_dux.json\": [\n\t\t73158,\n\t\t3712\n\t],\n\t\"./bat43.json\": [\n\t\t60888,\n\t\t3712\n\t],\n\t\"./bdn9_rev2.json\": [\n\t\t94591,\n\t\t3712\n\t],\n\t\"./bfo9000.json\": [\n\t\t19684,\n\t\t3712\n\t],\n\t\"./boardsource3x4.json\": [\n\t\t88602,\n\t\t3712\n\t],\n\t\"./boardsource5x12.json\": [\n\t\t8058,\n\t\t3712\n\t],\n\t\"./bt60_v1.json\": [\n\t\t92628,\n\t\t3712\n\t],\n\t\"./bt60_v1_hs.json\": [\n\t\t84628,\n\t\t3712\n\t],\n\t\"./bt60_v2.json\": [\n\t\t9417,\n\t\t3712\n\t],\n\t\"./bt65_v1.json\": [\n\t\t88455,\n\t\t3712\n\t],\n\t\"./bt75_v1.json\": [\n\t\t25397,\n\t\t3712\n\t],\n\t\"./chalice.json\": [\n\t\t7936,\n\t\t3712\n\t],\n\t\"./clog.json\": [\n\t\t31638,\n\t\t3712\n\t],\n\t\"./contra.json\": [\n\t\t42718,\n\t\t3712\n\t],\n\t\"./corne.json\": [\n\t\t26453,\n\t\t3712\n\t],\n\t\"./corneish_zen.json\": [\n\t\t39757,\n\t\t3712\n\t],\n\t\"./cradio.json\": [\n\t\t62089,\n\t\t3712\n\t],\n\t\"./crbn.json\": [\n\t\t48945,\n\t\t3712\n\t],\n\t\"./eek.json\": [\n\t\t63072,\n\t\t3712\n\t],\n\t\"./elephant42.json\": [\n\t\t83634,\n\t\t3712\n\t],\n\t\"./ergodash.json\": [\n\t\t68972,\n\t\t3712\n\t],\n\t\"./ergodox.json\": [\n\t\t75507,\n\t\t3712\n\t],\n\t\"./eternal_keypad.json\": [\n\t\t69416,\n\t\t3712\n\t],\n\t\"./eternal_keypad_lefty.json\": [\n\t\t56785,\n\t\t3712\n\t],\n\t\"./ferris_rev02.json\": [\n\t\t97365,\n\t\t3712\n\t],\n\t\"./fourier.json\": [\n\t\t14446,\n\t\t3712\n\t],\n\t\"./helix.json\": [\n\t\t73549,\n\t\t3712\n\t],\n\t\"./hummingbird.json\": [\n\t\t98321,\n\t\t3712\n\t],\n\t\"./iris.json\": [\n\t\t55262,\n\t\t3712\n\t],\n\t\"./jian.json\": [\n\t\t46228,\n\t\t3712\n\t],\n\t\"./jiran.json\": [\n\t\t14465,\n\t\t3712\n\t],\n\t\"./jorne.json\": [\n\t\t19151,\n\t\t3712\n\t],\n\t\"./kbdfans_tofu65_v2.json\": [\n\t\t7450,\n\t\t3712\n\t],\n\t\"./knob_goblin.json\": [\n\t\t71497,\n\t\t3712\n\t],\n\t\"./kyria.json\": [\n\t\t34458,\n\t\t3712\n\t],\n\t\"./kyria_rev2.json\": [\n\t\t70165,\n\t\t3712\n\t],\n\t\"./kyria_rev3.json\": [\n\t\t33669,\n\t\t3712\n\t],\n\t\"./leeloo.json\": [\n\t\t53677,\n\t\t3712\n\t],\n\t\"./lily58.json\": [\n\t\t21479,\n\t\t3712\n\t],\n\t\"./lotus58.json\": [\n\t\t63918,\n\t\t3712\n\t],\n\t\"./m60.json\": [\n\t\t53132,\n\t\t3712\n\t],\n\t\"./microdox.json\": [\n\t\t56792,\n\t\t3712\n\t],\n\t\"./murphpad.json\": [\n\t\t8662,\n\t\t3712\n\t],\n\t\"./naked60.json\": [\n\t\t79707,\n\t\t3712\n\t],\n\t\"./nibble.json\": [\n\t\t58244,\n\t\t3712\n\t],\n\t\"./nice60.json\": [\n\t\t41501,\n\t\t3712\n\t],\n\t\"./osprette.json\": [\n\t\t13467,\n\t\t3712\n\t],\n\t\"./pancake.json\": [\n\t\t19011,\n\t\t3712\n\t],\n\t\"./planck_rev6.json\": [\n\t\t55991,\n\t\t3712\n\t],\n\t\"./preonic_rev3.json\": [\n\t\t47308,\n\t\t3712\n\t],\n\t\"./qaz.json\": [\n\t\t46923,\n\t\t3712\n\t],\n\t\"./quefrency.json\": [\n\t\t23956,\n\t\t3712\n\t],\n\t\"./redox.json\": [\n\t\t17104,\n\t\t3712\n\t],\n\t\"./reviung41.json\": [\n\t\t71414,\n\t\t3712\n\t],\n\t\"./reviung5.json\": [\n\t\t31009,\n\t\t3712\n\t],\n\t\"./romac.json\": [\n\t\t15683,\n\t\t3712\n\t],\n\t\"./romac_plus.json\": [\n\t\t55318,\n\t\t3712\n\t],\n\t\"./s40nc.json\": [\n\t\t56036,\n\t\t3712\n\t],\n\t\"./snap.json\": [\n\t\t24380,\n\t\t3712\n\t],\n\t\"./sofle.json\": [\n\t\t45082,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_corne.json\": [\n\t\t20216,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_lily58.json\": [\n\t\t2674,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_sweep.json\": [\n\t\t9738,\n\t\t3712\n\t],\n\t\"./splitreus62.json\": [\n\t\t47003,\n\t\t3712\n\t],\n\t\"./tg4x.json\": [\n\t\t87454,\n\t\t3712\n\t],\n\t\"./tidbit.json\": [\n\t\t60386,\n\t\t3712\n\t],\n\t\"./two_percent_milk.json\": [\n\t\t67150,\n\t\t3712\n\t],\n\t\"./waterfowl.json\": [\n\t\t14194,\n\t\t3712\n\t],\n\t\"./zmk_uno.json\": [\n\t\t71578,\n\t\t3712\n\t],\n\t\"./zodiark.json\": [\n\t\t12069,\n\t\t3712\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 35943;\nmodule.exports = webpackAsyncContext;"],"names":["baseGetTag","isObjectLike","module","exports","value","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","ActionButton","children","secondary","className","props","styles","join","defaultProps","STORAGE_KEY_KEYBOARDS","STORAGE_KEY_KEYBOARD","STORAGE_KEY_SELECTED_KEYBOARD","BLANK_KEYBOARD_ENTRY","JSON","stringify","keyboardId","isCustom","keymap","keymapRaw","metadata","metadataRaw","initialState","storedKeyboardId","parse","localStorage","getItem","INITIAL_KEYBOARDS","INITIAL_KEYBOARD_SLOT_ID","id","INITIAL_KEYBOARD_DATA","INITIAL_KEYBOARD_ID","INITIAL_KEYBOARD_IS_CUSTOM","INITIAL_KEYMAP_PARSED","INITIAL_KEYMAP_RAW","keyboards","selectedKeyboard","modalOpen","feedbackModalOpen","selection","pending","pickerSlice","createSlice","name","reducers","state","action","payload","keyboard","key","setItem","addKeyboard","push","setKeymap","raw","parsed","cloneDeep","setMetadata","target","confirmPending","Date","now","length","find","openModal","err","closeModal","openFeedbackModal","closeFeedbackModal","ClipboardContext","createContext","PickerStore","dispatch","useReducer","reducer","dispatchers","useMemo","Object","keys","actions","reduce","usePickerStore","Provider","FeedbackModalButton","useContext","onClick","Icon","i","keymapSelector","settingsSelector","experimentalSettings","ClipboardActions","appKeymapState","enableBehaviorEditing","useSelector","isEqual","useCallback","layouts","preferredLayout","chosen","replace","defaultLayout","layout","applyKeymapChanges","extractKeymapData","stripLegacyProperties","console","error","updateNeeded","update","ModalButton","CopyButton","handleOpenModal","title","useState","isCopiedVisible","showCopied","handleCopy","navigator","clipboard","writeText","setTimeout","log","disabled","DiscussionLink","Link","external","href","FeedbackDialog","Modal","onDismiss","DialogBox","dismissText","DiscordProfileLink","GitHubIssuesLink","style","textAlign","KeyboardAddButton","handleAddKeyboard","KeyboardSelector","selectedKeyboardId","selectedKeyboardChoice","handleSelectKeyboard","choice","onChange","getOptionLabel","option","getOptionValue","formatOptionLabel","KeymapRaw","setState","useEffect","handleChange","event","MetadataRawInput","ref","useRef","handleMetadataChange","validateInfoJson","InfoValidationError","errors","toString","choices","values","keyboardCatalog","MetadataSelector","useToggle","sectionExpanded","toggleSection","expandSection","setSelection","selectedChoice","custom","display","fontSize","fontWeight","verticalAlign","cols","rows","wrap","spellCheck","GitHubWikiLayoutsLink","KeymapSourceDialog","onSubmit","onCancel","handleKeymapChange","handleSubmit","maxWidth","maxHeight","overflow","ClipboardPicker","onSelect","onError","initState","setInitState","selectKeymap","sensors","layoutMetadata","source","handleSelectKeymap","Component","___CSS_LOADER_EXPORT___","locals","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","t"],"sourceRoot":""} \ No newline at end of file diff --git a/index.html b/index.html index 5c6d0ff..1e90793 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Keymap Editor
\ No newline at end of file +Keymap Editor
\ No newline at end of file diff --git a/main.8019d5f4a7d8269a3c78.js b/main.8019d5f4a7d8269a3c78.js new file mode 100644 index 0000000..26d868e --- /dev/null +++ b/main.8019d5f4a7d8269a3c78.js @@ -0,0 +1,3 @@ +/*! For license information please see main.8019d5f4a7d8269a3c78.js.LICENSE.txt */ +(self.webpackChunkapp=self.webpackChunkapp||[]).push([[179],{96186:function(e,t,n){"use strict";n.d(t,{Z:function(){return w}});var r=n(93379),o=n.n(r),i=n(7795),a=n.n(i),s=n(90569),c=n.n(s),u=n(3565),l=n.n(u),f=n(19216),y=n.n(f),p=n(44589),h=n.n(p),d=n(49502),m={};m.styleTagTransform=h(),m.setAttributes=l(),m.insert=c().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=y(),o()(d.Z,m);var b=d.Z&&d.Z.locals?d.Z.locals:void 0,v=n(85893);function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}var k=["dismissText","classes","onDismiss","children"];function _(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function A(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,k);return(0,v.jsxs)("div",A(A({className:[b.dialog].concat((t=i,function(e){if(Array.isArray(e))return j(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return j(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,t):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())).join(" ")},c),{},{children:[s,r&&(0,v.jsx)("button",{className:b.button,onClick:a,children:r})]}))}},41051:function(e,t,n){"use strict";var r=n(45697),o=n.n(r),i=n(85893);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var s=["name","className","collection"];function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==a(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===a(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l={brands:"fab",default:"fa",regular:"fa-regular",light:"fa-light",solid:"fas",round:"far"};function f(e){var t=e.name,n=e.className,r=e.collection,o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,s),a=l[r],f="fa-".concat(t);return(0,i.jsx)("span",function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,a);return(0,o.jsxs)("button",c(c({onClick:u},l),{},{children:[(0,o.jsx)(r.Z,{collection:t,name:n})," ",i||s]}))}},2968:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(45697),o=n.n(r),i=n(41051),a=n(93379),s=n.n(a),c=n(7795),u=n.n(c),l=n(90569),f=n.n(l),y=n(3565),p=n.n(y),h=n(19216),d=n.n(h),m=n(44589),b=n.n(m),v=n(87617),g={};g.styleTagTransform=b(),g.setAttributes=p(),g.insert=f().bind(null,"head"),g.domAPI=u(),g.insertStyleElement=d(),s()(v.Z,g);var k=v.Z&&v.Z.locals?v.Z.locals:void 0,_=n(85893);function A(e){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A(e)}var x=["href","children","external","showExternal"];function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,x),s=Object.assign({href:t},a,r&&{rel:"noreferrer",target:"_blank"});return(0,_.jsxs)("a",w(w({},s),{},{children:[n,r&&o&&(0,_.jsx)(i.Z,{className:k.icon,name:"arrow-up-right-from-square"})]}))}O.propTypes={href:o().string.isRequired,children:o().oneOfType([o().arrayOf(o().node),o().node]).isRequired,external:o().bool.isRequired,showExternal:o().bool},O.defaultProps={external:!1,showExternal:!0};var C=O},64261:function(e,t,n){"use strict";n.d(t,{X:function(){return d},Z:function(){return h}});var r=n(73935),o=n(67294),i=n(45697),a=n.n(i),s=n(85893);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,s=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){c=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(c)throw a}}}}(e);try{for(a.s();!(o=a.n()).done;){var s,c,u=o.value.properties;null!==(s=u.layers)&&void 0!==s&&null!==(c=s.parsed)&&void 0!==c&&c.length&&(u.layers.parsed=u.layers.parsed.reduce((function(e,t){var n=r[t];return null!==n&&e.push(n),e}),[]))}}catch(e){a.e(e)}finally{a.f()}}))}}),c=s.actions,u=c.updateComboBinding,l=c.updateComboKeypositions,f=c.createCombo,y=c.renameCombo,p=c.deleteCombo,h=c.customizeCombo;t.ZP=s.reducer},50868:function(e,t,n){"use strict";n.d(t,{Ie:function(){return m},fD:function(){return h}});var r=n(27361),o=n.n(r),i=n(97168),a=n(41696);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(){c=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function f(e,t,n,o){var i=t&&t.prototype instanceof h?t:h,a=Object.create(i.prototype),s=new O(o||[]);return r(a,"_invoke",{value:x(e,n,s)}),a}function y(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var p={};function h(){}function d(){}function m(){}var b={};l(b,i,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(C([])));g&&g!==t&&n.call(g,i)&&(b=g);var k=m.prototype=h.prototype=Object.create(b);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function o(r,i,a,c){var u=y(e[r],e,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==s(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(f).then((function(e){l.value=e,a(l)}),(function(e){return o("throw",e,a,c)}))}c(u.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function x(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=j(a,n);if(s){if(s===p)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=y(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function j(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,j(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),p;var o=y(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,p;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}var u=c().mark(b);function l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=f(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function f(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne?t-1:t})):o.map((function(r){var o=r>e&&r>t,i=r0&&void 0!==arguments[0]?arguments[0]:d;return function(t,n){var r,i=n.payload,a=i.sources,s=i.behaviorSchemas,c=i.behaviorParameters,u=i.positionMapping,f=a.behaviours,y=a.defines,p=l(b(t,f,s,c,e));try{for(p.s();!(r=p.n()).done;){var h,d=r.value,m=o()(y,d.value,d.value);Number.isNaN(Number(m))||(m=Number(m)),d.value=null===(h=u[m])||void 0===h?void 0:h.toString(),void 0===d.value&&(d.value="0",d._isPlaceholder=!0)}}catch(e){p.e(e)}finally{p.f()}}}function b(e,t,n,r,o){var i,a,s,f,y,h,d,m,b,v,g,k;return c().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:i=l(e),c.prev=1,i.s();case 3:if((a=i.n()).done){c.next=54;break}s=a.value,f=l(o(s,t,n)),c.prev=6,f.s();case 8:if((y=f.n()).done){c.next=44;break}h=y.value,d=l(h),c.prev=11,d.s();case 13:if((m=d.n()).done){c.next=34;break}b=m.value,v=l(p(b,r)),c.prev=16,v.s();case 18:if((g=v.n()).done){c.next=24;break}return k=g.value,c.next=22,k;case 22:c.next=18;break;case 24:c.next=29;break;case 26:c.prev=26,c.t0=c.catch(16),v.e(c.t0);case 29:return c.prev=29,v.f(),c.finish(29);case 32:c.next=13;break;case 34:c.next=39;break;case 36:c.prev=36,c.t1=c.catch(11),d.e(c.t1);case 39:return c.prev=39,d.f(),c.finish(39);case 42:c.next=8;break;case 44:c.next=49;break;case 46:c.prev=46,c.t2=c.catch(6),f.e(c.t2);case 49:return c.prev=49,f.f(),c.finish(49);case 52:c.next=3;break;case 54:c.next=59;break;case 56:c.prev=56,c.t3=c.catch(1),i.e(c.t3);case 59:return c.prev=59,i.f(),c.finish(59);case 62:case"end":return c.stop()}}),u,null,[[1,56,59,62],[6,46,49,52],[11,36,39,42],[16,26,29,32]])}},80736:function(e,t,n){"use strict";n.d(t,{En:function(){return j},Q:function(){return d},QR:function(){return x},UH:function(){return _},V6:function(){return b},WF:function(){return h},Xv:function(){return p},c7:function(){return g},sT:function(){return k},v1:function(){return A},vc:function(){return m},vl:function(){return l},zi:function(){return v}});var r=n(98913),o=n.n(r),i=n(97168),a=n(50868);function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:u,params:[]}}()}))}}})},updateLayerMetadata:function(e,t){var n=t.payload,r=n.layerIndex,o=n.name,i=n.label;o&&(e[r].name=o),void 0!==i&&(e[r].properties.label={parsed:i})},renameLayer:function(e,t){e[t.payload.index].name=t.payload.name},repositionLayer:function(e,t){var n=t.payload,r=n.currentIndex,o=n.targetIndex;if(r!==o){var i=e[r],a=o>r?o-1:o;e.splice(r,1),e.splice(a,0,i)}},deleteLayer:function(e,t){e.splice(t.payload.index,1)},updateKeyBinding:function(e,t){e[t.payload.layerIndex].properties.bindings.parsed[t.payload.bindIndex]=t.payload.binding},updateSensorBindings:function(e,t){var n=t.payload,r=n.layerIndex,o=n.sensorIndex,i=n.bindings,a=e[r].properties;a["sensor-bindings"]=a["sensor-bindings"]||{parsed:[]};var s=a["sensor-bindings"].parsed;s[o]=i;for(var c=0;c1&&void 0!==arguments[1]?arguments[1]:{},n=t.scale,r=void 0===n?1:n,o=t.overrides,s=void 0===o?{}:o,u=Array.isArray(e)?c(e):e;return function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}function l(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function f(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){l(i,r,o,a,s,"next",e)}function s(e){l(i,r,o,a,s,"throw",e)}a(void 0)}))}}function y(e,t){for(var n=0;n0&&(null===(t=this.installations)||void 0===t?void 0:t.every((function(e){return e.suspended_at})))&&(null===(n=this.installations)||void 0===n?void 0:n.some((function(e){return"all"===e.repository_selection})))}},{key:"isAppInstalled",value:function(){var e,t;return(null===(e=this.installations)||void 0===e?void 0:e.length)&&(null===(t=this.repositories)||void 0===t?void 0:t.length)}},{key:"fetchRepoBranches",value:(b=f(u().mark((function e(t){var n,r,o,i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=encodeURIComponent(this.repoInstallationMap[t.full_name]),r=encodeURIComponent(t.full_name),e.next=4,this._request("/github/installation/".concat(n,"/").concat(r,"/branches"));case 4:return o=e.sent,i=o.data,e.abrupt("return",i);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return b.apply(this,arguments)})},{key:"fetchBranchKeyboards",value:(l=f(u().mark((function e(t,n){var r,o,i,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=encodeURIComponent(this.repoInstallationMap[t.full_name]),o=encodeURIComponent(t.full_name),e.next=4,this._request("/github/installation/".concat(r,"/").concat(o,"/keyboards/").concat(n));case 4:return i=e.sent,a=i.data,e.abrupt("return",a);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"fetchLayoutAndKeymap",value:(a=f(u().mark((function e(t,n){var r,o,i,a,c,l,f,y,p,h,d,m,b,v,g,k=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=(k.length>2&&void 0!==k[2]?k[2]:{}).keyboard,o=encodeURIComponent(this.repoInstallationMap[t]),i=encodeURIComponent(t),a=new URL("".concat(s.ny,"/github/keyboard-files/").concat(o,"/").concat(i)),c=new URLSearchParams,n&&c.set("branch",n),r&&c.set("keyboard",r),a.search=c.toString(),e.prev=8,e.next=11,this._request(a.toString());case 11:return l=e.sent,f=l.data,y=f.info.layouts,p=f.keymap,h=Object.keys(f.info.layouts)[0],d=p.chosen["zmk,matrix_transform"]?p.chosen["zmk,matrix_transform"].replace(/^&/,""):null,m=y[d]||y[h],b=m.layout,e.abrupt("return",{layoutMetadata:m,layout:b,keymap:p,keyboards:f.keyboards,default:f.defaultKeymap,sensors:f.sensors});case 21:throw e.prev=21,e.t0=e.catch(8),400===(null===(v=e.t0.response)||void 0===v?void 0:v.status)?(console.error("Failed to load keymap and layout from github",e.t0.response.data),this.emit("repo-validation-error",e.t0.response.data)):500===(null===(g=e.t0.response)||void 0===g?void 0:g.status)&&"LayoutGenerationError"===e.t0.response.data.name&&this.emit("layout-generation-failed",e.t0.response.data),e.t0;case 25:case"end":return e.stop()}}),e,this,[[8,21]])}))),function(e,t){return a.apply(this,arguments)})},{key:"fetchAvailableFeatures",value:(i=f(u().mark((function e(){var t,n;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isGitHubAuthorized()){e.next=2;break}return e.abrupt("return",{betaFeatures:[]});case 2:return this.features||(this.features=this._request("".concat(s.ny,"/github/features"))),e.next=5,this.features;case 5:return t=e.sent,n=t.data,e.abrupt("return",n);case 8:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"fetchBuildStatus",value:(r=f(u().mark((function e(t,n){var r,o,i,a,c;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=encodeURIComponent(this.repoInstallationMap[t]),o=encodeURIComponent(t),i=new URL("".concat(s.ny,"/github/latest-run/").concat(r,"/").concat(o,"/").concat(encodeURIComponent(n))),e.next=5,this._request(i.toString());case 5:return a=e.sent,c=a.data,e.abrupt("return",c);case 8:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"commitChanges",value:function(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=o.message,a=void 0===i?null:i,c=o.experimentalSettings,u=void 0===c?{}:c,l=o.keyboard,f=encodeURIComponent(this.repoInstallationMap[e]),y=encodeURIComponent(e),p=new URL("".concat(s.ny,"/github/keyboard-files/").concat(f,"/").concat(y,"/").concat(encodeURIComponent(t))),h=u.enableBehaviorEditing,d=new URLSearchParams({enableBehaviorEditing:void 0!==h&&h});return l&&d.set("keyboard",l),p.search=d.toString(),this._request({url:p.toString(),method:"POST",headers:{"Content-Type":"application/json"},data:{keyboard:l,keymap:r,message:a}})}}],n&&y(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),x}(a()),k=new g;t.Z=k},28962:function(e,t,n){"use strict";function r(e){return e&&["1","on","yes","true"].includes(e.toString().toLowerCase())}n.d(t,{IX:function(){return c},XG:function(){return l},cO:function(){return i},k0:function(){return a},mC:function(){return u},ny:function(){return o},qo:function(){return s}});var o="https://zmk-keymap-editor.fly.dev",i="keymap-editor",a=r("true"),s=r("false"),c=r("true"),u=r("true"),l=r("true")},52235:function(e,t,n){"use strict";var r=n(67294),o=n(20745),i=n(95998),a=n(93379),s=n.n(a),c=n(7795),u=n.n(c),l=n(90569),f=n.n(l),y=n(3565),p=n.n(y),h=n(19216),d=n.n(h),m=n(44589),b=n.n(m),v=n(51424),g={};g.styleTagTransform=b(),g.setAttributes=p(),g.insert=f().bind(null,"head"),g.domAPI=u(),g.insertStyleElement=d(),s()(v.Z,g),v.Z&&v.Z.locals&&v.Z.locals,n(81802);var k=n(39087),_={};_.styleTagTransform=b(),_.setAttributes=p(),_.insert=f().bind(null,"head"),_.domAPI=u(),_.insertStyleElement=d(),s()(k.Z,_),k.Z&&k.Z.locals&&k.Z.locals;var A=n(81485),x=n(62092),j=n(39693),w=n.n(j),E=n(50361),O=n.n(E),C=n(63105),S=n.n(C),P=n(27361),B=n.n(P),L=n(41609),I=n.n(L),T=n(24350),D=n.n(T),M=n(95130),N=n(51785),R=n(18311),G=n(2596),Z=n(62412),q=n(85893),z=["children"];function F(e){return F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},F(e)}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Q(e){return function(e){if(Array.isArray(e))return X(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||V(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function J(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=V(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function H(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function V(e,t){if(e){if("string"==typeof e)return X(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?X(e,t):void 0}}function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,z).keymap,o=(0,r.useContext)(R.v),i=o.keycodes,a=o.behaviours,s=o.glyphs,c=(0,r.useContext)(A.J).settings,u=$(n),l=(0,r.useMemo)((function(){var e=window.navigator.platform.startsWith("Mac"),t=window.navigator.platform.startsWith("Win"),n=e?"mac":t&&"win";return(0,G.j)(s,{unicode:B()(c,"unicodeGlyphs",!0),platform:"auto"!==B()(c,"platformGlyphs","auto")?c.platformGlyphs:n})}),[s,c]),f=(0,r.useMemo)((function(){var e=n.behaviors.map((function(e){return(e=O()(e)).code="&".concat(e.labels[0]),e.compatible=e.properties.compatible.parsed,e}));(0,M.mergeBehaviorOverlays)(e,M.behaviorOverlays);var t=[].concat(Q(a.map((function(e){var t;return K(K({},e),{},{description:e.description||(null===(t=e.schema)||void 0===t?void 0:t.description)})}))),Q((e||[]).map((function(e){var t,n;return{code:"&".concat(e.labels[0]),bind:"&".concat(e.labels[0]),name:e.name,displayName:(null===(t=e.properties.label)||void 0===t?void 0:t.raw)||e.name,description:"Custom behavior: ".concat((null===(n=e.properties.label)||void 0===n?void 0:n.raw)||e.name),context:e.context}}))),Q(n.macros.map((function(e){var t;return{code:"&".concat(e.labels[0]),name:e.name,description:"Custom macro ".concat((null===(t=e.properties.label)||void 0===t?void 0:t.raw)||e.name)}}))));return t.indexed=D()(t,"code"),t.context={none:t.filter((function(e){return!e.context})),macros:S()(t,{context:"macros"}),encoders:S()(t,{context:"encoders"})},t.byContext={none:D()(t.context.none,"code"),macros:D()(t.context.macros,"code"),encoders:D()(t.context.encoders,"code")},t}),[a,n.behaviors,n.macros]),y=(0,r.useMemo)((function(){return(0,Z.resolveBehaviorParams)([].concat(Q(a),Q(n.behaviors),Q(n.macros)))}),[a,n.behaviors,n.macros]),p=(0,r.useMemo)((function(){return I()(n)?[]:n.layers.map((function(e,t){return{code:t,description:e.name||"Layer ".concat(t)}}))}),[n]),h=(0,r.useMemo)((function(){return[].concat(Q(i.map((function(e){return O()(e)}))),Q(u.map((function(e){return O()(e)}))))}),[i,u]),d=(0,r.useMemo)((function(){var e=D()(h,"code");for(var t in l){var n,r=l[t],o=J(e[t].aliases);try{for(o.s();!(n=o.n()).done;){var i=n.value;e[i].symbol=r.symbol||e[i].symbol,e[i].faIcon=r.faIcon||e[i].faIcon}}catch(e){o.e(e)}finally{o.f()}}for(var a=0,s=["EXCL","AT","HASH","DLLR","PRCNT","CARET","AMPS","STAR","UNDER","PLUS","PIPE","TILDE2","COLON","TILDE","LT","QMARK","CLEAR2","PIPE2","LPAR","RPAR","LBRC","RBRC","DQT","GT"];a2&&void 0!==arguments[2]?arguments[2]:"none";return e.enum?e.enum.map((function(e){return"object"===F(e)?e:{code:e}})):e.raw?[]:(b[e]||console.error("cannot find target for",e),"behaviour"===e?b.behaviour.context[n]:b[e])}}),[b]),g=(0,r.useMemo)((function(){return[].concat(Q(Object.keys(d)),Q(Object.keys(n.defines||{})))}),[d,n.defines]);return(0,q.jsx)(A.c.Provider,{value:{behaviorParameters:y,getSearchTargets:v,mergedGlyphs:l,sources:m,identifiers:g},children:t})},te=n(45697),ne=n.n(te),re={},oe=ne().string.isRequired,ie=ne().arrayOf(ne().shape(re));re.value=oe,re.params=ie;var ae=ne().shape(re),se=ne().shape({index:ne().number,name:ne().string,properties:ne().shape({bindings:ne().shape({parsed:ne().arrayOf(ae).isRequired}).isRequired,"key-positions":ne().shape({parsed:ne().arrayOf(ne().number).isRequired}).isRequired})}),ce=ne().shape({index:ne().number,name:ne().string,properties:ne().shape({bindings:ne().shape({parsed:ne().arrayOf(ae).isRequired}).isRequired,"sensor-bindings":ne().shape({parsed:ne().arrayOf(ae).isRequired})})}),ue=ne().shape({layers:ne().arrayOf(ce).isRequired,combos:ne().arrayOf(se)}),le=n(95872),fe=n(7739),ye=n.n(fe);function pe(e){return e.every((function(e){return void 0===e.row&&void 0===e.col}))?["Layout in info.json has no row/col definitions. Generated keymap files will not be nicely formatted."]:[]}var he=n(2024);function de(e){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},de(e)}function me(e){return function(e){if(Array.isArray(e))return be(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return be(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?be(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1}))}function je(e){var t=e.layers.map((function(e,t){return{location:"Keymap - Layer #".concat(t," (").concat(e.name,")"),path:"keymap.layers[".concat(t,"]"),name:ke(e)}})),n=e.combos.map((function(e,t){return{location:"Combos - Combo #".concat(t," (").concat(e.name,")"),path:"combos[".concat(t,"].name"),name:e.name}})),r=e.macros.map((function(e,t){return{location:"Macros - Macro #".concat(t," (").concat(ke(e),")"),path:"macros[".concat(t,"].name"),name:ke(e)}})),o=function(e){return e.map((function(e,t){return{location:"Behaviors - Behavior #".concat(t," (").concat(_e(e),") - Name"),path:"behaviors[".concat(t,"].name"),name:ke(e)}}))}(e.behaviors),i=[].concat(me(xe(t,"name")),me(xe(n,"name")),me(xe(r,"name")),me(xe(o,"name"))),a=[].concat(me(t.filter((function(e){return he.includes(e.name)}))),me(n.filter((function(e){return he.includes(e.name)}))),me(r.filter((function(e){return he.includes(e.name)}))),me(o.filter((function(e){return he.includes(e.name)}))));return{duplicates:i,redefined:a,passwordMacros:me(r.filter((function(e){return t=e.name,[/(^|[\b_])pass(word)?([\b_]|$)/].some((function(e){return t.match(e)}));var t})))}}function we(e){var t=xe([].concat(e.layers.reduce((function(e,t,n){var r=Ae(t);return r&&e.push({location:"Keymap - Layer #".concat(n," (").concat(t.name,")"),path:"keymap.layers[".concat(n,"].label"),label:r}),e}),[]),e.macros.reduce((function(e,t,n){return t.label&&e.push({location:"Macros - Macro #".concat(n," (").concat(Ae(t),") - Label"),path:"macros[".concat(n,"].label"),label:Ae(t)}),e}),[]),function(e){return e.reduce((function(e,t,n){var r=Ae(t),o=_e(t);return r&&e.push({location:"Behaviors - Behavior #".concat(n," (").concat(o,") - Label"),path:"behaviors[".concat(n,"].label"),label:r}),e}),[])}(e.behaviors)),"label");return{duplicates:t}}function Ee(e){var t=ye()([].concat(e.macros.map((function(e,t){return{location:"Macros > Macro #".concat(t," (").concat(_e(e),")"),path:"macros[".concat(t,"].name"),ref:_e(e)}})),function(e){return e.map((function(e,t){return{location:"Behaviors - Behavior #".concat(t," (").concat(_e(e),") - Bind"),path:"behaviors[".concat(t,"].bind"),ref:_e(e)}}))}(e.behaviors)),"ref");return{duplicates:Object.values(t).reduce((function(e,t){return t.length>1&&e.push(t),e}),[])}}function Oe(e){var t=[].concat(me(e.layers.reduce((function(e,t,n){var r,o;return null===(r=t.properties.bindings)||void 0===r||null===(o=r.parsed)||void 0===o||o.forEach((function(r,o){"&reset"===r.value&&e.push({location:"Keymap - Layer #".concat(n," (").concat(t.name,") - Key position ").concat(o),path:"keymap.layers[".concat(n,"].bindings[").concat(o,"]"),name:"&reset"})})),e}),[])),me(e.macros.reduce((function(e,t,n){return t.properties.bindings.parsed.forEach((function(r,o){"&reset"===r.value&&e.push({location:"Macros - Macro #".concat(n," (").concat(t.name,") - Binding position ").concat(o),path:"keymap.macros[".concat(n,"].properties.bindings[").concat(o,"].parsed"),name:"&reset"})})),e}),[])),me(e.combos.reduce((function(e,t,n){return t.properties.bindings.parsed.forEach((function(r,o){"&reset"===r.value&&e.push({location:"Combos - Combo #".concat(n," (").concat(t.name,")"),path:"keymap.combos[".concat(n,"].bindings[").concat(o,"]"),name:"&reset"})})),e}),[])),me(e.behaviors.reduce((function(e,t,n){var r,o;return null===(r=t.properties.bindings)||void 0===r||null===(o=r.parsed)||void 0===o||o.forEach((function(r,o){"&reset"!==r.value&&"&reset"!==r||e.push({location:"Behaviors - Behavior #".concat(n," (").concat(t.name,") - Bind position ").concat(o),path:"keymap.behaviors[".concat(n,"].parsed.bindings[").concat(o,"].parsed"),name:"&reset"})})),e}),[])));return{resetBindings:t}}var Ce=n(20817);function Se(e){return function(e){if(Array.isArray(e))return Be(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Pe(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pe(e,t){if(e){if("string"==typeof e)return Be(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Be(e,t):void 0}}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&{name:"warnings (".concat(a,")"),tabClasses:[le.Z.warningTab],component:(0,q.jsx)(Me,{sanityChecks:o})}]);return(0,q.jsx)(ee,{keymap:t,children:(0,q.jsx)(Ne,{text:"Editor mode:",tabs:s,defaultTab:0,children:s.map((function(e,t){return(0,q.jsx)(r.Fragment,{children:e.component},t)}))})})}Ge.propTypes={keymap:ue};var Ze=Ge,qe=n(41051),ze=n(2746),Fe={};Fe.styleTagTransform=b(),Fe.setAttributes=p(),Fe.insert=f().bind(null,"head"),Fe.domAPI=u(),Fe.insertStyleElement=d(),s()(ze.Z,Fe);var Ue=ze.Z&&ze.Z.locals?ze.Z.locals:void 0,Ke="https://github.com/nickcoutsos/keymap-editor";function Ye(){return(0,q.jsxs)("div",{className:Ue.wrapper,children:[(0,q.jsx)("label",{children:"Need help? Open an issue:"}),(0,q.jsxs)("a",{className:Ue.githubLink,target:"_blank",rel:"noreferrer",href:Ke,children:[(0,q.jsx)(qe.Z,{collection:"brands",name:"github"}),"/nickcoutsos/keymap-editor"]})]})}var We=n(96186),Qe=n(64261);function Je(e){return Je="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Je(e)}function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2])||arguments[2];(0,r.useEffect)((function(){if(n){var r=function(n){var r=document.body.contains(n.target),o=e.current.contains(n.target);r&&!o&&t()};return document.body.addEventListener("click",r),function(){return document.body.removeEventListener("click",r)}}}),[e,n,t])}(n,g,!0===(null==_?void 0:_.collapsible)&&o&&b);var A=(0,r.useCallback)((function(e){t({source:e.id,keyboard:null}),c(e.id)}),[c,t]),x=(0,r.useCallback)((function(e){var n=e.keymap.warningFlags,r=void 0===n?[]:n,o=(e.layoutMetadata||{}).autoGenerated,i=void 0!==o&&o,a=function(e){switch(e[0]){case"USING_ZMK_NODEFREE_MACROS":return Ct;case"USING_MIRYOKU_DTSI":return jt;case"USING_NON_ZMK_MACRO":return mt;case"USING_AUTOSHIFT_MACRO":return kt;case"KEYMAP_PARSING_FAILED":return At;case"MISSING_ROOT_NODE":return Et;default:return null}}(r);if(a)return h({component:a,onClose:d}),void t({source:s,keyboard:null});f({autoGenerated:i}),t(Rt({source:s},e))}),[t,s,h,d]),j=(0,r.useCallback)((function(e){var n=e.dialog,r=e.dialogProps;h({component:n,dialogProps:r,onClose:d}),t({source:s,keyboard:null})}),[h,d,t,s]);return(0,r.useEffect)((function(){localStorage.setItem("selectedSource",s)}),[s]),(0,q.jsxs)("div",{ref:n,className:rt()(Dt.wrapper,Gt({},Dt.compact,!b)),children:[b&&(0,q.jsx)(ht.Ph,{label:"Source",value:_,options:Pt,onChange:A,getOptionLabel:function(e){return e.name},getOptionValue:function(e){return e.id},formatOptionLabel:function(e,t){return"value"===t.context?e.name:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)("div",{children:[e.name,e.isBeta&&(0,q.jsx)(Jt,{})]}),(0,q.jsx)("div",{className:Dt.sourceDescription,children:(0,q.jsx)("sub",{children:e.description})})]})}}),(null==p?void 0:p.component)&&(0,q.jsx)(p.component,Rt(Rt({},p.dialogProps||{}),{},{onDismiss:p.onClose})),(0,q.jsxs)(r.Suspense,{children:["local"===s&&(0,q.jsx)(zt,{onError:j,onSelect:x}),"demo"===s&&(0,q.jsx)(Ft,{onSelect:x}),"github"===s&&(0,q.jsx)(Ut,{expanded:b,onSelect:x,onError:j,onExpand:v}),"clipboard"===s&&(0,q.jsx)(Kt,{onSelect:x,onError:j}),"filesystem"===s&&(0,q.jsx)(Yt,{onSelect:x,onError:j})]}),l&&(0,q.jsxs)(ht.zx,{onClick:k,children:[(0,q.jsx)(qe.Z,{name:"warning"})," Layout wrong?"]})]})}function Jt(){return(0,q.jsx)("span",{style:{color:"white",backgroundColor:"var(--error-highlight)",fontSize:"12px",fontWeight:"bold",padding:"1px 3px",margin:"2px",borderRadius:"6px",verticalAlign:"top"},children:"beta"})}Qt.propTypes={onSelect:ne().func.isRequired};var Ht=Qt,Vt=n(93965),Xt=n(14084),$t={};$t.styleTagTransform=b(),$t.setAttributes=p(),$t.insert=f().bind(null,"head"),$t.domAPI=u(),$t.insertStyleElement=d(),s()(Xt.Z,$t);var en=Xt.Z&&Xt.Z.locals?Xt.Z.locals:void 0;function tn(e){return tn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tn(e)}function nn(){nn=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof y?t:y,a=Object.create(i.prototype),s=new w(o||[]);return r(a,"_invoke",{value:_(e,n,s)}),a}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function y(){}function p(){}function h(){}var d={};c(d,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(E([])));b&&b!==t&&n.call(b,i)&&(d=b);var v=h.prototype=y.prototype=Object.create(d);function g(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function o(r,i,a,s){var c=l(e[r],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==tn(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,s)}),(function(e){o("throw",e,a,s)})):t.resolve(f).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,s)}))}s(c.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function _(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=A(a,n);if(s){if(s===f)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=l(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function A(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=l(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function rn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,s=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return on(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?on(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function on(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:[];return"\n".concat(e.name,"\n\n").concat(e.message,"\n\n").concat(t.map(cn).join("\n"),"\n").trim()}(t,i))}),[t,i]),(0,r.useEffect)((function(){f&&setTimeout((function(){y(!1)}),3e3)}),[f,y]),(0,q.jsx)(Qe.Z,{children:(0,q.jsxs)(We.Z,{dismissText:!1,style:{maxWidth:"700px"},children:[(0,q.jsx)("h2",{children:"Unexpected error"}),(0,q.jsxs)("p",{children:["Something unexpected happened and the keymap editor app cannot recover. Please consider taking a moment to open a ",un,"with the details below to help me investigate and improve the app."]}),(0,q.jsxs)("div",{className:en.stackTrace,children:[(0,q.jsx)("pre",{children:c}),(0,q.jsx)(x.Z,{icon:"copy",title:"Copy error text",className:en.button,onClick:function(){var e="".concat("```","\n").concat(c,"\n").concat("```");navigator.clipboard.writeText(e).then((function(){return y(!0)}))}}),f&&(0,q.jsx)("div",{className:en.copyMessage,children:"Copied!"})]})]})})}yn.propTypes={error:ne().instanceOf(Error).isRequired};var pn=yn;function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function dn(e,t){for(var n=0;n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function wn(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function En(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){wn(i,r,o,a,s,"next",e)}function s(e){wn(i,r,o,a,s,"throw",e)}a(void 0)}))}}function On(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Dn(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}var Mn=function(){var e=(0,i.v9)((function(e){return e})),t=(0,i.I0)(),n=e.sourceOther,o=e.keyboard,a=e.saveError,s=e.theme,c=e.settingsVisible,u=e.experimentalSettings;(0,r.useEffect)((function(){var e;if(null!=n&&n.github)return(e=Tn().mark((function e(){var t,o,i;return Tn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.github,o=t.repository,i=t.branch,e.t0=r,e.next=4,Vt.Z.fetchBuildStatus(o,i);case 4:e.t1=e.sent,(0,e.t0)(e.t1);case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){Dn(i,r,o,a,s,"next",e)}function s(e){Dn(i,r,o,a,s,"throw",e)}a(void 0)}))})(),Vt.Z.on("build-update",r),function(){return Vt.Z.off("build-update",r)};function r(e){e.head_branch===n.github.branch&&t({type:"GITHUB_BUILD_UPDATE",build:e})}t({type:"GITHUB_BUILD_UPDATE",build:null})}),[n,t]);var l=(0,r.useCallback)((function(e){var n=e.source,r=e.layout,o=e.keymap,i=e.sensors,a=void 0===i?[]:i,s=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,In);t(o?{type:"SELECT_KEYBOARD",source:n,sourceOther:s,layout:r,keymap:o,sensors:a}:{type:"CLEAR_KEYBOARD_SELECTION"})}),[t]),f=(0,r.useCallback)((function(e){t({type:"SETTINGS_UPDATE",settings:e})}),[t]),y=(0,r.useCallback)((function(){return t({type:"SETTINGS_OPEN"})}),[t]);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(vn,{children:(0,q.jsxs)(A.J.Provider,{value:{settings:u,openSettingsDialog:y},children:[(0,q.jsx)(Ht,{onSelect:l}),(0,q.jsxs)("div",{id:"settings-bar",children:[(0,q.jsx)(x.Z,{id:"light-mode",title:"Toggle theme",icon:{light:"sun",dark:"moon",system:"circle-half-stroke"}[s]||"circle-half-stroke",onClick:function(){return t({type:"CYCLE_THEME"})}}),(0,q.jsx)(x.Z,{id:"settings-button",icon:"cog",onClick:y}),c&&(0,q.jsx)(tt,{settings:u,onUpdate:f,onClose:function(){return t({type:"SETTINGS_CLOSE"})}})]}),(0,q.jsxs)(R.Z,{children:[o&&(0,q.jsx)(Ce.S,{layout:o.layout,children:(0,q.jsx)(Ze,{keymap:o.keymap,sensors:o.sensors})}),a&&(0,q.jsx)(kn,{onDismiss:function(){return t({type:"CLEAR_SAVE_ERROR"})}})]})]})}),(0,q.jsx)(Ye,{}),(0,q.jsx)(Bn,{enabled:!(null==n||!n.github)})]})},Nn=n(78718),Rn=n.n(Nn),Gn=n(41696);function Zn(e){return Zn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zn(e)}function qn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:[]},sensors:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]},keymap:(0,Yn.UY)({warningFlags:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]},defines:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]},headers:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]},chosen:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}},behaviors:Vn.ZP,layers:Qn.ZP,combos:Jn.ZP,macros:Hn.ZP})}),rr=(0,Wn.xC)({reducer:function(e,t){var n=function(e,t){switch(t.type){case"INITIALIZE":return Un();case"DEFINITIONS_SET":return zn(zn({},e),{},{definitions:t.definitions});case"CLEAR_KEYBOARD_SELECTION":return zn(zn({},e),{},{keyboard:null});case"SELECT_KEYBOARD":return function(e,t){var n=e.keyboard,r=Rn()(t,["layout","keymap","sensors"]);return(0,Gn.u)(r.keymap),zn(zn({},e),{},{source:t.source,sourceOther:t.sourceOther,keyboard:zn(zn({},n),r),_unmodifiedKeymap:O()(r.keymap)})}(e,t);case"COMMIT_DIALOG_OPEN":return zn(zn({},e),{},{commitDialogOpen:!0});case"COMMIT_DIALOG_CLOSE":return zn(zn({},e),{},{commitDialogOpen:!1});case"GITHUB_BUILD_UPDATE":return zn(zn({},e),{},{latestBuild:t.build});case"KEYMAP_SAVE_START":return zn(zn({},e),{},{saving:!0,saveError:!1});case"KEYMAP_SAVE_SUCCESS":return function(e,t){var n=zn({},t.keymap);return(0,Gn.u)(n),zn(zn({},e),{},{saving:!1,unsaved:!1,keyboard:zn(zn({},e.keyboard),{},{keymap:n}),_unmodifiedKeymap:n})}(e,t);case"KEYMAP_SAVE_FAILURE":return zn(zn({},e),{},{saving:!1,saveError:!0});case"CLEAR_SAVE_ERROR":return zn(zn({},e),{},{saveError:null});case"SETTINGS_OPEN":return zn(zn({},e),{},{settingsVisible:!0});case"SETTINGS_CLOSE":return zn(zn({},e),{},{settingsVisible:!1});case"SETTINGS_UPDATE":return localStorage.setItem("experimental-settings",JSON.stringify(t.settings)),zn(zn({},e),{},{experimentalSettings:t.settings});case"CYCLE_THEME":return function(e,t){var n=["light","dark","system"],r=n.indexOf(e.theme),o=n.at((r+1)%n.length);return localStorage.setItem("theme",'"'.concat(o,'"')),document.body.dataset.theme=o,zn(zn({},e),{},{theme:o})}(e);default:return e}}(e,t);return er(er({},n),{},{keyboard:n.keyboard&&er(er({},n.keyboard),nr(n.keyboard,t))})},preloadedState:Kn});document.body.dataset.theme=Kn.theme,o.createRoot(document.getElementById("app-root")).render((0,q.jsx)(r.StrictMode,{children:(0,q.jsx)(i.zt,{store:rr,children:(0,q.jsx)(Mn,{})})}))},26523:function(e,t,n){"use strict";n.d(t,{Pi:function(){return l},j4:function(){return y},kn:function(){return f}});var r=n(35161),o=n.n(r);function i(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:{};return{x:e.x*(s+c),y:e.y*(s+c),u:t.u*s+c*(t.u-1),h:t.h*s+c*(t.h-1),rx:(e.x-(n.x||e.x))*-(s+c),ry:(e.y-(n.y||e.y))*-(s+c),a:n.a||0}}function l(e,t,n){var r=u(e,t,n),o=r.x,i=r.y,a=r.u,s=r.h,c=r.a,l=r.rx,f=r.ry;return{top:"".concat(i,"px"),left:"".concat(o,"px"),width:"".concat(a,"px"),height:"".concat(s,"px"),transformOrigin:"".concat(l,"px ").concat(f,"px"),transform:"rotate(".concat(c||0,"deg)")}}function f(e,t,n){var r=u(e,t,n),o=r.x,i=r.y,a=r.u,s=r.h,c=r.a,l=r.rx,f=r.ry;return[{x:0,y:0},{x:a,y:0},{x:a,y:s},{x:0,y:s}].map((function(e){var t=e.x-l,n=e.y-f,r=Math.PI*c/180;return{x:l+t*Math.cos(r)-n*Math.sin(r),y:f+n*Math.cos(r)+t*Math.sin(r)}})).map((function(e){return{x:e.x+o,y:e.y+i}}))}function y(e,t,n){var r=f(e,t,n),a=o()(r,"x"),s=o()(r,"y");return{min:{x:Math.min.apply(Math,i(a)),y:Math.min.apply(Math,i(s))},max:{x:Math.max.apply(Math,i(a)),y:Math.max.apply(Math,i(s))}}}},2596:function(e,t,n){"use strict";n.d(t,{G:function(){return l},j:function(){return f}});var r=n(39693),o=n.n(r);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=a(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(c)throw i}}}}function a(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n h2:first-child {\n margin-top: 0;\n}\n\n.ZpdcqlK42OntJos3eGw0 p, .ZpdcqlK42OntJos3eGw0 ul {\n font-family: sans-serif;\n line-height: 1.3rem;\n}\n\n.Mywg1Gw3bKMc9Kd9qcEO {\n display: block;\n margin: 0 auto;\n}\n","",{version:3,sources:["webpack://./src/Common/dialog-box.module.css"],names:[],mappings:"AAAA;EACE,6CAA6C;EAC7C,kBAAkB;EAClB,gBAAgB;EAChB,4CAA4C;EAC5C,kBAAkB;EAClB,uCAAuC;AACzC;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,cAAc;AAChB",sourcesContent:[".dialog {\n background-color: var(--dialog-bg, var(--bg));\n padding: 20px 40px;\n max-width: 500px;\n box-shadow: 0px 10px 25px rgba(0, 0, 0, 0.4);\n border-radius: 3px;\n border: 0.25px solid rgba(0, 0, 0, 0.4);\n}\n\n.dialog > h2:first-child {\n margin-top: 0;\n}\n\n.dialog p, .dialog ul {\n font-family: sans-serif;\n line-height: 1.3rem;\n}\n\n.button {\n display: block;\n margin: 0 auto;\n}\n"],sourceRoot:""}]),a.locals={dialog:"ZpdcqlK42OntJos3eGw0",button:"Mywg1Gw3bKMc9Kd9qcEO"},t.Z=a},87617:function(e,t,n){"use strict";var r=n(87537),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([e.id,".J2R67AQeCK_aC1DKFCMJ {\n margin: 4px;\n}","",{version:3,sources:["webpack://./src/Common/link.module.css"],names:[],mappings:"AAAA;EACE,WAAW;AACb",sourcesContent:[".icon {\n margin: 4px;\n}"],sourceRoot:""}]),a.locals={icon:"J2R67AQeCK_aC1DKFCMJ"},t.Z=a},14084:function(e,t,n){"use strict";var r=n(87537),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([e.id,".Q5veln3l3laVkuNPs5dQ {\n position: relative;\n}\n\n.Q5veln3l3laVkuNPs5dQ pre {\n white-space: pre;\n background-color: var(--code-bg);\n color: var(--key-color-base);\n padding: 10px;\n max-height: 320px;\n overflow: scroll;\n}\n\n.dqzgBwJ1Rq0XgMqeAKe7 {\n position: absolute;\n top: 15px;\n right: 15px;\n padding: 4px 7px;\n color: var(--key-color-base);\n background-color: var(--key-bg-base);\n border: 1px solid var(--key-color-base);\n border-radius: 3px;\n}\n.dqzgBwJ1Rq0XgMqeAKe7:hover {\n cursor: pointer;\n background-color: var(--selection);\n border: var(--selection);\n color: white;\n}\n\n.YV2lKA9hbJpP4Vs4udw8 {\n position: absolute;\n top: 5px;\n right: 0px;\n background-color: var(--selection);\n color: white;\n padding: 10px;\n border-radius: 2px;\n cursor: none;\n}\n","",{version:3,sources:["webpack://./src/Dialogs/unexpected-error.module.css"],names:[],mappings:"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;EAChB,gCAAgC;EAChC,4BAA4B;EAC5B,aAAa;EACb,iBAAiB;EACjB,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,4BAA4B;EAC5B,oCAAoC;EACpC,uCAAuC;EACvC,kBAAkB;AACpB;AACA;EACE,eAAe;EACf,kCAAkC;EAClC,wBAAwB;EACxB,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAU;EACV,kCAAkC;EAClC,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,YAAY;AACd",sourcesContent:[".stackTrace {\n position: relative;\n}\n\n.stackTrace pre {\n white-space: pre;\n background-color: var(--code-bg);\n color: var(--key-color-base);\n padding: 10px;\n max-height: 320px;\n overflow: scroll;\n}\n\n.button {\n position: absolute;\n top: 15px;\n right: 15px;\n padding: 4px 7px;\n color: var(--key-color-base);\n background-color: var(--key-bg-base);\n border: 1px solid var(--key-color-base);\n border-radius: 3px;\n}\n.button:hover {\n cursor: pointer;\n background-color: var(--selection);\n border: var(--selection);\n color: white;\n}\n\n.copyMessage {\n position: absolute;\n top: 5px;\n right: 0px;\n background-color: var(--selection);\n color: white;\n padding: 10px;\n border-radius: 2px;\n cursor: none;\n}\n"],sourceRoot:""}]),a.locals={stackTrace:"Q5veln3l3laVkuNPs5dQ",button:"dqzgBwJ1Rq0XgMqeAKe7",copyMessage:"YV2lKA9hbJpP4Vs4udw8"},t.Z=a},87995:function(e,t,n){"use strict";var r=n(87537),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([e.id,".D0BH39_6wwiclW8aKuoi {\n display: inline-flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.D0BH39_6wwiclW8aKuoi li {\n cursor: pointer;\n padding: 5px;\n margin: 5px;\n border-radius: 4px;\n font-variant: small-caps;\n}\n.D0BH39_6wwiclW8aKuoi li.xwo6V7AWCmy8CDvuTwRg {\n background-color: var(--selection);\n color: white;\n cursor: default;\n}\n\n.nVbskEoaGxWf96qEgtxz {\n position: absolute;\n}\n.nVbskEoaGxWf96qEgtxz > * {\n width: 100% !important;\n height: 100% !important;\n}\n\n.Ae2s0eqIVhebTEcJGc3F {\n position: relative\n}\n.Ae2s0eqIVhebTEcJGc3F::after {\n content: 'beta';\n background-color: var(--error-highlight);\n color: white;\n font-size: 12px;\n font-weight: bold;\n padding: 1px 3px;\n border-radius: 6px;\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(60%, -60%) rotate(13deg);\n}\n.xwo6V7AWCmy8CDvuTwRg .Ae2s0eqIVhebTEcJGc3F::after {\n background-color: white;\n color: var(--selection);\n border: 1px solid var(--selection);\n}\n.sQQ0qFjHptJbQ8qvuXGa {\n color: var(--error-highlight);\n}\n.D0BH39_6wwiclW8aKuoi li.xwo6V7AWCmy8CDvuTwRg.sQQ0qFjHptJbQ8qvuXGa {\n background-color: var(--error-highlight);\n color: white;\n}","",{version:3,sources:["webpack://./src/Keyboard/styles.module.css"],names:[],mappings:"AAAA;EACE,oBAAoB;EACpB,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,eAAe;EACf,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,wBAAwB;AAC1B;AACA;EACE,kCAAkC;EAClC,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE;AACF;AACA;EACE,eAAe;EACf,wCAAwC;EACxC,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,kBAAkB;EAClB,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,6CAA6C;AAC/C;AACA;EACE,uBAAuB;EACvB,uBAAuB;EACvB,kCAAkC;AACpC;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,wCAAwC;EACxC,YAAY;AACd",sourcesContent:[".editorModeTabs {\n display: inline-flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.editorModeTabs li {\n cursor: pointer;\n padding: 5px;\n margin: 5px;\n border-radius: 4px;\n font-variant: small-caps;\n}\n.editorModeTabs li.activeEditTab {\n background-color: var(--selection);\n color: white;\n cursor: default;\n}\n\n.placer {\n position: absolute;\n}\n.placer > * {\n width: 100% !important;\n height: 100% !important;\n}\n\n.beta {\n position: relative\n}\n.beta::after {\n content: 'beta';\n background-color: var(--error-highlight);\n color: white;\n font-size: 12px;\n font-weight: bold;\n padding: 1px 3px;\n border-radius: 6px;\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(60%, -60%) rotate(13deg);\n}\n.activeEditTab .beta::after {\n background-color: white;\n color: var(--selection);\n border: 1px solid var(--selection);\n}\n.warningTab {\n color: var(--error-highlight);\n}\n.editorModeTabs li.activeEditTab.warningTab {\n background-color: var(--error-highlight);\n color: white;\n}"],sourceRoot:""}]),a.locals={editorModeTabs:"D0BH39_6wwiclW8aKuoi",activeEditTab:"xwo6V7AWCmy8CDvuTwRg",placer:"nVbskEoaGxWf96qEgtxz",beta:"Ae2s0eqIVhebTEcJGc3F",warningTab:"sQQ0qFjHptJbQ8qvuXGa"},t.Z=a},58723:function(e,t,n){"use strict";var r=n(87537),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([e.id,".hY07j_e1kQx0WX5BwG6I {\n display: flex;\n flex-direction: row;\n align-items: end;\n gap: 5px;\n margin: 5px;\n height: 58px;\n}\n\n._0h266lacmB1N_qDdQcy {\n align-items: center;\n}\n\n.hY07j_e1kQx0WX5BwG6I button {\n height: 38px;\n}\n\n.xwu_0RR7bcAhL2xRBstH {\n font-style: italic;\n max-width: 250px;\n opacity: 0.6;\n}","",{version:3,sources:["webpack://./src/Sources/styles.module.css"],names:[],mappings:"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,QAAQ;EACR,WAAW;EACX,YAAY;AACd;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,YAAY;AACd",sourcesContent:[".wrapper {\n display: flex;\n flex-direction: row;\n align-items: end;\n gap: 5px;\n margin: 5px;\n height: 58px;\n}\n\n.compact {\n align-items: center;\n}\n\n.wrapper button {\n height: 38px;\n}\n\n.sourceDescription {\n font-style: italic;\n max-width: 250px;\n opacity: 0.6;\n}"],sourceRoot:""}]),a.locals={wrapper:"hY07j_e1kQx0WX5BwG6I",compact:"_0h266lacmB1N_qDdQcy",sourceDescription:"xwu_0RR7bcAhL2xRBstH"},t.Z=a},2746:function(e,t,n){"use strict";var r=n(87537),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([e.id,"\n._vWNIXMkemQax9rkCJQh {\n display: inline-block;\n position: absolute;\n z-index: 100;\n bottom: 5px;\n left: 5px;\n}\n\n._vWNIXMkemQax9rkCJQh label {\n font-size: 75%;\n font-style: italic;\n display: block;\n padding: 0 10px;\n}\n\n.qiC2NrujE4ebqmHjzq0_ {\n display: inline-block;\n font-size: 110%;\n font-style: italic;\n background-color: var(--code-bg);\n border-radius: 20px;\n padding: 5px 10px;\n text-decoration: none;\n\n color: royalblue;\n}\n.qiC2NrujE4ebqmHjzq0_:hover {\n background-color: royalblue;\n color: white;\n}","",{version:3,sources:["webpack://./src/styles.module.css"],names:[],mappings:";AACA;EACE,qBAAqB;EACrB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;AACX;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,qBAAqB;EACrB,eAAe;EACf,kBAAkB;EAClB,gCAAgC;EAChC,mBAAmB;EACnB,iBAAiB;EACjB,qBAAqB;;EAErB,gBAAgB;AAClB;AACA;EACE,2BAA2B;EAC3B,YAAY;AACd",sourcesContent:["\n.wrapper {\n display: inline-block;\n position: absolute;\n z-index: 100;\n bottom: 5px;\n left: 5px;\n}\n\n.wrapper label {\n font-size: 75%;\n font-style: italic;\n display: block;\n padding: 0 10px;\n}\n\n.githubLink {\n display: inline-block;\n font-size: 110%;\n font-style: italic;\n background-color: var(--code-bg);\n border-radius: 20px;\n padding: 5px 10px;\n text-decoration: none;\n\n color: royalblue;\n}\n.githubLink:hover {\n background-color: royalblue;\n color: white;\n}"],sourceRoot:""}]),a.locals={wrapper:"_vWNIXMkemQax9rkCJQh",githubLink:"qiC2NrujE4ebqmHjzq0_"},t.Z=a},95872:function(e,t,n){"use strict";var r=n(93379),o=n.n(r),i=n(7795),a=n.n(i),s=n(90569),c=n.n(s),u=n(3565),l=n.n(u),f=n(19216),y=n.n(f),p=n(44589),h=n.n(p),d=n(87995),m={};m.styleTagTransform=h(),m.setAttributes=l(),m.insert=c().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=y(),o()(d.Z,m),t.Z=d.Z&&d.Z.locals?d.Z.locals:void 0},34366:function(e,t,n){var r={"./catalog":[51785],"./catalog.json":[51785],"./keys_ar":[73810,6392],"./keys_ar.json":[73810,6392],"./keys_ar_102":[78381,8017],"./keys_ar_102.json":[78381,8017],"./keys_ar_azerty":[56724,2650],"./keys_ar_azerty.json":[56724,2650],"./keys_as":[68045,9082],"./keys_as.json":[68045,9082],"./keys_az":[21708,8070],"./keys_az.json":[21708,8070],"./keys_az_cyrillic":[7200,8242],"./keys_az_cyrillic.json":[7200,8242],"./keys_az_standard":[2498,3647],"./keys_az_standard.json":[2498,3647],"./keys_ba":[24745,5332],"./keys_ba.json":[24745,5332],"./keys_be":[80468,308],"./keys_be.json":[80468,308],"./keys_bg":[87317,2408],"./keys_bg.json":[87317,2408],"./keys_bg_latin":[80885,421],"./keys_bg_latin.json":[80885,421],"./keys_bg_phonetic":[10220,4595],"./keys_bg_phonetic.json":[10220,4595],"./keys_bm":[71350,8956],"./keys_bm.json":[71350,8956],"./keys_bn":[99691,1480],"./keys_bn.json":[99691,1480],"./keys_bn_inscript":[31658,9142],"./keys_bn_inscript.json":[31658,9142],"./keys_bo":[29692,3282],"./keys_bo.json":[29692,3282],"./keys_bs":[5396,1315],"./keys_bs.json":[5396,1315],"./keys_bug":[15317,4443],"./keys_bug.json":[15317,4443],"./keys_chr":[8250,6943],"./keys_chr.json":[8250,6943],"./keys_chr_phonetic":[6221,4688],"./keys_chr_phonetic.json":[6221,4688],"./keys_ckb":[29448,1936],"./keys_ckb.json":[29448,1936],"./keys_cs":[98019,8207],"./keys_cs.json":[98019,8207],"./keys_cs_programmers":[7578,3735],"./keys_cs_programmers.json":[7578,3735],"./keys_cs_qwerty":[58733,2659],"./keys_cs_qwerty.json":[58733,2659],"./keys_da":[81460,6691],"./keys_da.json":[81460,6691],"./keys_de":[68013,3359],"./keys_de.json":[68013,3359],"./keys_de_belgian":[69798,9619],"./keys_de_belgian.json":[69798,9619],"./keys_de_belgian_period":[12991,1808],"./keys_de_belgian_period.json":[12991,1808],"./keys_de_ibm":[85155,1507],"./keys_de_ibm.json":[85155,1507],"./keys_de_swiss":[57153,6184],"./keys_de_swiss.json":[57153,6184],"./keys_dsb":[93859,9616],"./keys_dsb.json":[93859,9616],"./keys_dsb_extended":[45816,7686],"./keys_dsb_extended.json":[45816,7686],"./keys_dv":[60573,5485],"./keys_dv.json":[60573,5485],"./keys_dvorak":[17499,6157],"./keys_dvorak.json":[17499,6157],"./keys_dvorak_left":[5085,8793],"./keys_dvorak_left.json":[5085,8793],"./keys_dvorak_right":[43474,3362],"./keys_dvorak_right.json":[43474,3362],"./keys_dyu":[56817,749],"./keys_dyu.json":[56817,749],"./keys_dz":[3461,3893],"./keys_dz.json":[3461,3893],"./keys_el":[82182,1545],"./keys_el.json":[82182,1545],"./keys_el_220":[74695,3743],"./keys_el_220.json":[74695,3743],"./keys_el_319":[43615,4263],"./keys_el_319.json":[43615,4263],"./keys_el_latin":[61897,8971],"./keys_el_latin.json":[61897,8971],"./keys_el_latin_220":[52401,7603],"./keys_el_latin_220.json":[52401,7603],"./keys_el_latin_319":[70286,5821],"./keys_el_latin_319.json":[70286,5821],"./keys_el_polytonic":[19430,4296],"./keys_el_polytonic.json":[19430,4296],"./keys_en_gb":[85702,7495],"./keys_en_gb.json":[85702,7495],"./keys_en_gb_extended":[30206,1343],"./keys_en_gb_extended.json":[30206,1343],"./keys_en_india":[28440,8302],"./keys_en_india.json":[28440,8302],"./keys_es":[68633,771],"./keys_es.json":[68633,771],"./keys_es_latin_american":[67356,6429],"./keys_es_latin_american.json":[67356,6429],"./keys_es_variation":[73173,3033],"./keys_es_variation.json":[73173,3033],"./keys_et":[76498,7022],"./keys_et.json":[76498,7022],"./keys_fa":[76451,8599],"./keys_fa.json":[76451,8599],"./keys_fa_standard":[79355,819],"./keys_fa_standard.json":[79355,819],"./keys_fi":[36863,8706],"./keys_fi.json":[36863,8706],"./keys_fi_sami":[58592,9866],"./keys_fi_sami.json":[58592,9866],"./keys_fo":[48622,9586],"./keys_fo.json":[48622,9586],"./keys_fr":[50955,7554],"./keys_fr.json":[50955,7554],"./keys_fr_belgian":[39330,8855],"./keys_fr_belgian.json":[39330,8855],"./keys_fr_belgian_period":[17494,7950],"./keys_fr_belgian_period.json":[17494,7950],"./keys_fr_canadian_french":[74301,4491],"./keys_fr_canadian_french.json":[74301,4491],"./keys_fr_canadian_standard":[76297,8251],"./keys_fr_canadian_standard.json":[76297,8251],"./keys_fr_swiss":[41417,1514],"./keys_fr_swiss.json":[41417,1514],"./keys_ga":[47467,8185],"./keys_ga.json":[47467,8185],"./keys_gd":[50596,6457],"./keys_gd.json":[50596,6457],"./keys_gn":[78996,4289],"./keys_gn.json":[78996,4289],"./keys_got":[45327,9893],"./keys_got.json":[45327,9893],"./keys_gu":[21372,2787],"./keys_gu.json":[21372,2787],"./keys_ha":[28061,2982],"./keys_ha.json":[28061,2982],"./keys_haw":[63525,3618],"./keys_haw.json":[63525,3618],"./keys_he":[2357,7446],"./keys_he.json":[2357,7446],"./keys_he_standard":[58311,7108],"./keys_he_standard.json":[58311,7108],"./keys_hi":[55225,6688],"./keys_hi.json":[55225,6688],"./keys_hi_traditional":[48923,8119],"./keys_hi_traditional.json":[48923,8119],"./keys_hu":[4526,4156],"./keys_hu.json":[4526,4156],"./keys_hu_101":[3013,3322],"./keys_hu_101.json":[3013,3322],"./keys_hy":[15584,2015],"./keys_hy.json":[15584,2015],"./keys_hy_phonetic":[28860,9136],"./keys_hy_phonetic.json":[28860,9136],"./keys_ig":[4055,7892],"./keys_ig.json":[4055,7892],"./keys_is":[87591,5604],"./keys_is.json":[87591,5604],"./keys_it":[24277,4465],"./keys_it.json":[24277,4465],"./keys_it_142":[83333,833],"./keys_it_142.json":[83333,833],"./keys_iu":[79407,5840],"./keys_iu.json":[79407,5840],"./keys_iu_latin":[90290,9176],"./keys_iu_latin.json":[90290,9176],"./keys_jv":[83271,6710],"./keys_jv.json":[83271,6710],"./keys_ka":[36196,3687],"./keys_ka.json":[36196,3687],"./keys_ka_ergonomic":[76892,9698],"./keys_ka_ergonomic.json":[76892,9698],"./keys_ka_qwerty":[84211,2621],"./keys_ka_qwerty.json":[84211,2621],"./keys_khb":[93128,5842],"./keys_khb.json":[93128,5842],"./keys_khb_tai_le":[16011,539],"./keys_khb_tai_le.json":[16011,539],"./keys_kk":[81713,951],"./keys_kk.json":[81713,951],"./keys_kl":[87006,7303],"./keys_kl.json":[87006,7303],"./keys_km":[86151,6794],"./keys_km.json":[86151,6794],"./keys_km_nida":[91831,3268],"./keys_km_nida.json":[91831,3268],"./keys_kn":[88868,8709],"./keys_kn.json":[88868,8709],"./keys_ko":[96130,8427],"./keys_ko.json":[96130,8427],"./keys_ky":[49911,9244],"./keys_ky.json":[49911,9244],"./keys_la_old_italic":[72596,8438],"./keys_la_old_italic.json":[72596,8438],"./keys_lb":[6012,5606],"./keys_lb.json":[6012,5606],"./keys_lis":[86353,8945],"./keys_lis.json":[86353,8945],"./keys_lis_standard":[70912,4887],"./keys_lis_standard.json":[70912,4887],"./keys_lo":[34659,398],"./keys_lo.json":[34659,398],"./keys_lt":[92979,7771],"./keys_lt.json":[92979,7771],"./keys_lt_ibm":[90075,129],"./keys_lt_ibm.json":[90075,129],"./keys_lt_standard":[70040,3746],"./keys_lt_standard.json":[70040,3746],"./keys_lv":[25622,1671],"./keys_lv.json":[25622,1671],"./keys_lv_qwerty":[70689,6777],"./keys_lv_qwerty.json":[70689,6777],"./keys_lv_standard":[68148,9081],"./keys_lv_standard.json":[68148,9081],"./keys_man":[95287,1156],"./keys_man.json":[95287,1156],"./keys_mi":[97585,9512],"./keys_mi.json":[97585,9512],"./keys_mk":[8069,8041],"./keys_mk.json":[8069,8041],"./keys_ml":[79302,1547],"./keys_ml.json":[79302,1547],"./keys_mn":[78647,389],"./keys_mn.json":[78647,389],"./keys_mn_phags_pa":[94641,3194],"./keys_mn_phags_pa.json":[94641,3194],"./keys_mn_traditional":[1301,8568],"./keys_mn_traditional.json":[1301,8568],"./keys_mr":[28928,2247],"./keys_mr.json":[28928,2247],"./keys_mt":[5848,7568],"./keys_mt.json":[5848,7568],"./keys_mt_101":[10244,3880],"./keys_mt_101.json":[10244,3880],"./keys_my":[14052,5015],"./keys_my.json":[14052,5015],"./keys_nb":[56360,4919],"./keys_nb.json":[56360,4919],"./keys_nb_sami":[96408,8636],"./keys_nb_sami.json":[96408,8636],"./keys_ne":[97192,4892],"./keys_ne.json":[97192,4892],"./keys_nl":[37853,6415],"./keys_nl.json":[37853,6415],"./keys_nl_period":[80045,2271],"./keys_nl_period.json":[80045,2271],"./keys_non":[50248,5991],"./keys_non.json":[50248,5991],"./keys_nso":[34757,8307],"./keys_nso.json":[34757,8307],"./keys_or":[40914,2383],"./keys_or.json":[40914,2383],"./keys_pa":[51095,9989],"./keys_pa.json":[51095,9989],"./keys_pl":[91654,8391],"./keys_pl.json":[91654,8391],"./keys_pl_programmers":[188,920],"./keys_pl_programmers.json":[188,920],"./keys_ps":[65138,6049],"./keys_ps.json":[65138,6049],"./keys_pt":[33474,4821],"./keys_pt.json":[33474,4821],"./keys_pt_abnt":[84986,1872],"./keys_pt_abnt.json":[84986,1872],"./keys_pt_abnt2":[50167,9112],"./keys_pt_abnt2.json":[50167,9112],"./keys_ro":[35695,68],"./keys_ro.json":[35695,68],"./keys_ro_programmers":[53693,4795],"./keys_ro_programmers.json":[53693,4795],"./keys_ru":[62672,8986],"./keys_ru.json":[62672,8986],"./keys_ru_phonetic":[48927,7292],"./keys_ru_phonetic.json":[48927,7292],"./keys_sah":[75234,7289],"./keys_sah.json":[75234,7289],"./keys_sat":[767,9414],"./keys_sat.json":[767,9414],"./keys_se":[31828,8019],"./keys_se.json":[31828,8019],"./keys_se_finland_sweden":[44292,8699],"./keys_se_finland_sweden.json":[44292,8699],"./keys_si":[39915,9707],"./keys_si.json":[39915,9707],"./keys_sk":[49999,7803],"./keys_sk.json":[49999,7803],"./keys_sk_qwerty":[92153,1720],"./keys_sk_qwerty.json":[92153,1720],"./keys_sl":[11998,5715],"./keys_sl.json":[11998,5715],"./keys_so":[32727,9193],"./keys_so.json":[32727,9193],"./keys_sq":[93752,8173],"./keys_sq.json":[93752,8173],"./keys_sr":[45358,2231],"./keys_sr.json":[45358,2231],"./keys_sr_latin":[80121,578],"./keys_sr_latin.json":[80121,578],"./keys_srb":[929,5354],"./keys_srb.json":[929,5354],"./keys_sv":[74243,8649],"./keys_sv.json":[74243,8649],"./keys_sv_sami":[26330,4717],"./keys_sv_sami.json":[26330,4717],"./keys_syr":[20591,4777],"./keys_syr.json":[20591,4777],"./keys_syr_phonetic":[85609,2619],"./keys_syr_phonetic.json":[85609,2619],"./keys_ta":[17843,4036],"./keys_ta.json":[17843,4036],"./keys_te":[69130,4824],"./keys_te.json":[69130,4824],"./keys_tg":[79797,3393],"./keys_tg.json":[79797,3393],"./keys_th":[70732,6684],"./keys_th.json":[70732,6684],"./keys_th_pattachote":[85219,422],"./keys_th_pattachote.json":[85219,422],"./keys_tk":[31794,2275],"./keys_tk.json":[31794,2275],"./keys_tmh":[89416,2835],"./keys_tmh.json":[89416,2835],"./keys_tmh_extended":[33866,8110],"./keys_tmh_extended.json":[33866,8110],"./keys_tn":[79848,4257],"./keys_tn.json":[79848,4257],"./keys_tr":[32066,5303],"./keys_tr.json":[32066,5303],"./keys_tr_f":[77176,4670],"./keys_tr_f.json":[77176,4670],"./keys_tt":[13069,7305],"./keys_tt.json":[13069,7305],"./keys_tzm":[93917,814],"./keys_tzm.json":[93917,814],"./keys_ug":[29436,3474],"./keys_ug.json":[29436,3474],"./keys_uk":[18936,2602],"./keys_uk.json":[18936,2602],"./keys_uk_enhanced":[60895,7228],"./keys_uk_enhanced.json":[60895,7228],"./keys_ur":[48883,8216],"./keys_ur.json":[48883,8216],"./keys_us_international":[61141,2947],"./keys_us_international.json":[61141,2947],"./keys_uz":[8196,7080],"./keys_uz.json":[8196,7080],"./keys_vi":[88305,7994],"./keys_vi.json":[88305,7994],"./keys_wo":[97528,7069],"./keys_wo.json":[97528,7069],"./keys_yo":[8962,5998],"./keys_yo.json":[8962,5998]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return Promise.all(t.slice(1).map(n.e)).then((function(){return n.t(o,19)}))}o.keys=function(){return Object.keys(r)},o.id=34366,e.exports=o},51785:function(e){"use strict";e.exports=JSON.parse('{"keys_ar.h":{"filename":"keys_ar.json","prefix":"ar"},"keys_ar_azerty.h":{"filename":"keys_ar_azerty.json","prefix":"ar"},"keys_ar_102.h":{"filename":"keys_ar_102.json","prefix":"ar"},"keys_as.h":{"filename":"keys_as.json","prefix":"as"},"keys_az.h":{"filename":"keys_az.json","prefix":"az"},"keys_az_standard.h":{"filename":"keys_az_standard.json","prefix":"az"},"keys_az_cyrillic.h":{"filename":"keys_az_cyrillic.json","prefix":"az"},"keys_ba.h":{"filename":"keys_ba.json","prefix":"ba"},"keys_be.h":{"filename":"keys_be.json","prefix":"be"},"keys_bg.h":{"filename":"keys_bg.json","prefix":"bg"},"keys_bg_phonetic.h":{"filename":"keys_bg_phonetic.json","prefix":"bg"},"keys_bg_latin.h":{"filename":"keys_bg_latin.json","prefix":"bg"},"keys_bm.h":{"filename":"keys_bm.json","prefix":"bm"},"keys_dyu.h":{"filename":"keys_dyu.json","prefix":"dyu"},"keys_man.h":{"filename":"keys_man.json","prefix":"man"},"keys_bn.h":{"filename":"keys_bn.json","prefix":"bn"},"keys_bn_inscript.h":{"filename":"keys_bn_inscript.json","prefix":"bn"},"keys_bo.h":{"filename":"keys_bo.json","prefix":"bo"},"keys_bs.h":{"filename":"keys_bs.json","prefix":"bs"},"keys_bug.h":{"filename":"keys_bug.json","prefix":"bug"},"keys_chr.h":{"filename":"keys_chr.json","prefix":"chr"},"keys_chr_phonetic.h":{"filename":"keys_chr_phonetic.json","prefix":"chr"},"keys_ckb.h":{"filename":"keys_ckb.json","prefix":"ckb"},"keys_cs.h":{"filename":"keys_cs.json","prefix":"cs"},"keys_cs_programmers.h":{"filename":"keys_cs_programmers.json","prefix":"cs"},"keys_cs_qwerty.h":{"filename":"keys_cs_qwerty.json","prefix":"cs"},"keys_da.h":{"filename":"keys_da.json","prefix":"da"},"keys_de.h":{"filename":"keys_de.json","prefix":"de"},"keys_de_ibm.h":{"filename":"keys_de_ibm.json","prefix":"de"},"keys_de_belgian.h":{"filename":"keys_de_belgian.json","prefix":"de"},"keys_de_belgian_period.h":{"filename":"keys_de_belgian_period.json","prefix":"de"},"keys_de_swiss.h":{"filename":"keys_de_swiss.json","prefix":"de"},"keys_dsb.h":{"filename":"keys_dsb.json","prefix":"dsb"},"keys_dsb_extended.h":{"filename":"keys_dsb_extended.json","prefix":"dsb"},"keys_dv.h":{"filename":"keys_dv.json","prefix":"dv"},"keys_dz.h":{"filename":"keys_dz.json","prefix":"dz"},"keys_el.h":{"filename":"keys_el.json","prefix":"el"},"keys_el_220.h":{"filename":"keys_el_220.json","prefix":"el"},"keys_el_319.h":{"filename":"keys_el_319.json","prefix":"el"},"keys_el_latin.h":{"filename":"keys_el_latin.json","prefix":"el"},"keys_el_latin_220.h":{"filename":"keys_el_latin_220.json","prefix":"el"},"keys_el_latin_319.h":{"filename":"keys_el_latin_319.json","prefix":"el"},"keys_el_polytonic.h":{"filename":"keys_el_polytonic.json","prefix":"el"},"keys_en_gb.h":{"filename":"keys_en_gb.json","prefix":"en"},"keys_en_gb_extended.h":{"filename":"keys_en_gb_extended.json","prefix":"en"},"keys_en_india.h":{"filename":"keys_en_india.json","prefix":"en"},"keys_us_international.h":{"filename":"keys_us_international.json","prefix":"usx"},"keys_dvorak.h":{"filename":"keys_dvorak.json","prefix":"en"},"keys_dvorak_left.h":{"filename":"keys_dvorak_left.json","prefix":"en"},"keys_dvorak_right.h":{"filename":"keys_dvorak_right.json","prefix":"en"},"keys_es.h":{"filename":"keys_es.json","prefix":"es"},"keys_es_variation.h":{"filename":"keys_es_variation.json","prefix":"es"},"keys_es_latin_american.h":{"filename":"keys_es_latin_american.json","prefix":"es"},"keys_et.h":{"filename":"keys_et.json","prefix":"et"},"keys_fa.h":{"filename":"keys_fa.json","prefix":"fa"},"keys_fa_standard.h":{"filename":"keys_fa_standard.json","prefix":"fa"},"keys_fi.h":{"filename":"keys_fi.json","prefix":"fi"},"keys_fi_sami.h":{"filename":"keys_fi_sami.json","prefix":"fi"},"keys_fo.h":{"filename":"keys_fo.json","prefix":"fo"},"keys_fr.h":{"filename":"keys_fr.json","prefix":"fr"},"keys_fr_belgian.h":{"filename":"keys_fr_belgian.json","prefix":"fr"},"keys_fr_belgian_period.h":{"filename":"keys_fr_belgian_period.json","prefix":"fr"},"keys_fr_canadian_standard.h":{"filename":"keys_fr_canadian_standard.json","prefix":"fr"},"keys_fr_canadian_french.h":{"filename":"keys_fr_canadian_french.json","prefix":"fr"},"keys_fr_swiss.h":{"filename":"keys_fr_swiss.json","prefix":"fr"},"keys_ga.h":{"filename":"keys_ga.json","prefix":"ga"},"keys_gd.h":{"filename":"keys_gd.json","prefix":"gd"},"keys_gn.h":{"filename":"keys_gn.json","prefix":"gn"},"keys_got.h":{"filename":"keys_got.json","prefix":"got"},"keys_gu.h":{"filename":"keys_gu.json","prefix":"gu"},"keys_ha.h":{"filename":"keys_ha.json","prefix":"ha"},"keys_haw.h":{"filename":"keys_haw.json","prefix":"haw"},"keys_he.h":{"filename":"keys_he.json","prefix":"he"},"keys_he_standard.h":{"filename":"keys_he_standard.json","prefix":"he"},"keys_hi.h":{"filename":"keys_hi.json","prefix":"hi"},"keys_hi_traditional.h":{"filename":"keys_hi_traditional.json","prefix":"hi"},"keys_hu.h":{"filename":"keys_hu.json","prefix":"hu"},"keys_hu_101.h":{"filename":"keys_hu_101.json","prefix":"hu"},"keys_hy.h":{"filename":"keys_hy.json","prefix":"hy"},"keys_hy_phonetic.h":{"filename":"keys_hy_phonetic.json","prefix":"hy"},"keys_ig.h":{"filename":"keys_ig.json","prefix":"ig"},"keys_is.h":{"filename":"keys_is.json","prefix":"is"},"keys_it.h":{"filename":"keys_it.json","prefix":"it"},"keys_it_142.h":{"filename":"keys_it_142.json","prefix":"it"},"keys_iu.h":{"filename":"keys_iu.json","prefix":"iu"},"keys_iu_latin.h":{"filename":"keys_iu_latin.json","prefix":"iu"},"keys_jv.h":{"filename":"keys_jv.json","prefix":"jv"},"keys_ka.h":{"filename":"keys_ka.json","prefix":"ka"},"keys_ka_ergonomic.h":{"filename":"keys_ka_ergonomic.json","prefix":"ka"},"keys_ka_qwerty.h":{"filename":"keys_ka_qwerty.json","prefix":"ka"},"keys_khb.h":{"filename":"keys_khb.json","prefix":"khb"},"keys_khb_tai_le.h":{"filename":"keys_khb_tai_le.json","prefix":"khb"},"keys_kk.h":{"filename":"keys_kk.json","prefix":"kk"},"keys_kl.h":{"filename":"keys_kl.json","prefix":"kl"},"keys_km.h":{"filename":"keys_km.json","prefix":"km"},"keys_km_nida.h":{"filename":"keys_km_nida.json","prefix":"km"},"keys_kn.h":{"filename":"keys_kn.json","prefix":"kn"},"keys_ko.h":{"filename":"keys_ko.json","prefix":"ko"},"keys_ky.h":{"filename":"keys_ky.json","prefix":"ky"},"keys_la_old_italic.h":{"filename":"keys_la_old_italic.json","prefix":"la"},"keys_lb.h":{"filename":"keys_lb.json","prefix":"lb"},"keys_lis.h":{"filename":"keys_lis.json","prefix":"lis"},"keys_lis_standard.h":{"filename":"keys_lis_standard.json","prefix":"lis"},"keys_lo.h":{"filename":"keys_lo.json","prefix":"lo"},"keys_lt.h":{"filename":"keys_lt.json","prefix":"lt"},"keys_lt_ibm.h":{"filename":"keys_lt_ibm.json","prefix":"lt"},"keys_lt_standard.h":{"filename":"keys_lt_standard.json","prefix":"lt"},"keys_lv.h":{"filename":"keys_lv.json","prefix":"lv"},"keys_lv_qwerty.h":{"filename":"keys_lv_qwerty.json","prefix":"lv"},"keys_lv_standard.h":{"filename":"keys_lv_standard.json","prefix":"lv"},"keys_mi.h":{"filename":"keys_mi.json","prefix":"mi"},"keys_mk.h":{"filename":"keys_mk.json","prefix":"mk"},"keys_ml.h":{"filename":"keys_ml.json","prefix":"ml"},"keys_mn.h":{"filename":"keys_mn.json","prefix":"mn"},"keys_mn_traditional.h":{"filename":"keys_mn_traditional.json","prefix":"mn"},"keys_mn_phags_pa.h":{"filename":"keys_mn_phags_pa.json","prefix":"mn"},"keys_mr.h":{"filename":"keys_mr.json","prefix":"mr"},"keys_mt.h":{"filename":"keys_mt.json","prefix":"mt"},"keys_mt_101.h":{"filename":"keys_mt_101.json","prefix":"mt"},"keys_my.h":{"filename":"keys_my.json","prefix":"my"},"keys_nb.h":{"filename":"keys_nb.json","prefix":"nb"},"keys_nb_sami.h":{"filename":"keys_nb_sami.json","prefix":"nb"},"keys_ne.h":{"filename":"keys_ne.json","prefix":"ne"},"keys_nl.h":{"filename":"keys_nl.json","prefix":"nl"},"keys_nl_period.h":{"filename":"keys_nl_period.json","prefix":"nl"},"keys_non.h":{"filename":"keys_non.json","prefix":"non"},"keys_nso.h":{"filename":"keys_nso.json","prefix":"nso"},"keys_or.h":{"filename":"keys_or.json","prefix":"or"},"keys_pa.h":{"filename":"keys_pa.json","prefix":"pa"},"keys_pl.h":{"filename":"keys_pl.json","prefix":"pl"},"keys_pl_programmers.h":{"filename":"keys_pl_programmers.json","prefix":"pl"},"keys_ps.h":{"filename":"keys_ps.json","prefix":"ps"},"keys_pt.h":{"filename":"keys_pt.json","prefix":"pt"},"keys_pt_abnt.h":{"filename":"keys_pt_abnt.json","prefix":"pt"},"keys_pt_abnt2.h":{"filename":"keys_pt_abnt2.json","prefix":"pt"},"keys_ro.h":{"filename":"keys_ro.json","prefix":"ro"},"keys_ro_programmers.h":{"filename":"keys_ro_programmers.json","prefix":"ro"},"keys_ru.h":{"filename":"keys_ru.json","prefix":"ru"},"keys_ru_phonetic.h":{"filename":"keys_ru_phonetic.json","prefix":"ru"},"keys_sah.h":{"filename":"keys_sah.json","prefix":"sah"},"keys_sat.h":{"filename":"keys_sat.json","prefix":"sat"},"keys_se.h":{"filename":"keys_se.json","prefix":"se"},"keys_se_finland_sweden.h":{"filename":"keys_se_finland_sweden.json","prefix":"se"},"keys_si.h":{"filename":"keys_si.json","prefix":"si"},"keys_sk.h":{"filename":"keys_sk.json","prefix":"sk"},"keys_sk_qwerty.h":{"filename":"keys_sk_qwerty.json","prefix":"sk"},"keys_sl.h":{"filename":"keys_sl.json","prefix":"sl"},"keys_so.h":{"filename":"keys_so.json","prefix":"so"},"keys_sq.h":{"filename":"keys_sq.json","prefix":"sq"},"keys_sr.h":{"filename":"keys_sr.json","prefix":"sr"},"keys_sr_latin.h":{"filename":"keys_sr_latin.json","prefix":"sr"},"keys_srb.h":{"filename":"keys_srb.json","prefix":"srb"},"keys_sv.h":{"filename":"keys_sv.json","prefix":"sv"},"keys_sv_sami.h":{"filename":"keys_sv_sami.json","prefix":"sv"},"keys_syr.h":{"filename":"keys_syr.json","prefix":"syr"},"keys_syr_phonetic.h":{"filename":"keys_syr_phonetic.json","prefix":"syr"},"keys_ta.h":{"filename":"keys_ta.json","prefix":"ta"},"keys_te.h":{"filename":"keys_te.json","prefix":"te"},"keys_tg.h":{"filename":"keys_tg.json","prefix":"tg"},"keys_th.h":{"filename":"keys_th.json","prefix":"th"},"keys_th_pattachote.h":{"filename":"keys_th_pattachote.json","prefix":"th"},"keys_tk.h":{"filename":"keys_tk.json","prefix":"tk"},"keys_tmh.h":{"filename":"keys_tmh.json","prefix":"tmh"},"keys_tmh_extended.h":{"filename":"keys_tmh_extended.json","prefix":"tmh"},"keys_tn.h":{"filename":"keys_tn.json","prefix":"tn"},"keys_tr.h":{"filename":"keys_tr.json","prefix":"tr"},"keys_tr_f.h":{"filename":"keys_tr_f.json","prefix":"tr"},"keys_tt.h":{"filename":"keys_tt.json","prefix":"tt"},"keys_tzm.h":{"filename":"keys_tzm.json","prefix":"tzm"},"keys_ug.h":{"filename":"keys_ug.json","prefix":"ug"},"keys_uk.h":{"filename":"keys_uk.json","prefix":"uk"},"keys_uk_enhanced.h":{"filename":"keys_uk_enhanced.json","prefix":"uk"},"keys_ur.h":{"filename":"keys_ur.json","prefix":"ur"},"keys_uz.h":{"filename":"keys_uz.json","prefix":"uz"},"keys_vi.h":{"filename":"keys_vi.json","prefix":"vi"},"keys_wo.h":{"filename":"keys_wo.json","prefix":"wo"},"keys_yo.h":{"filename":"keys_yo.json","prefix":"yo"}}')}},function(e){e.O(0,[3712,1216,5514],(function(){return 52235,e(e.s=52235)})),e.O()}]); +//# sourceMappingURL=main.8019d5f4a7d8269a3c78.js.map \ No newline at end of file diff --git a/main.8019d5f4a7d8269a3c78.js.LICENSE.txt b/main.8019d5f4a7d8269a3c78.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/main.8019d5f4a7d8269a3c78.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/main.8019d5f4a7d8269a3c78.js.map b/main.8019d5f4a7d8269a3c78.js.map new file mode 100644 index 0000000..f809b6b --- /dev/null +++ b/main.8019d5f4a7d8269a3c78.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.8019d5f4a7d8269a3c78.js","mappings":"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AAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,qBAAsB,CACrB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,KAED,uBAAwB,CACvB,MACA,KAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,aAAc,CACb,KACA,MAED,kBAAmB,CAClB,KACA,MAED,sBAAuB,CACtB,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,wBAAyB,CACxB,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,qBAAsB,CACrB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,aAAc,CACb,MACA,KAED,kBAAmB,CAClB,MACA,KAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,KAED,2BAA4B,CAC3B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,KAED,0BAA2B,CAC1B,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,mCAAoC,CACnC,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,gBAAiB,CAChB,KACA,MAED,qBAAsB,CACrB,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,KAED,qBAAsB,CACrB,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,oBAAqB,CACpB,MACA,KAED,yBAA0B,CACzB,MACA,KAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,KAED,qBAAsB,CACrB,MACA,KAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,KAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,wBAAyB,CACxB,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,wBAAyB,CACxB,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,YAAa,CACZ,MACA,IAED,iBAAkB,CACjB,MACA,IAED,wBAAyB,CACxB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,aAAc,CACb,IACA,MAED,kBAAmB,CAClB,IACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,KAED,uBAAwB,CACvB,MACA,KAED,aAAc,CACb,IACA,MAED,kBAAmB,CAClB,IACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,uBAAwB,CACvB,MACA,KAED,4BAA6B,CAC5B,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,cAAe,CACd,MACA,MAED,mBAAoB,CACnB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,KAED,kBAAmB,CAClB,MACA,KAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,OAGF,SAAS4gB,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE/gB,EAAK6gB,GAC9B,OAAOtnB,QAAQynB,UAAU/G,MAAK,WAC7B,IAAI5iB,EAAI,IAAI6iB,MAAM,uBAAyB2G,EAAM,KAEjD,MADAxpB,EAAE2W,KAAO,mBACH3W,CACP,IAGD,IAAI4pB,EAAMjhB,EAAI6gB,GAAM/W,EAAKmX,EAAI,GAC7B,OAAO1nB,QAAQC,IAAIynB,EAAIC,MAAM,GAAGlhB,IAAI8gB,EAAoBzpB,IAAI4iB,MAAK,WAChE,OAAO6G,EAAoBK,EAAErX,EAAI,GAClC,GACD,CACA8W,EAAoBpkB,KAAO,WAAa,OAAO5G,OAAO4G,KAAKwD,EAAM,EACjE4gB,EAAoB9W,GAAK,MACzB4W,EAAOU,QAAUR","sources":["webpack:///./src/Common/dialog-box.module.css?bee6","webpack:///./src/Common/DialogBox.js","webpack:///./src/Common/Icon.js","webpack:///./src/Common/IconButton.js","webpack:///./src/Common/link.module.css?df4e","webpack:///./src/Common/Link.js","webpack:///./src/Common/Modal.js","webpack:///./src/Common/hooks/use-toggle.js","webpack:///./src/Contexts/Definitions.js","webpack:///./src/Contexts/Layout.js","webpack:///./src/Dialogs/support.js","webpack:///./src/Keyboard/Behaviors/behaviorsSlice.js","webpack:///./src/Keyboard/Combos/combosSlice.js","webpack:///./src/Keyboard/Layers/layer-index-change-action.js","webpack:///./src/Keyboard/Layers/layersSlice.js","webpack:///./src/Keyboard/Macros/macrosSlice.js","webpack:///./src/Keyboard/util.js","webpack:///./src/Sources/Controls.js","webpack:///./src/Sources/Github/api.js","webpack:///./src/config.js","webpack:///./src/index.css?cfe4","webpack:///./src/App.css?d9cd","webpack:///./src/Keyboard/Context.js","webpack:///./src/Keyboard/Binding/bindingPropTypes.js","webpack:///./src/Keyboard/Combos/comboPropTypes.js","webpack:///./src/Keyboard/keymapPropTypes.js","webpack:///./src/Keyboard/Warnings/sanity-checks-layout.js","webpack:///./src/Keyboard/Warnings/sanity-checks.js","webpack:///./src/Keyboard/Keyboard.js","webpack:///./src/styles.module.css?f79c","webpack:///./src/GitHubLink.js","webpack:///./src/Dialogs/Settings.js","webpack:///./src/Dialogs/SuggestAutoLayoutTweak.js","webpack:///./src/Dialogs/KeymapBindingsUsePreprocessorMacros.js","webpack:///./src/Dialogs/KeymapBindingsUseAutoshiftMacro.js","webpack:///./src/Dialogs/KeymapParsingFailed.js","webpack:///./src/Dialogs/KeymapUsingMiryoku.js","webpack:///./src/Dialogs/MissingRootNode.js","webpack:///./src/Dialogs/ZmkNodefreeConfig.js","webpack:///./src/Sources/sources.js","webpack:///./src/Sources/styles.module.css?2b76","webpack:///./src/Sources/SourcePicker.js","webpack:///./src/Common/hooks/use-click-outside-handler.js","webpack:///./src/Sources/errors.js","webpack:///./src/Dialogs/unexpected-error.module.css?94c7","webpack:///./src/Dialogs/UnexpectedError.js","webpack:///./src/ErrorBoundary.js","webpack:///./src/Dialogs/KeymapSaveFailed.js","webpack:///./src/Sources/Github/api-status.js","webpack:///./src/Sources/Github/GitHubApiStatus.js","webpack:///./src/App.js","webpack:///./src/appReducer.js","webpack:///./src/store.js","webpack:///./src/index.js","webpack:///./src/key-units.js","webpack:///./src/keycodes.js","webpack:///./src/keymap.js","webpack:///./src/providers.js","webpack:///./src/App.css","webpack:///./src/index.css","webpack:///./src/Common/dialog-box.module.css","webpack:///./src/Common/link.module.css","webpack:///./src/Dialogs/unexpected-error.module.css","webpack:///./src/Keyboard/styles.module.css","webpack:///./src/Sources/styles.module.css","webpack:///./src/styles.module.css","webpack:///./src/Keyboard/styles.module.css?75da","webpack:///./node_modules/zmk-data/data/locales/ lazy ^\\.\\/.*$ include: \\.json$ chunkName: locales/[request]-keycodes namespace object"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./dialog-box.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./dialog-box.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './dialog-box.module.css'\n\nexport default function DialogBox (props) {\n const { dismissText = 'Ok', classes = [], onDismiss, children, ...rest } = props\n\n return (\n
\n {children}\n {dismissText && (\n \n )}\n
\n )\n}\n","import PropTypes from 'prop-types'\n\nconst faCollections = {\n brands: 'fab',\n default: 'fa',\n regular: 'fa-regular',\n light: 'fa-light',\n solid: 'fas',\n round: 'far'\n}\n\nfunction Icon (props) {\n const { name, className, collection, ...iconProps } = props\n const groupClass = faCollections[collection]\n const iconClass = `fa-${name}`\n\n return (\n \n )\n}\n\nIcon.propTypes = {\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n collection: PropTypes.string\n}\n\nIcon.defaultProps = {\n collection: 'default',\n className: ''\n}\n\nexport default Icon\n","import Icon from './Icon'\n\nexport default function IconButton ({ collection, icon, text, children, onClick, ...rest }) {\n return (\n \n )\n}\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./link.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./link.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import PropTypes from 'prop-types'\n\nimport Icon from './Icon'\nimport styles from './link.module.css'\n\nfunction Link (props) {\n const { href, children, external, showExternal, ...rest } = props\n const properties = Object.assign({ href }, rest, external && {\n rel: 'noreferrer',\n target: '_blank'\n })\n\n return (\n \n {children}\n {external && showExternal && (\n \n )}\n \n )\n}\n\nLink.propTypes = {\n href: PropTypes.string.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n external: PropTypes.bool.isRequired,\n showExternal: PropTypes.bool\n}\n\nLink.defaultProps = {\n external: false,\n showExternal: true\n}\n\nexport default Link\n","import ReactDOM from 'react-dom'\nimport { useCallback, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nconst styles = {\n wrapper: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100vw',\n height: '100vh',\n backgroundColor: 'rgba(104, 123, 162, 0.39)',\n backdropFilter: 'blur(1px)',\n zIndex: '50',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n centerOnly: {\n background: 'transparent',\n backdropFilter: 'none',\n pointerEvents: 'none'\n },\n content: {\n display: 'block',\n pointerEvents: 'all'\n }\n}\n\nexport default function Modal ({ onDismiss, centerOnly = false, children }) {\n const content = useRef()\n const handleClick = useCallback(function (e) {\n if (onDismiss && content.current && e.target.contains(content.current)) {\n e.stopPropagation()\n onDismiss()\n }\n }, [content, onDismiss])\n\n const style = centerOnly\n ? { ...styles.wrapper, ...styles.centerOnly }\n : styles.wrapper\n\n return ReactDOM.createPortal(\n
\n
\n {children}\n
\n
,\n document.getElementById('modal-root')\n )\n}\n\nModal.propTypes = {\n onDismiss: PropTypes.func\n}\n\nexport function useModalState () {\n const [isOpen, setIsOpen] = useState(false)\n\n const open = useCallback(event => {\n event?.stopPropagation && event.stopPropagation()\n setIsOpen(true)\n }, [setIsOpen])\n\n const close = useCallback(event => {\n event?.stopPropagation && event.stopPropagation()\n setIsOpen(false)\n }, [setIsOpen])\n\n return [isOpen, open, close]\n}\n","import { useCallback, useState } from 'react'\n\nexport default function useToggle (initialState) {\n const [toggleState, setToggleState] = useState(initialState)\n const toggle = useCallback(() => setToggleState(state => !state), [setToggleState])\n const forceOn = useCallback(() => setToggleState(true), [setToggleState])\n const forceOff = useCallback(() => setToggleState(false), [setToggleState])\n return [toggleState, toggle, forceOn, forceOff]\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport filter from 'lodash/filter'\nimport keyBy from 'lodash/keyBy'\nimport { createContext, useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { normalizeZmkKeycodes } from '../keycodes'\n\nexport const DefinitionsContext = createContext({\n keycodes: [],\n behaviours: [],\n behaviors: {},\n behaviorBinds: [],\n glyphs: []\n})\n\n// TODO: I bet this doesn't need to be in the app state at all\nconst selectDefinitions = state => state.definitions\n\nexport function DefinitionsContextProvider ({ children }) {\n const definitions = useSelector(selectDefinitions)\n const dispatch = useDispatch()\n\n useEffect(() => {\n (async function () {\n if (definitions !== null) {\n return\n }\n\n const [[keycodes, glyphs], behaviors] = await Promise.all([\n loadKeycodes(),\n loadBehaviourBindings()\n ])\n\n // TODO: update references to better understand the difference between\n // \"behaviors\" (e.g. hold tap) and the \"behavior bindings\" that implement\n // them (e.g. < and &mt)\n const schemas = cloneDeep(behaviors.behaviors)\n const behaviours = cloneDeep(behaviors.bindings)\n\n keycodes.indexed = keyBy(keycodes, 'code')\n behaviours.indexed = keyBy(behaviours, 'code')\n behaviours.context = {\n none: behaviours.filter(({ context }) => !context),\n macros: filter(behaviours, { context: 'macros' }),\n encoders: filter(behaviours, { context: 'encoders' })\n }\n behaviours.byContext = {\n none: keyBy(behaviours.context.none, 'code'),\n macros: keyBy(behaviours.context.macros, 'code'),\n encoders: keyBy(behaviours.context.encoders, 'code')\n }\n\n dispatch({\n type: 'DEFINITIONS_SET',\n definitions: {\n keycodes,\n behaviours,\n behaviors: schemas,\n behaviorBinds: behaviours,\n glyphs\n }\n })\n })()\n }, [definitions, dispatch])\n\n // TODO: show a spinner MAYBE\n if (!definitions) {\n return\n }\n\n return (\n \n {children}\n \n )\n}\n\nasync function loadBehaviourBindings () {\n const { behaviorSchemas, behaviorBindings } = await import('zmk-data/behaviors')\n return {\n behaviors: behaviorSchemas,\n bindings: behaviorBindings\n }\n}\n\nasync function loadKeycodes () {\n const { keycodes, keycodeGlyphs } = await import('zmk-data/keycodes')\n return [\n normalizeZmkKeycodes(keycodes),\n keycodeGlyphs\n ]\n}\n","import { createContext, useMemo } from 'react'\nimport { getWrapperDimensions, getWrapperStyle } from '../Keyboard/util'\n\nexport const LayoutContext = createContext({\n layout: [],\n bindingCount: 0,\n wrapperDimensions: {},\n wrapperStyle: {}\n})\n\nexport function LayoutContextProvider ({ layout, children }) {\n const bindingCount = useMemo(() => layout.length, [layout.length])\n const wrapperDimensions = useMemo(() => getWrapperDimensions(layout), [layout])\n const wrapperStyle = useMemo(() => getWrapperStyle(wrapperDimensions), [wrapperDimensions])\n\n const context = {\n layout,\n bindingCount,\n wrapperDimensions,\n wrapperStyle\n }\n\n return (\n \n {children}\n \n )\n}\n","import Link from '../Common/Link'\n\nexport const githubIssuesUrl = 'https://github.com/nickcoutsos/keymap-editor/issues'\nexport const githubWikiLayoutsUrl = 'https://github.com/nickcoutsos/keymap-editor/wiki/Defining-keyboard-layouts'\nexport const keymapLayoutToolsUrl = 'https://nickcoutsos.github.io/keymap-layout-tools/'\nexport const discordProfileUrl = 'https://discord.com/users/115507966555193345'\n\nexport const GitHubIssuesLink = (\n \n Keymap Editor Issues\n \n)\n\nexport const GitHubWikiLayoutsLink = (\n \n Keymap Editor Wiki: Defining keyboard layouts\n \n)\n\nexport const layoutToolsLink = (\n \n Keymap Layout Tools - Helper\n \n)\n\nexport const DiscordProfileLink = (\n \n Discord - nickcoutsos#4351\n \n)\n\nexport const GeneralHelpOfferCopy = (\n <>\n

\n If you are looking for help in getting up and running or want a better\n understanding of the issue, please feel free to reach out to me:\n

\n
    \n
  • {GitHubIssuesLink}
  • \n
  • {DiscordProfileLink}
  • \n
\n \n)\n\nexport const KeymapLayoutResources = (\n

\n For more information about how Keymap Editor layouts are defined, you can\n read {GitHubWikiLayoutsLink}, and if you need an environment to quickly test\n changes to a layout try {layoutToolsLink}.\n

\n)\n","import { createSlice } from '@reduxjs/toolkit'\nimport { layerIndexChanged, makeLayerIndexChangeReducer } from '../Layers/layer-index-change-action'\n\nexport const selectBehaviors = state => state.keyboard.keymap.behaviors\n\nconst selectNodeCompatible = node => (\n node.properties.compatible?.parsed ||\n node.properties.compatible?.raw?.replace(/\"/g, '')\n)\n\nconst selectNodePhandleArrays = (node, behaviors, schemas) => {\n const compatible = selectNodeCompatible(node)\n const schema = schemas[compatible]\n\n if (!schema) {\n return []\n }\n\n return Object.keys(schema.properties).reduce((phandleArrays, prop) => {\n const propSchema = schema.properties[prop]\n const propValues = node.properties[prop]\n if (propSchema.type === 'phandle-array' && propValues) {\n phandleArrays.push(propValues.parsed)\n }\n\n return phandleArrays\n }, [])\n}\n\nconst behaviorsSlice = createSlice({\n name: 'behaviors',\n initialState: [],\n reducers: {\n addBehavior (state, action) {\n state.push(action.payload.behavior)\n },\n updateBehavior (state, action) {\n state[action.payload.behaviorIndex] = action.payload.behavior\n },\n deleteBehavior (state, action) {\n state.splice(action.payload.behaviorIndex, 1)\n }\n },\n extraReducers: builder => {\n builder.addCase(\n layerIndexChanged,\n makeLayerIndexChangeReducer(\n selectNodePhandleArrays\n )\n )\n }\n})\n\nexport const {\n addBehavior,\n updateBehavior,\n deleteBehavior\n} = behaviorsSlice.actions\n\nexport default behaviorsSlice.reducer\n","import { createSlice } from '@reduxjs/toolkit'\nimport { layerIndexChanged, makeLayerIndexChangeReducer } from '../Layers/layer-index-change-action'\n\nexport const selectCombos = state => state.keyboard.keymap.combos\n\nconst combosSlice = createSlice({\n name: 'combos',\n initialState: [],\n reducers: {\n updateComboBinding (state, action) {\n state[action.payload.comboIndex].properties.bindings = { parsed: action.payload.bindings }\n },\n updateComboKeypositions (state, action) {\n state[action.payload.comboIndex].properties['key-positions'] = {\n parsed: action.payload.keyPositions\n }\n },\n createCombo (state) {\n state.push({\n name: 'new_combo',\n labels: [],\n properties: {\n bindings: {\n parsed: [{ value: '&trans', params: [] }]\n },\n 'key-positions': {\n parsed: []\n }\n }\n })\n },\n renameCombo (state, action) {\n state[action.payload.index].name = action.payload.name\n },\n deleteCombo (state, action) {\n state.splice(action.payload.index, 1)\n },\n customizeCombo (state, action) {\n const { index, combo } = action.payload\n state[index] = combo\n }\n },\n extraReducers: builder => {\n const comboBindingsReducer = makeLayerIndexChangeReducer()\n\n builder.addCase(\n layerIndexChanged,\n function reducer (state, action) {\n const { positionMapping } = action.payload\n comboBindingsReducer(state, action)\n for (const { properties } of state) {\n if (!properties.layers?.parsed?.length) {\n continue\n }\n\n properties.layers.parsed = properties.layers.parsed.reduce((layers, index) => {\n const newIndex = positionMapping[index]\n if (newIndex !== null) {\n layers.push(newIndex)\n }\n\n return layers\n }, [])\n }\n }\n )\n }\n})\n\nexport const {\n updateComboBinding,\n updateComboKeypositions,\n createCombo,\n renameCombo,\n deleteCombo,\n customizeCombo\n} = combosSlice.actions\n\nexport default combosSlice.reducer\n","import get from 'lodash/get'\nimport { createAction } from '@reduxjs/toolkit'\n\nimport { getBindingSlots } from '../../keymap'\n\nexport function selectLayerParamsFromBinding (binding, behaviorParameters) {\n const behaviorParams = getBindingSlots(binding, behaviorParameters)\n\n return behaviorParams.reduce((layerParams, param, i) => {\n if (param === 'layer') {\n layerParams.push(binding.params[i])\n }\n\n return layerParams\n }, [])\n}\n\nexport const layerIndexChanged = createAction(\n 'layers/indexChanged',\n function prepare (currentIndex, targetIndex, layers, searchContext, definitionsContext) {\n const positionMapping = createLayerIndexMapping(currentIndex, targetIndex, layers)\n const { sources, behaviorParameters } = searchContext\n const { behaviors: behaviorSchemas } = definitionsContext\n\n return {\n payload: {\n currentIndex,\n targetIndex,\n sources,\n behaviorSchemas,\n behaviorParameters,\n positionMapping\n }\n }\n }\n)\n\nconst defaultSelectPhandleArrays = node => [node.properties.bindings.parsed]\n\n/**\n * Create a reducer to update layer index binding cells after a layer shift.\n * @param {Function} selectPhandleArrays - callback to return parsed phandle-array values from any relevant property in a node\n * @returns {Function} reducer\n */\nexport function makeLayerIndexChangeReducer (selectPhandleArrays = defaultSelectPhandleArrays) {\n return function reducer (state, action) {\n const { sources, behaviorSchemas, behaviorParameters, positionMapping } = action.payload\n const { behaviours: behaviors, defines } = sources\n const layerParamsIterator = makeLayerParamsIterator(\n state, behaviors, behaviorSchemas, behaviorParameters, selectPhandleArrays\n )\n\n for (const param of layerParamsIterator) {\n let selectedIndex = get(defines, param.value, param.value)\n if (!Number.isNaN(Number(selectedIndex))) {\n selectedIndex = Number(selectedIndex)\n }\n\n param.value = positionMapping[selectedIndex]?.toString()\n if (param.value === undefined) {\n param.value = '0'\n param._isPlaceholder = true\n }\n }\n }\n}\n\nfunction createLayerIndexMapping (currentIndex, targetIndex, layers) {\n const layerIndices = [...layers.keys()]\n\n // Deleted layer means references to currentIndex are nulled,\n // and referencs > currentIndex are decremented\n if (targetIndex === null) {\n return layerIndices.map(i => {\n if (i === currentIndex) {\n return null\n }\n\n return i > currentIndex ? i - 1 : i\n })\n }\n\n return layerIndices.map(i => {\n const sameIndex = i === currentIndex\n const bothBefore = i > currentIndex && i > targetIndex\n const bothAfter = i < currentIndex && i < targetIndex\n const betweenOldAndNew = currentIndex < i && i < targetIndex\n\n if (sameIndex) {\n // Normally the \"target\" is another layer whose position is being taken,\n // but in the case of targetting the end of the list this isn't a valid\n // array index.\n if (targetIndex === layers.length) {\n return targetIndex - 1\n }\n\n return targetIndex\n } else if (bothBefore || bothAfter) {\n return i\n } else if (betweenOldAndNew) {\n return i - 1\n }\n\n return i + 1\n })\n}\n\n/**\n * Create iterator for all layer-related binding cells in a state slice.\n * This reducer is used with state slices that represent a collection of nodes\n * each of which have one or more properties representing phandle arrays which\n * may have parameters binding to layer indices. This iterator abstracts that\n * so we can just loop through layer parameters.\n * @param {Array} state\n * @param {*} behaviors\n * @param {*} behaviorSchemas\n * @param {Function} selectPhandleArrays\n */\nfunction * makeLayerParamsIterator (state, behaviors, behaviorSchemas, behaviorParameters, selectPhandleArrays) {\n for (const node of state) {\n for (const bindings of selectPhandleArrays(node, behaviors, behaviorSchemas)) {\n for (const binding of bindings) {\n for (const param of selectLayerParamsFromBinding(binding, behaviorParameters)) {\n yield param\n }\n }\n }\n }\n}\n","import times from 'lodash/times'\nimport { createSlice } from '@reduxjs/toolkit'\nimport { layerIndexChanged, makeLayerIndexChangeReducer } from './layer-index-change-action'\n\nconst DEFAULT_BIND_BEHAVIOUR = '&trans'\nconst createEmptyBinding = (value = DEFAULT_BIND_BEHAVIOUR) => ({\n value, params: []\n})\n\nexport const selectLayers = state => state.keyboard.keymap.layers\n\nconst layersSlice = createSlice({\n name: 'layers',\n initialState: [],\n reducers: {\n createLayer (state, action) {\n state.push({\n name: `layer_${state.length}`,\n labels: [],\n properties: {\n bindings: {\n parsed: times(action.payload.bindingCount, () => createEmptyBinding())\n }\n }\n })\n },\n updateLayerMetadata (state, action) {\n const { layerIndex, name, label } = action.payload\n if (name) {\n state[layerIndex].name = name\n }\n if (label !== undefined) {\n state[layerIndex].properties.label = {\n parsed: label\n }\n }\n },\n renameLayer (state, action) {\n state[action.payload.index].name = action.payload.name\n },\n repositionLayer (state, action) {\n const { currentIndex, targetIndex } = action.payload\n if (currentIndex === targetIndex) {\n return\n }\n\n const layer = state[currentIndex]\n\n // moving a layer up means shifting other layers down\n const replacementIndex = targetIndex > currentIndex\n ? targetIndex - 1\n : targetIndex\n\n state.splice(currentIndex, 1)\n state.splice(replacementIndex, 0, layer)\n },\n deleteLayer (state, action) {\n state.splice(action.payload.index, 1)\n },\n updateKeyBinding (state, action) {\n state[action.payload.layerIndex].properties.bindings.parsed[action.payload.bindIndex] = action.payload.binding\n },\n updateSensorBindings (state, action) {\n const { layerIndex, sensorIndex, bindings: binding } = action.payload\n const { properties } = state[layerIndex]\n properties['sensor-bindings'] = properties['sensor-bindings'] || { parsed: [] }\n const bindings = properties['sensor-bindings'].parsed\n\n bindings[sensorIndex] = binding\n\n // Ensure that every sensor binding up to this one has SOME value defined\n // so that we don't barf when attempting to serialize these bindings.\n // TODO: default to `&trans` once ZMK allows it in sensor bindings.\n for (let i = 0; i < sensorIndex; i++) {\n bindings[i] = (\n bindings[i] || {\n value: '&inc_dec_kp',\n params: [\n { value: 0, _isPlaceholder: true, params: [] },\n { value: 0, _isPlaceholder: true, params: [] }\n ]\n }\n )\n }\n\n const undefinedStart = bindings.indexOf(undefined)\n if (undefinedStart !== -1) {\n bindings.splice(undefinedStart, bindings.length - undefinedStart)\n }\n },\n rebindTransparentToKeyPress (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&trans') {\n binding.value = '&kp'\n binding.params = []\n }\n }\n },\n rebindTransparentToNone (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&trans') {\n binding.value = '&none'\n binding.params = []\n }\n }\n },\n rebindNoneToKeypress (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&none') {\n binding.value = '&kp'\n binding.params = []\n }\n }\n },\n rebindNoneToTransparent (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&none') {\n binding.value = '&trans'\n binding.params = []\n }\n }\n },\n rebindEmptyKeypressToTransparent (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&kp' && !binding.params[0]?.value) {\n binding.value = '&trans'\n binding.params = []\n }\n }\n },\n rebindEmptyKeypressToNone (state, action) {\n for (const binding of state[action.payload.layerIndex].properties.bindings.parsed) {\n if (binding.value === '&kp' && !binding.params[0]?.value) {\n binding.value = '&none'\n binding.params = []\n }\n }\n }\n },\n extraReducers: builder => {\n builder.addCase(\n layerIndexChanged,\n makeLayerIndexChangeReducer(node => [\n node.properties.bindings.parsed,\n node.properties['sensor-bindings']?.parsed || []\n ])\n )\n }\n})\n\nexport const {\n createLayer,\n renameLayer,\n repositionLayer,\n deleteLayer,\n updateLayerMetadata,\n updateKeyBinding,\n updateSensorBindings,\n rebindTransparentToKeyPress,\n rebindTransparentToNone,\n rebindNoneToKeypress,\n rebindNoneToTransparent,\n rebindEmptyKeypressToTransparent,\n rebindEmptyKeypressToNone\n} = layersSlice.actions\n\nexport default layersSlice.reducer\n","import { createSlice } from '@reduxjs/toolkit'\nimport { layerIndexChanged, makeLayerIndexChangeReducer } from '../Layers/layer-index-change-action'\n\nexport const selectMacros = state => state.keyboard.keymap.macros\n\nconst macrosSlice = createSlice({\n name: 'macros',\n initialState: [],\n reducers: {\n addMacro (state, action) {\n state.push(action.payload)\n },\n deleteMacro (state, action) {\n state.splice(action.payload.index, 1)\n },\n updateMacroBindings (state, action) {\n const { index, bindings } = action.payload\n state[index].properties.bindings.parsed = bindings\n },\n customizeMacroOptions (state, action) {\n Object.assign(state[action.payload.macroIndex], action.payload.options)\n }\n },\n extraReducers: builder => {\n builder.addCase(\n layerIndexChanged,\n makeLayerIndexChangeReducer()\n )\n }\n})\n\nexport const {\n addMacro,\n deleteMacro,\n updateMacroBindings,\n customizeMacroOptions\n} = macrosSlice.actions\n\nexport default macrosSlice.reducer\n","import { transformKeyPolygon, getKeyBoundingBox } from '../key-units'\n\nexport function getLayoutPolygons (layout, { scale = 1 }) {\n return layout.map(key => transformKeyPolygon(\n { x: key.x, y: key.y },\n { u: key.u || key.w || 1, h: key.h || 1 },\n { x: key.rx, y: key.ry, a: key.r }\n ))\n}\n\nexport function getWrapperDimensions (layout) {\n return layout.map(key => getKeyBoundingBox(\n { x: key.x, y: key.y },\n { u: key.u || key.w || 1, h: key.h || 1 },\n { x: key.rx, y: key.ry, a: key.r }\n )).reduce(({ x, y }, { max }) => ({\n x: Math.max(x, max.x),\n y: Math.max(y, max.y)\n }), { x: 0, y: 0 })\n}\n\nexport function getWrapperStyle (layoutOrBBox, { scale = 1, overrides = {} } = {}) {\n const bbox = Array.isArray(layoutOrBBox)\n ? getWrapperDimensions(layoutOrBBox)\n : layoutOrBBox\n\n return {\n width: `${bbox.x * scale}px`,\n height: `${bbox.y * scale}px`,\n margin: '0 auto',\n padding: '0 40px 40px',\n ...overrides\n }\n}\n","import ReactSelect, { components } from 'react-select'\nimport { useSelector } from 'react-redux'\n\nexport function Control ({ style = {}, children }) {\n // based on react-select's control height, which should come from a theme instead\n const baseStyle = {\n height: '38px',\n lineHeight: '38px'\n }\n\n return (\n
\n {children}\n
\n )\n}\n\nexport function Button ({ children, style = {}, ...rest }) {\n return (\n \n \n \n )\n}\n\nconst darkModePreference = window.matchMedia('(prefers-color-scheme: dark)')\nconst invertedThemeColors = [0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90].reduce((colors, i) => {\n colors[`neutral${i}`] = `hsl(210, 33%, ${i + 15}%)`\n return colors\n}, {})\n\ninvertedThemeColors.primary25 = 'hsl(214, 100%, 40%)'\n\nexport function Select ({ label, children: extraChildren, ...rest }) {\n const { theme } = useSelector(state => state)\n const isDark = theme === 'dark' || (theme === 'system' && darkModePreference.matches)\n\n const MenuList = ({ children, ...props }) => (\n \n {children}\n {extraChildren}\n \n )\n\n return (\n
\n \n ({\n ...baseStyles,\n display: 'inline-block'\n }),\n menu: (baseStyles) => ({\n ...baseStyles,\n width: 'max-content',\n zIndex: 10\n })\n }}\n components={{ MenuList }}\n theme={theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n ...(isDark ? invertedThemeColors : {})\n }\n })}\n isSearchable={false}\n {...rest}\n />\n
\n )\n}\n","import axios from 'axios'\nimport EventEmitter from 'eventemitter3'\n\nimport * as config from '../../config'\n\nconst websocketUrl = `${config.apiBaseUrl.replace('http', 'ws')}/github/events`\n\nexport class API extends EventEmitter {\n token = null\n initializing = false\n installations = null\n repositories = null\n repoInstallationMap = null\n features = null\n socket = null\n\n async _request (options) {\n if (typeof options === 'string') {\n options = {\n url: options\n }\n }\n\n if (options.url.startsWith('/')) {\n options.url = `${config.apiBaseUrl}${options.url}`\n }\n\n options.headers = Object.assign({}, options.headers)\n if (this.token && !options.headers.Authorization) {\n options.headers.Authorization = `Bearer ${this.token}`\n }\n\n try {\n return await axios(options)\n } catch (err) {\n if (err.response?.status === 401) {\n console.error('Authentication failed.')\n this.emit('authentication-failed', err.response)\n }\n\n throw err\n }\n }\n\n init () {\n if (this.initializing) {\n return this.initializing\n }\n\n this.initializing = (async () => {\n this.initEvents()\n\n const installationUrl = `${config.apiBaseUrl}/github/installation`\n const params = new URLSearchParams(window.location.search)\n\n // I don't really understand the callback parameters but as long as\n // *something* installation related has changed then its worth refreshing\n // the authentication.\n if (params.get('setup_action') && params.get('installation_id')) {\n this.beginLoginFlow()\n }\n\n if (params.get('blocked')) {\n setTimeout(() => this.emit('blocked'))\n return\n }\n\n const param = params.get('token')\n if (!window.localStorage.auth_token && param) {\n window.history.replaceState({}, null, window.location.pathname)\n window.localStorage.auth_token = param\n }\n\n if (window.localStorage.auth_token) {\n this.token = window.localStorage.auth_token\n const { data } = await this._request(installationUrl)\n const suspended = data.installations.filter(installation => installation.suspended_at)\n\n if (data.installations.length === suspended.length) {\n console.warn('No GitHub app installation found for authenticated user.')\n this.emit('app-not-installed')\n }\n\n this.username = data.username\n this.installations = data.installations\n this.repositories = data.repositories\n this.repoInstallationMap = data.repoInstallationMap\n this.emit('authenticated')\n }\n })()\n\n return this.initializing\n }\n\n initEvents () {\n const bufferedMessages = []\n const isOpen = () => {\n return this.socket.readyState === window.WebSocket.OPEN\n }\n\n const send = (message) => {\n if (isOpen()) {\n this.socket.send(message)\n return\n }\n\n bufferedMessages.push(message)\n console.log(\n 'buffering websocket message',\n { readyState: this.socket.readyState },\n message\n )\n }\n\n const flush = () => {\n let message\n while ((message = bufferedMessages.shift())) {\n console.log('sending buffered websocket message', message)\n this.socket.send(message)\n }\n }\n\n this.socket = new window.WebSocket(websocketUrl)\n this.socket.onopen = () => {\n console.log(new Date(), 'connected to console')\n flush()\n setInterval(() => {\n send(JSON.stringify({ message: 'ping' }))\n }, 20000)\n }\n\n this.socket.onclose = () => console.log(new Date(), 'disconnected from server')\n this.socket.onerror = err => console.error(new Date(), err)\n this.socket.onmessage = event => {\n const message = JSON.parse(event.data)\n if (message.event === 'workflow_run') {\n this.emit('build-update', message.workflow_run)\n }\n }\n\n this.on('authenticated', () => {\n if (!this.installations?.length) {\n return\n }\n\n this.fetchAvailableFeatures()\n\n send(JSON.stringify({\n message: 'authorize',\n data: this.token\n }))\n })\n }\n\n beginLoginFlow () {\n window.localStorage.removeItem('auth_token')\n window.location.href = `${config.apiBaseUrl}/github/authorize`\n }\n\n beginInstallAppFlow () {\n window.location.href = `https://github.com/apps/${config.githubAppName}/installations/new`\n }\n\n manageInstallationRepos (installationId) {\n const installation = this.installations.find(installation => installation.id === installationId)\n window.location.href = installation.html_url\n }\n\n isGitHubAuthorized () {\n return !!this.token\n }\n\n isAppSuspendedForRepoSelection () {\n return (\n this.installations?.length > 0 &&\n this.installations?.every(installation => installation.suspended_at) &&\n this.installations?.some(installation => installation.repository_selection === 'all')\n )\n }\n\n isAppInstalled () {\n return this.installations?.length && this.repositories?.length\n }\n\n async fetchRepoBranches (repo) {\n const installation = encodeURIComponent(this.repoInstallationMap[repo.full_name])\n const repository = encodeURIComponent(repo.full_name)\n const { data } = await this._request(\n `/github/installation/${installation}/${repository}/branches`\n )\n\n return data\n }\n\n async fetchBranchKeyboards (repo, branch) {\n const installation = encodeURIComponent(this.repoInstallationMap[repo.full_name])\n const repository = encodeURIComponent(repo.full_name)\n const { data } = await this._request(\n `/github/installation/${installation}/${repository}/keyboards/${branch}`\n )\n\n return data\n }\n\n async fetchLayoutAndKeymap (repo, branch, { keyboard } = {}) {\n const installation = encodeURIComponent(this.repoInstallationMap[repo])\n const repository = encodeURIComponent(repo)\n const url = new URL(`${config.apiBaseUrl}/github/keyboard-files/${installation}/${repository}`)\n const query = new URLSearchParams()\n\n if (branch) {\n query.set('branch', branch)\n }\n if (keyboard) {\n query.set('keyboard', keyboard)\n }\n\n url.search = query.toString()\n\n try {\n const { data } = await this._request(url.toString())\n const { info: { layouts }, keymap } = data\n const defaultLayout = Object.keys(data.info.layouts)[0]\n const preferredLayout = keymap.chosen['zmk,matrix_transform']\n ? keymap.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n const layoutMetadata = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n const layout = layoutMetadata.layout\n\n return {\n layoutMetadata,\n layout,\n keymap,\n keyboards: data.keyboards,\n default: data.defaultKeymap,\n sensors: data.sensors\n }\n } catch (err) {\n if (err.response?.status === 400) {\n console.error('Failed to load keymap and layout from github', err.response.data)\n this.emit('repo-validation-error', err.response.data)\n } else if (err.response?.status === 500 && err.response.data.name === 'LayoutGenerationError') {\n this.emit('layout-generation-failed', err.response.data)\n }\n\n throw err\n }\n }\n\n async fetchAvailableFeatures () {\n if (!this.isGitHubAuthorized()) {\n return { betaFeatures: [] }\n }\n\n if (!this.features) {\n this.features = this._request(`${config.apiBaseUrl}/github/features`)\n }\n\n const { data } = await this.features\n return data\n }\n\n async fetchBuildStatus (repo, branch) {\n const installation = encodeURIComponent(this.repoInstallationMap[repo])\n const repository = encodeURIComponent(repo)\n const url = new URL(`${config.apiBaseUrl}/github/latest-run/${installation}/${repository}/${encodeURIComponent(branch)}`)\n\n const { data } = await this._request(url.toString())\n return data\n }\n\n commitChanges (repo, branch, layout, keymap, options = {}) {\n const {\n message = null,\n experimentalSettings = {},\n keyboard\n } = options\n const installation = encodeURIComponent(this.repoInstallationMap[repo])\n const repository = encodeURIComponent(repo)\n const url = new URL(`${config.apiBaseUrl}/github/keyboard-files/${installation}/${repository}/${encodeURIComponent(branch)}`)\n const { enableBehaviorEditing = false } = experimentalSettings\n const query = new URLSearchParams({\n enableBehaviorEditing\n })\n\n if (keyboard) {\n query.set('keyboard', keyboard)\n }\n\n url.search = query.toString()\n\n return this._request({\n url: url.toString(),\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: { keyboard, keymap, message }\n })\n }\n}\n\nconst api = new API()\nexport default api\n","function parseBoolean (val) {\n return val && ['1', 'on', 'yes', 'true'].includes(val.toString().toLowerCase())\n}\n\nexport const apiBaseUrl = process.env.API_BASE_URL\nexport const appBaseUrl = process.env.APP_BASE_URL\nexport const githubAppName = process.env.GITHUB_APP_NAME\nexport const enableGitHub = parseBoolean(process.env.ENABLE_GITHUB)\nexport const enableLocal = parseBoolean(process.env.ENABLE_LOCAL)\nexport const enableDemo = parseBoolean(process.env.ENABLE_DEMO)\nexport const enableClipboard = parseBoolean(process.env.ENABLE_CLIPBOARD)\nexport const enableFileSystem = parseBoolean(process.env.ENABLE_FILESYSTEM)\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./index.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./index.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./App.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./App.css\";\n export default content && content.locals ? content.locals : undefined;\n","import cloneDeep from 'lodash/cloneDeep'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport keyBy from 'lodash/keyBy'\nimport { useContext, useEffect, useMemo, useState } from 'react'\n\nimport {\n behaviorOverlays,\n mergeBehaviorOverlays\n} from 'zmk-data/behaviors'\nimport localeCatalog from 'zmk-data/data/locales/catalog.json'\n\nimport { DefinitionsContext } from '../Contexts/Definitions'\nimport { SearchContext, SettingsContext } from '../providers'\nimport { getMergedGlyphs, normalizeZmkKeycodes } from '../keycodes'\nimport { resolveBehaviorParams } from 'zmk-data/parameters'\n\nfunction useLocaleDefinitions (keymap) {\n const [loadedLocales, setLoadedLocales] = useState([])\n const locales = useMemo(() => {\n return keymap.headers.reduce((acc, header) => {\n if (header in localeCatalog) {\n acc.push(localeCatalog[header])\n }\n return acc\n }, [])\n }, [keymap.headers])\n\n useEffect(() => {\n (async function loadLocales () {\n const loaded = []\n for (const locale of locales) {\n // https://stackoverflow.com/a/62012224\n const data = await import(\n /* webpackInclude: /\\.json$/ */\n /* webpackMode: \"lazy\" */\n /* webpackChunkName: \"locales/[request]-keycodes\" */\n `zmk-data/data/locales/${locale.filename}`\n )\n loaded.push(...normalizeZmkKeycodes(data.keys))\n }\n\n setLoadedLocales(loaded)\n })()\n }, [locales])\n\n return loadedLocales\n}\n\nfunction Context ({ children, ...props }) {\n const { keymap } = props\n const { keycodes, behaviours, glyphs } = useContext(DefinitionsContext)\n const { settings } = useContext(SettingsContext)\n const localeKeycodes = useLocaleDefinitions(keymap)\n\n const mergedGlyphs = useMemo(() => {\n const isMac = window.navigator.platform.startsWith('Mac')\n const isWin = window.navigator.platform.startsWith('Win')\n const platform = (isMac && 'mac') || (isWin && 'win')\n\n return getMergedGlyphs(glyphs, {\n unicode: get(settings, 'unicodeGlyphs', true),\n platform: get(settings, 'platformGlyphs', 'auto') !== 'auto'\n ? settings.platformGlyphs\n : platform\n })\n }, [glyphs, settings])\n\n const extendedBehaviours = useMemo(() => {\n const customBehaviors = keymap.behaviors.map(behavior => {\n behavior = cloneDeep(behavior)\n behavior.code = `&${behavior.labels[0]}`\n behavior.compatible = behavior.properties.compatible.parsed\n return behavior\n })\n mergeBehaviorOverlays(customBehaviors, behaviorOverlays)\n const fullList = [\n ...behaviours.map(behavior => ({\n ...behavior,\n description: behavior.description || behavior.schema?.description\n })),\n ...(customBehaviors || []).map(behavior => ({\n code: `&${behavior.labels[0]}`,\n bind: `&${behavior.labels[0]}`,\n name: behavior.name,\n displayName: behavior.properties.label?.raw || behavior.name,\n description: `Custom behavior: ${behavior.properties.label?.raw || behavior.name}`,\n context: behavior.context\n })),\n ...keymap.macros.map(macro => ({\n code: `&${macro.labels[0]}`,\n name: macro.name,\n description: `Custom macro ${macro.properties.label?.raw || macro.name}`\n }))\n ]\n\n // TODO: at this point we're just duplicating work that was done at a higher\n // level. It still needs to happen here because of the extended list of\n // keyboard-specific behaviours, so the App can just pass the list without\n // doing its own indexing.\n fullList.indexed = keyBy(fullList, 'code')\n fullList.context = {\n none: fullList.filter(({ context }) => !context),\n macros: filter(fullList, { context: 'macros' }),\n encoders: filter(fullList, { context: 'encoders' })\n }\n fullList.byContext = {\n none: keyBy(fullList.context.none, 'code'),\n macros: keyBy(fullList.context.macros, 'code'),\n encoders: keyBy(fullList.context.encoders, 'code')\n }\n\n return fullList\n }, [behaviours, keymap.behaviors, keymap.macros])\n\n const behaviorParameters = useMemo(() => {\n return resolveBehaviorParams([\n ...behaviours,\n ...keymap.behaviors,\n ...keymap.macros\n ])\n }, [behaviours, keymap.behaviors, keymap.macros])\n\n const availableLayers = useMemo(() => isEmpty(keymap)\n ? []\n : (\n keymap.layers.map((layer, i) => ({\n code: i,\n description: layer.name || `Layer ${i}`\n }))\n ), [keymap])\n\n const keycodesList = useMemo(() => {\n return [\n ...keycodes.map(keycode => cloneDeep(keycode)),\n ...localeKeycodes.map(keycode => cloneDeep(keycode))\n ]\n }, [keycodes, localeKeycodes])\n\n const keycodesIndexed = useMemo(() => {\n const indexed = keyBy(keycodesList, 'code')\n for (const name in mergedGlyphs) {\n const glyph = mergedGlyphs[name]\n const keycode = indexed[name]\n for (const alias of keycode.aliases) {\n indexed[alias].symbol = glyph.symbol || indexed[alias].symbol\n indexed[alias].faIcon = glyph.faIcon || indexed[alias].faIcon\n }\n }\n\n // last minute transform, the following keys are all implicitly shifted\n // TODO: don't do this here\n const shiftedKeys = [\n 'EXCL',\n 'AT',\n 'HASH',\n 'DLLR',\n 'PRCNT',\n 'CARET',\n 'AMPS',\n 'STAR',\n 'UNDER',\n 'PLUS',\n 'PIPE',\n 'TILDE2',\n 'COLON',\n 'TILDE',\n 'LT',\n 'QMARK',\n 'CLEAR2',\n 'PIPE2',\n 'LPAR',\n 'RPAR',\n 'LBRC',\n 'RBRC',\n 'DQT',\n 'GT'\n ]\n\n for (const key of shiftedKeys) {\n indexed[key].modifiers = ['LS']\n }\n\n return indexed\n }, [keycodesList, mergedGlyphs])\n\n // Extend ZMK definitions (keycodes and behaviours) with additional\n // definitions specific to this keyboard. This includes a list of layers for\n // layer-related behaviours and in the future can include custom behaviours\n // defined in the keymap and potentially preprocessor definitions for psuedo\n // layer names or aliased key codes.\n const sources = useMemo(() => ({\n code: keycodesIndexed,\n behaviours: extendedBehaviours.indexed,\n behavioursByContext: extendedBehaviours.byContext,\n layer: keyBy(availableLayers, 'code'),\n defines: keymap.defines\n }), [keycodesIndexed, extendedBehaviours, availableLayers, keymap.defines])\n\n const searchTargets = useMemo(() => {\n return {\n behaviour: extendedBehaviours,\n code: keycodesList\n }\n }, [extendedBehaviours, keycodesList])\n\n const getSearchTargets = useMemo(() => function (param, behaviour, context = 'none') {\n // Special case for behaviour commands which can dynamically add another\n // parameter that isn't defined at the root level of the behaviour.\n // Currently this is just `&bt BT_SEL` and is only represented as an enum.\n if (param.enum) {\n return param.enum.map(option => (\n typeof option === 'object'\n ? option\n : { code: option }\n ))\n }\n\n if (param.raw) {\n return []\n }\n\n if (!searchTargets[param]) {\n console.error('cannot find target for', param)\n }\n\n if (param === 'behaviour') {\n return searchTargets.behaviour.context[context]\n }\n\n return searchTargets[param]\n }, [searchTargets])\n\n const identifiers = useMemo(() => {\n return [\n ...Object.keys(keycodesIndexed),\n ...Object.keys(keymap.defines || {})\n ]\n }, [keycodesIndexed, keymap.defines])\n\n return (\n \n {children}\n \n )\n}\n\nexport default Context\n","import PropTypes from 'prop-types'\n\nconst bindShape = {}\n\nexport const value = PropTypes.string.isRequired\nexport const params = PropTypes.arrayOf(PropTypes.shape(bindShape))\n\nbindShape.value = value\nbindShape.params = params\n\nexport const binding = PropTypes.shape(bindShape)\n","import PropTypes from 'prop-types'\nimport { binding } from '../Binding/bindingPropTypes'\n\nexport const combo = PropTypes.shape({\n index: PropTypes.number,\n name: PropTypes.string,\n properties: PropTypes.shape({\n bindings: PropTypes.shape({\n parsed: PropTypes.arrayOf(binding).isRequired\n }).isRequired,\n 'key-positions': PropTypes.shape({\n parsed: PropTypes.arrayOf(PropTypes.number).isRequired\n }).isRequired\n })\n})\n","import PropTypes from 'prop-types'\nimport { binding } from './Binding/bindingPropTypes'\nimport { combo } from './Combos/comboPropTypes'\n\nexport const layer = PropTypes.shape({\n index: PropTypes.number,\n name: PropTypes.string,\n properties: PropTypes.shape({\n bindings: PropTypes.shape({\n parsed: PropTypes.arrayOf(binding).isRequired\n }).isRequired,\n 'sensor-bindings': PropTypes.shape({\n parsed: PropTypes.arrayOf(binding).isRequired\n })\n })\n})\n\nexport const keymap = PropTypes.shape({\n layers: PropTypes.arrayOf(layer).isRequired,\n combos: PropTypes.arrayOf(combo)\n})\n","\nexport function sanityCheckLayout (layout) {\n return {\n layoutMissingPositions: sanityCheckPosiitions(layout)\n // overlappedPositions: sanityCheckOverlappingPositions(layout),\n // unorderedRows: sanityCheckRowOrdering(layout),\n // undereredColumns: sanityCheckColumnOrdering(layout)\n }\n}\n\nfunction sanityCheckPosiitions (layout) {\n const noKeyHasPosition = layout.every(key => (\n key.row === undefined &&\n key.col === undefined\n ))\n\n return noKeyHasPosition\n ? ['Layout in info.json has no row/col definitions. Generated keymap files will not be nicely formatted.']\n : []\n}\n\nfunction sanityCheckOverlappingPositions (layout) {\n const errors = []\n const keysByPosition = layout.reduce((acc, key, i) => {\n const { row, col } = key\n const position = `(${row},${col})`\n\n if (row !== undefined && col !== undefined) {\n acc[position] = [...(acc[position] || []), i]\n }\n\n return acc\n }, {})\n\n for (const group of Object.values(keysByPosition)) {\n if (group.length <= 1) {\n continue\n }\n\n const { row, col } = layout[group[0]]\n for (const index of group) {\n errors.push({\n location: `Layout JSON [${index}]`,\n position: { row, col }\n })\n }\n }\n\n return errors\n}\n\nfunction sanityCheckRowOrdering (layout) {\n let currentRow = -Infinity\n const errors = []\n\n for (const index of layout.keys()) {\n const { row } = layout[index]\n if (row === undefined) {\n continue\n }\n\n if (row < currentRow) {\n errors.push({ location: `Layout JSON [${index}]` })\n } else {\n currentRow = row\n }\n }\n\n return errors\n}\n\nfunction sanityCheckColumnOrdering (layout) {\n let currentRow = 0\n let currentCol = -Infinity\n const errors = []\n\n for (const index of layout.keys()) {\n const { row, col } = layout[index]\n if (row === undefined || col === undefined) {\n continue\n }\n\n if (currentRow !== row) {\n currentRow = row\n currentCol = -Infinity\n }\n\n if (col < currentCol) {\n errors.push({ location: `Layout JSON [${index}]` })\n } else {\n currentCol = col\n }\n }\n\n return errors\n}\n","import groupBy from 'lodash/groupBy'\n\nimport { sanityCheckLayout } from './sanity-checks-layout'\nimport reservedIdentifiers from 'zmk-data/data/extracted-data/zmk-reserved-identifiers.json'\n\nconst selectName = item => item.name\nconst selectBind = item => item.labels[0]\nconst selectLabel = item => item.properties.label?.parsed\n\nexport function sanityCheck (keymap, layout) {\n return {\n nodeNames: sanityCheckNodeNames(keymap),\n nodeLabels: sanityCheckNodeLabels(keymap),\n nodeReferences: sanityCheckNodeReferences(keymap),\n deprecations: sanityCheckDeprecations(keymap),\n ...sanityCheckLayout(layout)\n }\n}\n\nfunction getDuplicatesBy (collection, key) {\n const itemsByKey = groupBy(collection, key)\n return Object.values(itemsByKey)\n .filter(group => group.length > 1)\n}\n\nfunction doesNameSuggestPassword (name) {\n const patterns = [\n /(^|[\\b_])pass(word)?([\\b_]|$)/\n ]\n return patterns.some(pattern => name.match(pattern))\n}\n\nfunction sanityCheckNodeNames (keymap) {\n const layerNames = getLayerNodeNames(keymap.layers)\n const comboNames = getComboNodeNames(keymap.combos)\n const macroNames = getMacroNodeNames(keymap.macros)\n const behaviorNames = getBehaviorNodeNames(keymap.behaviors)\n\n const duplicates = [\n ...getDuplicatesBy(layerNames, 'name'),\n ...getDuplicatesBy(comboNames, 'name'),\n ...getDuplicatesBy(macroNames, 'name'),\n ...getDuplicatesBy(behaviorNames, 'name')\n ]\n\n const redefined = [\n ...layerNames.filter(layer => reservedIdentifiers.includes(layer.name)),\n ...comboNames.filter(combo => reservedIdentifiers.includes(combo.name)),\n ...macroNames.filter(macro => reservedIdentifiers.includes(macro.name)),\n ...behaviorNames.filter(behavior => reservedIdentifiers.includes(behavior.name))\n ]\n\n const passwordMacros = [\n ...macroNames.filter(macro => doesNameSuggestPassword(macro.name))\n ]\n\n return { duplicates, redefined, passwordMacros }\n}\n\nfunction sanityCheckNodeLabels (keymap) {\n const duplicates = getDuplicatesBy([].concat(\n getLayerLabels(keymap.layers),\n getMacroLabels(keymap.macros),\n getBehaviorLabels(keymap.behaviors)\n ), 'label')\n\n return { duplicates }\n}\n\nfunction sanityCheckNodeReferences (keymap) {\n const nodesByRef = groupBy([].concat(\n getMacroReferences(keymap.macros),\n getBehaviorReferences(keymap.behaviors)\n ), 'ref')\n\n const duplicates = Object.values(nodesByRef).reduce((duplicates, nodes) => {\n if (nodes.length > 1) {\n duplicates.push(nodes)\n }\n\n return duplicates\n }, [])\n\n return { duplicates }\n}\n\nfunction sanityCheckDeprecations (keymap) {\n const resetBindings = [\n ...keymap.layers.reduce((deprecations, layer, i) => {\n layer.properties.bindings?.parsed?.forEach((binding, j) => {\n if (binding.value === '&reset') {\n deprecations.push({\n location: `Keymap - Layer #${i} (${layer.name}) - Key position ${j}`,\n path: `keymap.layers[${i}].bindings[${j}]`,\n name: '&reset'\n })\n }\n })\n\n return deprecations\n }, []),\n ...keymap.macros.reduce((deprecations, macro, i) => {\n macro.properties.bindings.parsed.forEach((binding, j) => {\n if (binding.value === '&reset') {\n deprecations.push({\n location: `Macros - Macro #${i} (${macro.name}) - Binding position ${j}`,\n path: `keymap.macros[${i}].properties.bindings[${j}].parsed`,\n name: '&reset'\n })\n }\n })\n\n return deprecations\n }, []),\n ...keymap.combos.reduce((deprecations, combos, i) => {\n combos.properties.bindings.parsed.forEach((binding, j) => {\n if (binding.value === '&reset') {\n deprecations.push({\n location: `Combos - Combo #${i} (${combos.name})`,\n path: `keymap.combos[${i}].bindings[${j}]`,\n name: '&reset'\n })\n }\n })\n\n return deprecations\n }, []),\n ...keymap.behaviors.reduce((deprecations, behavior, i) => {\n // TODO: should I try to handle this more generically?\n // Not all behaviors will have bindings, not all behaviors will be actual\n // ZMK behaviors that the editor can recognize, which means there may not\n // be a parsed `bindings` property to inspect.\n // Additionally, by only looking for `bindings` we're ignoring the layer\n // node's `sensor-bindings` property.\n behavior.properties.bindings?.parsed?.forEach((binding, j) => {\n if (binding.value === '&reset' || binding === '&reset') {\n deprecations.push({\n location: `Behaviors - Behavior #${i} (${behavior.name}) - Bind position ${j}`,\n path: `keymap.behaviors[${i}].parsed.bindings[${j}].parsed`,\n name: '&reset'\n })\n }\n })\n\n return deprecations\n }, [])\n ]\n\n return { resetBindings }\n}\n\nfunction getLayerNodeNames (layers) {\n return layers.map((layer, i) => ({\n location: `Keymap - Layer #${i} (${layer.name})`,\n path: `keymap.layers[${i}]`,\n name: selectName(layer)\n }))\n}\n\nfunction getLayerLabels (layers) {\n return layers.reduce((labels, layer, i) => {\n const label = selectLabel(layer)\n if (label) {\n labels.push({\n location: `Keymap - Layer #${i} (${layer.name})`,\n path: `keymap.layers[${i}].label`,\n label\n })\n }\n\n return labels\n }, [])\n}\n\nfunction getComboNodeNames (combos) {\n return combos.map((combo, i) => ({\n location: `Combos - Combo #${i} (${combo.name})`,\n path: `combos[${i}].name`,\n name: combo.name\n }))\n}\n\nfunction getMacroNodeNames (macros) {\n return macros.map((macro, i) => ({\n location: `Macros - Macro #${i} (${selectName(macro)})`,\n path: `macros[${i}].name`,\n name: selectName(macro)\n }))\n}\n\nfunction getMacroLabels (macros) {\n return macros.reduce((labels, macro, i) => {\n if (macro.label) {\n labels.push({\n location: `Macros - Macro #${i} (${selectLabel(macro)}) - Label`,\n path: `macros[${i}].label`,\n label: selectLabel(macro)\n })\n }\n\n return labels\n }, [])\n}\n\nfunction getMacroReferences (macros) {\n return macros.map((macro, i) => ({\n location: `Macros > Macro #${i} (${selectBind(macro)})`,\n path: `macros[${i}].name`,\n ref: selectBind(macro)\n }))\n}\n\nfunction getBehaviorNodeNames (behaviors) {\n return behaviors.map((behavior, i) => ({\n location: `Behaviors - Behavior #${i} (${selectBind(behavior)}) - Name`,\n path: `behaviors[${i}].name`,\n name: selectName(behavior)\n }))\n}\n\nfunction getBehaviorLabels (behaviors) {\n return behaviors.reduce((labels, behavior, i) => {\n const label = selectLabel(behavior)\n const ref = selectBind(behavior)\n if (label) {\n labels.push({\n location: `Behaviors - Behavior #${i} (${ref}) - Label`,\n path: `behaviors[${i}].label`,\n label\n })\n }\n\n return labels\n }, [])\n}\n\nfunction getBehaviorReferences (behaviors) {\n return behaviors.map((behavior, i) => ({\n location: `Behaviors - Behavior #${i} (${selectBind(behavior)}) - Bind`,\n path: `behaviors[${i}].bind`,\n ref: selectBind(behavior)\n }))\n}\n","import compact from 'lodash/compact'\nimport { Fragment, lazy, Suspense, useContext, useMemo, useState } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport Context from './Context'\nimport * as keymapProptypes from './keymapPropTypes'\nimport styles from './styles.module.css'\nimport { sanityCheck } from './Warnings/sanity-checks'\nimport { LayoutContext } from '../Contexts/Layout'\n\nconst Behaviors = lazy(() => import('./Behaviors/Behaviors'))\nconst ComboEditor = lazy(() => import('./Combos/ComboEditor'))\nconst LayerEditor = lazy(() => import('./Layers/LayerEditor'))\nconst MacroEditor = lazy(() => import('./Macros/MacroEditor'))\nconst Warnings = lazy(() => import('./Warnings/Warnings'))\n\n// import github from '../Sources/Github/api'\n\n// function useFeatures () {\n// const [features, setFeatures] = useState({ betaFeatures: [] })\n// useEffect(() => {\n// (async function () {\n// setFeatures(await github.fetchAvailableFeatures())\n// })()\n// }, [setFeatures])\n\n// return features\n// }\n\n// import LayoutEditor from './Layout/LayoutEditor'\n\nfunction Tabs ({ text, tabs, defaultTab, children }) {\n const [activeTab, setActiveTab] = useState(defaultTab)\n\n return (\n <>\n

{text}

\n
    \n {tabs.map(({ name: tab, tabClasses = [] }, i) => (\n setActiveTab(i)}\n className={compact([\n activeTab === i && styles.activeEditTab,\n ...tabClasses\n ]).join(' ')}\n >\n {tab}\n \n ))}\n
\n \n {children[activeTab]}\n \n \n )\n}\n\nconst selectKeymap = state => state.keyboard.keymap\n\nfunction Keyboard (props) {\n const keymap = useSelector(selectKeymap)\n const { layout } = useContext(LayoutContext)\n const sanityChecks = useMemo(() => sanityCheck(keymap, layout), [keymap, layout])\n const warningCount = useMemo(() => {\n const { nodeNames, nodeLabels, nodeReferences, deprecations, layoutMissingPositions } = sanityChecks\n return (\n nodeNames.duplicates.length +\n nodeNames.redefined.length +\n nodeNames.passwordMacros.length +\n nodeLabels.duplicates.length +\n nodeReferences.duplicates.length +\n deprecations.resetBindings.length +\n layoutMissingPositions.length\n )\n }, [sanityChecks])\n\n const tabs = compact([\n { name: 'layers', component: },\n { name: 'combos', component: },\n { name: 'macros', component: },\n { name: behaviors, component: },\n warningCount > 0 && ({\n name: `warnings (${warningCount})`,\n tabClasses: [styles.warningTab],\n component: \n })\n ])\n\n const defaultTab = 0\n\n return (\n \n \n {tabs.map((tab, i) => (\n \n {tab.component}\n \n ))}\n \n \n )\n}\n\nKeyboard.propTypes = {\n keymap: keymapProptypes.keymap\n}\n\nexport default Keyboard\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import Icon from './Common/Icon'\n\nimport style from './styles.module.css'\n\nconst repositoryUrl = 'https://github.com/nickcoutsos/keymap-editor'\n\nexport default function GitHubLink () {\n return (\n
\n \n \n /nickcoutsos/keymap-editor\n \n
\n )\n}\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Icon from '../Common/Icon'\nimport Modal from '../Common/Modal'\n\nconst styles = {\n description: {\n fontStyle: 'italic',\n fontSize: '90%'\n }\n}\n\nfunction Settings (props) {\n const { settings, onUpdate, onClose } = props\n\n function handleUpdateSetting (key, value) {\n onUpdate({ ...settings, [key]: value })\n }\n\n return (\n \n \n

Settings

\n\n

Keycode glyphs

\n\n

\n \n

\n

\n Use unicode glyphs for visual representations of keycodes\n like Enter (⮐), Right Arrow (⏵), etc. You\n can disable this if the symbols don't render correctly.\n

\n\n

\n \n

\n

\n Render symbols specific to your platform. E.g., render left/right meta\n key as for Windows, or\n ⌘ for macOS.\n

\n
\n
\n )\n}\n\nSettings.propTypes = {\n settings: PropTypes.object.isRequired,\n onUpdate: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired\n}\n\nSettings.defaultProps = {\n settings: {}\n}\n\nexport default Settings\n","import DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { KeymapLayoutResources } from './support'\n\nfunction SuggestAutoLayoutTweak (props) {\n return (\n \n \n

This layout was Auto-Generated

\n

\n Hi there! There wasn't a layout definition to accompany your keymap\n file, so the keymap editor tried to generate one automatically in a\n last-ditch effort to help you get into the app.\n

\n

\n This layout definition was (or will be) saved when you first save\n keymap changes with the keymap editor, so remember that if there are\n any tweaks you'd like to make to improve it you can do so by editing\n the info.json file.\n

\n {KeymapLayoutResources}\n
\n
\n )\n}\n\nSuggestAutoLayoutTweak.propTypes = {}\n\nexport default SuggestAutoLayoutTweak\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { GeneralHelpOfferCopy } from './support'\n\nfunction KeymapBindingsUsePreprocessorMacros (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse keymap

\n

\n It looks like some bindings in your keymap are using custom pre-processor\n macros which isn't supported by the Keymap Editor. These macros make\n it difficult both to resolve bindings to behaviors and parameters, as\n well as to generate modified keymap code that is consistent with your\n original intentions.\n

\n

\n Please either continue editing your keymap by hand with these helpers\n or if you would like to use this editor, rewrite the keymap to use\n ZMK's syntax directly.\n

\n {GeneralHelpOfferCopy}\n
\n
\n )\n}\n\nKeymapBindingsUsePreprocessorMacros.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default KeymapBindingsUsePreprocessorMacros\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { GeneralHelpOfferCopy } from './support'\nimport Link from '../Common/Link'\n\nconst autoshiftWikiUrl = 'https://github.com/nickcoutsos/keymap-editor/wiki/Autoshift-using-ZMK-behaviors'\nconst link = (\n \n Autoshift using ZMK behaviors\n \n)\n\nfunction KeymapBindingsUseAutoshiftMacro (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse keymap

\n

\n It looks like you're using a custom pre-processor macro to implement\n autoshift in your keymap. Parsing these functions is not\n supported by the Keymap Editor, but if you're interested you can\n re-implement it using standard ZMK functionality.\n

\n

\n Please see {link} for a guide.\n

\n {GeneralHelpOfferCopy}\n
\n
\n )\n}\n\nKeymapBindingsUseAutoshiftMacro.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default KeymapBindingsUseAutoshiftMacro\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { GeneralHelpOfferCopy } from './support'\n\nfunction KeymapParsingFailed (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse keymap

\n

\n Something went wrong while trying to parse your keymap. It's hard to\n say what exactly, because I wasn't expecting this.\n

\n

\n A common occurrence here is keymaps using a variety of pre-processor\n macros to define layers/combos/etc.\n

\n {GeneralHelpOfferCopy}\n
\n
\n )\n}\n\nKeymapParsingFailed.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default KeymapParsingFailed\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\n\nfunction KeymapUsingMiryoku (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse Miryoku keymap

\n

\n It looks like your keyboard is built using Miryoku to manage the\n configuration and keymap. Parsing and editing keymaps that use this\n syntax is unsupported by the Keymap Editor.\n

\n

\n Please either continue editing your keymap by hand with these helpers\n or if you would like to use this editor, rewrite the keymap to use\n ZMK's syntax directly.\n

\n
\n
\n )\n}\n\nKeymapUsingMiryoku.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default KeymapUsingMiryoku\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { GitHubIssuesLink } from './support'\n\nfunction MissingRootNode (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse keymap

\n

\n Missing devicetree root node.\n

\n

\n The keymap editor was unable to find a devicetree root node in your\n keymap. This means that either something is wrong with the parser or\n something is wrong with your keymap's syntax.\n

\n

\n If you've been using the keymap editor succesfully up to now it's\n possible that it has introduced an error in the keymap file. Please\n reach out for support at {GitHubIssuesLink}.\n

\n
\n
\n )\n}\n\nMissingRootNode.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default MissingRootNode\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\n\nfunction ZmkNodefreeConfig (props) {\n const { onDismiss } = props\n\n return (\n \n \n

Could not parse keymap

\n

\n Detected use of zmk-nodefree-config\n

\n

\n It looks like your keymap is built using helper functions from the\n zmk-nodefree-config library to replace devicetree syntax. Parsing and\n editing keymaps that use this syntax is unsupported by the Keymap\n Editor.\n

\n

\n Please either continue editing your keymap by hand with these helpers\n or if you would like to use this editor, rewrite the keymap to use\n ZMK's syntax directly.\n

\n
\n
\n )\n}\n\nZmkNodefreeConfig.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default ZmkNodefreeConfig\n","import compact from 'lodash/compact'\nimport * as config from '../config'\n\nexport const sourceChoices = compact([\n config.enableDemo && {\n id: 'demo',\n name: 'Demo Keyboard',\n description: 'Play around with a sample keymap'\n },\n config.enableLocal && {\n id: 'local',\n name: 'Local',\n description: 'Hello, me',\n collapsible: false\n },\n config.enableGitHub && {\n id: 'github',\n name: 'GitHub',\n description: 'Integrate with a GitHub repo, leveraging GitHub actions to compile firmware',\n collapsible: true\n },\n config.enableClipboard && {\n id: 'clipboard',\n name: 'Clipboard',\n description: 'Read and write keymap data directly from your clipboard',\n isBeta: true\n },\n config.enableFileSystem && window.showOpenFilePicker && {\n id: 'filesystem',\n name: 'File System',\n description: 'Read and write keymap files on your local filesystem',\n isBeta: true\n }\n])\n\nconst selectedSource = localStorage.getItem('selectedSource')\nconst onlySource = sourceChoices.length === 1 ? sourceChoices[0].id : null\n\nexport const defaultSource = onlySource || (\n sourceChoices.find(source => source.id === selectedSource)\n ? selectedSource\n : sourceChoices[0].id\n)\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import classNames from 'classnames'\nimport find from 'lodash/find'\nimport PropTypes from 'prop-types'\nimport { lazy, Suspense, useCallback, useEffect, useRef, useState } from 'react'\n\nimport Icon from '../Common/Icon'\nimport useClickOutsideHandler from '../Common/hooks/use-click-outside-handler'\nimport useToggle from '../Common/hooks/use-toggle'\nimport SuggestAutoLayoutTweak from '../Dialogs/SuggestAutoLayoutTweak'\nimport { Button, Select } from './Controls'\nimport { getErrorDialog } from './errors'\nimport { sourceChoices, defaultSource } from './sources'\nimport styles from './styles.module.css'\nimport { useSelector } from 'react-redux'\n\nconst LocalPicker = lazy(() => import('./Local/Picker'))\nconst DemoPicker = lazy(() => import('./Demo/Picker'))\nconst GithubPicker = lazy(() => import('./Github/Picker'))\nconst ClipboardPicker = lazy(() => import('./Clipboard/Picker'))\nconst FileSystemPicker = lazy(() => import('./FileSystem/FileSystemPicker'))\n\nconst keyboardSelector = state => state.keyboard\n\nfunction KeyboardPicker (props) {\n const { onSelect } = props\n const wrapperRef = useRef()\n const keyboard = useSelector(keyboardSelector)\n const [source, setSource] = useState(defaultSource)\n const [{ autoGenerated }, setLayoutInfo] = useState({ autoGenerated: false })\n const [showDialog, setShowDialog] = useState(null)\n const closeDialog = useCallback(() => setShowDialog(null), [setShowDialog])\n const [isExpanded, , setExpanded, setCompact] = useToggle(true)\n const showLayoutHelp = useCallback(() => {\n setShowDialog({\n component: SuggestAutoLayoutTweak,\n onClose: closeDialog\n })\n }, [setShowDialog, closeDialog])\n\n const selectedSource = find(sourceChoices, { id: source })\n\n useClickOutsideHandler(wrapperRef, setCompact, (\n selectedSource?.collapsible === true &&\n keyboard &&\n isExpanded\n ))\n\n const handleSelectSource = useCallback(choice => {\n onSelect({ source: choice.id, keyboard: null })\n setSource(choice.id)\n }, [setSource, onSelect])\n\n const handleKeyboardSelected = useCallback(function (event) {\n const { warningFlags = [] } = event.keymap\n const { autoGenerated = false } = event.layoutMetadata || {}\n const error = getErrorDialog(warningFlags)\n\n if (error) {\n setShowDialog({ component: error, onClose: closeDialog })\n onSelect({ source, keyboard: null })\n return\n }\n\n setLayoutInfo({ autoGenerated })\n onSelect({ source, ...event })\n }, [onSelect, source, setShowDialog, closeDialog])\n\n const handleError = useCallback(function ({ dialog, dialogProps }) {\n setShowDialog({ component: dialog, dialogProps, onClose: closeDialog })\n onSelect({ source, keyboard: null })\n }, [setShowDialog, closeDialog, onSelect, source])\n\n useEffect(() => {\n localStorage.setItem('selectedSource', source)\n }, [source])\n\n return (\n \n {isExpanded && (\n option.name}\n getOptionValue={option => option.id}\n formatOptionLabel={(option, { context }) => (\n context === 'value'\n ? option.name\n : (\n <>\n
{option.name}{option.isBeta && }
\n
{option.description}
\n \n )\n )}\n />\n )}\n\n {showDialog?.component && }\n\n \n {source === 'local' && }\n {source === 'demo' && }\n {source === 'github' && (\n \n )}\n {source === 'clipboard' && }\n {source === 'filesystem' && }\n \n\n {autoGenerated && (\n \n )}\n \n )\n}\n\nfunction Beta () {\n const style = {\n color: 'white',\n backgroundColor: 'var(--error-highlight)',\n fontSize: '12px',\n fontWeight: 'bold',\n padding: '1px 3px',\n margin: '2px',\n borderRadius: '6px',\n verticalAlign: 'top'\n }\n return (\n beta\n )\n}\n\nKeyboardPicker.propTypes = {\n onSelect: PropTypes.func.isRequired\n}\n\nexport default KeyboardPicker\n","import { useEffect } from 'react'\n\nexport default function useClickOutsideHandler (ref, callback, enabled = true) {\n useEffect(() => {\n if (enabled) {\n const handleClick = event => {\n const isInDocument = document.body.contains(event.target)\n const isInWrapper = ref.current.contains(event.target)\n if (isInDocument && !isInWrapper) {\n callback()\n }\n }\n\n document.body.addEventListener('click', handleClick)\n return () => document.body.removeEventListener('click', handleClick)\n }\n }, [ref, enabled, callback])\n}\n","import KeymapBindingsUsePreprocessorMacros from '../Dialogs/KeymapBindingsUsePreprocessorMacros'\nimport KeymapBindingsUseAutoshiftMacro from '../Dialogs/KeymapBindingsUseAutoshiftMacro'\nimport KeymapParsingFailed from '../Dialogs/KeymapParsingFailed'\nimport KeymapUsingMiryoku from '../Dialogs/KeymapUsingMiryoku'\nimport MissingRootNode from '../Dialogs/MissingRootNode'\nimport ZmkNodefreeConfig from '../Dialogs/ZmkNodefreeConfig'\n\nexport function getErrorDialog (warningFlags) {\n switch (warningFlags[0]) {\n case 'USING_ZMK_NODEFREE_MACROS':\n return ZmkNodefreeConfig\n case 'USING_MIRYOKU_DTSI':\n return KeymapUsingMiryoku\n case 'USING_NON_ZMK_MACRO':\n return KeymapBindingsUsePreprocessorMacros\n case 'USING_AUTOSHIFT_MACRO':\n return KeymapBindingsUseAutoshiftMacro\n case 'KEYMAP_PARSING_FAILED':\n return KeymapParsingFailed\n case 'MISSING_ROOT_NODE':\n return MissingRootNode\n default:\n return null\n }\n}\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./unexpected-error.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./unexpected-error.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import PropTypes from 'prop-types'\n\nimport { apiBaseUrl } from '../config'\nimport Link from '../Common/Link'\nimport Modal from '../Common/Modal'\nimport DialogBox from '../Common/DialogBox'\nimport IconButton from '../Common/IconButton'\n\nimport styles from './unexpected-error.module.css'\nimport { useEffect, useState } from 'react'\n\nfunction formatStackFrame (frame) {\n return ` ${frame.fileName}:${frame.lineNumber}:${frame.columnNumber}`\n}\n\nfunction formatErrorText (error, stack = []) {\n return `\n${error.name}\n\n${error.message}\n\n${stack.map(formatStackFrame).join('\\n')}\n`.trim()\n}\n\nconst newGithubIssue = (\n \n new issue\n \n)\n\nasync function reportError (error, stacktrace) {\n const url = `${apiBaseUrl}/v2/events/client-errors`\n const body = JSON.stringify({\n error: error.toString(),\n stacktrace\n })\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body\n })\n\n if (!response.ok) {\n console.error('Failed to submit error report', response)\n }\n}\n\nfunction UnexpectedError ({ error }) {\n const [stack, setStack] = useState([])\n const [formattedError, setFormattedError] = useState('')\n const [copied, setCopied] = useState(false)\n\n useEffect(() => {\n async function parseStack () {\n const StackTrace = await import('stacktrace-js')\n const stacktrace = await StackTrace.fromError(error)\n setStack(stacktrace)\n reportError(error, stacktrace)\n }\n\n parseStack()\n }, [setStack, error])\n\n useEffect(() => {\n setFormattedError(formatErrorText(error, stack))\n }, [error, stack])\n\n useEffect(() => {\n if (copied) {\n setTimeout(() => {\n setCopied(false)\n }, 3000)\n }\n }, [copied, setCopied])\n\n function copyErrorText () {\n const backTicks = '```'\n const text = `${backTicks}\\n${formattedError}\\n${backTicks}`\n navigator.clipboard.writeText(text)\n .then(() => setCopied(true))\n }\n\n return (\n \n \n

Unexpected error

\n

\n Something unexpected happened and the keymap editor app cannot\n recover. Please consider taking a moment to open a {newGithubIssue}\n with the details below to help me investigate and improve the app.\n

\n
\n
{formattedError}
\n \n {copied && (\n
Copied!
\n )}\n
\n
\n
\n )\n}\n\nUnexpectedError.propTypes = {\n error: PropTypes.instanceOf(Error).isRequired\n}\n\nexport default UnexpectedError\n","import React from 'react'\nimport UnexpectedError from './Dialogs/UnexpectedError'\n\nexport default class ErrorBoundary extends React.Component {\n constructor (props) {\n super(props)\n this.state = {\n error: null\n }\n }\n\n static getDerivedStateFromError (error) {\n return { error }\n }\n\n render () {\n const { children } = this.props\n const { error } = this.state\n\n if (error) {\n return \n }\n\n return children\n }\n}\n","import PropTypes from 'prop-types'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport { GitHubIssuesLink } from './support'\n\nfunction KeymapSaveFailed (props) {\n const { onDismiss } = props\n return (\n \n \n

Failed to save keymap changes

\n

\n Sorry, an unexpected error occurred while trying to save your keymap.\n

\n

\n Please try again or raise an issue if the problem persists and I'll\n try to work it out with you. Seriously I can only get this right if I\n know what's wrong, and in some cases that comes down to people using\n this editor in more advanced ways than I myself have.\n

\n

\n {GitHubIssuesLink}\n

\n
\n
\n )\n}\n\nKeymapSaveFailed.propTypes = {\n onDismiss: PropTypes.func.isRequired\n}\n\nexport default KeymapSaveFailed\n","import axios from 'axios'\nimport { useCallback, useEffect, useState } from 'react'\n\nconst url = 'https://www.githubstatus.com/api/v2/components.json'\n\nconst updateInterval = 1000 * 60 * 5\n\nconst relevantComponents = [\n 'brv1bkgrwx7q', // API Requests\n '4230lsnqdsld', // Webhooks\n 'br0l2tvcx85d' // Actions\n]\n\nexport function useApiStatusChecker (enabled) {\n const [{ lastFetch, issues }, setState] = useState({\n lastFetch: 0,\n issues: []\n })\n\n const update = useCallback(async () => {\n try {\n const { data: { components } } = await axios({ url })\n const lastFetch = Date.now()\n const issues = components.filter(component => (\n relevantComponents.includes(component.id) &&\n component.status !== 'operational'\n ))\n\n setState({ lastFetch, issues })\n } catch (err) {\n console.error('Could not fetch GitHub API status', err)\n }\n }, [setState])\n\n useEffect(() => {\n if (enabled) {\n if (lastFetch < (Date.now() - updateInterval)) {\n update()\n }\n const timeout = setTimeout(update, updateInterval)\n return () => clearTimeout(timeout)\n }\n }, [update, enabled, lastFetch])\n\n return issues\n}\n","import Icon from '../../Common/Icon'\nimport Link from '../../Common/Link'\nimport { useApiStatusChecker } from './api-status'\n\nexport default function GithubApiStatus ({ enabled }) {\n const githubApiIssues = useApiStatusChecker(enabled)\n\n if (!enabled || githubApiIssues.length === 0) {\n return null\n }\n\n return (\n
\n \n \n Note: Experiencing GitHub API issues, keymap loading/saving may fail\n \n
\n )\n}\n","import '@fortawesome/fontawesome-free/css/all.min.css'\n\nimport { useCallback, useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport './App.css'\nimport { SettingsContext } from './providers'\n\nimport IconButton from './Common/IconButton'\nimport Keyboard from './Keyboard/Keyboard'\nimport GitHubLink from './GitHubLink'\nimport Settings from './Dialogs/Settings'\nimport SourcePicker from './Sources/SourcePicker'\nimport github from './Sources/Github/api'\n\nimport ErrorBoundary from './ErrorBoundary'\nimport KeymapSaveFailed from './Dialogs/KeymapSaveFailed'\nimport { DefinitionsContextProvider } from './Contexts/Definitions'\nimport { LayoutContextProvider } from './Contexts/Layout'\nimport GithubApiStatus from './Sources/Github/GitHubApiStatus'\n\nfunction App () {\n const state = useSelector(state => state)\n const dispatch = useDispatch()\n const {\n sourceOther,\n keyboard,\n saveError,\n theme,\n settingsVisible,\n experimentalSettings\n } = state\n\n useEffect(() => {\n if (!sourceOther?.github) {\n dispatch({ type: 'GITHUB_BUILD_UPDATE', build: null })\n return\n }\n\n function handler (run) {\n if (run.head_branch === sourceOther.github.branch) {\n dispatch({ type: 'GITHUB_BUILD_UPDATE', build: run })\n }\n }\n\n ;(async function () {\n const { repository, branch } = sourceOther.github\n handler(await github.fetchBuildStatus(repository, branch))\n })()\n\n github.on('build-update', handler)\n return () => github.off('build-update', handler)\n }, [sourceOther, dispatch])\n\n const handleKeyboardSelected = useCallback(function (event) {\n const { source, layout, keymap, sensors = [], ...other } = event\n\n if (!keymap) {\n dispatch({ type: 'CLEAR_KEYBOARD_SELECTION' })\n return\n }\n\n dispatch({\n type: 'SELECT_KEYBOARD',\n source,\n sourceOther: other,\n layout,\n keymap,\n sensors\n })\n }, [dispatch])\n\n const handleUpdateSettings = useCallback(function (settings) {\n dispatch({ type: 'SETTINGS_UPDATE', settings })\n }, [dispatch])\n\n const openSettingsDialog = useCallback(\n () => dispatch({ type: 'SETTINGS_OPEN' }),\n [dispatch]\n )\n\n return (\n <>\n \n \n \n\n
\n dispatch({ type: 'CYCLE_THEME' })}\n />\n\n \n {settingsVisible && (\n dispatch({ type: 'SETTINGS_CLOSE' })}\n />\n )}\n
\n\n \n {keyboard && (\n \n \n \n )}\n {saveError && (\n dispatch({ type: 'CLEAR_SAVE_ERROR' })} />\n )}\n \n
\n
\n \n\n \n \n )\n}\n\nexport default App\n","import cloneDeep from 'lodash/cloneDeep'\nimport get from 'lodash/get'\nimport pick from 'lodash/pick'\n\nimport { stripLegacyProperties } from './keymap'\n\nfunction init () {\n const settings = JSON.parse(\n localStorage.getItem('experimental-settings') || '{}'\n )\n\n return {\n definitions: null,\n source: null,\n sourceOther: null,\n keyboard: null,\n _unmodifiedKeymap: null,\n saving: null,\n saveError: null,\n settingsVisible: null,\n commitDialogOpen: false,\n theme: JSON.parse(localStorage.getItem('theme' || '\"system\"')),\n experimentalSettings: {\n unicodeGlyphs: get(settings, 'unicodeGlyphs', true),\n platformGlyphs: get(settings, 'platformGlyphs', 'auto'),\n enableBehaviorEditing: get(settings, 'enableBehaviorEditing', false)\n },\n latestBuild: null\n }\n}\n\nexport const INITIAL_STATE = init()\n\nexport default function reducer (state, action) {\n const { type } = action\n\n switch (type) {\n case 'INITIALIZE':\n return init()\n\n case 'DEFINITIONS_SET':\n return { ...state, definitions: action.definitions }\n\n case 'CLEAR_KEYBOARD_SELECTION':\n return { ...state, keyboard: null }\n\n case 'SELECT_KEYBOARD':\n return selectKeyboard(state, action)\n\n case 'COMMIT_DIALOG_OPEN':\n return { ...state, commitDialogOpen: true }\n\n case 'COMMIT_DIALOG_CLOSE':\n return { ...state, commitDialogOpen: false }\n\n case 'GITHUB_BUILD_UPDATE':\n return { ...state, latestBuild: action.build }\n\n case 'KEYMAP_SAVE_START':\n return { ...state, saving: true, saveError: false }\n\n case 'KEYMAP_SAVE_SUCCESS':\n return keymapSaveSuccess(state, action)\n\n case 'KEYMAP_SAVE_FAILURE':\n return {\n ...state,\n saving: false,\n saveError: true\n }\n\n case 'CLEAR_SAVE_ERROR':\n return { ...state, saveError: null }\n\n case 'SETTINGS_OPEN':\n return { ...state, settingsVisible: true }\n\n case 'SETTINGS_CLOSE':\n return { ...state, settingsVisible: false }\n\n case 'SETTINGS_UPDATE':\n localStorage.setItem('experimental-settings', JSON.stringify(action.settings))\n return { ...state, experimentalSettings: action.settings }\n\n case 'CYCLE_THEME':\n return cycleTheme(state, action)\n\n default:\n return state\n }\n}\n\n// Here we can adapt the payload to account for API changes\nfunction selectKeyboard (state, action) {\n const { keyboard } = state\n const newKeyboardState = pick(action, ['layout', 'keymap', 'sensors'])\n\n stripLegacyProperties(newKeyboardState.keymap)\n\n return {\n ...state,\n source: action.source,\n sourceOther: action.sourceOther,\n keyboard: { ...keyboard, ...newKeyboardState },\n _unmodifiedKeymap: cloneDeep(newKeyboardState.keymap)\n }\n}\n\nfunction keymapSaveSuccess (state, action) {\n const newKeymapState = { ...action.keymap }\n\n stripLegacyProperties(newKeymapState)\n\n return {\n ...state,\n saving: false,\n unsaved: false,\n keyboard: {\n ...state.keyboard,\n keymap: newKeymapState\n },\n _unmodifiedKeymap: newKeymapState\n }\n}\n\nfunction cycleTheme (state, action) {\n const themes = ['light', 'dark', 'system']\n const index = themes.indexOf(state.theme)\n const theme = themes.at((index + 1) % themes.length)\n localStorage.setItem('theme', `\"${theme}\"`)\n document.body.dataset.theme = theme\n return { ...state, theme }\n}\n","import { combineReducers, configureStore } from '@reduxjs/toolkit'\n\nimport appReducer, { INITIAL_STATE } from './appReducer'\nimport layersReducer from './Keyboard/Layers/layersSlice'\nimport combosReducer from './Keyboard/Combos/combosSlice'\nimport macrosReducer from './Keyboard/Macros/macrosSlice'\nimport behaviorsReducer from './Keyboard/Behaviors/behaviorsSlice'\n\nconst keyboardReducer = combineReducers({\n layout: (state = []) => state,\n sensors: (state = []) => state,\n keymap: combineReducers({\n warningFlags: (state = []) => state,\n defines: (state = []) => state,\n headers: (state = []) => state,\n chosen: (state = {}) => state,\n behaviors: behaviorsReducer,\n layers: layersReducer,\n combos: combosReducer,\n macros: macrosReducer\n })\n})\n\nfunction rootReducer (state, action) {\n const newState = appReducer(state, action)\n return {\n ...newState,\n keyboard: newState.keyboard && {\n ...newState.keyboard,\n ...keyboardReducer(newState.keyboard, action)\n }\n }\n}\n\nconst store = configureStore({\n reducer: rootReducer,\n preloadedState: INITIAL_STATE\n})\n\nexport default store\n","import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport { Provider } from 'react-redux'\n\nimport './index.css'\nimport App from './App'\n\nimport { INITIAL_STATE } from './appReducer'\nimport store from './store'\n\ndocument.body.dataset.theme = INITIAL_STATE.theme\n\nconst root = ReactDOM.createRoot(document.getElementById('app-root'))\n\nroot.render(\n \n \n \n \n \n)\n","import map from 'lodash/map'\n\nconst DEFAULT_SIZE = 65\nconst DEFAULT_PADDING = 5\n\nexport function getComputedParams (position, size, rotation = {}) {\n return {\n x: position.x * (DEFAULT_SIZE + DEFAULT_PADDING),\n y: position.y * (DEFAULT_SIZE + DEFAULT_PADDING),\n u: size.u * DEFAULT_SIZE + DEFAULT_PADDING * (size.u - 1),\n h: size.h * DEFAULT_SIZE + DEFAULT_PADDING * (size.h - 1),\n rx: (position.x - (rotation.x || position.x)) * -(DEFAULT_SIZE + DEFAULT_PADDING),\n ry: (position.y - (rotation.y || position.y)) * -(DEFAULT_SIZE + DEFAULT_PADDING),\n a: rotation.a || 0\n }\n}\n\nexport function getKeyStyles (position, size, rotation) {\n const { x, y, u, h, a, rx, ry } = getComputedParams(position, size, rotation)\n\n return {\n top: `${y}px`,\n left: `${x}px`,\n width: `${u}px`,\n height: `${h}px`,\n transformOrigin: `${rx}px ${ry}px`,\n transform: `rotate(${a || 0}deg)`\n }\n}\n\nexport function transformKeyPolygon (position, size, rotation) {\n const { x, y, u, h, a, rx, ry } = getComputedParams(position, size, rotation)\n\n const points = [\n { x: 0, y: 0 },\n { x: u, y: 0 },\n { x: u, y: h },\n { x: 0, y: h }\n ]\n\n function translate (point) {\n return {\n x: point.x + x,\n y: point.y + y\n }\n }\n\n function rotate (point) {\n const x = point.x - rx\n const y = point.y - ry\n const angle = Math.PI * a / 180\n\n return {\n x: rx + x * Math.cos(angle) - y * Math.sin(angle),\n y: ry + y * Math.cos(angle) + x * Math.sin(angle)\n }\n }\n\n return points.map(rotate).map(translate)\n}\n\nexport function getKeyBoundingBox (position, size, rotation) {\n const transformed = transformKeyPolygon(position, size, rotation)\n const xValues = map(transformed, 'x')\n const yValues = map(transformed, 'y')\n const min = {\n x: Math.min(...xValues),\n y: Math.min(...yValues)\n }\n const max = {\n x: Math.max(...xValues),\n y: Math.max(...yValues)\n }\n\n return { min, max }\n}\n","import compact from 'lodash/compact'\n\nfunction shortestAlias (aliases) {\n return [...aliases]\n .sort((a, b) => a.length - b.length)[0]\n}\n\nconst fnPattern = /^(.+?)\\((code)\\)$/\n\nexport function normalizeZmkKeycodes (keycodes) {\n return keycodes.reduce((keycodes, keycode) => {\n const { description, context, symbol, faIcon, modifiers = [] } = keycode\n const aliases = keycode.names.filter(name => !name.match(fnPattern))\n const name = shortestAlias(aliases)\n const fnCode = keycode.names.map(name => name.match(fnPattern)).filter(v => !!v)[0]\n const base = {\n name,\n aliases,\n description,\n context,\n faIcon,\n symbol: symbol || name,\n modifiers,\n params: []\n }\n\n for (const code of aliases) {\n keycodes.push(Object.assign({}, base, {\n code,\n isModifier: !!fnCode\n }))\n }\n\n if (fnCode) {\n keycodes.push(Object.assign({}, base, {\n code: fnCode[1],\n params: fnCode[2].split(',')\n }))\n }\n\n return keycodes\n }, [])\n}\n\nexport function getMergedGlyphs (glyphs, options) {\n return compact([\n glyphs.basic,\n options.unicode && glyphs.unicode,\n options.platform === 'mac' && glyphs.platforms.mac,\n options.platform === 'win' && glyphs.platforms.win\n ]).reduce((glyphs, collection) => {\n for (const overlay of collection) {\n const aliases = overlay.names.filter(name => !name.match(fnPattern))\n const name = shortestAlias(aliases)\n\n if (!glyphs[name]) {\n glyphs[name] = {}\n }\n\n glyphs[name].symbol = glyphs[name].symbol || overlay.symbol\n glyphs[name].faIcon = glyphs[name].faIcon || overlay.faIcon\n }\n return glyphs\n }, {})\n}\n","import find from 'lodash/find'\nimport get from 'lodash/get'\nimport pick from 'lodash/pick'\n\nexport function stripLegacyProperties (keymap) {\n keymap.layers = keymap.layers.map(layer => (\n pick(layer, ['index', 'name', 'labels', 'properties'])\n ))\n\n keymap.combos = keymap.combos.map(combo => (\n pick(combo, ['index', 'name', 'labels', 'properties'])\n ))\n\n keymap.behaviors = keymap.behaviors.map(behavior => (\n pick(behavior, ['index', 'name', 'labels', 'properties', 'params'])\n ))\n\n keymap.macros = keymap.macros.map(macro => (\n pick(macro, ['index', 'name', 'labels', 'properties'])\n ))\n}\n\nexport function getBindingSlots (binding, behaviorParameters) {\n const { value, params } = binding\n const base = behaviorParameters[value] || []\n const additional = getAdditionalParams(params, base)\n return [...base, ...additional]\n}\n\nfunction getAdditionalParams (parsedParams, slots) {\n const firstParsedParam = get(parsedParams, '[0]', {})\n const firstSlot = get(slots, '[0]')\n\n if (firstSlot?.enum) {\n const match = { code: firstParsedParam.value }\n const source = find(firstSlot.enum, match)\n if (source?.additionalParams) {\n return source.additionalParams\n }\n }\n\n return []\n}\n","import { createContext } from 'react'\n\nexport const SearchContext = createContext({\n getSearchTargets: null\n})\n\nexport const SettingsContext = createContext({\n settings: null,\n openSettingsDialog: null\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root {\\n --bg: white;\\n --bg-rgb: 255,255,255;\\n --fg: black;\\n\\t--dark-red: #910e0e;\\n\\t--dark-blue: #6d99c6;\\n --error-highlight: rgb(179, 60, 60);\\n --selection: rgb(60, 179, 113);\\n --hover-selection: rgba(60, 179, 113, 0.85);\\n --delete: rgb(179, 60, 72);\\n --delete-faint: rgba(179, 60, 72, 0.6);\\n --link: royalblue;\\n --link-hover: #6d99c6;\\n --key-bg-base: #f2f2f2;\\n --key-bg-hover: white;\\n --key-bg-highlight: sandybrown;\\n --key-color-base: hsl(0, 0%, 30%);\\n --key-color-extreme: #313131;\\n --key-color-hover: white;\\n --code-bg: rgba(0, 0, 0, 0.15);\\n}\\nhtml {\\n font-family: sans-serif;\\n}\\nhtml, body {\\n\\twidth: 100vw;\\n\\theight: 100vh;\\n\\toverflow: auto;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n background-color: var(--bg);\\n color: var(--fg);\\n\\n transition: 300ms ease-in-out;\\n transition-property: color, background-color, border-color;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n font-family: Quicksand, avenir, sans-serif;\\n}\\n\\nbody[data-theme=\\\"dark\\\"] {\\n color-scheme: dark;\\n --fg: white;\\n --bg: hsl(211, 31.9%, 13%);\\n --bg-rgb: 17,34,51;\\n --dialog-bg: hsl(210, 30%, 17%);\\n --key-bg-base: hsl(208.2, 23%, 25%);\\n --key-color-base: hsl(0, 0%, 90%);\\n --key-color-extreme: #e7e7e7;\\n}\\n@media (prefers-color-scheme: dark) {\\n body[data-theme=\\\"system\\\"] {\\n color-scheme: dark;\\n --fg: white;\\n --bg: hsl(211, 31.9%, 13%);\\n --bg-rgb: 17,34,51;\\n --dialog-bg: hsl(210, 30%, 17%);\\n --key-bg-base: hsl(208.2, 23%, 25%);\\n --key-color-base: hsl(0, 0%, 90%);\\n --key-color-extreme: #e7e7e7;\\n }\\n}\\n\\nh3 {\\n margin-bottom: 10px;\\n}\\n\\na { color: var(--link) }\\na:hover { color: var(--link-hover) }\\n\\ncode {\\n background-color: var(--code-bg);\\n border-radius: 2px;\\n padding: .15em .3em .05em;\\n}\\n\\np {\\n line-height: 1.3rem;\\n}\\n\\n#actions {\\n\\tposition: absolute;\\n display: flex;\\n\\tbottom: 5px;\\n\\tright: 5px;\\n gap: 4px;\\n}\\n\\n#actions button {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\n#actions button[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\\n#settings-bar {\\n position: absolute;\\n z-index: 5;\\n top: 10px;\\n right: 10px;\\n}\\n\\n#settings-bar button {\\n background: none;\\n color: var(--fg);\\n border: none;\\n}\\n#settings-bar button:hover {\\n cursor: pointer;\\n color: royalblue;\\n}\\n\\n.fa-delete-right::before {\\n content: '\\\\f55a';\\n transform-origin: center;\\n transform: rotateZ(180deg);\\n display: inline-block;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/App.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAW;EACX,qBAAqB;EACrB,WAAW;CACZ,mBAAmB;CACnB,oBAAoB;EACnB,mCAAmC;EACnC,8BAA8B;EAC9B,2CAA2C;EAC3C,0BAA0B;EAC1B,sCAAsC;EACtC,iBAAiB;EACjB,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,8BAA8B;EAC9B,iCAAiC;EACjC,4BAA4B;EAC5B,wBAAwB;EACxB,8BAA8B;AAChC;AACA;EACE,uBAAuB;AACzB;AACA;CACC,YAAY;CACZ,aAAa;CACb,cAAc;CACd,UAAU;CACV,SAAS;EACR,2BAA2B;EAC3B,gBAAgB;;EAEhB,6BAA6B;EAC7B,0DAA0D;AAC5D;;AAEA;EACE,0CAA0C;AAC5C;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,0BAA0B;EAC1B,kBAAkB;EAClB,+BAA+B;EAC/B,mCAAmC;EACnC,iCAAiC;EACjC,4BAA4B;AAC9B;AACA;EACE;IACE,kBAAkB;IAClB,WAAW;IACX,0BAA0B;IAC1B,kBAAkB;IAClB,+BAA+B;IAC/B,mCAAmC;IACnC,iCAAiC;IACjC,4BAA4B;EAC9B;AACF;;AAEA;EACE,mBAAmB;AACrB;;AAEA,IAAI,mBAAmB;AACvB,UAAU,yBAAyB;;AAEnC;EACE,gCAAgC;EAChC,kBAAkB;EAClB,yBAAyB;AAC3B;;AAEA;EACE,mBAAmB;AACrB;;AAEA;CACC,kBAAkB;EACjB,aAAa;CACd,WAAW;CACX,UAAU;EACT,QAAQ;AACV;;AAEA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,UAAU;EACV,SAAS;EACT,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,gBAAgB;EAChB,YAAY;AACd;AACA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,wBAAwB;EACxB,0BAA0B;EAC1B,qBAAqB;AACvB\",\"sourcesContent\":[\":root {\\n --bg: white;\\n --bg-rgb: 255,255,255;\\n --fg: black;\\n\\t--dark-red: #910e0e;\\n\\t--dark-blue: #6d99c6;\\n --error-highlight: rgb(179, 60, 60);\\n --selection: rgb(60, 179, 113);\\n --hover-selection: rgba(60, 179, 113, 0.85);\\n --delete: rgb(179, 60, 72);\\n --delete-faint: rgba(179, 60, 72, 0.6);\\n --link: royalblue;\\n --link-hover: #6d99c6;\\n --key-bg-base: #f2f2f2;\\n --key-bg-hover: white;\\n --key-bg-highlight: sandybrown;\\n --key-color-base: hsl(0, 0%, 30%);\\n --key-color-extreme: #313131;\\n --key-color-hover: white;\\n --code-bg: rgba(0, 0, 0, 0.15);\\n}\\nhtml {\\n font-family: sans-serif;\\n}\\nhtml, body {\\n\\twidth: 100vw;\\n\\theight: 100vh;\\n\\toverflow: auto;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n background-color: var(--bg);\\n color: var(--fg);\\n\\n transition: 300ms ease-in-out;\\n transition-property: color, background-color, border-color;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n font-family: Quicksand, avenir, sans-serif;\\n}\\n\\nbody[data-theme=\\\"dark\\\"] {\\n color-scheme: dark;\\n --fg: white;\\n --bg: hsl(211, 31.9%, 13%);\\n --bg-rgb: 17,34,51;\\n --dialog-bg: hsl(210, 30%, 17%);\\n --key-bg-base: hsl(208.2, 23%, 25%);\\n --key-color-base: hsl(0, 0%, 90%);\\n --key-color-extreme: #e7e7e7;\\n}\\n@media (prefers-color-scheme: dark) {\\n body[data-theme=\\\"system\\\"] {\\n color-scheme: dark;\\n --fg: white;\\n --bg: hsl(211, 31.9%, 13%);\\n --bg-rgb: 17,34,51;\\n --dialog-bg: hsl(210, 30%, 17%);\\n --key-bg-base: hsl(208.2, 23%, 25%);\\n --key-color-base: hsl(0, 0%, 90%);\\n --key-color-extreme: #e7e7e7;\\n }\\n}\\n\\nh3 {\\n margin-bottom: 10px;\\n}\\n\\na { color: var(--link) }\\na:hover { color: var(--link-hover) }\\n\\ncode {\\n background-color: var(--code-bg);\\n border-radius: 2px;\\n padding: .15em .3em .05em;\\n}\\n\\np {\\n line-height: 1.3rem;\\n}\\n\\n#actions {\\n\\tposition: absolute;\\n display: flex;\\n\\tbottom: 5px;\\n\\tright: 5px;\\n gap: 4px;\\n}\\n\\n#actions button {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\n#actions button[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\\n#settings-bar {\\n position: absolute;\\n z-index: 5;\\n top: 10px;\\n right: 10px;\\n}\\n\\n#settings-bar button {\\n background: none;\\n color: var(--fg);\\n border: none;\\n}\\n#settings-bar button:hover {\\n cursor: pointer;\\n color: royalblue;\\n}\\n\\n.fa-delete-right::before {\\n content: '\\\\f55a';\\n transform-origin: center;\\n transform: rotateZ(180deg);\\n display: inline-block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body {\\n margin: 0;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\ncode {\\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\\n monospace;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/index.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,SAAS;EACT,mCAAmC;EACnC,kCAAkC;AACpC;;AAEA;EACE;aACW;AACb\",\"sourcesContent\":[\"body {\\n margin: 0;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\ncode {\\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\\n monospace;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ZpdcqlK42OntJos3eGw0 {\\n background-color: var(--dialog-bg, var(--bg));\\n padding: 20px 40px;\\n max-width: 500px;\\n box-shadow: 0px 10px 25px rgba(0, 0, 0, 0.4);\\n border-radius: 3px;\\n border: 0.25px solid rgba(0, 0, 0, 0.4);\\n}\\n\\n.ZpdcqlK42OntJos3eGw0 > h2:first-child {\\n margin-top: 0;\\n}\\n\\n.ZpdcqlK42OntJos3eGw0 p, .ZpdcqlK42OntJos3eGw0 ul {\\n font-family: sans-serif;\\n line-height: 1.3rem;\\n}\\n\\n.Mywg1Gw3bKMc9Kd9qcEO {\\n display: block;\\n margin: 0 auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/dialog-box.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,6CAA6C;EAC7C,kBAAkB;EAClB,gBAAgB;EAChB,4CAA4C;EAC5C,kBAAkB;EAClB,uCAAuC;AACzC;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,cAAc;AAChB\",\"sourcesContent\":[\".dialog {\\n background-color: var(--dialog-bg, var(--bg));\\n padding: 20px 40px;\\n max-width: 500px;\\n box-shadow: 0px 10px 25px rgba(0, 0, 0, 0.4);\\n border-radius: 3px;\\n border: 0.25px solid rgba(0, 0, 0, 0.4);\\n}\\n\\n.dialog > h2:first-child {\\n margin-top: 0;\\n}\\n\\n.dialog p, .dialog ul {\\n font-family: sans-serif;\\n line-height: 1.3rem;\\n}\\n\\n.button {\\n display: block;\\n margin: 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dialog\": \"ZpdcqlK42OntJos3eGw0\",\n\t\"button\": \"Mywg1Gw3bKMc9Kd9qcEO\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".J2R67AQeCK_aC1DKFCMJ {\\n margin: 4px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/link.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAW;AACb\",\"sourcesContent\":[\".icon {\\n margin: 4px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"icon\": \"J2R67AQeCK_aC1DKFCMJ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".Q5veln3l3laVkuNPs5dQ {\\n position: relative;\\n}\\n\\n.Q5veln3l3laVkuNPs5dQ pre {\\n white-space: pre;\\n background-color: var(--code-bg);\\n color: var(--key-color-base);\\n padding: 10px;\\n max-height: 320px;\\n overflow: scroll;\\n}\\n\\n.dqzgBwJ1Rq0XgMqeAKe7 {\\n position: absolute;\\n top: 15px;\\n right: 15px;\\n padding: 4px 7px;\\n color: var(--key-color-base);\\n background-color: var(--key-bg-base);\\n border: 1px solid var(--key-color-base);\\n border-radius: 3px;\\n}\\n.dqzgBwJ1Rq0XgMqeAKe7:hover {\\n cursor: pointer;\\n background-color: var(--selection);\\n border: var(--selection);\\n color: white;\\n}\\n\\n.YV2lKA9hbJpP4Vs4udw8 {\\n position: absolute;\\n top: 5px;\\n right: 0px;\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 2px;\\n cursor: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Dialogs/unexpected-error.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;EAChB,gCAAgC;EAChC,4BAA4B;EAC5B,aAAa;EACb,iBAAiB;EACjB,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,4BAA4B;EAC5B,oCAAoC;EACpC,uCAAuC;EACvC,kBAAkB;AACpB;AACA;EACE,eAAe;EACf,kCAAkC;EAClC,wBAAwB;EACxB,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAU;EACV,kCAAkC;EAClC,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,YAAY;AACd\",\"sourcesContent\":[\".stackTrace {\\n position: relative;\\n}\\n\\n.stackTrace pre {\\n white-space: pre;\\n background-color: var(--code-bg);\\n color: var(--key-color-base);\\n padding: 10px;\\n max-height: 320px;\\n overflow: scroll;\\n}\\n\\n.button {\\n position: absolute;\\n top: 15px;\\n right: 15px;\\n padding: 4px 7px;\\n color: var(--key-color-base);\\n background-color: var(--key-bg-base);\\n border: 1px solid var(--key-color-base);\\n border-radius: 3px;\\n}\\n.button:hover {\\n cursor: pointer;\\n background-color: var(--selection);\\n border: var(--selection);\\n color: white;\\n}\\n\\n.copyMessage {\\n position: absolute;\\n top: 5px;\\n right: 0px;\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 2px;\\n cursor: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"stackTrace\": \"Q5veln3l3laVkuNPs5dQ\",\n\t\"button\": \"dqzgBwJ1Rq0XgMqeAKe7\",\n\t\"copyMessage\": \"YV2lKA9hbJpP4Vs4udw8\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".D0BH39_6wwiclW8aKuoi {\\n display: inline-flex;\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.D0BH39_6wwiclW8aKuoi li {\\n cursor: pointer;\\n padding: 5px;\\n margin: 5px;\\n border-radius: 4px;\\n font-variant: small-caps;\\n}\\n.D0BH39_6wwiclW8aKuoi li.xwo6V7AWCmy8CDvuTwRg {\\n background-color: var(--selection);\\n color: white;\\n cursor: default;\\n}\\n\\n.nVbskEoaGxWf96qEgtxz {\\n position: absolute;\\n}\\n.nVbskEoaGxWf96qEgtxz > * {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n\\n.Ae2s0eqIVhebTEcJGc3F {\\n position: relative\\n}\\n.Ae2s0eqIVhebTEcJGc3F::after {\\n content: 'beta';\\n background-color: var(--error-highlight);\\n color: white;\\n font-size: 12px;\\n font-weight: bold;\\n padding: 1px 3px;\\n border-radius: 6px;\\n position: absolute;\\n top: 0;\\n right: 0;\\n transform: translate(60%, -60%) rotate(13deg);\\n}\\n.xwo6V7AWCmy8CDvuTwRg .Ae2s0eqIVhebTEcJGc3F::after {\\n background-color: white;\\n color: var(--selection);\\n border: 1px solid var(--selection);\\n}\\n.sQQ0qFjHptJbQ8qvuXGa {\\n color: var(--error-highlight);\\n}\\n.D0BH39_6wwiclW8aKuoi li.xwo6V7AWCmy8CDvuTwRg.sQQ0qFjHptJbQ8qvuXGa {\\n background-color: var(--error-highlight);\\n color: white;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oBAAoB;EACpB,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,eAAe;EACf,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,wBAAwB;AAC1B;AACA;EACE,kCAAkC;EAClC,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE;AACF;AACA;EACE,eAAe;EACf,wCAAwC;EACxC,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,kBAAkB;EAClB,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,6CAA6C;AAC/C;AACA;EACE,uBAAuB;EACvB,uBAAuB;EACvB,kCAAkC;AACpC;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,wCAAwC;EACxC,YAAY;AACd\",\"sourcesContent\":[\".editorModeTabs {\\n display: inline-flex;\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.editorModeTabs li {\\n cursor: pointer;\\n padding: 5px;\\n margin: 5px;\\n border-radius: 4px;\\n font-variant: small-caps;\\n}\\n.editorModeTabs li.activeEditTab {\\n background-color: var(--selection);\\n color: white;\\n cursor: default;\\n}\\n\\n.placer {\\n position: absolute;\\n}\\n.placer > * {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n\\n.beta {\\n position: relative\\n}\\n.beta::after {\\n content: 'beta';\\n background-color: var(--error-highlight);\\n color: white;\\n font-size: 12px;\\n font-weight: bold;\\n padding: 1px 3px;\\n border-radius: 6px;\\n position: absolute;\\n top: 0;\\n right: 0;\\n transform: translate(60%, -60%) rotate(13deg);\\n}\\n.activeEditTab .beta::after {\\n background-color: white;\\n color: var(--selection);\\n border: 1px solid var(--selection);\\n}\\n.warningTab {\\n color: var(--error-highlight);\\n}\\n.editorModeTabs li.activeEditTab.warningTab {\\n background-color: var(--error-highlight);\\n color: white;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"editorModeTabs\": \"D0BH39_6wwiclW8aKuoi\",\n\t\"activeEditTab\": \"xwo6V7AWCmy8CDvuTwRg\",\n\t\"placer\": \"nVbskEoaGxWf96qEgtxz\",\n\t\"beta\": \"Ae2s0eqIVhebTEcJGc3F\",\n\t\"warningTab\": \"sQQ0qFjHptJbQ8qvuXGa\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".hY07j_e1kQx0WX5BwG6I {\\n display: flex;\\n flex-direction: row;\\n align-items: end;\\n gap: 5px;\\n margin: 5px;\\n height: 58px;\\n}\\n\\n._0h266lacmB1N_qDdQcy {\\n align-items: center;\\n}\\n\\n.hY07j_e1kQx0WX5BwG6I button {\\n height: 38px;\\n}\\n\\n.xwu_0RR7bcAhL2xRBstH {\\n font-style: italic;\\n max-width: 250px;\\n opacity: 0.6;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Sources/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,QAAQ;EACR,WAAW;EACX,YAAY;AACd;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,YAAY;AACd\",\"sourcesContent\":[\".wrapper {\\n display: flex;\\n flex-direction: row;\\n align-items: end;\\n gap: 5px;\\n margin: 5px;\\n height: 58px;\\n}\\n\\n.compact {\\n align-items: center;\\n}\\n\\n.wrapper button {\\n height: 38px;\\n}\\n\\n.sourceDescription {\\n font-style: italic;\\n max-width: 250px;\\n opacity: 0.6;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"hY07j_e1kQx0WX5BwG6I\",\n\t\"compact\": \"_0h266lacmB1N_qDdQcy\",\n\t\"sourceDescription\": \"xwu_0RR7bcAhL2xRBstH\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n._vWNIXMkemQax9rkCJQh {\\n display: inline-block;\\n position: absolute;\\n z-index: 100;\\n bottom: 5px;\\n left: 5px;\\n}\\n\\n._vWNIXMkemQax9rkCJQh label {\\n font-size: 75%;\\n font-style: italic;\\n display: block;\\n padding: 0 10px;\\n}\\n\\n.qiC2NrujE4ebqmHjzq0_ {\\n display: inline-block;\\n font-size: 110%;\\n font-style: italic;\\n background-color: var(--code-bg);\\n border-radius: 20px;\\n padding: 5px 10px;\\n text-decoration: none;\\n\\n color: royalblue;\\n}\\n.qiC2NrujE4ebqmHjzq0_:hover {\\n background-color: royalblue;\\n color: white;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles.module.css\"],\"names\":[],\"mappings\":\";AACA;EACE,qBAAqB;EACrB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;AACX;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,qBAAqB;EACrB,eAAe;EACf,kBAAkB;EAClB,gCAAgC;EAChC,mBAAmB;EACnB,iBAAiB;EACjB,qBAAqB;;EAErB,gBAAgB;AAClB;AACA;EACE,2BAA2B;EAC3B,YAAY;AACd\",\"sourcesContent\":[\"\\n.wrapper {\\n display: inline-block;\\n position: absolute;\\n z-index: 100;\\n bottom: 5px;\\n left: 5px;\\n}\\n\\n.wrapper label {\\n font-size: 75%;\\n font-style: italic;\\n display: block;\\n padding: 0 10px;\\n}\\n\\n.githubLink {\\n display: inline-block;\\n font-size: 110%;\\n font-style: italic;\\n background-color: var(--code-bg);\\n border-radius: 20px;\\n padding: 5px 10px;\\n text-decoration: none;\\n\\n color: royalblue;\\n}\\n.githubLink:hover {\\n background-color: royalblue;\\n color: white;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"_vWNIXMkemQax9rkCJQh\",\n\t\"githubLink\": \"qiC2NrujE4ebqmHjzq0_\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","var map = {\n\t\"./catalog\": [\n\t\t51785\n\t],\n\t\"./catalog.json\": [\n\t\t51785\n\t],\n\t\"./keys_ar\": [\n\t\t73810,\n\t\t6392\n\t],\n\t\"./keys_ar.json\": [\n\t\t73810,\n\t\t6392\n\t],\n\t\"./keys_ar_102\": [\n\t\t78381,\n\t\t8017\n\t],\n\t\"./keys_ar_102.json\": [\n\t\t78381,\n\t\t8017\n\t],\n\t\"./keys_ar_azerty\": [\n\t\t56724,\n\t\t2650\n\t],\n\t\"./keys_ar_azerty.json\": [\n\t\t56724,\n\t\t2650\n\t],\n\t\"./keys_as\": [\n\t\t68045,\n\t\t9082\n\t],\n\t\"./keys_as.json\": [\n\t\t68045,\n\t\t9082\n\t],\n\t\"./keys_az\": [\n\t\t21708,\n\t\t8070\n\t],\n\t\"./keys_az.json\": [\n\t\t21708,\n\t\t8070\n\t],\n\t\"./keys_az_cyrillic\": [\n\t\t7200,\n\t\t8242\n\t],\n\t\"./keys_az_cyrillic.json\": [\n\t\t7200,\n\t\t8242\n\t],\n\t\"./keys_az_standard\": [\n\t\t2498,\n\t\t3647\n\t],\n\t\"./keys_az_standard.json\": [\n\t\t2498,\n\t\t3647\n\t],\n\t\"./keys_ba\": [\n\t\t24745,\n\t\t5332\n\t],\n\t\"./keys_ba.json\": [\n\t\t24745,\n\t\t5332\n\t],\n\t\"./keys_be\": [\n\t\t80468,\n\t\t308\n\t],\n\t\"./keys_be.json\": [\n\t\t80468,\n\t\t308\n\t],\n\t\"./keys_bg\": [\n\t\t87317,\n\t\t2408\n\t],\n\t\"./keys_bg.json\": [\n\t\t87317,\n\t\t2408\n\t],\n\t\"./keys_bg_latin\": [\n\t\t80885,\n\t\t421\n\t],\n\t\"./keys_bg_latin.json\": [\n\t\t80885,\n\t\t421\n\t],\n\t\"./keys_bg_phonetic\": [\n\t\t10220,\n\t\t4595\n\t],\n\t\"./keys_bg_phonetic.json\": [\n\t\t10220,\n\t\t4595\n\t],\n\t\"./keys_bm\": [\n\t\t71350,\n\t\t8956\n\t],\n\t\"./keys_bm.json\": [\n\t\t71350,\n\t\t8956\n\t],\n\t\"./keys_bn\": [\n\t\t99691,\n\t\t1480\n\t],\n\t\"./keys_bn.json\": [\n\t\t99691,\n\t\t1480\n\t],\n\t\"./keys_bn_inscript\": [\n\t\t31658,\n\t\t9142\n\t],\n\t\"./keys_bn_inscript.json\": [\n\t\t31658,\n\t\t9142\n\t],\n\t\"./keys_bo\": [\n\t\t29692,\n\t\t3282\n\t],\n\t\"./keys_bo.json\": [\n\t\t29692,\n\t\t3282\n\t],\n\t\"./keys_bs\": [\n\t\t5396,\n\t\t1315\n\t],\n\t\"./keys_bs.json\": [\n\t\t5396,\n\t\t1315\n\t],\n\t\"./keys_bug\": [\n\t\t15317,\n\t\t4443\n\t],\n\t\"./keys_bug.json\": [\n\t\t15317,\n\t\t4443\n\t],\n\t\"./keys_chr\": [\n\t\t8250,\n\t\t6943\n\t],\n\t\"./keys_chr.json\": [\n\t\t8250,\n\t\t6943\n\t],\n\t\"./keys_chr_phonetic\": [\n\t\t6221,\n\t\t4688\n\t],\n\t\"./keys_chr_phonetic.json\": [\n\t\t6221,\n\t\t4688\n\t],\n\t\"./keys_ckb\": [\n\t\t29448,\n\t\t1936\n\t],\n\t\"./keys_ckb.json\": [\n\t\t29448,\n\t\t1936\n\t],\n\t\"./keys_cs\": [\n\t\t98019,\n\t\t8207\n\t],\n\t\"./keys_cs.json\": [\n\t\t98019,\n\t\t8207\n\t],\n\t\"./keys_cs_programmers\": [\n\t\t7578,\n\t\t3735\n\t],\n\t\"./keys_cs_programmers.json\": [\n\t\t7578,\n\t\t3735\n\t],\n\t\"./keys_cs_qwerty\": [\n\t\t58733,\n\t\t2659\n\t],\n\t\"./keys_cs_qwerty.json\": [\n\t\t58733,\n\t\t2659\n\t],\n\t\"./keys_da\": [\n\t\t81460,\n\t\t6691\n\t],\n\t\"./keys_da.json\": [\n\t\t81460,\n\t\t6691\n\t],\n\t\"./keys_de\": [\n\t\t68013,\n\t\t3359\n\t],\n\t\"./keys_de.json\": [\n\t\t68013,\n\t\t3359\n\t],\n\t\"./keys_de_belgian\": [\n\t\t69798,\n\t\t9619\n\t],\n\t\"./keys_de_belgian.json\": [\n\t\t69798,\n\t\t9619\n\t],\n\t\"./keys_de_belgian_period\": [\n\t\t12991,\n\t\t1808\n\t],\n\t\"./keys_de_belgian_period.json\": [\n\t\t12991,\n\t\t1808\n\t],\n\t\"./keys_de_ibm\": [\n\t\t85155,\n\t\t1507\n\t],\n\t\"./keys_de_ibm.json\": [\n\t\t85155,\n\t\t1507\n\t],\n\t\"./keys_de_swiss\": [\n\t\t57153,\n\t\t6184\n\t],\n\t\"./keys_de_swiss.json\": [\n\t\t57153,\n\t\t6184\n\t],\n\t\"./keys_dsb\": [\n\t\t93859,\n\t\t9616\n\t],\n\t\"./keys_dsb.json\": [\n\t\t93859,\n\t\t9616\n\t],\n\t\"./keys_dsb_extended\": [\n\t\t45816,\n\t\t7686\n\t],\n\t\"./keys_dsb_extended.json\": [\n\t\t45816,\n\t\t7686\n\t],\n\t\"./keys_dv\": [\n\t\t60573,\n\t\t5485\n\t],\n\t\"./keys_dv.json\": [\n\t\t60573,\n\t\t5485\n\t],\n\t\"./keys_dvorak\": [\n\t\t17499,\n\t\t6157\n\t],\n\t\"./keys_dvorak.json\": [\n\t\t17499,\n\t\t6157\n\t],\n\t\"./keys_dvorak_left\": [\n\t\t5085,\n\t\t8793\n\t],\n\t\"./keys_dvorak_left.json\": [\n\t\t5085,\n\t\t8793\n\t],\n\t\"./keys_dvorak_right\": [\n\t\t43474,\n\t\t3362\n\t],\n\t\"./keys_dvorak_right.json\": [\n\t\t43474,\n\t\t3362\n\t],\n\t\"./keys_dyu\": [\n\t\t56817,\n\t\t749\n\t],\n\t\"./keys_dyu.json\": [\n\t\t56817,\n\t\t749\n\t],\n\t\"./keys_dz\": [\n\t\t3461,\n\t\t3893\n\t],\n\t\"./keys_dz.json\": [\n\t\t3461,\n\t\t3893\n\t],\n\t\"./keys_el\": [\n\t\t82182,\n\t\t1545\n\t],\n\t\"./keys_el.json\": [\n\t\t82182,\n\t\t1545\n\t],\n\t\"./keys_el_220\": [\n\t\t74695,\n\t\t3743\n\t],\n\t\"./keys_el_220.json\": [\n\t\t74695,\n\t\t3743\n\t],\n\t\"./keys_el_319\": [\n\t\t43615,\n\t\t4263\n\t],\n\t\"./keys_el_319.json\": [\n\t\t43615,\n\t\t4263\n\t],\n\t\"./keys_el_latin\": [\n\t\t61897,\n\t\t8971\n\t],\n\t\"./keys_el_latin.json\": [\n\t\t61897,\n\t\t8971\n\t],\n\t\"./keys_el_latin_220\": [\n\t\t52401,\n\t\t7603\n\t],\n\t\"./keys_el_latin_220.json\": [\n\t\t52401,\n\t\t7603\n\t],\n\t\"./keys_el_latin_319\": [\n\t\t70286,\n\t\t5821\n\t],\n\t\"./keys_el_latin_319.json\": [\n\t\t70286,\n\t\t5821\n\t],\n\t\"./keys_el_polytonic\": [\n\t\t19430,\n\t\t4296\n\t],\n\t\"./keys_el_polytonic.json\": [\n\t\t19430,\n\t\t4296\n\t],\n\t\"./keys_en_gb\": [\n\t\t85702,\n\t\t7495\n\t],\n\t\"./keys_en_gb.json\": [\n\t\t85702,\n\t\t7495\n\t],\n\t\"./keys_en_gb_extended\": [\n\t\t30206,\n\t\t1343\n\t],\n\t\"./keys_en_gb_extended.json\": [\n\t\t30206,\n\t\t1343\n\t],\n\t\"./keys_en_india\": [\n\t\t28440,\n\t\t8302\n\t],\n\t\"./keys_en_india.json\": [\n\t\t28440,\n\t\t8302\n\t],\n\t\"./keys_es\": [\n\t\t68633,\n\t\t771\n\t],\n\t\"./keys_es.json\": [\n\t\t68633,\n\t\t771\n\t],\n\t\"./keys_es_latin_american\": [\n\t\t67356,\n\t\t6429\n\t],\n\t\"./keys_es_latin_american.json\": [\n\t\t67356,\n\t\t6429\n\t],\n\t\"./keys_es_variation\": [\n\t\t73173,\n\t\t3033\n\t],\n\t\"./keys_es_variation.json\": [\n\t\t73173,\n\t\t3033\n\t],\n\t\"./keys_et\": [\n\t\t76498,\n\t\t7022\n\t],\n\t\"./keys_et.json\": [\n\t\t76498,\n\t\t7022\n\t],\n\t\"./keys_fa\": [\n\t\t76451,\n\t\t8599\n\t],\n\t\"./keys_fa.json\": [\n\t\t76451,\n\t\t8599\n\t],\n\t\"./keys_fa_standard\": [\n\t\t79355,\n\t\t819\n\t],\n\t\"./keys_fa_standard.json\": [\n\t\t79355,\n\t\t819\n\t],\n\t\"./keys_fi\": [\n\t\t36863,\n\t\t8706\n\t],\n\t\"./keys_fi.json\": [\n\t\t36863,\n\t\t8706\n\t],\n\t\"./keys_fi_sami\": [\n\t\t58592,\n\t\t9866\n\t],\n\t\"./keys_fi_sami.json\": [\n\t\t58592,\n\t\t9866\n\t],\n\t\"./keys_fo\": [\n\t\t48622,\n\t\t9586\n\t],\n\t\"./keys_fo.json\": [\n\t\t48622,\n\t\t9586\n\t],\n\t\"./keys_fr\": [\n\t\t50955,\n\t\t7554\n\t],\n\t\"./keys_fr.json\": [\n\t\t50955,\n\t\t7554\n\t],\n\t\"./keys_fr_belgian\": [\n\t\t39330,\n\t\t8855\n\t],\n\t\"./keys_fr_belgian.json\": [\n\t\t39330,\n\t\t8855\n\t],\n\t\"./keys_fr_belgian_period\": [\n\t\t17494,\n\t\t7950\n\t],\n\t\"./keys_fr_belgian_period.json\": [\n\t\t17494,\n\t\t7950\n\t],\n\t\"./keys_fr_canadian_french\": [\n\t\t74301,\n\t\t4491\n\t],\n\t\"./keys_fr_canadian_french.json\": [\n\t\t74301,\n\t\t4491\n\t],\n\t\"./keys_fr_canadian_standard\": [\n\t\t76297,\n\t\t8251\n\t],\n\t\"./keys_fr_canadian_standard.json\": [\n\t\t76297,\n\t\t8251\n\t],\n\t\"./keys_fr_swiss\": [\n\t\t41417,\n\t\t1514\n\t],\n\t\"./keys_fr_swiss.json\": [\n\t\t41417,\n\t\t1514\n\t],\n\t\"./keys_ga\": [\n\t\t47467,\n\t\t8185\n\t],\n\t\"./keys_ga.json\": [\n\t\t47467,\n\t\t8185\n\t],\n\t\"./keys_gd\": [\n\t\t50596,\n\t\t6457\n\t],\n\t\"./keys_gd.json\": [\n\t\t50596,\n\t\t6457\n\t],\n\t\"./keys_gn\": [\n\t\t78996,\n\t\t4289\n\t],\n\t\"./keys_gn.json\": [\n\t\t78996,\n\t\t4289\n\t],\n\t\"./keys_got\": [\n\t\t45327,\n\t\t9893\n\t],\n\t\"./keys_got.json\": [\n\t\t45327,\n\t\t9893\n\t],\n\t\"./keys_gu\": [\n\t\t21372,\n\t\t2787\n\t],\n\t\"./keys_gu.json\": [\n\t\t21372,\n\t\t2787\n\t],\n\t\"./keys_ha\": [\n\t\t28061,\n\t\t2982\n\t],\n\t\"./keys_ha.json\": [\n\t\t28061,\n\t\t2982\n\t],\n\t\"./keys_haw\": [\n\t\t63525,\n\t\t3618\n\t],\n\t\"./keys_haw.json\": [\n\t\t63525,\n\t\t3618\n\t],\n\t\"./keys_he\": [\n\t\t2357,\n\t\t7446\n\t],\n\t\"./keys_he.json\": [\n\t\t2357,\n\t\t7446\n\t],\n\t\"./keys_he_standard\": [\n\t\t58311,\n\t\t7108\n\t],\n\t\"./keys_he_standard.json\": [\n\t\t58311,\n\t\t7108\n\t],\n\t\"./keys_hi\": [\n\t\t55225,\n\t\t6688\n\t],\n\t\"./keys_hi.json\": [\n\t\t55225,\n\t\t6688\n\t],\n\t\"./keys_hi_traditional\": [\n\t\t48923,\n\t\t8119\n\t],\n\t\"./keys_hi_traditional.json\": [\n\t\t48923,\n\t\t8119\n\t],\n\t\"./keys_hu\": [\n\t\t4526,\n\t\t4156\n\t],\n\t\"./keys_hu.json\": [\n\t\t4526,\n\t\t4156\n\t],\n\t\"./keys_hu_101\": [\n\t\t3013,\n\t\t3322\n\t],\n\t\"./keys_hu_101.json\": [\n\t\t3013,\n\t\t3322\n\t],\n\t\"./keys_hy\": [\n\t\t15584,\n\t\t2015\n\t],\n\t\"./keys_hy.json\": [\n\t\t15584,\n\t\t2015\n\t],\n\t\"./keys_hy_phonetic\": [\n\t\t28860,\n\t\t9136\n\t],\n\t\"./keys_hy_phonetic.json\": [\n\t\t28860,\n\t\t9136\n\t],\n\t\"./keys_ig\": [\n\t\t4055,\n\t\t7892\n\t],\n\t\"./keys_ig.json\": [\n\t\t4055,\n\t\t7892\n\t],\n\t\"./keys_is\": [\n\t\t87591,\n\t\t5604\n\t],\n\t\"./keys_is.json\": [\n\t\t87591,\n\t\t5604\n\t],\n\t\"./keys_it\": [\n\t\t24277,\n\t\t4465\n\t],\n\t\"./keys_it.json\": [\n\t\t24277,\n\t\t4465\n\t],\n\t\"./keys_it_142\": [\n\t\t83333,\n\t\t833\n\t],\n\t\"./keys_it_142.json\": [\n\t\t83333,\n\t\t833\n\t],\n\t\"./keys_iu\": [\n\t\t79407,\n\t\t5840\n\t],\n\t\"./keys_iu.json\": [\n\t\t79407,\n\t\t5840\n\t],\n\t\"./keys_iu_latin\": [\n\t\t90290,\n\t\t9176\n\t],\n\t\"./keys_iu_latin.json\": [\n\t\t90290,\n\t\t9176\n\t],\n\t\"./keys_jv\": [\n\t\t83271,\n\t\t6710\n\t],\n\t\"./keys_jv.json\": [\n\t\t83271,\n\t\t6710\n\t],\n\t\"./keys_ka\": [\n\t\t36196,\n\t\t3687\n\t],\n\t\"./keys_ka.json\": [\n\t\t36196,\n\t\t3687\n\t],\n\t\"./keys_ka_ergonomic\": [\n\t\t76892,\n\t\t9698\n\t],\n\t\"./keys_ka_ergonomic.json\": [\n\t\t76892,\n\t\t9698\n\t],\n\t\"./keys_ka_qwerty\": [\n\t\t84211,\n\t\t2621\n\t],\n\t\"./keys_ka_qwerty.json\": [\n\t\t84211,\n\t\t2621\n\t],\n\t\"./keys_khb\": [\n\t\t93128,\n\t\t5842\n\t],\n\t\"./keys_khb.json\": [\n\t\t93128,\n\t\t5842\n\t],\n\t\"./keys_khb_tai_le\": [\n\t\t16011,\n\t\t539\n\t],\n\t\"./keys_khb_tai_le.json\": [\n\t\t16011,\n\t\t539\n\t],\n\t\"./keys_kk\": [\n\t\t81713,\n\t\t951\n\t],\n\t\"./keys_kk.json\": [\n\t\t81713,\n\t\t951\n\t],\n\t\"./keys_kl\": [\n\t\t87006,\n\t\t7303\n\t],\n\t\"./keys_kl.json\": [\n\t\t87006,\n\t\t7303\n\t],\n\t\"./keys_km\": [\n\t\t86151,\n\t\t6794\n\t],\n\t\"./keys_km.json\": [\n\t\t86151,\n\t\t6794\n\t],\n\t\"./keys_km_nida\": [\n\t\t91831,\n\t\t3268\n\t],\n\t\"./keys_km_nida.json\": [\n\t\t91831,\n\t\t3268\n\t],\n\t\"./keys_kn\": [\n\t\t88868,\n\t\t8709\n\t],\n\t\"./keys_kn.json\": [\n\t\t88868,\n\t\t8709\n\t],\n\t\"./keys_ko\": [\n\t\t96130,\n\t\t8427\n\t],\n\t\"./keys_ko.json\": [\n\t\t96130,\n\t\t8427\n\t],\n\t\"./keys_ky\": [\n\t\t49911,\n\t\t9244\n\t],\n\t\"./keys_ky.json\": [\n\t\t49911,\n\t\t9244\n\t],\n\t\"./keys_la_old_italic\": [\n\t\t72596,\n\t\t8438\n\t],\n\t\"./keys_la_old_italic.json\": [\n\t\t72596,\n\t\t8438\n\t],\n\t\"./keys_lb\": [\n\t\t6012,\n\t\t5606\n\t],\n\t\"./keys_lb.json\": [\n\t\t6012,\n\t\t5606\n\t],\n\t\"./keys_lis\": [\n\t\t86353,\n\t\t8945\n\t],\n\t\"./keys_lis.json\": [\n\t\t86353,\n\t\t8945\n\t],\n\t\"./keys_lis_standard\": [\n\t\t70912,\n\t\t4887\n\t],\n\t\"./keys_lis_standard.json\": [\n\t\t70912,\n\t\t4887\n\t],\n\t\"./keys_lo\": [\n\t\t34659,\n\t\t398\n\t],\n\t\"./keys_lo.json\": [\n\t\t34659,\n\t\t398\n\t],\n\t\"./keys_lt\": [\n\t\t92979,\n\t\t7771\n\t],\n\t\"./keys_lt.json\": [\n\t\t92979,\n\t\t7771\n\t],\n\t\"./keys_lt_ibm\": [\n\t\t90075,\n\t\t129\n\t],\n\t\"./keys_lt_ibm.json\": [\n\t\t90075,\n\t\t129\n\t],\n\t\"./keys_lt_standard\": [\n\t\t70040,\n\t\t3746\n\t],\n\t\"./keys_lt_standard.json\": [\n\t\t70040,\n\t\t3746\n\t],\n\t\"./keys_lv\": [\n\t\t25622,\n\t\t1671\n\t],\n\t\"./keys_lv.json\": [\n\t\t25622,\n\t\t1671\n\t],\n\t\"./keys_lv_qwerty\": [\n\t\t70689,\n\t\t6777\n\t],\n\t\"./keys_lv_qwerty.json\": [\n\t\t70689,\n\t\t6777\n\t],\n\t\"./keys_lv_standard\": [\n\t\t68148,\n\t\t9081\n\t],\n\t\"./keys_lv_standard.json\": [\n\t\t68148,\n\t\t9081\n\t],\n\t\"./keys_man\": [\n\t\t95287,\n\t\t1156\n\t],\n\t\"./keys_man.json\": [\n\t\t95287,\n\t\t1156\n\t],\n\t\"./keys_mi\": [\n\t\t97585,\n\t\t9512\n\t],\n\t\"./keys_mi.json\": [\n\t\t97585,\n\t\t9512\n\t],\n\t\"./keys_mk\": [\n\t\t8069,\n\t\t8041\n\t],\n\t\"./keys_mk.json\": [\n\t\t8069,\n\t\t8041\n\t],\n\t\"./keys_ml\": [\n\t\t79302,\n\t\t1547\n\t],\n\t\"./keys_ml.json\": [\n\t\t79302,\n\t\t1547\n\t],\n\t\"./keys_mn\": [\n\t\t78647,\n\t\t389\n\t],\n\t\"./keys_mn.json\": [\n\t\t78647,\n\t\t389\n\t],\n\t\"./keys_mn_phags_pa\": [\n\t\t94641,\n\t\t3194\n\t],\n\t\"./keys_mn_phags_pa.json\": [\n\t\t94641,\n\t\t3194\n\t],\n\t\"./keys_mn_traditional\": [\n\t\t1301,\n\t\t8568\n\t],\n\t\"./keys_mn_traditional.json\": [\n\t\t1301,\n\t\t8568\n\t],\n\t\"./keys_mr\": [\n\t\t28928,\n\t\t2247\n\t],\n\t\"./keys_mr.json\": [\n\t\t28928,\n\t\t2247\n\t],\n\t\"./keys_mt\": [\n\t\t5848,\n\t\t7568\n\t],\n\t\"./keys_mt.json\": [\n\t\t5848,\n\t\t7568\n\t],\n\t\"./keys_mt_101\": [\n\t\t10244,\n\t\t3880\n\t],\n\t\"./keys_mt_101.json\": [\n\t\t10244,\n\t\t3880\n\t],\n\t\"./keys_my\": [\n\t\t14052,\n\t\t5015\n\t],\n\t\"./keys_my.json\": [\n\t\t14052,\n\t\t5015\n\t],\n\t\"./keys_nb\": [\n\t\t56360,\n\t\t4919\n\t],\n\t\"./keys_nb.json\": [\n\t\t56360,\n\t\t4919\n\t],\n\t\"./keys_nb_sami\": [\n\t\t96408,\n\t\t8636\n\t],\n\t\"./keys_nb_sami.json\": [\n\t\t96408,\n\t\t8636\n\t],\n\t\"./keys_ne\": [\n\t\t97192,\n\t\t4892\n\t],\n\t\"./keys_ne.json\": [\n\t\t97192,\n\t\t4892\n\t],\n\t\"./keys_nl\": [\n\t\t37853,\n\t\t6415\n\t],\n\t\"./keys_nl.json\": [\n\t\t37853,\n\t\t6415\n\t],\n\t\"./keys_nl_period\": [\n\t\t80045,\n\t\t2271\n\t],\n\t\"./keys_nl_period.json\": [\n\t\t80045,\n\t\t2271\n\t],\n\t\"./keys_non\": [\n\t\t50248,\n\t\t5991\n\t],\n\t\"./keys_non.json\": [\n\t\t50248,\n\t\t5991\n\t],\n\t\"./keys_nso\": [\n\t\t34757,\n\t\t8307\n\t],\n\t\"./keys_nso.json\": [\n\t\t34757,\n\t\t8307\n\t],\n\t\"./keys_or\": [\n\t\t40914,\n\t\t2383\n\t],\n\t\"./keys_or.json\": [\n\t\t40914,\n\t\t2383\n\t],\n\t\"./keys_pa\": [\n\t\t51095,\n\t\t9989\n\t],\n\t\"./keys_pa.json\": [\n\t\t51095,\n\t\t9989\n\t],\n\t\"./keys_pl\": [\n\t\t91654,\n\t\t8391\n\t],\n\t\"./keys_pl.json\": [\n\t\t91654,\n\t\t8391\n\t],\n\t\"./keys_pl_programmers\": [\n\t\t188,\n\t\t920\n\t],\n\t\"./keys_pl_programmers.json\": [\n\t\t188,\n\t\t920\n\t],\n\t\"./keys_ps\": [\n\t\t65138,\n\t\t6049\n\t],\n\t\"./keys_ps.json\": [\n\t\t65138,\n\t\t6049\n\t],\n\t\"./keys_pt\": [\n\t\t33474,\n\t\t4821\n\t],\n\t\"./keys_pt.json\": [\n\t\t33474,\n\t\t4821\n\t],\n\t\"./keys_pt_abnt\": [\n\t\t84986,\n\t\t1872\n\t],\n\t\"./keys_pt_abnt.json\": [\n\t\t84986,\n\t\t1872\n\t],\n\t\"./keys_pt_abnt2\": [\n\t\t50167,\n\t\t9112\n\t],\n\t\"./keys_pt_abnt2.json\": [\n\t\t50167,\n\t\t9112\n\t],\n\t\"./keys_ro\": [\n\t\t35695,\n\t\t68\n\t],\n\t\"./keys_ro.json\": [\n\t\t35695,\n\t\t68\n\t],\n\t\"./keys_ro_programmers\": [\n\t\t53693,\n\t\t4795\n\t],\n\t\"./keys_ro_programmers.json\": [\n\t\t53693,\n\t\t4795\n\t],\n\t\"./keys_ru\": [\n\t\t62672,\n\t\t8986\n\t],\n\t\"./keys_ru.json\": [\n\t\t62672,\n\t\t8986\n\t],\n\t\"./keys_ru_phonetic\": [\n\t\t48927,\n\t\t7292\n\t],\n\t\"./keys_ru_phonetic.json\": [\n\t\t48927,\n\t\t7292\n\t],\n\t\"./keys_sah\": [\n\t\t75234,\n\t\t7289\n\t],\n\t\"./keys_sah.json\": [\n\t\t75234,\n\t\t7289\n\t],\n\t\"./keys_sat\": [\n\t\t767,\n\t\t9414\n\t],\n\t\"./keys_sat.json\": [\n\t\t767,\n\t\t9414\n\t],\n\t\"./keys_se\": [\n\t\t31828,\n\t\t8019\n\t],\n\t\"./keys_se.json\": [\n\t\t31828,\n\t\t8019\n\t],\n\t\"./keys_se_finland_sweden\": [\n\t\t44292,\n\t\t8699\n\t],\n\t\"./keys_se_finland_sweden.json\": [\n\t\t44292,\n\t\t8699\n\t],\n\t\"./keys_si\": [\n\t\t39915,\n\t\t9707\n\t],\n\t\"./keys_si.json\": [\n\t\t39915,\n\t\t9707\n\t],\n\t\"./keys_sk\": [\n\t\t49999,\n\t\t7803\n\t],\n\t\"./keys_sk.json\": [\n\t\t49999,\n\t\t7803\n\t],\n\t\"./keys_sk_qwerty\": [\n\t\t92153,\n\t\t1720\n\t],\n\t\"./keys_sk_qwerty.json\": [\n\t\t92153,\n\t\t1720\n\t],\n\t\"./keys_sl\": [\n\t\t11998,\n\t\t5715\n\t],\n\t\"./keys_sl.json\": [\n\t\t11998,\n\t\t5715\n\t],\n\t\"./keys_so\": [\n\t\t32727,\n\t\t9193\n\t],\n\t\"./keys_so.json\": [\n\t\t32727,\n\t\t9193\n\t],\n\t\"./keys_sq\": [\n\t\t93752,\n\t\t8173\n\t],\n\t\"./keys_sq.json\": [\n\t\t93752,\n\t\t8173\n\t],\n\t\"./keys_sr\": [\n\t\t45358,\n\t\t2231\n\t],\n\t\"./keys_sr.json\": [\n\t\t45358,\n\t\t2231\n\t],\n\t\"./keys_sr_latin\": [\n\t\t80121,\n\t\t578\n\t],\n\t\"./keys_sr_latin.json\": [\n\t\t80121,\n\t\t578\n\t],\n\t\"./keys_srb\": [\n\t\t929,\n\t\t5354\n\t],\n\t\"./keys_srb.json\": [\n\t\t929,\n\t\t5354\n\t],\n\t\"./keys_sv\": [\n\t\t74243,\n\t\t8649\n\t],\n\t\"./keys_sv.json\": [\n\t\t74243,\n\t\t8649\n\t],\n\t\"./keys_sv_sami\": [\n\t\t26330,\n\t\t4717\n\t],\n\t\"./keys_sv_sami.json\": [\n\t\t26330,\n\t\t4717\n\t],\n\t\"./keys_syr\": [\n\t\t20591,\n\t\t4777\n\t],\n\t\"./keys_syr.json\": [\n\t\t20591,\n\t\t4777\n\t],\n\t\"./keys_syr_phonetic\": [\n\t\t85609,\n\t\t2619\n\t],\n\t\"./keys_syr_phonetic.json\": [\n\t\t85609,\n\t\t2619\n\t],\n\t\"./keys_ta\": [\n\t\t17843,\n\t\t4036\n\t],\n\t\"./keys_ta.json\": [\n\t\t17843,\n\t\t4036\n\t],\n\t\"./keys_te\": [\n\t\t69130,\n\t\t4824\n\t],\n\t\"./keys_te.json\": [\n\t\t69130,\n\t\t4824\n\t],\n\t\"./keys_tg\": [\n\t\t79797,\n\t\t3393\n\t],\n\t\"./keys_tg.json\": [\n\t\t79797,\n\t\t3393\n\t],\n\t\"./keys_th\": [\n\t\t70732,\n\t\t6684\n\t],\n\t\"./keys_th.json\": [\n\t\t70732,\n\t\t6684\n\t],\n\t\"./keys_th_pattachote\": [\n\t\t85219,\n\t\t422\n\t],\n\t\"./keys_th_pattachote.json\": [\n\t\t85219,\n\t\t422\n\t],\n\t\"./keys_tk\": [\n\t\t31794,\n\t\t2275\n\t],\n\t\"./keys_tk.json\": [\n\t\t31794,\n\t\t2275\n\t],\n\t\"./keys_tmh\": [\n\t\t89416,\n\t\t2835\n\t],\n\t\"./keys_tmh.json\": [\n\t\t89416,\n\t\t2835\n\t],\n\t\"./keys_tmh_extended\": [\n\t\t33866,\n\t\t8110\n\t],\n\t\"./keys_tmh_extended.json\": [\n\t\t33866,\n\t\t8110\n\t],\n\t\"./keys_tn\": [\n\t\t79848,\n\t\t4257\n\t],\n\t\"./keys_tn.json\": [\n\t\t79848,\n\t\t4257\n\t],\n\t\"./keys_tr\": [\n\t\t32066,\n\t\t5303\n\t],\n\t\"./keys_tr.json\": [\n\t\t32066,\n\t\t5303\n\t],\n\t\"./keys_tr_f\": [\n\t\t77176,\n\t\t4670\n\t],\n\t\"./keys_tr_f.json\": [\n\t\t77176,\n\t\t4670\n\t],\n\t\"./keys_tt\": [\n\t\t13069,\n\t\t7305\n\t],\n\t\"./keys_tt.json\": [\n\t\t13069,\n\t\t7305\n\t],\n\t\"./keys_tzm\": [\n\t\t93917,\n\t\t814\n\t],\n\t\"./keys_tzm.json\": [\n\t\t93917,\n\t\t814\n\t],\n\t\"./keys_ug\": [\n\t\t29436,\n\t\t3474\n\t],\n\t\"./keys_ug.json\": [\n\t\t29436,\n\t\t3474\n\t],\n\t\"./keys_uk\": [\n\t\t18936,\n\t\t2602\n\t],\n\t\"./keys_uk.json\": [\n\t\t18936,\n\t\t2602\n\t],\n\t\"./keys_uk_enhanced\": [\n\t\t60895,\n\t\t7228\n\t],\n\t\"./keys_uk_enhanced.json\": [\n\t\t60895,\n\t\t7228\n\t],\n\t\"./keys_ur\": [\n\t\t48883,\n\t\t8216\n\t],\n\t\"./keys_ur.json\": [\n\t\t48883,\n\t\t8216\n\t],\n\t\"./keys_us_international\": [\n\t\t61141,\n\t\t2947\n\t],\n\t\"./keys_us_international.json\": [\n\t\t61141,\n\t\t2947\n\t],\n\t\"./keys_uz\": [\n\t\t8196,\n\t\t7080\n\t],\n\t\"./keys_uz.json\": [\n\t\t8196,\n\t\t7080\n\t],\n\t\"./keys_vi\": [\n\t\t88305,\n\t\t7994\n\t],\n\t\"./keys_vi.json\": [\n\t\t88305,\n\t\t7994\n\t],\n\t\"./keys_wo\": [\n\t\t97528,\n\t\t7069\n\t],\n\t\"./keys_wo.json\": [\n\t\t97528,\n\t\t7069\n\t],\n\t\"./keys_yo\": [\n\t\t8962,\n\t\t5998\n\t],\n\t\"./keys_yo.json\": [\n\t\t8962,\n\t\t5998\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 34366;\nmodule.exports = webpackAsyncContext;"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","DialogBox","props","dismissText","classes","onDismiss","children","rest","className","styles","join","onClick","faCollections","brands","default","regular","light","solid","round","Icon","name","collection","iconProps","groupClass","iconClass","propTypes","PropTypes","defaultProps","IconButton","icon","text","Link","href","external","showExternal","properties","Object","assign","rel","target","isRequired","wrapper","position","top","left","width","height","backgroundColor","backdropFilter","zIndex","display","justifyContent","alignItems","centerOnly","background","pointerEvents","content","Modal","useRef","handleClick","useCallback","e","current","contains","stopPropagation","style","ReactDOM","ref","document","getElementById","useModalState","useState","isOpen","setIsOpen","event","useToggle","initialState","toggleState","setToggleState","state","i","DefinitionsContext","createContext","keycodes","behaviours","behaviors","behaviorBinds","glyphs","selectDefinitions","definitions","DefinitionsContextProvider","useSelector","dispatch","useDispatch","useEffect","Promise","all","loadKeycodes","loadBehaviourBindings","schemas","cloneDeep","bindings","indexed","keyBy","context","none","filter","macros","encoders","byContext","type","Provider","value","behaviorSchemas","behaviorBindings","keycodeGlyphs","normalizeZmkKeycodes","LayoutContext","layout","bindingCount","wrapperDimensions","wrapperStyle","LayoutContextProvider","useMemo","length","getWrapperDimensions","getWrapperStyle","GitHubIssuesLink","GitHubWikiLayoutsLink","layoutToolsLink","DiscordProfileLink","GeneralHelpOfferCopy","KeymapLayoutResources","selectBehaviors","keyboard","keymap","selectNodePhandleArrays","node","compatible","parsed","raw","replace","selectNodeCompatible","schema","keys","reduce","phandleArrays","prop","propSchema","propValues","push","behaviorsSlice","createSlice","reducers","addBehavior","action","payload","behavior","updateBehavior","behaviorIndex","deleteBehavior","splice","extraReducers","builder","addCase","layerIndexChanged","makeLayerIndexChangeReducer","actions","selectCombos","combos","combosSlice","updateComboBinding","comboIndex","updateComboKeypositions","keyPositions","createCombo","labels","params","renameCombo","index","deleteCombo","customizeCombo","combo","comboBindingsReducer","positionMapping","layers","newIndex","makeLayerParamsIterator","selectLayerParamsFromBinding","binding","behaviorParameters","getBindingSlots","layerParams","param","createAction","currentIndex","targetIndex","searchContext","definitionsContext","layerIndices","map","bothBefore","bothAfter","betweenOldAndNew","createLayerIndexMapping","sources","defaultSelectPhandleArrays","selectPhandleArrays","defines","selectedIndex","get","Number","isNaN","toString","_isPlaceholder","DEFAULT_BIND_BEHAVIOUR","selectLayers","layersSlice","createLayer","times","createEmptyBinding","updateLayerMetadata","layerIndex","label","renameLayer","repositionLayer","layer","replacementIndex","deleteLayer","updateKeyBinding","bindIndex","updateSensorBindings","sensorIndex","undefinedStart","indexOf","rebindTransparentToKeyPress","rebindTransparentToNone","rebindNoneToKeypress","rebindNoneToTransparent","rebindEmptyKeypressToTransparent","rebindEmptyKeypressToNone","selectMacros","macrosSlice","addMacro","deleteMacro","updateMacroBindings","customizeMacroOptions","macroIndex","getLayoutPolygons","scale","key","transformKeyPolygon","x","y","u","w","h","rx","ry","a","r","getKeyBoundingBox","max","Math","layoutOrBBox","overrides","bbox","Array","isArray","margin","padding","Control","lineHeight","Button","darkModePreference","window","matchMedia","invertedThemeColors","colors","Select","extraChildren","theme","isDark","matches","fontSize","color","container","baseStyles","menu","components","MenuList","c","isSearchable","primary25","websocketUrl","config","API","url","startsWith","headers","this","token","Authorization","axios","response","status","console","error","emit","initializing","initEvents","installationUrl","URLSearchParams","location","search","beginLoginFlow","setTimeout","localStorage","auth_token","history","replaceState","pathname","_request","data","suspended","installations","installation","suspended_at","warn","username","repositories","repoInstallationMap","bufferedMessages","send","message","socket","readyState","WebSocket","OPEN","log","onopen","Date","shift","flush","setInterval","JSON","stringify","onclose","onerror","err","onmessage","parse","workflow_run","on","fetchAvailableFeatures","removeItem","installationId","find","id","html_url","every","some","repository_selection","repo","encodeURIComponent","full_name","repository","branch","URL","query","set","layouts","info","defaultLayout","preferredLayout","chosen","layoutMetadata","keyboards","defaultKeymap","sensors","isGitHubAuthorized","betaFeatures","features","experimentalSettings","enableBehaviorEditing","method","EventEmitter","api","parseBoolean","val","includes","toLowerCase","apiBaseUrl","process","githubAppName","enableGitHub","enableLocal","enableDemo","enableClipboard","enableFileSystem","useLocaleDefinitions","loadedLocales","setLoadedLocales","locales","acc","header","localeCatalog","loaded","locale","filename","useContext","settings","SettingsContext","localeKeycodes","mergedGlyphs","isMac","navigator","platform","isWin","getMergedGlyphs","unicode","platformGlyphs","extendedBehaviours","customBehaviors","code","mergeBehaviorOverlays","behaviorOverlays","fullList","description","bind","displayName","macro","resolveBehaviorParams","availableLayers","isEmpty","keycodesList","keycode","keycodesIndexed","glyph","aliases","alias","symbol","faIcon","modifiers","behavioursByContext","searchTargets","behaviour","getSearchTargets","enum","option","identifiers","bindShape","sanityCheckPosiitions","row","col","selectName","item","selectBind","selectLabel","getDuplicatesBy","itemsByKey","groupBy","values","group","sanityCheckNodeNames","layerNames","path","comboNames","macroNames","behaviorNames","getBehaviorNodeNames","duplicates","redefined","reservedIdentifiers","passwordMacros","pattern","match","sanityCheckNodeLabels","concat","getBehaviorLabels","sanityCheckNodeReferences","nodesByRef","getBehaviorReferences","nodes","sanityCheckDeprecations","resetBindings","deprecations","forEach","j","Behaviors","lazy","ComboEditor","LayerEditor","MacroEditor","Warnings","Tabs","tabs","defaultTab","activeTab","setActiveTab","tab","tabClasses","compact","Suspense","selectKeymap","Keyboard","sanityChecks","nodeNames","nodeLabels","nodeReferences","layoutMissingPositions","sanityCheckLayout","sanityCheck","warningCount","component","Fragment","keymapProptypes","repositoryUrl","GitHubLink","fontStyle","Settings","onUpdate","onClose","handleUpdateSetting","htmlFor","checked","unicodeGlyphs","onChange","SuggestAutoLayoutTweak","KeymapBindingsUsePreprocessorMacros","link","KeymapBindingsUseAutoshiftMacro","KeymapParsingFailed","KeymapUsingMiryoku","MissingRootNode","ZmkNodefreeConfig","sourceChoices","collapsible","isBeta","showOpenFilePicker","selectedSource","getItem","defaultSource","source","LocalPicker","DemoPicker","GithubPicker","ClipboardPicker","FileSystemPicker","keyboardSelector","KeyboardPicker","onSelect","wrapperRef","setSource","autoGenerated","setLayoutInfo","showDialog","setShowDialog","closeDialog","isExpanded","setExpanded","setCompact","showLayoutHelp","callback","enabled","isInDocument","body","isInWrapper","addEventListener","removeEventListener","useClickOutsideHandler","handleSelectSource","choice","handleKeyboardSelected","warningFlags","getErrorDialog","handleError","dialog","dialogProps","setItem","classNames","getOptionLabel","getOptionValue","formatOptionLabel","Beta","onError","expanded","onExpand","fontWeight","borderRadius","verticalAlign","formatStackFrame","frame","fileName","lineNumber","columnNumber","newGithubIssue","reportError","stacktrace","fetch","ok","UnexpectedError","stack","setStack","formattedError","setFormattedError","copied","setCopied","StackTrace","fromError","parseStack","trim","formatErrorText","maxWidth","title","clipboard","writeText","then","Error","ErrorBoundary","React","KeymapSaveFailed","updateInterval","relevantComponents","GithubApiStatus","githubApiIssues","lastFetch","issues","setState","update","now","timeout","clearTimeout","useApiStatusChecker","bottom","transform","sourceOther","saveError","settingsVisible","github","handler","run","head_branch","build","other","handleUpdateSettings","openSettingsDialog","SourcePicker","dark","system","Definitions","Layout","init","_unmodifiedKeymap","saving","commitDialogOpen","latestBuild","INITIAL_STATE","keyboardReducer","combineReducers","behaviorsReducer","layersReducer","combosReducer","macrosReducer","configureStore","reducer","newState","newKeyboardState","pick","stripLegacyProperties","selectKeyboard","newKeymapState","unsaved","keymapSaveSuccess","themes","at","dataset","cycleTheme","appReducer","preloadedState","render","store","DEFAULT_SIZE","DEFAULT_PADDING","getComputedParams","size","rotation","getKeyStyles","transformOrigin","point","angle","PI","cos","sin","transformed","xValues","yValues","min","shortestAlias","sort","b","fnPattern","names","fnCode","v","base","isModifier","split","basic","platforms","mac","win","overlay","additional","parsedParams","slots","firstParsedParam","firstSlot","additionalParams","getAdditionalParams","SearchContext","___CSS_LOADER_EXPORT___","module","locals","webpackAsyncContext","req","__webpack_require__","o","resolve","ids","slice","t","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/runtime.018f688d4e1244776013.js b/runtime.018f688d4e1244776013.js new file mode 100644 index 0000000..e3585e0 --- /dev/null +++ b/runtime.018f688d4e1244776013.js @@ -0,0 +1,2 @@ +!function(){"use strict";var e,c,s,a,o,d={},l={};function y(e){var c=l[e];if(void 0!==c)return c.exports;var s=l[e]={id:e,loaded:!1,exports:{}};return d[e].call(s.exports,s,s.exports,y),s.loaded=!0,s.exports}y.m=d,e=[],y.O=function(c,s,a,o){if(!s){var d=1/0;for(b=0;b=o)&&Object.keys(y.O).every((function(e){return y.O[e](s[k])}))?s.splice(k--,1):(l=!1,o0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[s,a,o]},y.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return y.d(c,{a:c}),c},s=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},y.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);y.r(o);var d={};c=c||[null,s({}),s([]),s(s)];for(var l=2&a&&e;"object"==typeof l&&!~c.indexOf(l);l=s(l))Object.getOwnPropertyNames(l).forEach((function(c){d[c]=function(){return e[c]}}));return d.default=function(){return e},y.d(o,d),o},y.d=function(e,c){for(var s in c)y.o(c,s)&&!y.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:c[s]})},y.f={},y.e=function(e){return Promise.all(Object.keys(y.f).reduce((function(c,s){return y.f[s](e,c),c}),[]))},y.u=function(e){return({68:"locales/keys_ro-keycodes",129:"locales/keys_lt_ibm-keycodes",308:"locales/keys_be-keycodes",389:"locales/keys_mn-keycodes",398:"locales/keys_lo-keycodes",421:"locales/keys_bg_latin-keycodes",422:"locales/keys_th_pattachote-keycodes",539:"locales/keys_khb_tai_le-keycodes",578:"locales/keys_sr_latin-keycodes",749:"locales/keys_dyu-keycodes",771:"locales/keys_es-keycodes",814:"locales/keys_tzm-keycodes",819:"locales/keys_fa_standard-keycodes",833:"locales/keys_it_142-keycodes",920:"locales/keys_pl_programmers-keycodes",951:"locales/keys_kk-keycodes",1156:"locales/keys_man-keycodes",1315:"locales/keys_bs-keycodes",1343:"locales/keys_en_gb_extended-keycodes",1480:"locales/keys_bn-keycodes",1507:"locales/keys_de_ibm-keycodes",1514:"locales/keys_fr_swiss-keycodes",1545:"locales/keys_el-keycodes",1547:"locales/keys_ml-keycodes",1671:"locales/keys_lv-keycodes",1720:"locales/keys_sk_qwerty-keycodes",1808:"locales/keys_de_belgian_period-keycodes",1872:"locales/keys_pt_abnt-keycodes",1936:"locales/keys_ckb-keycodes",2015:"locales/keys_hy-keycodes",2231:"locales/keys_sr-keycodes",2247:"locales/keys_mr-keycodes",2271:"locales/keys_nl_period-keycodes",2275:"locales/keys_tk-keycodes",2383:"locales/keys_or-keycodes",2408:"locales/keys_bg-keycodes",2602:"locales/keys_uk-keycodes",2619:"locales/keys_syr_phonetic-keycodes",2621:"locales/keys_ka_qwerty-keycodes",2650:"locales/keys_ar_azerty-keycodes",2659:"locales/keys_cs_qwerty-keycodes",2787:"locales/keys_gu-keycodes",2835:"locales/keys_tmh-keycodes",2947:"locales/keys_us_international-keycodes",2982:"locales/keys_ha-keycodes",3033:"locales/keys_es_variation-keycodes",3194:"locales/keys_mn_phags_pa-keycodes",3268:"locales/keys_km_nida-keycodes",3282:"locales/keys_bo-keycodes",3322:"locales/keys_hu_101-keycodes",3359:"locales/keys_de-keycodes",3362:"locales/keys_dvorak_right-keycodes",3393:"locales/keys_tg-keycodes",3474:"locales/keys_ug-keycodes",3618:"locales/keys_haw-keycodes",3647:"locales/keys_az_standard-keycodes",3687:"locales/keys_ka-keycodes",3735:"locales/keys_cs_programmers-keycodes",3743:"locales/keys_el_220-keycodes",3746:"locales/keys_lt_standard-keycodes",3880:"locales/keys_mt_101-keycodes",3893:"locales/keys_dz-keycodes",4036:"locales/keys_ta-keycodes",4156:"locales/keys_hu-keycodes",4257:"locales/keys_tn-keycodes",4263:"locales/keys_el_319-keycodes",4289:"locales/keys_gn-keycodes",4296:"locales/keys_el_polytonic-keycodes",4443:"locales/keys_bug-keycodes",4465:"locales/keys_it-keycodes",4491:"locales/keys_fr_canadian_french-keycodes",4595:"locales/keys_bg_phonetic-keycodes",4670:"locales/keys_tr_f-keycodes",4688:"locales/keys_chr_phonetic-keycodes",4717:"locales/keys_sv_sami-keycodes",4777:"locales/keys_syr-keycodes",4795:"locales/keys_ro_programmers-keycodes",4821:"locales/keys_pt-keycodes",4824:"locales/keys_te-keycodes",4887:"locales/keys_lis_standard-keycodes",4892:"locales/keys_ne-keycodes",4919:"locales/keys_nb-keycodes",5015:"locales/keys_my-keycodes",5303:"locales/keys_tr-keycodes",5332:"locales/keys_ba-keycodes",5354:"locales/keys_srb-keycodes",5485:"locales/keys_dv-keycodes",5604:"locales/keys_is-keycodes",5606:"locales/keys_lb-keycodes",5715:"locales/keys_sl-keycodes",5821:"locales/keys_el_latin_319-keycodes",5840:"locales/keys_iu-keycodes",5842:"locales/keys_khb-keycodes",5991:"locales/keys_non-keycodes",5998:"locales/keys_yo-keycodes",6049:"locales/keys_ps-keycodes",6157:"locales/keys_dvorak-keycodes",6184:"locales/keys_de_swiss-keycodes",6392:"locales/keys_ar-keycodes",6415:"locales/keys_nl-keycodes",6429:"locales/keys_es_latin_american-keycodes",6457:"locales/keys_gd-keycodes",6684:"locales/keys_th-keycodes",6688:"locales/keys_hi-keycodes",6691:"locales/keys_da-keycodes",6710:"locales/keys_jv-keycodes",6777:"locales/keys_lv_qwerty-keycodes",6794:"locales/keys_km-keycodes",6943:"locales/keys_chr-keycodes",7022:"locales/keys_et-keycodes",7069:"locales/keys_wo-keycodes",7080:"locales/keys_uz-keycodes",7108:"locales/keys_he_standard-keycodes",7228:"locales/keys_uk_enhanced-keycodes",7289:"locales/keys_sah-keycodes",7292:"locales/keys_ru_phonetic-keycodes",7303:"locales/keys_kl-keycodes",7305:"locales/keys_tt-keycodes",7446:"locales/keys_he-keycodes",7495:"locales/keys_en_gb-keycodes",7554:"locales/keys_fr-keycodes",7568:"locales/keys_mt-keycodes",7603:"locales/keys_el_latin_220-keycodes",7686:"locales/keys_dsb_extended-keycodes",7771:"locales/keys_lt-keycodes",7803:"locales/keys_sk-keycodes",7892:"locales/keys_ig-keycodes",7950:"locales/keys_fr_belgian_period-keycodes",7994:"locales/keys_vi-keycodes",8017:"locales/keys_ar_102-keycodes",8019:"locales/keys_se-keycodes",8041:"locales/keys_mk-keycodes",8070:"locales/keys_az-keycodes",8110:"locales/keys_tmh_extended-keycodes",8119:"locales/keys_hi_traditional-keycodes",8173:"locales/keys_sq-keycodes",8185:"locales/keys_ga-keycodes",8207:"locales/keys_cs-keycodes",8216:"locales/keys_ur-keycodes",8242:"locales/keys_az_cyrillic-keycodes",8251:"locales/keys_fr_canadian_standard-keycodes",8302:"locales/keys_en_india-keycodes",8307:"locales/keys_nso-keycodes",8391:"locales/keys_pl-keycodes",8427:"locales/keys_ko-keycodes",8438:"locales/keys_la_old_italic-keycodes",8568:"locales/keys_mn_traditional-keycodes",8599:"locales/keys_fa-keycodes",8636:"locales/keys_nb_sami-keycodes",8649:"locales/keys_sv-keycodes",8699:"locales/keys_se_finland_sweden-keycodes",8706:"locales/keys_fi-keycodes",8709:"locales/keys_kn-keycodes",8793:"locales/keys_dvorak_left-keycodes",8855:"locales/keys_fr_belgian-keycodes",8945:"locales/keys_lis-keycodes",8956:"locales/keys_bm-keycodes",8971:"locales/keys_el_latin-keycodes",8986:"locales/keys_ru-keycodes",9081:"locales/keys_lv_standard-keycodes",9082:"locales/keys_as-keycodes",9112:"locales/keys_pt_abnt2-keycodes",9136:"locales/keys_hy_phonetic-keycodes",9142:"locales/keys_bn_inscript-keycodes",9176:"locales/keys_iu_latin-keycodes",9193:"locales/keys_so-keycodes",9244:"locales/keys_ky-keycodes",9414:"locales/keys_sat-keycodes",9512:"locales/keys_mi-keycodes",9586:"locales/keys_fo-keycodes",9616:"locales/keys_dsb-keycodes",9619:"locales/keys_de_belgian-keycodes",9698:"locales/keys_ka_ergonomic-keycodes",9707:"locales/keys_si-keycodes",9866:"locales/keys_fi_sami-keycodes",9893:"locales/keys_got-keycodes",9989:"locales/keys_pa-keycodes"}[e]||e)+"."+{68:"7b17882894d827d4a691",129:"93e9e7b55ff4db1b45f4",308:"e7d0c13e3ecc92b49444",389:"606dc039dbee5e7de1d4",398:"c8c541aaf844eeda8149",401:"bdae6943931998cef4fd",421:"dbb2c1733f9a7579098e",422:"666bd3a0ce35c4a274ff",539:"f13efc888eac2aa8e903",542:"b08e94331b5e117681ac",578:"04d1220d52840040f60b",727:"2919567394fbd9d07a87",749:"76b287374b8ae5f7a06c",771:"476e9ba05219d84921f3",814:"4764231c07fa0d0a04f6",819:"0795ba54cbc82dd190cf",833:"46444cf657dcf1bb1593",920:"dc595b5183e9c47ff557",951:"f0042702141cbb2ccabf",1040:"668a24817c3f3941bb2c",1156:"bb15c7631776a604bdb7",1315:"0db48f03173200e045f2",1343:"8f70c7bbb298f625412f",1480:"dd1c948a8c44aac28b53",1507:"8cada04b0e43007bb4be",1514:"649b8ed65f356fa690ac",1545:"b152a1976be0001bfb43",1547:"c246a45983470f77e595",1671:"6bdbbb20361914659d30",1720:"3328c6b7c20fbf918852",1808:"abb32a6fe65c55952158",1872:"719fd6d2cfbc98065faa",1936:"8e41309b9c19de95960a",2015:"1189ea9050bf52385110",2231:"5080f1cbf58c1317f585",2247:"3459beb60f5e45f7a659",2271:"b737428706ade1ab91ed",2275:"6c3d70cbc0a2a960dede",2383:"45d4631f706b18beb2d9",2408:"49d33aa415e8f4992f21",2602:"d7b17cf5cd894ba30b64",2619:"5153da3fbe85b2f1f7f8",2621:"bd9a8dabd0cd755853b5",2650:"a829372aef4170ca51a4",2659:"c36d1660242da4a6482d",2787:"23f639d1d9e06f080ea7",2835:"551ed1eddb65a0855ec0",2912:"0e5ecd7e9faa1378ed9c",2946:"972b1c0cded5c7511836",2947:"2b19227a71dd755ae4b6",2982:"36e9273f2ce6ff4f4673",3033:"b26fcf2e16e386fb33b1",3194:"8a08d0da753f48f7f95e",3268:"f3f0e12f35d6ede0f40f",3282:"01584f37d4d33ad63efb",3322:"7ebaf8ec7ac148f4669d",3359:"2b1b7a00d5f5a3f3d4d7",3362:"4b171d128973788c904e",3393:"2b68325532554cc8d8ba",3474:"d8e51748742a2c676e34",3618:"d8420dbaf5d768e5d2d4",3647:"6703ed839e825c8771d3",3687:"e750c133ca55d5c6e548",3735:"c9d93c92c6c0423a5416",3743:"ebb2429d5bbde92909c4",3746:"a4deb37dc8a93b498757",3880:"fcaa03e1df43df95ab97",3893:"c7df98614033002329af",4036:"909dd7500874d97524c9",4156:"b9b13036d2669cc053d2",4257:"f5fd10e05ad3d0536453",4263:"931dcb76dcb966d4c80f",4289:"fa48da5f908e2f1c31fc",4296:"6398e9a1092dbd966cd4",4443:"3d9b42bc9254f6af0784",4465:"f4574a240d1cc776a64d",4491:"85813c1f613b510d8c53",4595:"32f60188d0eaea679456",4670:"c00667ffdde3a68622ab",4688:"31df1ae6ad5f78bd01fc",4717:"abfe395f6284ad19bfcd",4777:"2224cbda2741be9da336",4795:"ed0ccd39951359fbbbca",4821:"ddd40fd58db42a579031",4824:"0a6f4db1962949f69a35",4887:"f052ae8bfdfdb1d513db",4892:"960290e8d85e0b47f102",4919:"4a12c76edfa94312b0ea",5015:"0f3a2242ea9f9a42c4f9",5303:"a4497d24307a9897e5b5",5332:"777b50e4b114b352d258",5354:"2e00aaedbbdc1642bb92",5485:"55a0ec07c8abbfe214b4",5604:"f11c3e2dd4430602f243",5606:"8cfe7dc5f09ec96ea95e",5634:"fb6e3c3e2e7af16d3394",5715:"4ef9b548b6cfc7c605f9",5821:"a4f5e6f31f799696cdaf",5840:"7e4e574c1214010c07dc",5842:"f7c89fd7bf3602a3399e",5858:"6e8f5975904a2a2282f5",5991:"512b59c58af9c82a47d5",5998:"91c971fb3f5767c3d295",6049:"a62bb2191cc0eecda711",6157:"8b93a87cbbec10359b5d",6184:"732ddeb1a32a40e2fc3a",6392:"fa88aea6ab27afd6da50",6415:"627e38aee29608a5d6d2",6429:"b9b3578a604e51fa3455",6457:"ba688263a9c85e9843e1",6684:"1274b7cfa9914c7663c9",6688:"5d24e1f96d6a6cfefcb0",6691:"b6cb655f0aa7dcd8787b",6710:"69f4ed313d19455e88f9",6777:"dab38c8f01434d45eb86",6794:"aa4330a831430380f7ca",6849:"53f15e008bb8448d2fec",6943:"9c0653724d1cbfa9ed86",7022:"9ece5bc0d21090bf91ad",7069:"9929a74e7e92648a0f87",7080:"f083c93705b5e80e4a4e",7108:"906eeacc617750894b22",7198:"aec09ef07d003f7d7a91",7228:"0a7f301444940610aa3a",7289:"2fcc4bbd19c8e23bcfd9",7292:"364542469a1dd2fd041b",7303:"8f0ef5a9295943353ecf",7305:"ac74249c913980666520",7406:"11b0b86fb5919cd2d239",7446:"f26521f672e3d94f3c62",7495:"cb22512c8cea97bbcf19",7553:"b6c1ba6d52fa85ac8595",7554:"bdf065db03088c4a4a5d",7568:"d9f3ad26c7b8b70fc1ec",7603:"d2d72bb470a9b2e1ede0",7686:"940990bf96e9413b2e9b",7771:"9942586e9e23d5059127",7803:"8760edf191caa0f69869",7892:"86c938c7b27b9a67ef50",7950:"6fb177a4414f9a190484",7994:"c160e150f1431807c681",8017:"837d18f3c4fcf868010b",8019:"02f2f252639bb1d459b6",8041:"dae4eea51cfd6e1fbef3",8070:"27f10e0739c78ab95d16",8110:"c132517c950a214d5731",8119:"58eb56bfeb45579c084c",8173:"1776ba2cbbdeb9918f9c",8185:"ece0dc278594eee67cb1",8207:"7e346d396cf1e067b94f",8216:"bd2ef62dab7ca40f6d44",8242:"3891fea81cc045034ad4",8251:"7bcdee9a73a0eb39baaa",8302:"6b483d8d7739ff515b8f",8307:"e12dd0aad5e6a036ed3b",8381:"7ec7bc962edc67495152",8391:"eb08511c704d549f8237",8427:"409e29315cd91dfb038b",8438:"41a503f1b2737d035a74",8568:"bf0989c363612ba74ac9",8573:"5c08084613d87fec6064",8599:"1c088737758fa51d0a0a",8636:"48c3cab70569554b8655",8649:"519f8992d7c5b42bf4e1",8699:"6d4b2f405c48cf71aa4b",8706:"db5988f190774b8ecd7e",8709:"edbea20e0b917271d7a2",8793:"9639129fefdac959af3a",8855:"38f81f640e33d713ea2c",8873:"75782887b6b9e72b1dc9",8945:"d5a920b4e65ee30d8356",8956:"b025b7e50cad64b75370",8971:"f906bba2b2b7e87a8ae0",8986:"4ad17334f3ef911b6b0b",9081:"b6c8611601548f3554f7",9082:"35cb59b22a293243df26",9112:"7ebcaf2caf566e7902b8",9136:"3249d48fcb94ad9e44a1",9142:"8933a018c2a618e987a4",9176:"2557b40f7b4fcef345a9",9193:"e2b545b8ea15c0016312",9244:"0e4e64562de0635942ff",9414:"b9aecaa9ab601ffcc6b4",9512:"dc6d783fb73d92e5a7fb",9586:"01151d539dca32e61272",9616:"0a4f102b3e946346e2d6",9619:"b044962c66577434486e",9657:"aa3c39fe6f827e094083",9698:"41ef3f798533a2b1c7cf",9707:"bbda1adb51b744127204",9866:"110121669330cd9e737c",9893:"4ff6eee70cdc1c6e3325",9989:"e7d2ba9eda5b0ac31cac"}[e]+".js"},y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},a={},o="app:",y.l=function(e,c,s,d){if(a[e])a[e].push(c);else{var l,k;if(void 0!==s)for(var f=document.getElementsByTagName("script"),b=0;b 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"68\":\"locales/keys_ro-keycodes\",\"129\":\"locales/keys_lt_ibm-keycodes\",\"308\":\"locales/keys_be-keycodes\",\"389\":\"locales/keys_mn-keycodes\",\"398\":\"locales/keys_lo-keycodes\",\"421\":\"locales/keys_bg_latin-keycodes\",\"422\":\"locales/keys_th_pattachote-keycodes\",\"539\":\"locales/keys_khb_tai_le-keycodes\",\"578\":\"locales/keys_sr_latin-keycodes\",\"749\":\"locales/keys_dyu-keycodes\",\"771\":\"locales/keys_es-keycodes\",\"814\":\"locales/keys_tzm-keycodes\",\"819\":\"locales/keys_fa_standard-keycodes\",\"833\":\"locales/keys_it_142-keycodes\",\"920\":\"locales/keys_pl_programmers-keycodes\",\"951\":\"locales/keys_kk-keycodes\",\"1156\":\"locales/keys_man-keycodes\",\"1315\":\"locales/keys_bs-keycodes\",\"1343\":\"locales/keys_en_gb_extended-keycodes\",\"1480\":\"locales/keys_bn-keycodes\",\"1507\":\"locales/keys_de_ibm-keycodes\",\"1514\":\"locales/keys_fr_swiss-keycodes\",\"1545\":\"locales/keys_el-keycodes\",\"1547\":\"locales/keys_ml-keycodes\",\"1671\":\"locales/keys_lv-keycodes\",\"1720\":\"locales/keys_sk_qwerty-keycodes\",\"1808\":\"locales/keys_de_belgian_period-keycodes\",\"1872\":\"locales/keys_pt_abnt-keycodes\",\"1936\":\"locales/keys_ckb-keycodes\",\"2015\":\"locales/keys_hy-keycodes\",\"2231\":\"locales/keys_sr-keycodes\",\"2247\":\"locales/keys_mr-keycodes\",\"2271\":\"locales/keys_nl_period-keycodes\",\"2275\":\"locales/keys_tk-keycodes\",\"2383\":\"locales/keys_or-keycodes\",\"2408\":\"locales/keys_bg-keycodes\",\"2602\":\"locales/keys_uk-keycodes\",\"2619\":\"locales/keys_syr_phonetic-keycodes\",\"2621\":\"locales/keys_ka_qwerty-keycodes\",\"2650\":\"locales/keys_ar_azerty-keycodes\",\"2659\":\"locales/keys_cs_qwerty-keycodes\",\"2787\":\"locales/keys_gu-keycodes\",\"2835\":\"locales/keys_tmh-keycodes\",\"2947\":\"locales/keys_us_international-keycodes\",\"2982\":\"locales/keys_ha-keycodes\",\"3033\":\"locales/keys_es_variation-keycodes\",\"3194\":\"locales/keys_mn_phags_pa-keycodes\",\"3268\":\"locales/keys_km_nida-keycodes\",\"3282\":\"locales/keys_bo-keycodes\",\"3322\":\"locales/keys_hu_101-keycodes\",\"3359\":\"locales/keys_de-keycodes\",\"3362\":\"locales/keys_dvorak_right-keycodes\",\"3393\":\"locales/keys_tg-keycodes\",\"3474\":\"locales/keys_ug-keycodes\",\"3618\":\"locales/keys_haw-keycodes\",\"3647\":\"locales/keys_az_standard-keycodes\",\"3687\":\"locales/keys_ka-keycodes\",\"3735\":\"locales/keys_cs_programmers-keycodes\",\"3743\":\"locales/keys_el_220-keycodes\",\"3746\":\"locales/keys_lt_standard-keycodes\",\"3880\":\"locales/keys_mt_101-keycodes\",\"3893\":\"locales/keys_dz-keycodes\",\"4036\":\"locales/keys_ta-keycodes\",\"4156\":\"locales/keys_hu-keycodes\",\"4257\":\"locales/keys_tn-keycodes\",\"4263\":\"locales/keys_el_319-keycodes\",\"4289\":\"locales/keys_gn-keycodes\",\"4296\":\"locales/keys_el_polytonic-keycodes\",\"4443\":\"locales/keys_bug-keycodes\",\"4465\":\"locales/keys_it-keycodes\",\"4491\":\"locales/keys_fr_canadian_french-keycodes\",\"4595\":\"locales/keys_bg_phonetic-keycodes\",\"4670\":\"locales/keys_tr_f-keycodes\",\"4688\":\"locales/keys_chr_phonetic-keycodes\",\"4717\":\"locales/keys_sv_sami-keycodes\",\"4777\":\"locales/keys_syr-keycodes\",\"4795\":\"locales/keys_ro_programmers-keycodes\",\"4821\":\"locales/keys_pt-keycodes\",\"4824\":\"locales/keys_te-keycodes\",\"4887\":\"locales/keys_lis_standard-keycodes\",\"4892\":\"locales/keys_ne-keycodes\",\"4919\":\"locales/keys_nb-keycodes\",\"5015\":\"locales/keys_my-keycodes\",\"5303\":\"locales/keys_tr-keycodes\",\"5332\":\"locales/keys_ba-keycodes\",\"5354\":\"locales/keys_srb-keycodes\",\"5485\":\"locales/keys_dv-keycodes\",\"5604\":\"locales/keys_is-keycodes\",\"5606\":\"locales/keys_lb-keycodes\",\"5715\":\"locales/keys_sl-keycodes\",\"5821\":\"locales/keys_el_latin_319-keycodes\",\"5840\":\"locales/keys_iu-keycodes\",\"5842\":\"locales/keys_khb-keycodes\",\"5991\":\"locales/keys_non-keycodes\",\"5998\":\"locales/keys_yo-keycodes\",\"6049\":\"locales/keys_ps-keycodes\",\"6157\":\"locales/keys_dvorak-keycodes\",\"6184\":\"locales/keys_de_swiss-keycodes\",\"6392\":\"locales/keys_ar-keycodes\",\"6415\":\"locales/keys_nl-keycodes\",\"6429\":\"locales/keys_es_latin_american-keycodes\",\"6457\":\"locales/keys_gd-keycodes\",\"6684\":\"locales/keys_th-keycodes\",\"6688\":\"locales/keys_hi-keycodes\",\"6691\":\"locales/keys_da-keycodes\",\"6710\":\"locales/keys_jv-keycodes\",\"6777\":\"locales/keys_lv_qwerty-keycodes\",\"6794\":\"locales/keys_km-keycodes\",\"6943\":\"locales/keys_chr-keycodes\",\"7022\":\"locales/keys_et-keycodes\",\"7069\":\"locales/keys_wo-keycodes\",\"7080\":\"locales/keys_uz-keycodes\",\"7108\":\"locales/keys_he_standard-keycodes\",\"7228\":\"locales/keys_uk_enhanced-keycodes\",\"7289\":\"locales/keys_sah-keycodes\",\"7292\":\"locales/keys_ru_phonetic-keycodes\",\"7303\":\"locales/keys_kl-keycodes\",\"7305\":\"locales/keys_tt-keycodes\",\"7446\":\"locales/keys_he-keycodes\",\"7495\":\"locales/keys_en_gb-keycodes\",\"7554\":\"locales/keys_fr-keycodes\",\"7568\":\"locales/keys_mt-keycodes\",\"7603\":\"locales/keys_el_latin_220-keycodes\",\"7686\":\"locales/keys_dsb_extended-keycodes\",\"7771\":\"locales/keys_lt-keycodes\",\"7803\":\"locales/keys_sk-keycodes\",\"7892\":\"locales/keys_ig-keycodes\",\"7950\":\"locales/keys_fr_belgian_period-keycodes\",\"7994\":\"locales/keys_vi-keycodes\",\"8017\":\"locales/keys_ar_102-keycodes\",\"8019\":\"locales/keys_se-keycodes\",\"8041\":\"locales/keys_mk-keycodes\",\"8070\":\"locales/keys_az-keycodes\",\"8110\":\"locales/keys_tmh_extended-keycodes\",\"8119\":\"locales/keys_hi_traditional-keycodes\",\"8173\":\"locales/keys_sq-keycodes\",\"8185\":\"locales/keys_ga-keycodes\",\"8207\":\"locales/keys_cs-keycodes\",\"8216\":\"locales/keys_ur-keycodes\",\"8242\":\"locales/keys_az_cyrillic-keycodes\",\"8251\":\"locales/keys_fr_canadian_standard-keycodes\",\"8302\":\"locales/keys_en_india-keycodes\",\"8307\":\"locales/keys_nso-keycodes\",\"8391\":\"locales/keys_pl-keycodes\",\"8427\":\"locales/keys_ko-keycodes\",\"8438\":\"locales/keys_la_old_italic-keycodes\",\"8568\":\"locales/keys_mn_traditional-keycodes\",\"8599\":\"locales/keys_fa-keycodes\",\"8636\":\"locales/keys_nb_sami-keycodes\",\"8649\":\"locales/keys_sv-keycodes\",\"8699\":\"locales/keys_se_finland_sweden-keycodes\",\"8706\":\"locales/keys_fi-keycodes\",\"8709\":\"locales/keys_kn-keycodes\",\"8793\":\"locales/keys_dvorak_left-keycodes\",\"8855\":\"locales/keys_fr_belgian-keycodes\",\"8945\":\"locales/keys_lis-keycodes\",\"8956\":\"locales/keys_bm-keycodes\",\"8971\":\"locales/keys_el_latin-keycodes\",\"8986\":\"locales/keys_ru-keycodes\",\"9081\":\"locales/keys_lv_standard-keycodes\",\"9082\":\"locales/keys_as-keycodes\",\"9112\":\"locales/keys_pt_abnt2-keycodes\",\"9136\":\"locales/keys_hy_phonetic-keycodes\",\"9142\":\"locales/keys_bn_inscript-keycodes\",\"9176\":\"locales/keys_iu_latin-keycodes\",\"9193\":\"locales/keys_so-keycodes\",\"9244\":\"locales/keys_ky-keycodes\",\"9414\":\"locales/keys_sat-keycodes\",\"9512\":\"locales/keys_mi-keycodes\",\"9586\":\"locales/keys_fo-keycodes\",\"9616\":\"locales/keys_dsb-keycodes\",\"9619\":\"locales/keys_de_belgian-keycodes\",\"9698\":\"locales/keys_ka_ergonomic-keycodes\",\"9707\":\"locales/keys_si-keycodes\",\"9866\":\"locales/keys_fi_sami-keycodes\",\"9893\":\"locales/keys_got-keycodes\",\"9989\":\"locales/keys_pa-keycodes\"}[chunkId] || chunkId) + \".\" + {\"68\":\"7b17882894d827d4a691\",\"129\":\"93e9e7b55ff4db1b45f4\",\"308\":\"e7d0c13e3ecc92b49444\",\"389\":\"606dc039dbee5e7de1d4\",\"398\":\"c8c541aaf844eeda8149\",\"401\":\"bdae6943931998cef4fd\",\"421\":\"dbb2c1733f9a7579098e\",\"422\":\"666bd3a0ce35c4a274ff\",\"539\":\"f13efc888eac2aa8e903\",\"542\":\"b08e94331b5e117681ac\",\"578\":\"04d1220d52840040f60b\",\"727\":\"2919567394fbd9d07a87\",\"749\":\"76b287374b8ae5f7a06c\",\"771\":\"476e9ba05219d84921f3\",\"814\":\"4764231c07fa0d0a04f6\",\"819\":\"0795ba54cbc82dd190cf\",\"833\":\"46444cf657dcf1bb1593\",\"920\":\"dc595b5183e9c47ff557\",\"951\":\"f0042702141cbb2ccabf\",\"1040\":\"668a24817c3f3941bb2c\",\"1156\":\"bb15c7631776a604bdb7\",\"1315\":\"0db48f03173200e045f2\",\"1343\":\"8f70c7bbb298f625412f\",\"1480\":\"dd1c948a8c44aac28b53\",\"1507\":\"8cada04b0e43007bb4be\",\"1514\":\"649b8ed65f356fa690ac\",\"1545\":\"b152a1976be0001bfb43\",\"1547\":\"c246a45983470f77e595\",\"1671\":\"6bdbbb20361914659d30\",\"1720\":\"3328c6b7c20fbf918852\",\"1808\":\"abb32a6fe65c55952158\",\"1872\":\"719fd6d2cfbc98065faa\",\"1936\":\"8e41309b9c19de95960a\",\"2015\":\"1189ea9050bf52385110\",\"2231\":\"5080f1cbf58c1317f585\",\"2247\":\"3459beb60f5e45f7a659\",\"2271\":\"b737428706ade1ab91ed\",\"2275\":\"6c3d70cbc0a2a960dede\",\"2383\":\"45d4631f706b18beb2d9\",\"2408\":\"49d33aa415e8f4992f21\",\"2602\":\"d7b17cf5cd894ba30b64\",\"2619\":\"5153da3fbe85b2f1f7f8\",\"2621\":\"bd9a8dabd0cd755853b5\",\"2650\":\"a829372aef4170ca51a4\",\"2659\":\"c36d1660242da4a6482d\",\"2787\":\"23f639d1d9e06f080ea7\",\"2835\":\"551ed1eddb65a0855ec0\",\"2912\":\"0e5ecd7e9faa1378ed9c\",\"2946\":\"972b1c0cded5c7511836\",\"2947\":\"2b19227a71dd755ae4b6\",\"2982\":\"36e9273f2ce6ff4f4673\",\"3033\":\"b26fcf2e16e386fb33b1\",\"3194\":\"8a08d0da753f48f7f95e\",\"3268\":\"f3f0e12f35d6ede0f40f\",\"3282\":\"01584f37d4d33ad63efb\",\"3322\":\"7ebaf8ec7ac148f4669d\",\"3359\":\"2b1b7a00d5f5a3f3d4d7\",\"3362\":\"4b171d128973788c904e\",\"3393\":\"2b68325532554cc8d8ba\",\"3474\":\"d8e51748742a2c676e34\",\"3618\":\"d8420dbaf5d768e5d2d4\",\"3647\":\"6703ed839e825c8771d3\",\"3687\":\"e750c133ca55d5c6e548\",\"3735\":\"c9d93c92c6c0423a5416\",\"3743\":\"ebb2429d5bbde92909c4\",\"3746\":\"a4deb37dc8a93b498757\",\"3880\":\"fcaa03e1df43df95ab97\",\"3893\":\"c7df98614033002329af\",\"4036\":\"909dd7500874d97524c9\",\"4156\":\"b9b13036d2669cc053d2\",\"4257\":\"f5fd10e05ad3d0536453\",\"4263\":\"931dcb76dcb966d4c80f\",\"4289\":\"fa48da5f908e2f1c31fc\",\"4296\":\"6398e9a1092dbd966cd4\",\"4443\":\"3d9b42bc9254f6af0784\",\"4465\":\"f4574a240d1cc776a64d\",\"4491\":\"85813c1f613b510d8c53\",\"4595\":\"32f60188d0eaea679456\",\"4670\":\"c00667ffdde3a68622ab\",\"4688\":\"31df1ae6ad5f78bd01fc\",\"4717\":\"abfe395f6284ad19bfcd\",\"4777\":\"2224cbda2741be9da336\",\"4795\":\"ed0ccd39951359fbbbca\",\"4821\":\"ddd40fd58db42a579031\",\"4824\":\"0a6f4db1962949f69a35\",\"4887\":\"f052ae8bfdfdb1d513db\",\"4892\":\"960290e8d85e0b47f102\",\"4919\":\"4a12c76edfa94312b0ea\",\"5015\":\"0f3a2242ea9f9a42c4f9\",\"5303\":\"a4497d24307a9897e5b5\",\"5332\":\"777b50e4b114b352d258\",\"5354\":\"2e00aaedbbdc1642bb92\",\"5485\":\"55a0ec07c8abbfe214b4\",\"5604\":\"f11c3e2dd4430602f243\",\"5606\":\"8cfe7dc5f09ec96ea95e\",\"5634\":\"fb6e3c3e2e7af16d3394\",\"5715\":\"4ef9b548b6cfc7c605f9\",\"5821\":\"a4f5e6f31f799696cdaf\",\"5840\":\"7e4e574c1214010c07dc\",\"5842\":\"f7c89fd7bf3602a3399e\",\"5858\":\"6e8f5975904a2a2282f5\",\"5991\":\"512b59c58af9c82a47d5\",\"5998\":\"91c971fb3f5767c3d295\",\"6049\":\"a62bb2191cc0eecda711\",\"6157\":\"8b93a87cbbec10359b5d\",\"6184\":\"732ddeb1a32a40e2fc3a\",\"6392\":\"fa88aea6ab27afd6da50\",\"6415\":\"627e38aee29608a5d6d2\",\"6429\":\"b9b3578a604e51fa3455\",\"6457\":\"ba688263a9c85e9843e1\",\"6684\":\"1274b7cfa9914c7663c9\",\"6688\":\"5d24e1f96d6a6cfefcb0\",\"6691\":\"b6cb655f0aa7dcd8787b\",\"6710\":\"69f4ed313d19455e88f9\",\"6777\":\"dab38c8f01434d45eb86\",\"6794\":\"aa4330a831430380f7ca\",\"6849\":\"53f15e008bb8448d2fec\",\"6943\":\"9c0653724d1cbfa9ed86\",\"7022\":\"9ece5bc0d21090bf91ad\",\"7069\":\"9929a74e7e92648a0f87\",\"7080\":\"f083c93705b5e80e4a4e\",\"7108\":\"906eeacc617750894b22\",\"7198\":\"aec09ef07d003f7d7a91\",\"7228\":\"0a7f301444940610aa3a\",\"7289\":\"2fcc4bbd19c8e23bcfd9\",\"7292\":\"364542469a1dd2fd041b\",\"7303\":\"8f0ef5a9295943353ecf\",\"7305\":\"ac74249c913980666520\",\"7406\":\"11b0b86fb5919cd2d239\",\"7446\":\"f26521f672e3d94f3c62\",\"7495\":\"cb22512c8cea97bbcf19\",\"7553\":\"b6c1ba6d52fa85ac8595\",\"7554\":\"bdf065db03088c4a4a5d\",\"7568\":\"d9f3ad26c7b8b70fc1ec\",\"7603\":\"d2d72bb470a9b2e1ede0\",\"7686\":\"940990bf96e9413b2e9b\",\"7771\":\"9942586e9e23d5059127\",\"7803\":\"8760edf191caa0f69869\",\"7892\":\"86c938c7b27b9a67ef50\",\"7950\":\"6fb177a4414f9a190484\",\"7994\":\"c160e150f1431807c681\",\"8017\":\"837d18f3c4fcf868010b\",\"8019\":\"02f2f252639bb1d459b6\",\"8041\":\"dae4eea51cfd6e1fbef3\",\"8070\":\"27f10e0739c78ab95d16\",\"8110\":\"c132517c950a214d5731\",\"8119\":\"58eb56bfeb45579c084c\",\"8173\":\"1776ba2cbbdeb9918f9c\",\"8185\":\"ece0dc278594eee67cb1\",\"8207\":\"7e346d396cf1e067b94f\",\"8216\":\"bd2ef62dab7ca40f6d44\",\"8242\":\"3891fea81cc045034ad4\",\"8251\":\"7bcdee9a73a0eb39baaa\",\"8302\":\"6b483d8d7739ff515b8f\",\"8307\":\"e12dd0aad5e6a036ed3b\",\"8381\":\"7ec7bc962edc67495152\",\"8391\":\"eb08511c704d549f8237\",\"8427\":\"409e29315cd91dfb038b\",\"8438\":\"41a503f1b2737d035a74\",\"8568\":\"bf0989c363612ba74ac9\",\"8573\":\"5c08084613d87fec6064\",\"8599\":\"1c088737758fa51d0a0a\",\"8636\":\"48c3cab70569554b8655\",\"8649\":\"519f8992d7c5b42bf4e1\",\"8699\":\"6d4b2f405c48cf71aa4b\",\"8706\":\"db5988f190774b8ecd7e\",\"8709\":\"edbea20e0b917271d7a2\",\"8793\":\"9639129fefdac959af3a\",\"8855\":\"38f81f640e33d713ea2c\",\"8873\":\"75782887b6b9e72b1dc9\",\"8945\":\"d5a920b4e65ee30d8356\",\"8956\":\"b025b7e50cad64b75370\",\"8971\":\"f906bba2b2b7e87a8ae0\",\"8986\":\"4ad17334f3ef911b6b0b\",\"9081\":\"b6c8611601548f3554f7\",\"9082\":\"35cb59b22a293243df26\",\"9112\":\"7ebcaf2caf566e7902b8\",\"9136\":\"3249d48fcb94ad9e44a1\",\"9142\":\"8933a018c2a618e987a4\",\"9176\":\"2557b40f7b4fcef345a9\",\"9193\":\"e2b545b8ea15c0016312\",\"9244\":\"0e4e64562de0635942ff\",\"9414\":\"b9aecaa9ab601ffcc6b4\",\"9512\":\"dc6d783fb73d92e5a7fb\",\"9586\":\"01151d539dca32e61272\",\"9616\":\"0a4f102b3e946346e2d6\",\"9619\":\"b044962c66577434486e\",\"9657\":\"aa3c39fe6f827e094083\",\"9698\":\"41ef3f798533a2b1c7cf\",\"9707\":\"bbda1adb51b744127204\",\"9866\":\"110121669330cd9e737c\",\"9893\":\"4ff6eee70cdc1c6e3325\",\"9989\":\"e7d2ba9eda5b0ac31cac\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3666: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(3666 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp\"] = self[\"webpackChunkapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file diff --git a/shared.8d18858839cd2d379cfe.js b/shared.8d18858839cd2d379cfe.js new file mode 100644 index 0000000..569e7f7 --- /dev/null +++ b/shared.8d18858839cd2d379cfe.js @@ -0,0 +1,2 @@ +(self.webpackChunkapp=self.webpackChunkapp||[]).push([[3712],{66767:function(o,_,e){o.exports=e(92908)},59857:function(o,_,e){const{removeStartingWhitespace:r,removeTrailingWhitespace:t,reindent:l,dedent:E}=e(3769),{getLabeledItem:a,getNodeLabels:c}=e(35125),s=" ",i="keep";function n(o){return-1!==o.text.indexOf("\n")}function S(o){return"comment"===o.type&&o.previousSibling&&"preproc_def"!==o.previousSibling.type&&"preproc_function_def"!==o.previousSibling.type&&"preproc_include"!==o.previousSibling.type&&o.previousSibling.endPosition.row===o.startPosition.row}function A(o,_){return _.repeat(y(o))}function y(o){let _=o,e=0;const r=o.tree.rootNode;for(;(_=_.parent)&&_&&_.id!==r.id;)"labeled_item"!==_.type&&e++;return e}function I(o,_){if(!_)return!1;const e=o.type===_.type;return e&&"node"===o.type||"property"===(r=o)?.type&&(r.namedChildren.length>2||r.namedChildren.slice(1).some(n))||!e&&!S(_);var r}function u(o){return!!o.childForFieldName("address")}function w(o){return u(o)?`@${o.namedChildren[1].text}`:""}function x(o){return o.map((o=>`${o}: `)).join("")}o.exports={formatNode:function o(_,e={}){const{indent:y=s}=e;"labeled_item"===_.type&&(_=a(_));const[D,...d]=_.namedChildren,R=A(_,y);function O(_){return _.reduce(((r,t,l,E)=>S(t)?(r[r.length-1]+=t.text,r):(r.push(...o(t,e)),I(t,_[l+1])&&r.push(""),r)),[])}switch(_.type){case"document":return[...O(_.namedChildren),""];case"node":return[R+`${x(c(_))}${D.text}${w(_)} {`,...O(u(_)?_.namedChildren.slice(2):d),R+"};"];case"property":return function(_,e={}){const{indent:a=s,multilineIntegerCellsIndent:S=i}=e,[y,...I]=_.namedChildren,u=A(_,a),w=0===I.length,D=1===I.length&&!n(I[0]),d=1===I.length&&"integer_cells"===I[0].type,R=x(c(_));if(w)return[u+_.text];if(D)return[u+`${R}${y.text} = ${I[0].text};`];if(d){let o=r(t(I[0].text.slice(1,-2)));switch(S){case"reindent":o=l(o,u+a);break;case"dedent":o=E(o)}return[u+`${R}${y.text} = <`,...o.split("\n"),u+">;"]}return[u+`${y.text} =`,...[].concat(...I.map((_=>o(_,e)))).map(((o,_,e)=>[o,_===e.length-1?";":","].join("")))]}(_,e);case"preproc_include":case"preproc_def":case"preproc_function_def":return[_.text.trimEnd()];default:return[R+_.text]}},getModelineConfiguration:function(o){return o.rootNode.namedChildren.reduce(((o,_)=>{if("comment"===_.type){const e=_.text.startsWith("//")?_.text.slice(2).trim():_.text.slice(2,-2).trim();for(const _ of e.split("\n")){const e=_.match(/dt-formatter:\s*(\w+)\s*=\s*(.+)$/);if(e){const[_,r]=e.slice(1);try{const e=JSON.parse(r);o[_]=e}catch{}}}}return o}),{})},getNodeDepth:y,isInlineComment:S,shouldIncludeBlank:I}},1530:function(o,_,e){o.exports=Object.assign({},e(35125),e(46933),e(31960),e(95147))},35125:function(o,_,e){const r=e(69282),t=e(49766);function l(o){return E(o.parent,"label")}function E(o,_){const e=[],r=o.walk();r.gotoFirstChild();do{const o=r.currentNode().isNamed(),t=r.currentFieldName()===_;o&&t&&e.push(r.currentNode())}while(r.gotoNextSibling());return r.delete(),e}function a(o,_){const e="string"==typeof _?o=>o===_:_;return o.namedChildren.filter((o=>"node"===o.type&&o.children.find((o=>"identifier"===o.type&&e(o.text)))))}o.exports={nodesAreConsecutive:function(o){return o.every(((_,e)=>!(eo.text))},getNodeLabelNodes:l,getLabeledItem:function(o){return r("labeled_item"===o.type),o.childForFieldName("item")},getNodeChildrenByFieldName:E,findChildByIdentifier:function(o,_){o=[].concat(o);for(const e of t(o)){const o=a(e,_)[0];if(o)return o}},findChildrenByIdentifier:a,listNodes:function(o,_={}){const{stripNewlines:e=!0,limit:r=50}=_;for(const _ of o){let o=_.text;e&&(o=o.replace(/\n/g,"")),r&&(o=o.slice(0,r)),console.log(_.id,`[${_.type}]`,"->",o)}}}},46933:function(o,_,e){const{getNodeChildrenByFieldName:r}=e(35125),{parseStringLiteral:t,parseIntegerCells:l,parseIntegerArray:E,parsePhandles:a,parsePhandle:c,parsePhandleArray:s,parseIntegerUnion:i,serializeIntValue:n,serializeArrayValue:S}=e(95147);function A(o,_){return o.children.find((o=>"property"===o.type&&o.children[0].text===_))}function y(o,_){return o.namedChildren.find((o=>"property"===o.type&&o.childForFieldName("name")?.text===_))}function I(o,_){const e=y(o,_);return e&&r(e,"value")}function u(o,_,e){const r=A(o,_),n=I(o,_);switch(e.type){case"string":return t(n?.[0]);case"boolean":return!!r;case"int":return l(n)?.[0];case"array":return E(n);case"phandle":return c(n);case"phandles":return a(n);case"phandle-array":return s(n);case"integer-union":return i(n)}}o.exports={findNodeProperty:A,getProperty:function(o,_){const e=o.children.find((o=>"property"===o.type&&o.children[0].text===_));return e&&{syntaxNode:e,name:_,value:e.children[2]?.text}},getPropertyNode:y,getPropertyValue:function(o,_){return(_="string"==typeof _?y(o,_):_)?.childForFieldName("value")},getPropertyValues:I,parsePropertiesFromSchema:function(o,_){return Object.keys(_).reduce(((e,r)=>{const t=_[r],l=u(o,r,t);return void 0!==l&&(e[r]={parsed:l}),e}),{})},parsePropertyFromSchema:u,serializePropertyFromSchema:function(o,_){switch(_.type){case"string":return`"${o.parsed}"`;case"boolean":return o.parsed;case"int":return n(o.parsed);case"array":return S(o.parsed);case"phandle":return o.parsed.map((o=>`<${o}>`)).join(", ");case"phandles":case"phandle-array":return o.parsed.reduce(((o,_)=>(_.startsWith("&")?o.push([_]):o[o.length-1].push(_),o)),[]).map((o=>`<${o.join(" ")}>`)).join(", ");case"integer-union":return`<(${o.parsed.map((o=>o.toString())).join("|")})>`}}}},31960:function(o){function _(o,_={}){const{maxDepth:e=-1}=_,r=[{depth:0,node:o.rootNode||o}];return function(){const o=r.shift();return o&&(-1===e||o.depth({node:_,depth:o.depth+1})))),o?.node}}function e(o,_={}){const{maxDepth:e=-1}=_,r=[{depth:0,node:o.rootNode||o}];return function(){const o=r.shift();return o&&(-1===e||o.depth({node:_,depth:o.depth+1})))),o?.node}}function r(o,r,t={}){const{single:l=!1,maxDepth:E=-1,depthFirst:a=!1}=t,c=a?e(o,{maxDepth:E}):_(o,{maxDepth:E}),s=[];let i;for(;i=c();)if(r(i)){if(l)return i;s.push(i)}if(!l)return s}function t(o){let _;if(o instanceof RegExp)_=_=>o.test(_);else if("string"==typeof o)_=_=>_===`"${o}"`;else{if("function"!=typeof o)throw new TypeError("Unexpected type "+typeof o);_=o}return o=>"property"===o.type&&"compatible"===o.childForFieldName("name").text&&_(o.childForFieldName("value").text)}o.exports={BreadthFirstIterator:_,DepthFirstIterator:e,searchTree:r,findLabeledItem:function(o,_){let e=r(o,(o=>"labeled_item"===o.type&&"identifier"===o.children[0].type&&o.children[0].text===_),{single:!0});if(!e)return null;do{e=e.childForFieldName("item")}while("labeled_item"===e.type);return e},findNodeByIdentifier:function(o,_){return r(o,(o=>"node"===o.type&&o.childForFieldName("name").text===_),{single:!0})},findNodeWithCompatible:function(o,_){return r(o,t(_),{single:!0})?.parent},findNodesWithCompatible:function(o,_){return r(o,t(_)).map((o=>o.parent))}}},95147:function(o,_,e){const{searchTree:r}=e(31960),t=o=>"unary_expression"===o.type&&"-"===o.childForFieldName("operator").type&&"integer_literal"===o.childForFieldName("argument").type,l=o=>["identifier","integer_literal"].includes(o.type)||t(o),E=o=>["identifier","integer_literal","reference","call_expression"].includes(o.type),a=o=>"reference"===o.type,c=o=>"integer_literal"===o.type||t(o)?Number(o.text):o.text;function s(o){return o?.flatMap((o=>o.namedChildren.filter(l).map(c)))}function i(o){return o?.flatMap((o=>o.namedChildren.filter(a).map((o=>o.text))))}function n(o){return(o=o.toString()).match(/-\d+/)&&(o=`(${o})`),o}o.exports={parseStringLiteral:function(o){return o?.text?.slice(1,-1)},parseIntegerCells:function(o){return s(o)},parseIntegerArray:s,parsePhandle:function(o){return i(o)[0]},parsePhandleArray:function(o){return o?.flatMap((o=>o.namedChildren.filter(E).map((o=>o.text))))},parsePhandles:i,parseIntegerUnion:function(o){return o?.flatMap((o=>r(o,l,{depthFirst:!0}))).map(c)},sanitizeIdentifier:function(o){return o.replace(/[^a-zA-Z0-9,._+-]/g,"_").slice(0,31)},serializeIntValue:function(o){return`<${n(o)}>`},serializeArrayValue:function(o){return`<${o.map(n).join(" ")}>`}}},89361:function(o,_,e){const r=e(69282),{ReferenceError:t}=r,l=e(66039),E=e(42148),a=e(33610),c=e(72243),s=e(84060),i=e(49766),{getNodeLabels:n,getLabeledItem:S}=e(35125),{getPropertyValues:A}=e(46933),{sanitizeIdentifier:y}=e(95147);o.exports={NodeCollection:class{managedProperties=[];_cached_container_node=null;_cached_container_tree_version=0;_cached_collection_nodes=null;_cached_collection_tree_version=0;constructor(o,_={}){this.document=o,_.managedProperties&&(this.managedProperties=_.managedProperties),_.lookupContainerNode&&(this.lookupContainerNode=_.lookupContainerNode.bind(this)),_.injectContainerNode&&(this.injectContainerNode=_.injectContainerNode.bind(this)),_.lookupNodes&&(this.lookupNodes=_.lookupNodes.bind(this)),_.injectNode&&(this.injectNode=_.injectNode.bind(this))}lookupContainerNode(){throw new t("Provide `lookupContainerNode` in constructor or override this method")}injectContainerNode(){throw new t("Provide `injectContainerNode` in constructor or override this method")}lookupNodes(){throw new t("Provide `lookupNodes` in constructor or override this method")}injectNode(){throw new t("Provide `injectNode` in constructor or override this method")}get container(){return this._cached_container_tree_version!==this.document._parse_version&&delete this._cached_container_node,this._cached_container_node||(this._cached_container_node=this.lookupContainerNode(this.document),this._cached_container_tree_version=this.document._parse_version),this._cached_container_node}get nodes(){return this._cached_collection_tree_version!==this.document._parse_version&&delete this._cached_collection_nodes,this._cached_collection_nodes||(this._cached_collection_nodes=this.lookupNodes(this.document),this._cached_collection_tree_version=this.document._parse_version),this._cached_collection_nodes}updateCollection(o){o.length&&!this.container&&(this.injectContainerNode(this),this.document.flushChanges());const _=[...this.nodes.keys()],e=E(c(o,"index"),(o=>this.nodes[o])),r=l(_,e),[t,a]=s(o,(o=>this.nodes[o.index]));for(const o of t)this.updateNode(o.index,o);for(const o of i(r))this.document.removeNode(this.nodes[o]);for(const o of a)this.injectNode(this,o),this.document.flushChanges(),this.updateNode(this.nodes.length-1,o)}updateNode(o,_){const e=this.extractNode(this.nodes[o]);this.updateNodeName(o,_,e),this.updateNodeLabels(o,_,e),this.updateNodeProperties(o,_,e),this.cleanupNodeProperties(o,_,e)}updateNodeName(o,_,e){if(e.name!==_.name){const e=this.nodes[o].childForFieldName("name");this.document.replaceNode(e,y(_.name),{removeStartingWhitespace:!1})}}updateNodeLabels(o,_,e){a(e.labels,_.labels)||this.document.replaceNodeLabels(this.nodes[o],_.labels)}updateNodeProperties(o,_,e){const{properties:r}=_;for(const _ in r){const t=r[_];a(t,e.properties[_])||this.document.setProperty(this.nodes[o],_,t)}}cleanupNodeProperties(o,_,e){const{properties:r}=_;for(const _ of this.managedProperties)_ in e.properties&&!(_ in r)&&this.document.deleteProperty(this.nodes[o],_)}extractNode(o){r("node"===o.type);const _=o.childForFieldName("name").text,e=n(o),t=o.namedChildren.reduce(((_,e)=>{if("labeled_item"===e.type&&(e=S(e)),"property"===e.type){const r=e.childForFieldName("name").text,t=A(o,r),l=c(t,"text"),E=l.join(", ");_[r]={parsed:l,raw:E}}return _}),{});return{name:_,labels:e,properties:t}}extractCollection(){return this.nodes.map(((o,_)=>({index:_,...this.extractNode(o)})))}}}},92908:function(o,_,e){const r=e(69282),{sortBy:t}=e(59553),l=e(96912),{getPosition:E}=e(3769),{getNodeLabelNodes:a}=e(35125),{getProperty:c}=e(46933);let s;o.exports={getParser:async function(){if(!s){await l.init();const o=await l.Language.load(e.g.window?e(34886):"//../data/tree-sitter-devicetree.wasm");s=new l,s.setLanguage(o)}return s},DevicetreeDocument:class{constructor(o,_){this.parser=o,this._parse_version=0,this._enableChangeBuffering=!1,this._bufferedChanges=[],this.update(_)}cleanup(){this.tree.delete()}update(o,_=null){if(_&&this.tree&&this._enableChangeBuffering){const e=o.slice(_.startIndex,_.newEndIndex);this._bufferedChanges.push({startIndex:_.startIndex,update:_,replacementText:e})}else this.text=o,this._reparse()}_reparse(){this.tree&&this.tree.delete(),this.tree=this.parser.parse(this.text),this._parse_version++}flushChanges(){if(0===this._bufferedChanges.length)return;const o=t(this._bufferedChanges,"startIndex"),_=o.reduce(((_,{update:e,replacementText:r},t)=>{const l=o[t+1],E=t>0?o[t-1].update.oldEndIndex:0,a=this.text.slice(E,e.startIndex),c=r;return _.push(a),_.push(c),l||_.push(this.text.slice(e.oldEndIndex)),_}),[]);this.text=_.join(""),this._reparse(),this._bufferedChanges=[]}removeNode(o){this.replaceNode(o,"")}replaceNode(o,_,e={}){const{removeStartingWhitespace:r=!0}=e,{text:t}=this,l=t.lastIndexOf("\n",o.startIndex),a=-1!==l&&t.slice(l+1,o.startIndex).match(/\s+/)&&r?l:o.startIndex,c=[t.slice(0,a),_,t.slice(o.endIndex)].join(""),s={startIndex:a,startPosition:E(_,a),oldEndIndex:o.endIndex,oldEndPosition:o.endPosition,newEndIndex:a+_.length,newEndPosition:E(c,a+_.length)};this.update(c,s)}replaceRange(o,_,e){const{text:r}=this,t=[r.slice(0,o),e,r.slice(_)].join(""),l=o+e.length,a={startIndex:o,startPosition:E(r,o),oldEndIndex:_,oldEndPosition:E(r,_),newEndIndex:l,newEndPosition:E(t,l)};return this.update(t,a)}replaceNodeLabels(o,_){const e=a(o),r=t(e,"startIndex"),l=_.map((o=>`${o}:`)).join(" "),E=r[0]&&r[0].parent||o;this.replaceRange(E.startIndex,o.startIndex,l)}insertTextBeforeNode(o,_){this.replaceRange(o.startIndex,o.startIndex,_)}insertTextAfterNode(o,_){this.replaceRange(o.endIndex,o.endIndex,_)}addChildNode(o,_){r("node"===o.type);const e=o.children.find((o=>"}"===o.type));return this.replaceRange(e.startIndex,e.startIndex,_)}setProperty(o,_,e){const r=c(o,_);if("boolean"==typeof e&&!e)return void(r&&this.deleteProperty(o,_));const t=e.length?`${_} = ${e};`:`${_};`;return r?this.replaceNode(r.syntaxNode,t,{removeStartingWhitespace:!1}):this.addChildNode(o,`\n ${t}`)}deleteProperty(o,_){const e=c(o,_);e&&this.replaceNode(e.syntaxNode,"")}}}},83858:function(o,_,e){const r=e(26069),t=e(22469),l=e(41953),E=e(50501),a=e(72243),c=e(54600),s=e(22834),{getParser:i}=e(66767),{formatNode:n,getModelineConfiguration:S}=e(59857),{behaviorBindings:A}=e(95130),y=e(87325),{encodeKeyBinding:I}=e(69663),u=e(22443),w=E(A,"code");function x(o){const _=[...t(r(a(o.layers,"properties.bindings.parsed"))),...t(r(a(o.layers,"properties.sensor-bindings.parsed"))),...t(r(a(o.combos,"properties.bindings.parsed"))),...t(r(a(o.macros,"properties.bindings.parsed"))),...t(r(a(o.behaviors,"properties.bindings.parsed")))].map((o=>"object"==typeof o?o.value:o));return s(_)}o.exports=async function(o,_,e,r={}){!function(o,_){for(const e of o.layers){if(e.properties.bindings?.parsed){const{parsed:o}=e.properties.bindings;e.properties.bindings={parsed:o,useRaw:!0,raw:`<\n${y(_,o.map(I))}\n>`}}e.properties.label&&!e.properties.label.parsed&&delete e.properties.label,e.properties=c(e.properties,(o=>!o))}}(_,o);const E=t(x(_).map((o=>l(w,[o,"includes"],[])))),a=new u(await i(),e);a._enableChangeBuffering=!0,a.mergeUpdated(_,r),a.replaceBehaviourIncludes(E),a.flushChanges();try{const o=S(a.tree);return n(a.tree.rootNode,o).join("\n")}catch(o){return console.error("Failed to format devictree",o),a.text}finally{a.cleanup()}},o.exports.getBehaviorsUsed=x},69663:function(o,_,e){const r=e(42148),t=e(41953),{parsePropertyFromSchema:l}=e(46933);function E(o){return o.reduce(((o,_)=>(_.startsWith("&")?o.push([_]):o[o.length-1].push(_),o)),[]).map((o=>o.join(" ")))}const a=["¯o_tap","¯o_press","¯o_release","¯o_tap_time","¯o_wait_time","¯o_pause_for_release"];function c(o){const _=(o.params||[]).map(c),e=_.length>0?`(${_.join(",")})`:"";return o.value+e}o.exports={parseBindings:function(o,_="bindings"){const e=l(o,_,{type:"phandle-array"});return e?E([].concat(...e)):void 0},parseKeyBinding:function(o,_){const e=/\((.+)\)/,l=o.match(/^(&.+?)\b/)[1],E=r(o.replace(/^&.+?\b\s*/,"").split(" ")).map((function o(r){const l=r.replace(e,""),E=t(r.match(e),"[1]","").split(",").map((o=>o.trim())).filter((o=>o.length>0)).map(o);return{value:t(_.defines,l,l),params:E}}));return{value:l,params:E}},groupMacroBindings:function(o){return o.reduce(((o,_,e,r)=>{const t=_.split(" ")[0];return a.includes(t)?(o.at(-1).length>0&&o.push([]),o.at(-1).push(_),eo.startsWith('"zmk,behavior-')&&'"zmk,behavior-macro"'!==o))}injectNode(o,_){const e=i(_.name),r=this.nodes.at(-1),t=`${_.labels[0]}: ${e} {\n compatible = ${_.properties.compatible.raw};\n };`;r?this.document.insertTextAfterNode(r,t):this.document.addChildNode(this.container,t)}extractNode(o){const _=a(o,"compatible")?.namedChildren[1].text.slice(1,-1),e=A[_],r=super.extractNode(o);if(r.properties.compatible.parsed=_,e)for(const _ in e.properties){const t=e.properties[_],l=r.properties[_];if(l&&(l.parsed=s(o,_,t),"phandle-array"===t.type)){const o=l.parsed.reduce(((o,_)=>(_.startsWith("&")?o.push([_]):o[o.length-1].push(_),o)),[]).map((o=>o.join(" ")));l.parsed=o.map((o=>y(o,{})))}}return(c(o,"bindings")||[]).flatMap((o=>o.namedChildren.flatMap((o=>o.text)))),r}updateNodeProperties(o,_,e){const{properties:t}=_,l=a(this.nodes[o],"compatible")?.namedChildren[1].text.slice(1,-1),E=A[l];for(const _ in t){const l=t[_],a=E?.properties?.[_];if(!r(l,e.properties[_])){const e=a&&!l.useRaw?"phandle-array"!==a.type?n(l,a):l.parsed.map((o=>I(o))).map((o=>`<${o}>`)).join(", "):l.raw;this.document.setProperty(this.nodes[o],_,e)}}}cleanupNodeProperties(o,_,e){for(const r in e.properties)r in _.properties||this.document.deleteProperty(this.nodes[o],r)}}},84477:function(o,_,e){const r=e(33610),{findNodeWithCompatible:t,findNodesWithCompatible:l,getLabeledItem:E,getNodeLabels:a,parsePropertiesFromSchema:c,serializePropertyFromSchema:s}=e(1530),{NodeCollection:i}=e(89361),{groupPhandleArrayBindings:n,parseKeyBinding:S,encodeKeyBinding:A}=e(69663),y={bindings:{type:"phandle-array"},"key-positions":{type:"array"},"timeout-ms":{type:"int"},"slow-release":{type:"boolean"},layers:{type:"array"}};o.exports=class extends i{managedProperties=["bindings","key-positions","timeout-ms","layers","slow-release"];lookupContainerNode(){return t(this.document.tree.rootNode,"zmk,combos")}injectContainerNode(){const o=l(this.document.tree.rootNode,"zmk,keymap").at(-1);this.document.insertTextBeforeNode(o,'\n combos {\n compatible = "zmk,combos";\n };\n ')}lookupNodes(){return this.container?this.container.namedChildren.reduce(((o,_)=>("labeled_item"===_.type&&(_=E(_)),"node"===_.type&&o.push(_),o)),[]):[]}injectNode(o,_){const e=_.name.replace(/[^a-zA-Z0-9_]/g,"_"),r=this.nodes.at(-1),t=`${e} {};`;r?this.document.insertTextAfterNode(r,t):this.document.addChildNode(this.container,t)}updateNodeProperties(o,_,e){const{properties:t}=_;for(const _ in t){const l=t[_],E=y[_];if(!r(l,e.properties[_])){const e=E&&!l.useRaw?"phandle-array"!==E.type?s(l,E):l.parsed.map((o=>A(o))).map((o=>`<${o}>`)).join(", "):l.raw;this.document.setProperty(this.nodes[o],_,e)}}_.properties.layers?.parsed?.length||this.document.deleteProperty(this.nodes[o],"layers")}extractNode(o){const _=o.childForFieldName("name").text,e=a(o),r=c(o,y);return r.bindings&&(r.bindings.parsed=n(r.bindings.parsed).map(S)),{name:_,labels:e,properties:r}}legacyParse(o){const{name:_,labels:e,properties:t}=this.extractNode(o),l={name:_,labels:e,properties:t,identifier:_},E={bindings:"bindings","timeout-ms":"timeoutMs","key-positions":"keyPositions","slow-release":"slowRelease",layers:"layers"};for(const o of Object.keys(E))t[o]&&(l[E[o]]=t[o].parsed);return(0===l.layers?.length||r(l.layers,[-1]))&&delete l.layers,l}legacyParseNodes(){return this.nodes.map((o=>this.legacyParse(o)))}}},21207:function(o,_,e){const r=e(66039),t=e(42148),l=e(33610),E=e(72243),{findChildrenByIdentifier:a,findNodesWithCompatible:c,getLabeledItem:s,getNodeLabels:i,parsePropertiesFromSchema:n,serializePropertyFromSchema:S}=e(1530),{NodeCollection:A}=e(89361),{groupPhandleArrayBindings:y,parseKeyBinding:I,encodeKeyBinding:u}=e(69663),w={label:{type:"string"},bindings:{type:"phandle-array"},"sensor-bindings":{type:"phandle-array"}};o.exports=class extends A{managedProperties=["label","bindings","sensor-bindings"];lookupContainerNode(){return c(this.document.tree.rootNode,"zmk,keymap").at(-1)}injectContainerNode(){const o=a(this.document.tree.rootNode,"/");this.document.addChildNode(o.at(-1),'\nkeymap { compatible = "zmk,keymap"; };\n')}lookupNodes(){return this.container?this.container.namedChildren.reduce(((o,_)=>("labeled_item"===_.type&&(_=s(_)),"node"===_.type&&o.push(_),o)),[]):[]}injectNode(o,_){const e=this.nodes.at(-1),r=`${(_.name||"new_layer").replace(/[^a-zA-Z0-9_]/g,"_")} {};`;e?this.document.insertTextAfterNode(e,r):this.document.addChildNode(this.container,r)}updateCollection(o){const _=[...this.nodes.keys()];super.updateCollection(o),this.updateLayerPositions(o,_)}updateLayerPositions(o,_){const e=t(E(o,"index"),(o=>this.nodes[o])),l=r(_,e),a=[..._];for(const e in o){const r=o[e],t=a.length;void 0!==r.index&&_.includes(r.index)||(r.index=t,a[t]=t)}for(let o=l.length-1;o>=0;--o){const _=l[o];a[_]=null;for(let o=_+1;o0&&!c.every(((o,_,e)=>_===e.length-1||e[_]a[o])).map((o=>this.nodes[o].text)).join("\n")))}updateNodeProperties(o,_,e){const{properties:r}=_;for(const _ in r){const t=r[_],E=w[_];if(!l(t,e.properties[_])){const e=E&&!t.useRaw?"phandle-array"!==E.type?S(t,E):0!==t.parsed.length&&t.parsed.map((o=>u(o))).map((o=>`<${o}>`)).join(", "):t.raw;this.document.setProperty(this.nodes[o],_,e)}}}extractNode(o){const _=o.childForFieldName("name").text,e=i(o),r=n(o,w);return r.bindings&&(r.bindings.parsed=y(r.bindings.parsed).map(I)),r["sensor-bindings"]&&(r["sensor-bindings"].parsed=y(r["sensor-bindings"].parsed).map(I)),{name:_,labels:e,properties:r}}}},67199:function(o,_,e){const r=e(64988),{findChildByIdentifier:t,findChildrenByIdentifier:l,findNodesWithCompatible:E}=e(1530),{NodeCollection:a}=e(89361),c=e(65403),{groupMacroBindings:s,encodeKeyBinding:i}=e(69663);o.exports=class extends c{managedProperties=["label","tap-ms","wait-ms"];lookupContainerNode(){const o=l(this.document.tree.rootNode,"/");return t(o,"macros")}injectContainerNode(){const o=E(this.document.tree.rootNode,"zmk,keymap").at(-1);this.document.insertTextBeforeNode(o,"\nmacros {};\n")}lookupNodes(){return E(this.document.tree.rootNode,"zmk,behavior-macro")}injectNode(o,_){const e=_.name.replace(/[^a-zA-Z0-9_]/g,"_"),r=this.nodes.at(-1),t=`${e}: ${e} {\n compatible = "zmk,behavior-macro";\n };`;r?this.document.insertTextAfterNode(r,t):this.document.addChildNode(this.container,t)}updateNode(o,_){const e=function(o){const _=s(o.map(i)).map((o=>o.join(" ")));return 1===_.length?[`<${_[0]}>`]:_.map((o=>`<${o}>`))}(_.properties.bindings?.parsed||[]);_.properties.bindings={useRaw:!0,raw:e},super.updateNode(o,_)}legacyParse(o){return r(this.extractNode(o),["name","labels","properties"])}legacyParseNodes(){return this.nodes.map((o=>this.legacyParse(o)))}cleanupNodeProperties(o,_,e){const{cleanupNodeProperties:r}=a.prototype;return r.call(this,o,_,e)}}},22443:function(o,_,e){const r=e(42148),t=e(96070),l=e(49766),{DevicetreeDocument:E}=e(66767),{nodesAreConsecutive:a,findChildByIdentifier:c,findChildrenByIdentifier:s,getLabeledItem:i}=e(1530),{standardBehaviorIncludeFiles:n}=e(95130),S=e(67199),A=e(84477),y=e(21207),I=e(65403);o.exports=class extends E{constructor(...o){super(...o),this.macroCollection=new S(this),this.comboCollection=new A(this),this.layerCollection=new y(this),this.behaviorCollection=new I(this)}cleanup(){super.cleanup(),delete this.layerCollection,delete this.comboCollection,delete this.macroCollection,delete this.behaviorCollection}getChosenProperties(){const o=s(this.tree.rootNode,"/"),_=c(o,"chosen");return _?_.namedChildren.reduce(((o,_)=>{if("labeled_item"===_.type&&(_=i(_)),"property"===_.type){const e=_.childForFieldName("name").text,r=_.childForFieldName("value").text;o[e]=r}return o}),{}):{}}mergeUpdated(o,_={}){this.layerCollection.updateCollection(o.layers),this.comboCollection.updateCollection(o.combos),this.macroCollection.updateCollection(o.macros),_.enableBehaviorEditing&&this.behaviorCollection.updateCollection(o.behaviors)}replaceBehaviourIncludes(o){const _=o.sort().join("\n")+"\n",e=this.tree.rootNode.namedChildren.filter((o=>"preproc_include"===o.type&&n.some((_=>o.text.startsWith(_)))));if(e.length)if(a(e))this.replaceRange(e[0].startIndex,e.at(-1).endIndex,"");else{const o=e.map((o=>[o.startIndex,o.endIndex]));for(const[_,e]of l(o))this.replaceRange(_,e,"\n")}const E=t(r(this.tree.rootNode.children,{type:"preproc_include"})),c=this.tree.rootNode.children.find((o=>"preproc_def"===o.type)),s=this.tree.rootNode.children.find((o=>"node"===o.type));E?this.insertTextAfterNode(E,_):(c||s)&&this.insertTextBeforeNode(c||s,_)}}},27621:function(o,_,e){const{getPropertyValues:r}=e(46933),t="MISSING_ROOT_NODE",l="USING_ZMK_NODEFREE_MACROS",E="USING_MULTIPLE_ROOT_NODES",a="USING_MIRYOKU_DTSI",c="USING_NON_ZMK_MACRO",s="USING_AUTOSHIFT_MACRO";o.exports={keymapHasNoRootNodes:function(o){for(let _ of o.tree.rootNode.namedChildren)if("labeled_item"===_.type&&(_=_.childForFieldName("item")),"node"===_.type&&"/"===_.childForFieldName("name").text)return;return t},keymapUsesNodefreeConfigHelpers:function(o){const _=["ZMK_BEHAVIOR","ZMK_COMBO","ZMK_CONDITIONAL_LAYER","ZMK_LAYER","UC_MACRO"];for(const e of o.tree.rootNode.namedChildren)if("ERROR"===e.type){const{text:o}=e;if(_.some((_=>o.startsWith(_))))return l}},keymapUsesMiryoku:function(o){for(const _ of o.tree.rootNode.namedChildren)if("preproc_include"===_.type&&_.childForFieldName("path").text.includes("miryoku.dtsi"))return a},keymapBindingsUsePreprocessorMacros:function(o){let _=!1;const e=["LA","LC","LG","LS","RA","RC","RG","RS","RGB_COLOR_HSB"];for(const t of o.layerCollection.nodes){const[o]=r(t,"bindings");for(const r of o.namedChildren)if("call_expression"===r.type){const o=r.childForFieldName("function").text;if(o.match(/^_?AS$/i))_=!0;else if(!e.includes(o))return c}}if(_)return s},keymapHasMultipleRootNodes:function(o){let _=null;for(let e of o.tree.rootNode.namedChildren)if("labeled_item"===e.type&&(e=e.childForFieldName("item")),"node"===e.type&&"/"===e.childForFieldName("name").text){if(null!==_)return E;_=e}},keymapHasLayerBindingsWithNonBehaviorStarter:function(o){return o.layerCollection.nodes.some((o=>{const _=[].concat(...r(o,"bindings")).flatMap((o=>o.namedChildren))[0]?.type;return _&&"reference"!==_}))},warningFlags:{MISSING_ROOT_NODE:t,USING_ZMK_NODEFREE_MACROS:l,USING_ZMK_MACRO_MACRO:"USING_ZMK_MACRO_MACRO",USING_MULTIPLE_ROOT_NODES:E,USING_MIRYOKU_DTSI:a,USING_NON_ZMK_MACRO:c,USING_AUTOSHIFT_MACRO:s}}},33295:function(o,_,e){const r=e(26069),{getParser:t}=e(66767),l=e(22443),{keymapUsesNodefreeConfigHelpers:E,keymapUsesMiryoku:a,keymapBindingsUsePreprocessorMacros:c,keymapHasNoRootNodes:s,keymapHasLayerBindingsWithNonBehaviorStarter:i,warningFlags:{USING_NON_ZMK_MACRO:n}}=e(27621),{parseStringLiteral:S}=e(95147);function A(o){return r([s(o),E(o),a(o),c(o)])}function y(o){return o.tree.rootNode.namedChildren.reduce(((o,_)=>{if("preproc_def"===_.type){const e=_.childForFieldName("name").text,r=_.childForFieldName("value")?.text.trim();o[e]=r}return o}),{})}function I(o){return o.tree.rootNode.namedChildren.reduce(((o,_)=>{if("preproc_include"===_.type){const e=_.childForFieldName("path");"string_literal"===e.type&&o.push(S(e))}return o}),[])}o.exports=async function(o){const _=await t(),e=new l(_,o);try{return{warningFlags:A(e),defines:y(e),headers:I(e),chosen:e.getChosenProperties(),behaviors:e.behaviorCollection.extractCollection(),layers:e.layerCollection.extractCollection(),combos:e.comboCollection.extractCollection(),macros:e.macroCollection.extractCollection()}}catch(o){return i(e)?{warningFlags:[n],defines:{},headers:[],chosen:{},behaviors:[],layers:[],combos:[],macros:[]}:(console.error(o),{warningFlags:["KEYMAP_PARSING_FAILED"],defines:{},headers:[],chosen:{},behaviors:[],layers:[],combos:[],macros:[]})}finally{e.cleanup()}}},87325:function(o,_,e){const r=e(45223);o.exports=function(o,_,e={}){const{margin:t=2}=e,l=_.reduce(((_,e,r)=>{if(o[r]){const{row:t=0,col:l}=o[r];_[t]=_[t]||[],_[t][l||_[t].length]=e}return _}),[]),E=Object.keys(l),a=Math.max(...E.map((o=>l[o].length))),c=r(a,(o=>o)),s=c.map((o=>Math.max(...E.map((_=>l[_][o]?.length||0)))));return l.map(((o,_)=>c.map((_=>{const e=o.slice(_).every((o=>void 0===o)),r=s[_]+(0===_?"":t);return e?"":o[_]?o[_].padStart(r):" ".repeat(r)})).join("").replace(/\s+$/,""))).join("\n")}},62608:function(o,_,e){const r=e(80460);class t extends Error{constructor(o){super(),this.name="InfoValidationError",this.errors=o}}function l(o,_){let e=-1/0;const r=[];for(const t of _.keys()){const{row:l}=_[t];if(void 0!==l)if(lvoid 0!==o?.row||void 0!==o?.col));for(const l in t.layout){const E=t.layout[l],a=`layouts[${e}].layout[${l}]`;if("object"!=typeof E||null===E)_.push(`Key definition at ${a} must be an object`);else{const e=["u","h","r","rx","ry"];r(E.x)||_.push(`Key definition at ${a} must include "x" position`),r(E.y)||_.push(`Key definition at ${a} must include "y" position`);for(const o of e)o in E&&!r(E[o])&&_.push(`Key definition at ${a} optional "${o}" must be number`);for(const e of["row","col"])o&&!(e in E)?_.push(`Key definition at ${a} is missing property "${e}"`):e in E&&(!Number.isInteger(E[e])||E[e]<0)&&_.push(`Key definition at ${a} "${e}" must be a non-negative integer`)}}const a=t.layout.reduce(((o,_,e)=>{const{row:r,col:t}=_,l=`(${r},${t})`;return void 0!==r&&void 0!==t&&(o[l]=[...o[l]||[],e]),o}),{});for(const o of Object.values(a)){if(o.length<=1)continue;const{row:r,col:l}=t.layout[o[0]],E=`{row: ${r}, col: ${l}}`;for(const r of o){const o=`layouts[${e}].layout[${r}]`;_.push(`Key definition at ${o} has overlapping position ${E}`)}}_.push(...l(e,t.layout)),_.push(...E(e,t.layout))}else _.push(`layout ${e} must define "layout" array`)}else _.push('info must define "layouts"');if(_.length)throw new t(_)}}},3769:function(o){function _(o){const _=o.split("\n"),e=_.reduce(((o,_)=>{const e=_.match(/^(\s*)\S/);return e?Math.min(o,e[1].length):o}),1/0);return _.map((o=>o.slice(0,e).match(/^\s+$/)?o.slice(e):o))}o.exports={dedent:function(o){return _(o).join("\n")},reindent:function(o,e){return _(o).map((o=>e+o)).join("\n")},getPosition:function(o,_){let e,r;for(e=0,r=0;-1!==r;e++,r=o.indexOf("\n",r+1));return{row:e,col:_-r}},removeStartingWhitespace:function(o){return o.split("\n").reduce(((o,_)=>((o.length>0||_.match(/\S/))&&o.push(_),o)),[]).join("\n")},removeTrailingWhitespace:function(o){return o.split("\n").reverse().reduce(((o,_)=>((o.length>0||_.match(/\S/))&&o.push(_),o)),[]).reverse().join("\n")}}},95130:function(o,_,e){const r=e(41536),t=e(1286),l=e(22834),E=e(24234),a=e(31742),c=e(61443),s=e(80012),i=e(43003),n=e(92914);function S(o,_){const e=Array.isArray(o)?o:Object.values(o);for(const o of e)for(const{match:e,...l}of _)t(o,e)&&r(o,l)}Object.assign(E,a),c.push(...s),S(E,i),S(c,n);const A=l(n.flatMap((o=>o.includes||[])));for(const o of c){const _=E[o.compatible];r(o,{schema:_})}o.exports={behaviorSchemas:E,behaviorBindings:c,behaviorOverlays:n,behaviorSchemaOverlays:i,standardBehaviorIncludeFiles:A,mergeBehaviorOverlays:S}},62029:function(o){const _=o=>({value:"&kp",params:[{value:o,params:[]}]}),e=[{pattern:/^[0-9]$/,convert:o=>_(`N${o}`)},{pattern:/^[a-z]$/,convert:o=>_(o.toUpperCase())},{pattern:/^[A-Z]$/,convert:o=>({value:"&kp",params:[{value:"LS",params:[{value:o.toUpperCase(),params:[]}]}]})}],r={"!":_("EXCL"),"@":_("AT"),"#":_("POUND"),$:_("DLLR"),"%":_("PRCNT"),"^":_("CARET"),"&":_("AMPS"),"*":_("STAR"),"(":_("LPAR"),")":_("RPAR"),"\n":_("RET")," ":_("SPACE"),"-":_("MINUS"),_:_("UNDER"),"=":_("EQUAL"),"+":_("PLUS"),"[":_("LBKT"),"]":_("LBRC"),"{":_("RBKT"),"}":_("RBRC"),"\\":_("BSLH"),"|":_("PIPE"),"":_("TILDE2"),";":_("SEMI"),":":_("COLON"),"'":_("SQT"),'"':_("DQT"),"`":_("GRAVE"),"~":_("TILDE"),",":_("COMMA"),"<":_("LT"),".":_("DOT"),">":_("GT"),"/":_("FSLH"),"?":_("QMARK")};o.exports={mapCharacter:function(o){if(r[o])return r[o];for(const{pattern:_,convert:r}of e)if(o.match(_))return r(o)}}},52779:function(o,_,e){const r=e(15126),t={basic:e(97107),unicode:e(445),platforms:{mac:e(27112),win:e(27453)}};o.exports={keycodes:r,keycodeGlyphs:t}},62412:function(o,_,e){const r=e(45223),{behaviorSchemas:t,behaviorBindings:l}=e(95130),E=e(30877),a=E.reduce(((o,_)=>(_.match.code&&(o[`&${_.match.code}`]=_),o)),{}),c=E.reduce(((o,_)=>(_.match.compatible&&(o[_.match.compatible]=_),o)),{});function s(o){this.message=o,this.name="BehaviorResolutionError"}function i(o,_="#binding-cells"){const e=o.properties?.[_]?.parsed;if("number"==typeof e)return e;const r=(o.properties?.[_]?.raw||"<>").match(/<(\d+)>/);return r?Number(r[1]):void 0}function n(o,_){for(const e of _.labels)o[`&${e}`]=_;return o}function S(o,_){const e=(o.properties.bindings?.parsed||[]).map((o=>o.value)),r=e.map((o=>_[o]?.properties?.compatible?.parsed))||[],t=A(e,_,r.indexOf("zmk,macro-param-1to1")),l=A(e,_,r.indexOf("zmk,macro-param-1to2")),E=[];if(t?E.push([t,0]):l?E.push([l,1]):E.push(["&none",0]),"zmk,behavior-macro-two-param"===o.properties.compatible.parsed){const o=A(e,_,r.indexOf("zmk,macro-param-2to1")),t=A(e,_,r.indexOf("zmk,macro-param-2to2"));o?E.push([o,0]):t?E.push([t,1]):E.push(["&none",0])}return E}function A(o,_,e=0){if(-1===e)return null;for(let r=Math.min(e,o.length-1);r`&${o}`)),e=o.properties.compatible?.parsed;for(const o of _)if(a[o])return a[o];if(c[e])return c[e]}(o);if(I)return I.params;const u=o.properties?.compatible?.parsed,w=(t[u],i(o)??i(o,"#sensor-binding-cells")),x=function(o,_,e){return function(o){return["zmk,behavior-macro-one-param","zmk,behavior-macro-two-param"].includes(o.properties?.compatible?.parsed)}(o)?S(o,e):(o.properties?.bindings?.parsed||[]).map((o=>[o,0]))}(o,0,E);return w?x.length?x.reduce(((r,[t,E])=>{if(!t.startsWith("&"))return r;if(l.includes(t))throw new s(`Circular reference in bindings: "&${o.labels[0]}" -> "${t}".`);if(l.length>3)throw new s("Reference depth limit exceeded.");const a=e[t]||_[t];if(!a)return o.error=`Unrecognized behavior binding "${t}".`,[...r,{raw:!0}];try{const o=y(a,[...l,t]);for(const _ of a.labels)A[`&${_}`]=o;r.push(o[E]||{type:"placeholder"})}catch(o){throw o instanceof s&&(a.error=o.message,A[t]=[]),o}return r}),[]):r(w,(()=>({type:"string",raw:!0}))):[]}for(const _ of o)try{const o=y(_);for(const e of _.labels)A[`&${e}`]=o}catch(o){if(!(o instanceof s))throw o;console.error("Failed to resolve behavior parameters",o),_.error=o.message;const e=r(i(_)||0,(()=>({raw:!0})));for(const o of _.labels)A[`&${o}`]=e}return A},getParameterizedMacroDependencies:S}},34886:function(o,_,e){"use strict";o.exports=e.p+"2f0cf3405ab1202f0045.wasm"},98553:function(o){"use strict";o.exports=JSON.parse('{"a_dux":{"id":"a_dux","name":"A. Dux"},"bat43":{"id":"bat43","name":"BAT43"},"bdn9_rev2":{"id":"bdn9_rev2","name":"BDN9 Rev2"},"bfo9000":{"id":"bfo9000","name":"BFO-9000"},"boardsource3x4":{"id":"boardsource3x4","name":"Boardsource 3x4 Macropad"},"boardsource5x12":{"id":"boardsource5x12","name":"Boardsource 5x12"},"bt60_v1":{"id":"bt60_v1","name":"BT60 V1 Soldered"},"bt60_v1_hs":{"id":"bt60_v1_hs","name":"BT60 V1 Hotswap"},"bt60_v2":{"id":"bt60_v2","name":"BT60 V2"},"bt65_v1":{"id":"bt65_v1","name":"BT65"},"bt75_v1":{"id":"bt75_v1","name":"BT75_V1"},"chalice":{"id":"chalice","name":"Chalice"},"clog":{"id":"clog","name":"Clog"},"contra":{"id":"contra","name":"Contra"},"corne":{"id":"corne","name":"Corne"},"corneish_zen":{"id":"corneish_zen","name":"Corneish Zen v2"},"cradio":{"id":"cradio","name":"Cradio/Sweep"},"crbn":{"id":"crbn","name":"CRBN Featherlight"},"eek":{"id":"eek","name":"eek!"},"elephant42":{"id":"elephant42","name":"Elephant42"},"ergodash":{"id":"ergodash","name":"Ergodash"},"eternal_keypad":{"id":"eternal_keypad","name":"Eternal Keypad"},"eternal_keypad_lefty":{"id":"eternal_keypad_lefty","name":"Eternal Keypad Lefty"},"ferris_rev02":{"id":"ferris_rev02","name":"Ferris 0.2"},"fourier":{"id":"fourier","name":"Fourier Rev. 1"},"helix":{"id":"helix","name":"Helix"},"hummingbird":{"id":"hummingbird","name":"Hummingbird"},"iris":{"id":"iris","name":"Iris"},"jian":{"id":"jian","name":"Jian"},"jiran":{"id":"jiran","name":"Jiran"},"jorne":{"id":"jorne","name":"Jorne"},"kbdfans_tofu65_v2":{"id":"kbdfans_tofu65_v2","name":"KBDfans Tofu65 2.0"},"knob_goblin":{"id":"knob_goblin","name":"Knob Goblin"},"kyria":{"id":"kyria","name":"Kyria"},"kyria_rev2":{"id":"kyria_rev2","name":"Kyria Rev2"},"kyria_rev3":{"id":"kyria_rev3","name":"Kyria Rev3"},"leeloo":{"id":"leeloo","name":"Leeloo"},"lily58":{"id":"lily58","name":"Lily58"},"lotus58":{"id":"lotus58","name":"Lotus58"},"m60":{"id":"m60","name":"MakerDiary m60"},"microdox":{"id":"microdox","name":"Microdox"},"murphpad":{"id":"murphpad","name":"MurphPad"},"naked60":{"id":"naked60","name":"Naked60"},"nibble":{"id":"nibble","name":"Nibble"},"nice60":{"id":"nice60","name":"nice!60"},"osprette":{"id":"osprette","name":"Osprette"},"pancake":{"id":"pancake","name":"Pancake"},"planck_rev6":{"id":"planck_rev6","name":"Planck Rev6"},"preonic_rev3":{"id":"preonic_rev3","name":"Preonic Rev3"},"qaz":{"id":"qaz","name":"QAZ"},"quefrency":{"id":"quefrency","name":"Quefrency Rev. 1"},"redox":{"id":"redox","name":"Redox"},"reviung41":{"id":"reviung41","name":"REVIUNG41"},"reviung5":{"id":"reviung5","name":"REVIUNG5"},"romac":{"id":"romac","name":"Romac Macropad"},"romac_plus":{"id":"romac_plus","name":"Romac+ Macropad"},"s40nc":{"id":"s40nc","name":"S40NC"},"snap":{"id":"snap","name":"SNAP"},"sofle":{"id":"sofle","name":"Sofle"},"splitkb_aurora_corne":{"id":"splitkb_aurora_corne","name":"splitkb.com Aurora Corne"},"splitkb_aurora_lily58":{"id":"splitkb_aurora_lily58","name":"splitkb.com Aurora Lily58"},"splitkb_aurora_sweep":{"id":"splitkb_aurora_sweep","name":"splitkb.com Aurora Sweep"},"splitreus62":{"id":"splitreus62","name":"Splitreus62"},"tg4x":{"id":"tg4x","name":"TG4x"},"tidbit":{"id":"tidbit","name":"Tidbit Numpad"},"two_percent_milk":{"id":"two_percent_milk","name":"2% Milk"},"waterfowl":{"id":"waterfowl","name":"Waterfowl"},"zmk_uno":{"id":"zmk_uno","name":"ZMK Uno"},"zodiark":{"id":"zodiark","name":"Zodiark"}}')},73158:function(o){"use strict";o.exports=JSON.parse('{"id":"a_dux","name":"A. Dux","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},60888:function(o){"use strict";o.exports=JSON.parse('{"id":"bat43","name":"BAT43","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4}]}},"sensors":[]}')},94591:function(o){"use strict";o.exports=JSON.parse('{"id":"bdn9_rev2","name":"BDN9 Rev2","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2}]}},"sensors":[]}')},19684:function(o){"use strict";o.exports=JSON.parse('{"id":"bfo9000","name":"BFO-9000","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":16,"x":16,"y":0},{"row":0,"col":17,"x":17,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":1,"col":17,"x":17,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":2,"col":17,"x":17,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":3,"col":17,"x":17,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":16,"x":16,"y":4},{"row":4,"col":17,"x":17,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":2,"x":2,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":4,"x":4,"y":5},{"row":5,"col":5,"x":5,"y":5},{"row":5,"col":6,"x":6,"y":5},{"row":5,"col":7,"x":7,"y":5},{"row":5,"col":8,"x":8,"y":5},{"row":5,"col":9,"x":9,"y":5},{"row":5,"col":10,"x":10,"y":5},{"row":5,"col":11,"x":11,"y":5},{"row":5,"col":12,"x":12,"y":5},{"row":5,"col":13,"x":13,"y":5},{"row":5,"col":14,"x":14,"y":5},{"row":5,"col":15,"x":15,"y":5},{"row":5,"col":16,"x":16,"y":5},{"row":5,"col":17,"x":17,"y":5}]}},"sensors":[]}')},88602:function(o){"use strict";o.exports=JSON.parse('{"id":"boardsource3x4","name":"Boardsource 3x4 Macropad","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2}]}},"sensors":[]}')},8058:function(o){"use strict";o.exports=JSON.parse('{"id":"boardsource5x12","name":"Boardsource 5x12","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]}},"sensors":[]}')},92628:function(o){"use strict";o.exports=JSON.parse('{"id":"bt60_v1","name":"BT60 V1 Soldered","layouts":{"ansi_transform":{"name":"ansi_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":13,"y":0,"w":2},{"row":1,"col":0,"x":0,"y":1,"w":1.5},{"row":1,"col":1,"x":1.5,"y":1},{"row":1,"col":2,"x":2.5,"y":1},{"row":1,"col":3,"x":3.5,"y":1},{"row":1,"col":4,"x":4.5,"y":1},{"row":1,"col":5,"x":5.5,"y":1},{"row":1,"col":6,"x":6.5,"y":1},{"row":1,"col":7,"x":7.5,"y":1},{"row":1,"col":8,"x":8.5,"y":1},{"row":1,"col":9,"x":9.5,"y":1},{"row":1,"col":10,"x":10.5,"y":1},{"row":1,"col":11,"x":11.5,"y":1},{"row":1,"col":12,"x":12.5,"y":1},{"row":1,"col":14,"x":13.5,"y":1,"w":1.5},{"row":2,"col":0,"x":0,"y":2,"w":1.75},{"row":2,"col":1,"x":1.75,"y":2},{"row":2,"col":2,"x":2.75,"y":2},{"row":2,"col":3,"x":3.75,"y":2},{"row":2,"col":4,"x":4.75,"y":2},{"row":2,"col":5,"x":5.75,"y":2},{"row":2,"col":6,"x":6.75,"y":2},{"row":2,"col":7,"x":7.75,"y":2},{"row":2,"col":8,"x":8.75,"y":2},{"row":2,"col":9,"x":9.75,"y":2},{"row":2,"col":10,"x":10.75,"y":2},{"row":2,"col":11,"x":11.75,"y":2},{"row":2,"col":14,"x":12.75,"y":2,"w":2.25},{"row":3,"col":0,"x":0,"y":3,"w":2.25},{"row":3,"col":2,"x":2.25,"y":3},{"row":3,"col":3,"x":3.25,"y":3},{"row":3,"col":4,"x":4.25,"y":3},{"row":3,"col":5,"x":5.25,"y":3},{"row":3,"col":6,"x":6.25,"y":3},{"row":3,"col":7,"x":7.25,"y":3},{"row":3,"col":8,"x":8.25,"y":3},{"row":3,"col":9,"x":9.25,"y":3},{"row":3,"col":10,"x":10.25,"y":3},{"row":3,"col":11,"x":11.25,"y":3},{"row":3,"col":14,"x":12.25,"y":3,"w":2.75},{"row":4,"col":0,"x":0,"y":4,"w":1.25},{"row":4,"col":1,"x":1.25,"y":4,"w":1.25},{"row":4,"col":3,"x":2.5,"y":4,"w":1.25},{"row":4,"col":6,"x":3.75,"y":4,"w":6.5},{"row":4,"col":10,"x":10.25,"y":4},{"row":4,"col":11,"x":11.25,"y":4,"w":1.25},{"row":4,"col":12,"x":12.5,"y":4,"w":1.25},{"row":4,"col":14,"x":13.75,"y":4,"w":1.25},{"row":4,"col":15,"x":15,"y":4}]},"hhkb_transform":{"name":"hhkb_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]},"iso_transform":{"name":"iso_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]},"all_1u_transform":{"name":"all_1u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]},"split_transform":{"name":"split_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":true}]}')},84628:function(o){"use strict";o.exports=JSON.parse('{"id":"bt60_v1_hs","name":"BT60 V1 Hotswap","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":true}]}')},9417:function(o){"use strict";o.exports=JSON.parse('{"id":"bt60_v2","name":"BT60 V2","layouts":{"ansi_transform":{"name":"ansi_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4}]},"iso_transform":{"name":"iso_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4}]},"all_1u_transform":{"name":"all_1u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4}]},"hhkb_transform":{"name":"hhkb_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4}]}},"sensors":[{"ref":"encoder_1","name":"encoder_1","identifier":"encoder_1","compatible":"alps,ec11","label":"ENCODER_ONE","enabled":true}]}')},88455:function(o){"use strict";o.exports=JSON.parse('{"id":"bt65_v1","name":"BT65","layouts":{"ansi_transform":{"name":"ansi_transform","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0,"w":2},{"row":0,"col":14,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1,"w":1.5},{"row":1,"col":1,"x":1.5,"y":1},{"row":1,"col":2,"x":2.5,"y":1},{"row":1,"col":3,"x":3.5,"y":1},{"row":1,"col":4,"x":4.5,"y":1},{"row":1,"col":5,"x":5.5,"y":1},{"row":1,"col":6,"x":6.5,"y":1},{"row":1,"col":7,"x":7.5,"y":1},{"row":1,"col":8,"x":8.5,"y":1},{"row":1,"col":9,"x":9.5,"y":1},{"row":1,"col":10,"x":10.5,"y":1},{"row":1,"col":11,"x":11.5,"y":1},{"row":1,"col":12,"x":12.5,"y":1},{"row":1,"col":13,"x":13.5,"y":1,"w":1.5},{"row":1,"col":14,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2,"w":1.75},{"row":2,"col":1,"x":1.75,"y":2},{"row":2,"col":2,"x":2.75,"y":2},{"row":2,"col":3,"x":3.75,"y":2},{"row":2,"col":4,"x":4.75,"y":2},{"row":2,"col":5,"x":5.75,"y":2},{"row":2,"col":6,"x":6.75,"y":2},{"row":2,"col":7,"x":7.75,"y":2},{"row":2,"col":8,"x":8.75,"y":2},{"row":2,"col":9,"x":9.75,"y":2},{"row":2,"col":10,"x":10.75,"y":2},{"row":2,"col":11,"x":11.75,"y":2},{"row":2,"col":12,"x":12.75,"y":2,"w":2.25},{"row":2,"col":14,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3,"w":2.25},{"row":3,"col":1,"x":2.25,"y":3},{"row":3,"col":2,"x":3.25,"y":3},{"row":3,"col":3,"x":4.25,"y":3},{"row":3,"col":4,"x":5.25,"y":3},{"row":3,"col":5,"x":6.25,"y":3},{"row":3,"col":6,"x":7.25,"y":3},{"row":3,"col":7,"x":8.25,"y":3},{"row":3,"col":8,"x":9.25,"y":3},{"row":3,"col":9,"x":10.25,"y":3},{"row":3,"col":10,"x":11.25,"y":3},{"row":3,"col":11,"x":12.25,"y":3,"w":1.75},{"row":3,"col":13,"x":14,"y":3},{"row":3,"col":14,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4,"w":1.25},{"row":4,"col":1,"x":1.25,"y":4,"w":1.25},{"row":4,"col":2,"x":2.5,"y":4,"w":1.25},{"row":4,"col":6,"x":3.75,"y":4,"w":6.25},{"row":4,"col":8,"x":10,"y":4},{"row":4,"col":9,"x":11,"y":4},{"row":4,"col":10,"x":12,"y":4},{"row":4,"col":12,"x":13,"y":4},{"row":4,"col":13,"x":14,"y":4},{"row":4,"col":14,"x":15,"y":4}]},"iso_transform":{"name":"iso_transform","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0,"w":2},{"row":0,"col":14,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1,"w":1.5},{"row":1,"col":1,"x":1.5,"y":1},{"row":1,"col":2,"x":2.5,"y":1},{"row":1,"col":3,"x":3.5,"y":1},{"row":1,"col":4,"x":4.5,"y":1},{"row":1,"col":5,"x":5.5,"y":1},{"row":1,"col":6,"x":6.5,"y":1},{"row":1,"col":7,"x":7.5,"y":1},{"row":1,"col":8,"x":8.5,"y":1},{"row":1,"col":9,"x":9.5,"y":1},{"row":1,"col":10,"x":10.5,"y":1},{"row":1,"col":11,"x":11.5,"y":1},{"row":1,"col":12,"x":12.5,"y":1},{"row":1,"col":14,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2,"w":1.75},{"row":2,"col":1,"x":1.75,"y":2},{"row":2,"col":2,"x":2.75,"y":2},{"row":2,"col":3,"x":3.75,"y":2},{"row":2,"col":4,"x":4.75,"y":2},{"row":2,"col":5,"x":5.75,"y":2},{"row":2,"col":6,"x":6.75,"y":2},{"row":2,"col":7,"x":7.75,"y":2},{"row":2,"col":8,"x":8.75,"y":2},{"row":2,"col":9,"x":9.75,"y":2},{"row":2,"col":10,"x":10.75,"y":2},{"row":2,"col":11,"x":11.75,"y":2},{"row":2,"col":12,"x":12.75,"y":2},{"row":2,"col":13,"x":13.75,"y":1,"w":1.25,"h":2},{"row":2,"col":14,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3,"w":1.25},{"row":3,"col":1,"x":1.25,"y":3},{"row":3,"col":2,"x":2.25,"y":3},{"row":3,"col":3,"x":3.25,"y":3},{"row":3,"col":4,"x":4.25,"y":3},{"row":3,"col":5,"x":5.25,"y":3},{"row":3,"col":6,"x":6.25,"y":3},{"row":3,"col":7,"x":7.25,"y":3},{"row":3,"col":8,"x":8.25,"y":3},{"row":3,"col":9,"x":9.25,"y":3},{"row":3,"col":10,"x":10.25,"y":3},{"row":3,"col":11,"x":11.25,"y":3},{"row":3,"col":12,"x":12.25,"y":3,"w":1.75},{"row":3,"col":13,"x":14,"y":3},{"row":3,"col":14,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4,"w":1.25},{"row":4,"col":1,"x":1.25,"y":4,"w":1.25},{"row":4,"col":2,"x":2.5,"y":4,"w":1.25},{"row":4,"col":6,"x":3.75,"y":4,"w":6.25},{"row":4,"col":9,"x":10,"y":4},{"row":4,"col":10,"x":11,"y":4},{"row":4,"col":11,"x":12,"y":4},{"row":4,"col":12,"x":13,"y":4},{"row":4,"col":13,"x":14,"y":4},{"row":4,"col":14,"x":15,"y":4}]},"all_1u_transform":{"name":"all_1u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":16,"x":16,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":16,"x":16,"y":4}]},"hhkb_transform":{"name":"hhkb_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":18,"x":18,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":17,"x":17,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":17,"x":17,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":17,"x":17,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":17,"x":17,"y":4}]}},"sensors":[{"ref":"encoder_1","name":"encoder_1","identifier":"encoder_1","compatible":"alps,ec11","label":"ENCODER_ONE","enabled":true}]}')},25397:function(o){"use strict";o.exports=JSON.parse('{"id":"bt75_v1","name":"BT75_V1","layouts":{"ansi_transform":{"name":"ansi_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":16,"x":16,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":16,"x":16,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":6,"x":6,"y":5},{"row":5,"col":10,"x":10,"y":5},{"row":5,"col":11,"x":11,"y":5},{"row":5,"col":12,"x":12,"y":5},{"row":5,"col":13,"x":13,"y":5},{"row":5,"col":14,"x":14,"y":5},{"row":5,"col":16,"x":16,"y":5}]},"iso_transform":{"name":"iso_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":17,"x":17,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":17,"x":17,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":17,"x":17,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":17,"x":17,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":17,"x":17,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":7,"x":7,"y":5},{"row":5,"col":11,"x":11,"y":5},{"row":5,"col":12,"x":12,"y":5},{"row":5,"col":13,"x":13,"y":5},{"row":5,"col":14,"x":14,"y":5},{"row":5,"col":15,"x":15,"y":5},{"row":5,"col":17,"x":17,"y":5}]},"all_1u_transform":{"name":"all_1u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":17,"x":17,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":17,"x":17,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":17,"x":17,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":17,"x":17,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":17,"x":17,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":7,"x":7,"y":5},{"row":5,"col":11,"x":11,"y":5},{"row":5,"col":12,"x":12,"y":5},{"row":5,"col":13,"x":13,"y":5},{"row":5,"col":14,"x":14,"y":5},{"row":5,"col":15,"x":15,"y":5},{"row":5,"col":17,"x":17,"y":5}]}},"sensors":[{"ref":"encoder_1","name":"encoder_1","identifier":"encoder_1","compatible":"alps,ec11","label":"ENCODER_ONE","enabled":true}]}')},7936:function(o){"use strict";o.exports=JSON.parse('{"id":"chalice","name":"Chalice","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4}]},"splitbs_transform":{"name":"splitbs_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4}]}},"sensors":[]}')},31638:function(o){"use strict";o.exports=JSON.parse('{"id":"clog","name":"Clog","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3}]}},"sensors":[]}')},42718:function(o){"use strict";o.exports=JSON.parse('{"id":"contra","name":"Contra","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[]}')},26453:function(o){"use strict";o.exports=JSON.parse('{"id":"corne","name":"Corne","layouts":{"default_transform":{"name":"default_transform","layout":[{"label":"Tab","row":0,"col":0,"x":0,"y":0.36},{"label":"Q","row":0,"col":1,"x":1,"y":0.36},{"label":"W","row":0,"col":2,"x":2,"y":0.11},{"label":"E","row":0,"col":3,"x":3,"y":-0.015},{"label":"R","row":0,"col":4,"x":4,"y":0.11},{"label":"T","row":0,"col":5,"x":5,"y":0.235},{"label":"Y","row":0,"col":7,"x":9,"y":0.235},{"label":"U","row":0,"col":8,"x":10,"y":0.11},{"label":"I","row":0,"col":9,"x":11,"y":-0.015},{"label":"O","row":0,"col":10,"x":12,"y":0.11},{"label":"P","row":0,"col":11,"x":13,"y":0.36},{"label":"BSPC","row":0,"col":12,"x":14,"y":0.36},{"label":"Ctrl","row":1,"col":0,"x":0,"y":1.36},{"label":"A","row":1,"col":1,"x":1,"y":1.36},{"label":"S","row":1,"col":2,"x":2,"y":1.11},{"label":"D","row":1,"col":3,"x":3,"y":0.985},{"label":"F","row":1,"col":4,"x":4,"y":1.11},{"label":"G","row":1,"col":5,"x":5,"y":1.235},{"label":"H","row":1,"col":7,"x":9,"y":1.235},{"label":"J","row":1,"col":8,"x":10,"y":1.11},{"label":"K","row":1,"col":9,"x":11,"y":0.985},{"label":"L","row":1,"col":10,"x":12,"y":1.11},{"label":";","row":1,"col":11,"x":13,"y":1.36},{"label":"\'","row":1,"col":12,"x":14,"y":1.36},{"label":"LShift","row":2,"col":0,"x":0,"y":2.36},{"label":"Z","row":2,"col":1,"x":1,"y":2.36},{"label":"X","row":2,"col":2,"x":2,"y":2.11},{"label":"C","row":2,"col":3,"x":3,"y":1.985},{"label":"V","row":2,"col":4,"x":4,"y":2.11},{"label":"B","row":2,"col":5,"x":5,"y":2.235},{"label":"N","row":2,"col":7,"x":9,"y":2.235},{"label":"M","row":2,"col":8,"x":10,"y":2.11},{"label":",","row":2,"col":9,"x":11,"y":1.985},{"label":".","row":2,"col":10,"x":12,"y":2.11},{"label":"/","row":2,"col":11,"x":13,"y":2.36},{"label":"Esc","row":2,"col":12,"x":14,"y":2.36},{"label":"GUI","row":3,"col":3,"x":3.48,"y":3.13,"r":0},{"label":"LWR","row":3,"col":4,"x":3.48,"y":3.13,"r":15,"rx":3.98,"ry":7.63},{"label":"SPC","row":3,"col":5,"x":3.48,"y":2.63,"r":30,"rx":3.98,"ry":7.63,"h":1.5},{"label":"ENT","row":3,"col":7,"x":10.52,"y":2.63,"r":-30,"rx":11.02,"ry":7.63,"h":1.5},{"label":"RSE","row":3,"col":8,"x":10.52,"y":3.13,"r":-15,"rx":11.02,"ry":7.63},{"label":"ALT","row":3,"col":9,"x":10.52,"y":3.13}]},"five_column_transform":{"name":"five_column_transform","layout":[{"label":"Q","row":0,"col":1,"x":1,"y":0.36},{"label":"W","row":0,"col":2,"x":2,"y":0.11},{"label":"E","row":0,"col":3,"x":3,"y":-0.015},{"label":"R","row":0,"col":4,"x":4,"y":0.11},{"label":"T","row":0,"col":5,"x":5,"y":0.235},{"label":"Y","row":0,"col":7,"x":9,"y":0.235},{"label":"U","row":0,"col":8,"x":10,"y":0.11},{"label":"I","row":0,"col":9,"x":11,"y":-0.015},{"label":"O","row":0,"col":10,"x":12,"y":0.11},{"label":"P","row":0,"col":11,"x":13,"y":0.36},{"label":"A","row":1,"col":1,"x":1,"y":1.36},{"label":"S","row":1,"col":2,"x":2,"y":1.11},{"label":"D","row":1,"col":3,"x":3,"y":0.985},{"label":"F","row":1,"col":4,"x":4,"y":1.11},{"label":"G","row":1,"col":5,"x":5,"y":1.235},{"label":"H","row":1,"col":7,"x":9,"y":1.235},{"label":"J","row":1,"col":8,"x":10,"y":1.11},{"label":"K","row":1,"col":9,"x":11,"y":0.985},{"label":"L","row":1,"col":10,"x":12,"y":1.11},{"label":";","row":1,"col":11,"x":13,"y":1.36},{"label":"Z","row":2,"col":1,"x":1,"y":2.36},{"label":"X","row":2,"col":2,"x":2,"y":2.11},{"label":"C","row":2,"col":3,"x":3,"y":1.985},{"label":"V","row":2,"col":4,"x":4,"y":2.11},{"label":"B","row":2,"col":5,"x":5,"y":2.235},{"label":"N","row":2,"col":7,"x":9,"y":2.235},{"label":"M","row":2,"col":8,"x":10,"y":2.11},{"label":",","row":2,"col":9,"x":11,"y":1.985},{"label":".","row":2,"col":10,"x":12,"y":2.11},{"label":"/","row":2,"col":11,"x":13,"y":2.36},{"label":"GUI","row":3,"col":3,"x":3.48,"y":3.13,"r":0},{"label":"LWR","row":3,"col":4,"x":3.48,"y":3.13,"r":15,"rx":3.98,"ry":7.63},{"label":"SPC","row":3,"col":5,"x":3.48,"y":2.63,"r":30,"rx":3.98,"ry":7.63,"h":1.5},{"label":"ENT","row":3,"col":7,"x":10.52,"y":2.63,"r":-30,"rx":11.02,"ry":7.63,"h":1.5},{"label":"RSE","row":3,"col":8,"x":10.52,"y":3.13,"r":-15,"rx":11.02,"ry":7.63},{"label":"ALT","row":3,"col":9,"x":10.52,"y":3.13}]}},"sensors":[]}')},39757:function(o){"use strict";o.exports=JSON.parse('{"id":"corneish_zen","name":"Corneish Zen v2","layouts":{"default_transform":{"name":"default_transform","layout":[{"label":"Tab","row":0,"col":0,"x":0,"y":0.36},{"label":"Q","row":0,"col":1,"x":1,"y":0.36},{"label":"W","row":0,"col":2,"x":2,"y":0.11},{"label":"E","row":0,"col":3,"x":3,"y":-0.015},{"label":"R","row":0,"col":4,"x":4,"y":0.11},{"label":"T","row":0,"col":5,"x":5,"y":0.235},{"label":"Y","row":0,"col":7,"x":9,"y":0.235},{"label":"U","row":0,"col":8,"x":10,"y":0.11},{"label":"I","row":0,"col":9,"x":11,"y":-0.015},{"label":"O","row":0,"col":10,"x":12,"y":0.11},{"label":"P","row":0,"col":11,"x":13,"y":0.36},{"label":"BSPC","row":0,"col":12,"x":14,"y":0.36},{"label":"Ctrl","row":1,"col":0,"x":0,"y":1.36},{"label":"A","row":1,"col":1,"x":1,"y":1.36},{"label":"S","row":1,"col":2,"x":2,"y":1.11},{"label":"D","row":1,"col":3,"x":3,"y":0.985},{"label":"F","row":1,"col":4,"x":4,"y":1.11},{"label":"G","row":1,"col":5,"x":5,"y":1.235},{"label":"H","row":1,"col":7,"x":9,"y":1.235},{"label":"J","row":1,"col":8,"x":10,"y":1.11},{"label":"K","row":1,"col":9,"x":11,"y":0.985},{"label":"L","row":1,"col":10,"x":12,"y":1.11},{"label":";","row":1,"col":11,"x":13,"y":1.36},{"label":"\'","row":1,"col":12,"x":14,"y":1.36},{"label":"LShift","row":2,"col":0,"x":0,"y":2.36},{"label":"Z","row":2,"col":1,"x":1,"y":2.36},{"label":"X","row":2,"col":2,"x":2,"y":2.11},{"label":"C","row":2,"col":3,"x":3,"y":1.985},{"label":"V","row":2,"col":4,"x":4,"y":2.11},{"label":"B","row":2,"col":5,"x":5,"y":2.235},{"label":"N","row":2,"col":7,"x":9,"y":2.235},{"label":"M","row":2,"col":8,"x":10,"y":2.11},{"label":",","row":2,"col":9,"x":11,"y":1.985},{"label":".","row":2,"col":10,"x":12,"y":2.11},{"label":"/","row":2,"col":11,"x":13,"y":2.36},{"label":"Esc","row":2,"col":12,"x":14,"y":2.36},{"label":"GUI","row":3,"col":3,"x":3.48,"y":3.13,"r":0},{"label":"LWR","row":3,"col":4,"x":3.48,"y":3.13,"r":15,"rx":3.98,"ry":7.63},{"label":"SPC","row":3,"col":5,"x":3.48,"y":2.63,"r":30,"rx":3.98,"ry":7.63,"h":1.5},{"label":"ENT","row":3,"col":7,"x":10.52,"y":2.63,"r":-30,"rx":11.02,"ry":7.63,"h":1.5},{"label":"RSE","row":3,"col":8,"x":10.52,"y":3.13,"r":-15,"rx":11.02,"ry":7.63},{"label":"ALT","row":3,"col":9,"x":10.52,"y":3.13}]},"five_column_transform":{"name":"five_column_transform","layout":[{"label":"Q","row":0,"col":1,"x":1,"y":0.36},{"label":"W","row":0,"col":2,"x":2,"y":0.11},{"label":"E","row":0,"col":3,"x":3,"y":-0.015},{"label":"R","row":0,"col":4,"x":4,"y":0.11},{"label":"T","row":0,"col":5,"x":5,"y":0.235},{"label":"Y","row":0,"col":7,"x":9,"y":0.235},{"label":"U","row":0,"col":8,"x":10,"y":0.11},{"label":"I","row":0,"col":9,"x":11,"y":-0.015},{"label":"O","row":0,"col":10,"x":12,"y":0.11},{"label":"P","row":0,"col":11,"x":13,"y":0.36},{"label":"A","row":1,"col":1,"x":1,"y":1.36},{"label":"S","row":1,"col":2,"x":2,"y":1.11},{"label":"D","row":1,"col":3,"x":3,"y":0.985},{"label":"F","row":1,"col":4,"x":4,"y":1.11},{"label":"G","row":1,"col":5,"x":5,"y":1.235},{"label":"H","row":1,"col":7,"x":9,"y":1.235},{"label":"J","row":1,"col":8,"x":10,"y":1.11},{"label":"K","row":1,"col":9,"x":11,"y":0.985},{"label":"L","row":1,"col":10,"x":12,"y":1.11},{"label":";","row":1,"col":11,"x":13,"y":1.36},{"label":"Z","row":2,"col":1,"x":1,"y":2.36},{"label":"X","row":2,"col":2,"x":2,"y":2.11},{"label":"C","row":2,"col":3,"x":3,"y":1.985},{"label":"V","row":2,"col":4,"x":4,"y":2.11},{"label":"B","row":2,"col":5,"x":5,"y":2.235},{"label":"N","row":2,"col":7,"x":9,"y":2.235},{"label":"M","row":2,"col":8,"x":10,"y":2.11},{"label":",","row":2,"col":9,"x":11,"y":1.985},{"label":".","row":2,"col":10,"x":12,"y":2.11},{"label":"/","row":2,"col":11,"x":13,"y":2.36},{"label":"GUI","row":3,"col":3,"x":3.48,"y":3.13,"r":0},{"label":"LWR","row":3,"col":4,"x":3.48,"y":3.13,"r":15,"rx":3.98,"ry":7.63},{"label":"SPC","row":3,"col":5,"x":3.48,"y":2.63,"r":30,"rx":3.98,"ry":7.63,"h":1.5},{"label":"ENT","row":3,"col":7,"x":10.52,"y":2.63,"r":-30,"rx":11.02,"ry":7.63,"h":1.5},{"label":"RSE","row":3,"col":8,"x":10.52,"y":3.13,"r":-15,"rx":11.02,"ry":7.63},{"label":"ALT","row":3,"col":9,"x":10.52,"y":3.13}]}},"sensors":[]}')},62089:function(o){"use strict";o.exports=JSON.parse('{"id":"cradio","name":"Cradio/Sweep","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},48945:function(o){"use strict";o.exports=JSON.parse('{"id":"crbn","name":"CRBN Featherlight","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[{"ref":"encoder","name":"encoder","identifier":"encoder","compatible":"alps,ec11","label":"ENCODER","enabled":true}]}')},63072:function(o){"use strict";o.exports=JSON.parse('{"id":"eek","name":"eek!","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},83634:function(o){"use strict";o.exports=JSON.parse('{"id":"elephant42","name":"Elephant42","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3}]}},"sensors":[]}')},68972:function(o){"use strict";o.exports=JSON.parse('{"id":"ergodash","name":"Ergodash","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4}]}},"sensors":[]}')},75507:function(o){"use strict";o.exports=JSON.parse('{"id":"ergodox","name":"Ergodox","layouts":{"default_layout":{"layout":[{"label":"Esc","row":0,"col":0,"x":0,"y":0.33,"w":1.5},{"label":"1","row":0,"col":1,"x":1.5,"y":0.33},{"label":"2","row":0,"col":2,"x":2.5,"y":0.12},{"label":"3","row":0,"col":3,"x":3.5,"y":0},{"label":"4","row":0,"col":4,"x":4.5,"y":0.12},{"label":"5","row":0,"col":5,"x":5.5,"y":0.2},{"label":" ","row":0,"col":6,"x":6.5,"y":0.2},{"label":" ","row":0,"col":8,"x":12.5,"y":0.2},{"label":"6","row":0,"col":9,"x":13.5,"y":0.2},{"label":"7","row":0,"col":10,"x":14.5,"y":0.12},{"label":"8","row":0,"col":11,"x":15.5,"y":0},{"label":"9","row":0,"col":12,"x":16.5,"y":0.12},{"label":"0","row":0,"col":13,"x":17.5,"y":0.33},{"label":"-","row":0,"col":14,"x":18.5,"y":0.33,"w":1.5},{"label":"Tab","row":1,"col":0,"x":0,"y":1.33,"w":1.5},{"label":"Q","row":1,"col":1,"x":1.5,"y":1.33},{"label":"W","row":1,"col":2,"x":2.5,"y":1.12},{"label":"E","row":1,"col":3,"x":3.5,"y":1},{"label":"R","row":1,"col":4,"x":4.5,"y":1.12},{"label":"T","row":1,"col":5,"x":5.5,"y":1.2},{"label":" ","row":1,"col":6,"x":6.5,"y":1.2,"h":1.5},{"label":" ","row":1,"col":8,"x":12.5,"y":1.2,"h":1.5},{"label":"Y","row":1,"col":9,"x":13.5,"y":1.2},{"label":"U","row":1,"col":10,"x":14.5,"y":1.12},{"label":"I","row":1,"col":11,"x":15.5,"y":1},{"label":"O","row":1,"col":12,"x":16.5,"y":1.12},{"label":"P","row":1,"col":13,"x":17.5,"y":1.33},{"label":"\\\\","row":1,"col":14,"x":18.5,"y":1.33,"w":1.5},{"label":"Caps","row":2,"col":0,"x":0,"y":2.33,"w":1.5},{"label":"A","row":2,"col":1,"x":1.5,"y":2.33},{"label":"S","row":2,"col":2,"x":2.5,"y":2.12},{"label":"D","row":2,"col":3,"x":3.5,"y":2},{"label":"F","row":2,"col":4,"x":4.5,"y":2.12},{"label":"G","row":2,"col":5,"x":5.5,"y":2.2},{"label":"H","row":2,"col":9,"x":13.5,"y":2.2},{"label":"J","row":2,"col":10,"x":14.5,"y":2.12},{"label":"K","row":2,"col":11,"x":15.5,"y":2},{"label":"L","row":2,"col":12,"x":16.5,"y":2.12},{"label":";","row":2,"col":13,"x":17.5,"y":2.33},{"label":"\'","row":2,"col":14,"x":18.5,"y":2.33,"w":1.5},{"label":"LShift","row":3,"col":0,"x":0,"y":3.33,"w":1.5},{"label":"Z","row":3,"col":1,"x":1.5,"y":3.33},{"label":"X","row":3,"col":2,"x":2.5,"y":3.12},{"label":"C","row":3,"col":3,"x":3.5,"y":3},{"label":"V","row":3,"col":4,"x":4.5,"y":3.12},{"label":"B","row":3,"col":5,"x":5.5,"y":3.2},{"label":" ","row":3,"col":6,"x":6.5,"y":2.7,"h":1.5},{"label":" ","row":3,"col":8,"x":12.5,"y":2.7,"h":1.5},{"label":"N","row":3,"col":9,"x":13.5,"y":3.2},{"label":"M","row":3,"col":10,"x":14.5,"y":3.12},{"label":",","row":3,"col":11,"x":15.5,"y":3},{"label":".","row":3,"col":12,"x":16.5,"y":3.12},{"label":"/","row":3,"col":13,"x":17.5,"y":3.33},{"label":"RShift","row":3,"col":14,"x":18.5,"y":3.33,"w":1.5},{"label":"LCtrl","row":4,"col":0,"x":0.5,"y":4.33},{"label":"LCtrl","row":4,"col":1,"x":1.5,"y":4.33},{"label":"LCtrl","row":4,"col":2,"x":2.5,"y":4.12},{"label":"Left Arrow","row":4,"col":3,"x":3.5,"y":4},{"label":"Right Arrow","row":4,"col":4,"x":4.5,"y":4.12},{"label":"Right Arrow","row":4,"col":10,"x":14.5,"y":4.12},{"label":"Left Arrow","row":4,"col":11,"x":15.5,"y":4},{"label":"LCtrl","row":4,"col":12,"x":16.5,"y":4.12},{"label":"LCtrl","row":4,"col":13,"x":17.5,"y":4.33},{"label":"LCtrl","row":4,"col":14,"x":18.5,"y":4.33},{"label":"LCtrl","row":5,"col":5,"x":7.5,"y":2.7,"r":25,"rx":5.5,"ry":3.7},{"label":"Backspace","row":5,"col":6,"x":8.5,"y":2.7,"r":25,"rx":5.5,"ry":3.7},{"label":"Backspace","row":5,"col":8,"x":10.5,"y":2.7,"r":-25,"rx":14.5,"ry":3.7},{"label":"LCtrl","row":5,"col":9,"x":11.5,"y":2.7,"r":-25,"rx":14.5,"ry":3.7},{"label":"LAlt","row":6,"col":4,"x":6.5,"y":3.7,"h":2,"r":25,"rx":5.5,"ry":3.7},{"label":"LCmd","row":6,"col":5,"x":7.5,"y":3.7,"h":2,"r":25,"rx":5.5,"ry":3.7},{"label":" ","row":6,"col":6,"x":8.5,"y":3.7,"r":25,"rx":5.5,"ry":3.7},{"label":" ","row":6,"col":8,"x":10.5,"y":3.7,"r":-25,"rx":14.5,"ry":3.7},{"label":"LCmd","row":6,"col":9,"x":11.5,"y":3.7,"h":2,"r":-25,"rx":14.5,"ry":3.7},{"label":"LAlt","row":6,"col":10,"x":12.5,"y":3.7,"h":2,"r":-25,"rx":14.5,"ry":3.7},{"label":" ","row":7,"col":6,"x":8.5,"y":4.7,"r":25,"rx":5.5,"ry":3.7},{"label":" ","row":7,"col":8,"x":10.5,"y":4.7,"r":-25,"rx":14.5,"ry":3.7}]}}}')},69416:function(o){"use strict";o.exports=JSON.parse('{"id":"eternal_keypad","name":"Eternal Keypad","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":7,"x":7,"y":4}]}},"sensors":[]}')},56785:function(o){"use strict";o.exports=JSON.parse('{"id":"eternal_keypad_lefty","name":"Eternal Keypad Lefty","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":7,"x":7,"y":4}]}},"sensors":[]}')},97365:function(o){"use strict";o.exports=JSON.parse('{"id":"ferris_rev02","name":"Ferris 0.2","layouts":{"transform":{"name":"transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},14446:function(o){"use strict";o.exports=JSON.parse('{"id":"fourier","name":"Fourier Rev. 1","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]}},"sensors":[]}')},73549:function(o){"use strict";o.exports=JSON.parse('{"id":"helix","name":"Helix","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4}]}},"sensors":[]}')},98321:function(o){"use strict";o.exports=JSON.parse('{"id":"hummingbird","name":"Hummingbird","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},55262:function(o){"use strict";o.exports=JSON.parse('{"id":"iris","name":"Iris","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4}]}},"sensors":[]}')},46228:function(o){"use strict";o.exports=JSON.parse('{"id":"jian","name":"Jian","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3}]},"crkbd_transform":{"name":"crkbd_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3}]},"five_column_transform":{"name":"five_column_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3}]}},"sensors":[]}')},14465:function(o){"use strict";o.exports=JSON.parse('{"id":"jiran","name":"Jiran","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4}]},"jian_transform":{"name":"jian_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3}]},"crkbd_transform":{"name":"crkbd_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3}]}},"sensors":[]}')},19151:function(o){"use strict";o.exports=JSON.parse('{"id":"jorne","name":"Jorne","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3}]},"crkbd_transform":{"name":"crkbd_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3}]},"five_column_transform":{"name":"five_column_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3}]}},"sensors":[]}')},7450:function(o){"use strict";o.exports=JSON.parse('{"id":"kbdfans_tofu65_v2","name":"KBDfans Tofu65 2.0","layouts":{"default_transform":{"name":"default_transform","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0,"w":2},{"row":0,"col":14,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1,"w":1.5},{"row":1,"col":1,"x":1.5,"y":1},{"row":1,"col":2,"x":2.5,"y":1},{"row":1,"col":3,"x":3.5,"y":1},{"row":1,"col":4,"x":4.5,"y":1},{"row":1,"col":5,"x":5.5,"y":1},{"row":1,"col":6,"x":6.5,"y":1},{"row":1,"col":7,"x":7.5,"y":1},{"row":1,"col":8,"x":8.5,"y":1},{"row":1,"col":9,"x":9.5,"y":1},{"row":1,"col":10,"x":10.5,"y":1},{"row":1,"col":11,"x":11.5,"y":1},{"row":1,"col":12,"x":12.5,"y":1},{"row":1,"col":13,"x":13.5,"y":1,"w":1.5},{"row":1,"col":14,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2,"w":1.75},{"row":2,"col":1,"x":1.75,"y":2},{"row":2,"col":2,"x":2.75,"y":2},{"row":2,"col":3,"x":3.75,"y":2},{"row":2,"col":4,"x":4.75,"y":2},{"row":2,"col":5,"x":5.75,"y":2},{"row":2,"col":6,"x":6.75,"y":2},{"row":2,"col":7,"x":7.75,"y":2},{"row":2,"col":8,"x":8.75,"y":2},{"row":2,"col":9,"x":9.75,"y":2},{"row":2,"col":10,"x":10.75,"y":2},{"row":2,"col":11,"x":11.75,"y":2},{"row":2,"col":12,"x":12.75,"y":2,"w":2.25},{"row":2,"col":14,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3,"w":2.25},{"row":3,"col":1,"x":2.25,"y":3},{"row":3,"col":2,"x":3.25,"y":3},{"row":3,"col":3,"x":4.25,"y":3},{"row":3,"col":4,"x":5.25,"y":3},{"row":3,"col":5,"x":6.25,"y":3},{"row":3,"col":6,"x":7.25,"y":3},{"row":3,"col":7,"x":8.25,"y":3},{"row":3,"col":8,"x":9.25,"y":3},{"row":3,"col":9,"x":10.25,"y":3},{"row":3,"col":10,"x":11.25,"y":3},{"row":3,"col":11,"x":12.25,"y":3,"w":1.75},{"row":3,"col":13,"x":14,"y":3},{"row":3,"col":14,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4,"w":1.25},{"row":4,"col":1,"x":1.25,"y":4,"w":1.25},{"row":4,"col":2,"x":2.5,"y":4,"w":1.25},{"row":4,"col":6,"x":3.75,"y":4,"w":6.25},{"row":4,"col":8,"x":10,"y":4},{"row":4,"col":9,"x":11,"y":4},{"row":4,"col":10,"x":12,"y":4},{"row":4,"col":12,"x":13,"y":4},{"row":4,"col":13,"x":14,"y":4},{"row":4,"col":14,"x":15,"y":4}]}},"sensors":[]}')},71497:function(o){"use strict";o.exports=JSON.parse('{"id":"knob_goblin","name":"Knob Goblin","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4}]}},"sensors":[{"ref":"top_encoder","name":"encoder_top","identifier":"encoder_top","compatible":"alps,ec11","label":"TOP_ENCODER","enabled":true},{"ref":"bottom_encoder","name":"encoder_bottom","identifier":"encoder_bottom","compatible":"alps,ec11","label":"BOTTOM_ENCODER","enabled":true}]}')},34458:function(o){"use strict";o.exports=JSON.parse('{"id":"kyria","name":"Kyria","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]},"five_column_transform":{"name":"five_column_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},70165:function(o){"use strict";o.exports=JSON.parse('{"id":"kyria_rev2","name":"Kyria Rev2","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]},"five_column_transform":{"name":"five_column_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},33669:function(o){"use strict";o.exports=JSON.parse('{"id":"kyria_rev3","name":"Kyria Rev3","layouts":[{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]}],"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},53677:function(o){"use strict";o.exports=JSON.parse('{"id":"leeloo","name":"Leeloo","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER"},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER"}]}')},21479:function(o){"use strict";o.exports=JSON.parse('{"id":"lily58","name":"Lily58","layouts":{"default_transform":{"name":"default_transform","layout":[{"row":0,"col":0,"x":1,"y":0.4},{"row":0,"col":1,"x":2,"y":0.33},{"row":0,"col":2,"x":3,"y":0.07},{"row":0,"col":3,"x":4,"y":0},{"row":0,"col":4,"x":5,"y":0.07},{"row":0,"col":5,"x":6,"y":0.2},{"row":0,"col":9,"x":10,"y":0.2},{"row":0,"col":10,"x":11,"y":0.07},{"row":0,"col":11,"x":12,"y":0},{"row":0,"col":12,"x":13,"y":0.07},{"row":0,"col":13,"x":14,"y":0.33},{"row":0,"col":14,"x":15,"y":0.4},{"row":1,"col":0,"x":1,"y":1.4},{"row":1,"col":1,"x":2,"y":1.32},{"row":1,"col":2,"x":3,"y":1.07},{"row":1,"col":3,"x":4,"y":1},{"row":1,"col":4,"x":5,"y":1.08},{"row":1,"col":5,"x":6,"y":1.2},{"row":1,"col":9,"x":10,"y":1.2},{"row":1,"col":10,"x":11,"y":1.08},{"row":1,"col":11,"x":12,"y":1},{"row":1,"col":12,"x":13,"y":1.07},{"row":1,"col":13,"x":14,"y":1.32},{"row":1,"col":14,"x":15,"y":1.4},{"row":2,"col":0,"x":1,"y":2.41},{"row":2,"col":1,"x":2,"y":2.33},{"row":2,"col":2,"x":3,"y":2.08},{"row":2,"col":3,"x":4,"y":2.01},{"row":2,"col":4,"x":5,"y":2.08},{"row":2,"col":5,"x":6,"y":2.2},{"row":2,"col":9,"x":10,"y":2.2},{"row":2,"col":10,"x":11,"y":2.08},{"row":2,"col":11,"x":12,"y":2.01},{"row":2,"col":12,"x":13,"y":2.08},{"row":2,"col":13,"x":14,"y":2.33},{"row":2,"col":14,"x":15,"y":2.41},{"row":3,"col":0,"x":1,"y":3.41},{"row":3,"col":1,"x":2,"y":3.33},{"row":3,"col":2,"x":3,"y":3.08},{"row":3,"col":3,"x":4,"y":3.01},{"row":3,"col":4,"x":5,"y":3.08},{"row":3,"col":5,"x":6,"y":3.2},{"row":3,"col":6,"x":7,"y":2.7},{"row":3,"col":8,"x":9,"y":2.7},{"row":3,"col":9,"x":10,"y":3.2},{"row":3,"col":10,"x":11,"y":3.08},{"row":3,"col":11,"x":12,"y":3.01},{"row":3,"col":12,"x":13,"y":3.08},{"row":3,"col":13,"x":14,"y":3.33},{"row":3,"col":14,"x":15,"y":3.41},{"row":4,"col":3,"x":3.49,"y":4.08},{"row":4,"col":4,"x":4.49,"y":4.08},{"row":4,"col":5,"x":5.49,"y":4.2},{"row":4,"col":6,"x":6.49,"y":3.7,"h":1.5,"r":30,"rx":6.49,"ry":5.2},{"row":4,"col":8,"x":9.51,"y":3.7,"h":1.5,"r":-30,"rx":10.51,"ry":5.2},{"row":4,"col":9,"x":10.51,"y":4.2},{"row":4,"col":10,"x":11.51,"y":4.08},{"row":4,"col":11,"x":12.51,"y":4.08}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER"}]}')},63918:function(o){"use strict";o.exports=JSON.parse('{"id":"lotus58","name":"Lotus58","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},53132:function(o){"use strict";o.exports=JSON.parse('{"id":"m60","name":"MakerDiary m60","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]}},"sensors":[]}')},56792:function(o){"use strict";o.exports=JSON.parse('{"id":"microdox","name":"Microdox","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3}]}},"sensors":[]}')},8662:function(o){"use strict";o.exports=JSON.parse('{"id":"murphpad","name":"MurphPad","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":2,"x":2,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":4,"x":4,"y":5}]}},"sensors":[]}')},79707:function(o){"use strict";o.exports=JSON.parse('{"id":"naked60","name":"Naked60","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]}},"sensors":[]}')},58244:function(o){"use strict";o.exports=JSON.parse('{"id":"nibble","name":"Nibble","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4}]}},"sensors":[]}')},41501:function(o){"use strict";o.exports=JSON.parse('{"id":"nice60","name":"nice!60","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":14,"x":14,"y":4}]}},"sensors":[]}')},13467:function(o){"use strict";o.exports=JSON.parse('{"id":"osprette","name":"Osprette","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},19011:function(o){"use strict";o.exports=JSON.parse('{"id":"pancake","name":"Pancake","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[]}')},55991:function(o){"use strict";o.exports=JSON.parse('{"id":"planck_rev6","name":"Planck Rev6","layouts":{"layout_grid_transform":{"name":"layout_grid_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]},"layout_mit_transform":{"name":"layout_mit_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]},"layout_2x2u_transform":{"name":"layout_2x2u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3}]}},"sensors":[]}')},47308:function(o){"use strict";o.exports=JSON.parse('{"id":"preonic_rev3","name":"Preonic Rev3","layouts":{"layout_grid_transform":{"name":"layout_grid_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]},"layout_mit_transform":{"name":"layout_mit_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4}]},"layout_2x2u_transform":{"name":"layout_2x2u_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]}},"sensors":[]}')},46923:function(o){"use strict";o.exports=JSON.parse('{"id":"qaz","name":"QAZ","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[]}')},23956:function(o){"use strict";o.exports=JSON.parse('{"id":"quefrency","name":"Quefrency Rev. 1","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":16,"x":16,"y":0},{"row":0,"col":17,"x":17,"y":0},{"row":0,"col":18,"x":18,"y":0},{"row":0,"col":20,"x":20,"y":0},{"row":0,"col":22,"x":22,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":1,"col":17,"x":17,"y":1},{"row":1,"col":18,"x":18,"y":1},{"row":1,"col":20,"x":20,"y":1},{"row":1,"col":21,"x":21,"y":1},{"row":1,"col":23,"x":23,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":2,"col":17,"x":17,"y":2},{"row":2,"col":18,"x":18,"y":2},{"row":2,"col":20,"x":20,"y":2},{"row":2,"col":22,"x":22,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":3,"col":17,"x":17,"y":3},{"row":3,"col":19,"x":19,"y":3},{"row":3,"col":21,"x":21,"y":3},{"row":3,"col":22,"x":22,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":16,"x":16,"y":4},{"row":4,"col":17,"x":17,"y":4},{"row":4,"col":18,"x":18,"y":4},{"row":4,"col":20,"x":20,"y":4},{"row":4,"col":22,"x":22,"y":4},{"row":4,"col":23,"x":23,"y":4}]}},"sensors":[]}')},17104:function(o){"use strict";o.exports=JSON.parse('{"id":"redox","name":"Redox","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4}]}},"sensors":[]}')},71414:function(o){"use strict";o.exports=JSON.parse('{"id":"reviung41","name":"REVIUNG41","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3}]}},"sensors":[]}')},31009:function(o){"use strict";o.exports=JSON.parse('{"id":"reviung5","name":"REVIUNG5","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0}]}},"sensors":[{"ref":"encoder","name":"encoder","identifier":"encoder","compatible":"alps,ec11","label":"encoder","enabled":true}]}')},15683:function(o){"use strict";o.exports=JSON.parse('{"id":"romac","name":"Romac Macropad","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3}]}},"sensors":[]}')},55318:function(o){"use strict";o.exports=JSON.parse('{"id":"romac_plus","name":"Romac+ Macropad","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false}]}')},56036:function(o){"use strict";o.exports=JSON.parse('{"id":"s40nc","name":"S40NC","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3}]}},"sensors":[]}')},24380:function(o){"use strict";o.exports=JSON.parse('{"id":"snap","name":"SNAP","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":16,"x":16,"y":4},{"row":5,"col":0,"x":0,"y":5},{"row":5,"col":1,"x":1,"y":5},{"row":5,"col":2,"x":2,"y":5},{"row":5,"col":3,"x":3,"y":5},{"row":5,"col":5,"x":5,"y":5},{"row":5,"col":7,"x":7,"y":5},{"row":5,"col":8,"x":8,"y":5},{"row":5,"col":11,"x":11,"y":5},{"row":5,"col":12,"x":12,"y":5},{"row":5,"col":13,"x":13,"y":5},{"row":5,"col":14,"x":14,"y":5},{"row":5,"col":15,"x":15,"y":5},{"row":5,"col":16,"x":16,"y":5}]}},"sensors":[]}')},45082:function(o){"use strict";o.exports=JSON.parse('{"id":"sofle","name":"Sofle","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},20216:function(o){"use strict";o.exports=JSON.parse('{"id":"splitkb_aurora_corne","name":"splitkb.com Aurora Corne","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3}]},"five_column_transform":{"name":"five_column_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3}]}},"sensors":[{"ref":"left_encoder","name":"left_encoder","identifier":"left_encoder","compatible":"alps,ec11","label":"L_ENCODER","enabled":false},{"ref":"right_encoder","name":"right_encoder","identifier":"right_encoder","compatible":"alps,ec11","label":"R_ENCODER","enabled":false}]}')},2674:function(o){"use strict";o.exports=JSON.parse('{"id":"splitkb_aurora_lily58","name":"splitkb.com Aurora Lily58","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"left_encoder","identifier":"left_encoder","compatible":"alps,ec11","label":"L_ENCODER","enabled":false},{"ref":"right_encoder","name":"right_encoder","identifier":"right_encoder","compatible":"alps,ec11","label":"R_ENCODER","enabled":false}]}')},9738:function(o){"use strict";o.exports=JSON.parse('{"id":"splitkb_aurora_sweep","name":"splitkb.com Aurora Sweep","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3}]}},"sensors":[{"ref":"left_encoder1","name":"left_encoder1","identifier":"left_encoder1","compatible":"alps,ec11","label":"L_ENCODER1","enabled":false},{"ref":"right_encoder1","name":"right_encoder1","identifier":"right_encoder1","compatible":"alps,ec11","label":"R_ENCODER1","enabled":false}]}')},47003:function(o){"use strict";o.exports=JSON.parse('{"id":"splitreus62","name":"Splitreus62","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":5,"x":5,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":8,"x":8,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":11,"x":11,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":5,"col":5,"x":5,"y":5},{"row":5,"col":7,"x":7,"y":5}]}},"sensors":[]}')},87454:function(o){"use strict";o.exports=JSON.parse('{"id":"tg4x","name":"TG4x","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3}]}},"sensors":[]}')},60386:function(o){"use strict";o.exports=JSON.parse('{"id":"tidbit","name":"Tidbit Numpad","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4}]}},"sensors":[]}')},67150:function(o){"use strict";o.exports=JSON.parse('{"id":"two_percent_milk","name":"2% Milk","layouts":{"matrix":{"name":"matrix","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0}]}},"sensors":[]}')},14194:function(o){"use strict";o.exports=JSON.parse('{"id":"waterfowl","name":"Waterfowl","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":6,"x":6,"y":0},{"row":0,"col":7,"x":7,"y":0},{"row":0,"col":8,"x":8,"y":0},{"row":0,"col":9,"x":9,"y":0},{"row":0,"col":10,"x":10,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":7,"x":7,"y":1},{"row":1,"col":8,"x":8,"y":1},{"row":1,"col":9,"x":9,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":7,"x":7,"y":2},{"row":2,"col":8,"x":8,"y":2},{"row":2,"col":9,"x":9,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":8,"x":8,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER"},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER"}]}')},71578:function(o){"use strict";o.exports=JSON.parse('{"id":"zmk_uno","name":"ZMK Uno","layouts":{"matrix_transform":{"name":"matrix_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2}]},"direct_matrix_transform":{"name":"direct_matrix_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2}]}},"sensors":[{"ref":"encoder","name":"encoder","identifier":"encoder","compatible":"alps,ec11","label":"ENCODER"}]}')},12069:function(o){"use strict";o.exports=JSON.parse('{"id":"zodiark","name":"Zodiark","layouts":{"default_transform":{"name":"default_transform","autoGenerated":true,"description":"This layout was automatically generated by the Keymap Editor. It may require manual changes to display properly.","layout":[{"row":0,"col":0,"x":0,"y":0},{"row":0,"col":1,"x":1,"y":0},{"row":0,"col":2,"x":2,"y":0},{"row":0,"col":3,"x":3,"y":0},{"row":0,"col":4,"x":4,"y":0},{"row":0,"col":5,"x":5,"y":0},{"row":0,"col":11,"x":11,"y":0},{"row":0,"col":12,"x":12,"y":0},{"row":0,"col":13,"x":13,"y":0},{"row":0,"col":14,"x":14,"y":0},{"row":0,"col":15,"x":15,"y":0},{"row":0,"col":16,"x":16,"y":0},{"row":1,"col":0,"x":0,"y":1},{"row":1,"col":1,"x":1,"y":1},{"row":1,"col":2,"x":2,"y":1},{"row":1,"col":3,"x":3,"y":1},{"row":1,"col":4,"x":4,"y":1},{"row":1,"col":5,"x":5,"y":1},{"row":1,"col":6,"x":6,"y":1},{"row":1,"col":10,"x":10,"y":1},{"row":1,"col":11,"x":11,"y":1},{"row":1,"col":12,"x":12,"y":1},{"row":1,"col":13,"x":13,"y":1},{"row":1,"col":14,"x":14,"y":1},{"row":1,"col":15,"x":15,"y":1},{"row":1,"col":16,"x":16,"y":1},{"row":2,"col":0,"x":0,"y":2},{"row":2,"col":1,"x":1,"y":2},{"row":2,"col":2,"x":2,"y":2},{"row":2,"col":3,"x":3,"y":2},{"row":2,"col":4,"x":4,"y":2},{"row":2,"col":5,"x":5,"y":2},{"row":2,"col":6,"x":6,"y":2},{"row":2,"col":10,"x":10,"y":2},{"row":2,"col":11,"x":11,"y":2},{"row":2,"col":12,"x":12,"y":2},{"row":2,"col":13,"x":13,"y":2},{"row":2,"col":14,"x":14,"y":2},{"row":2,"col":15,"x":15,"y":2},{"row":2,"col":16,"x":16,"y":2},{"row":3,"col":0,"x":0,"y":3},{"row":3,"col":1,"x":1,"y":3},{"row":3,"col":2,"x":2,"y":3},{"row":3,"col":3,"x":3,"y":3},{"row":3,"col":4,"x":4,"y":3},{"row":3,"col":5,"x":5,"y":3},{"row":3,"col":6,"x":6,"y":3},{"row":3,"col":7,"x":7,"y":3},{"row":3,"col":9,"x":9,"y":3},{"row":3,"col":10,"x":10,"y":3},{"row":3,"col":11,"x":11,"y":3},{"row":3,"col":12,"x":12,"y":3},{"row":3,"col":13,"x":13,"y":3},{"row":3,"col":14,"x":14,"y":3},{"row":3,"col":15,"x":15,"y":3},{"row":3,"col":16,"x":16,"y":3},{"row":4,"col":0,"x":0,"y":4},{"row":4,"col":1,"x":1,"y":4},{"row":4,"col":2,"x":2,"y":4},{"row":4,"col":3,"x":3,"y":4},{"row":4,"col":4,"x":4,"y":4},{"row":4,"col":6,"x":6,"y":4},{"row":4,"col":7,"x":7,"y":4},{"row":4,"col":9,"x":9,"y":4},{"row":4,"col":10,"x":10,"y":4},{"row":4,"col":12,"x":12,"y":4},{"row":4,"col":13,"x":13,"y":4},{"row":4,"col":14,"x":14,"y":4},{"row":4,"col":15,"x":15,"y":4},{"row":4,"col":16,"x":16,"y":4}]}},"sensors":[{"ref":"left_encoder","name":"encoder_left","identifier":"encoder_left","compatible":"alps,ec11","label":"LEFT_ENCODER","enabled":false},{"ref":"right_encoder","name":"encoder_right","identifier":"encoder_right","compatible":"alps,ec11","label":"RIGHT_ENCODER","enabled":false}]}')},24234:function(o){"use strict";o.exports=JSON.parse('{"zmk,behavior-backlight":{"description":"Backlight behavior","compatible":"zmk,behavior-backlight","include":"two_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":2}}},"zmk,behavior-bluetooth":{"description":"Bluetooth Behavior","compatible":"zmk,behavior-bluetooth","include":"two_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":2}}},"zmk,behavior-caps-word":{"description":"Caps word behavior","compatible":"zmk,behavior-caps-word","include":"zero_param.yaml","properties":{"continue-list":{"type":"array","required":true},"mods":{"type":"int"},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-ext-power":{"description":"External power control Behavior","compatible":"zmk,behavior-ext-power","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-hold-tap":{"description":"Hold or Tap behavior","compatible":"zmk,behavior-hold-tap","include":"two_param.yaml","properties":{"bindings":{"type":"phandles","required":true},"tapping-term-ms":{"type":"int"},"tapping_term_ms":{"type":"int"},"quick-tap-ms":{"type":"int","default":-1},"quick_tap_ms":{"type":"int"},"global-quick-tap":{"type":"boolean"},"flavor":{"type":"string","required":false,"default":"hold-preferred","enum":["hold-preferred","balanced","tap-preferred","tap-unless-interrupted"]},"retro-tap":{"type":"boolean"},"hold-trigger-key-positions":{"type":"array","required":false,"default":[]},"hold-trigger-on-release":{"type":"boolean"},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":2}}},"zmk,behavior-key-press":{"description":"Key press/release behavior","compatible":"zmk,behavior-key-press","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-key-repeat":{"description":"Key repeat behavior","compatible":"zmk,behavior-key-repeat","include":"zero_param.yaml","properties":{"usage-pages":{"type":"array","required":true},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-key-toggle":{"description":"Key toggle behavior","compatible":"zmk,behavior-key-toggle","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-macro-one-param":{"description":"Macro Behavior","compatible":"zmk,behavior-macro-one-param","include":["one_param.yaml","macro_base.yaml"],"properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1},"bindings":{"type":"phandle-array","required":true},"wait-ms":{"type":"int","description":"The default time to wait (in milliseconds) before triggering the next behavior in the macro bindings list."},"tap-ms":{"type":"int","description":"The default time to wait (in milliseconds) between the press and release events on a tapped macro behavior binding"}}},"zmk,behavior-macro-two-param":{"description":"Macro Behavior","compatible":"zmk,behavior-macro-two-param","include":["two_param.yaml","macro_base.yaml"],"properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":2},"bindings":{"type":"phandle-array","required":true},"wait-ms":{"type":"int","description":"The default time to wait (in milliseconds) before triggering the next behavior in the macro bindings list."},"tap-ms":{"type":"int","description":"The default time to wait (in milliseconds) between the press and release events on a tapped macro behavior binding"}}},"zmk,behavior-macro":{"description":"Macro Behavior","compatible":"zmk,behavior-macro","include":["zero_param.yaml","macro_base.yaml"],"properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0},"bindings":{"type":"phandle-array","required":true},"wait-ms":{"type":"int","description":"The default time to wait (in milliseconds) before triggering the next behavior in the macro bindings list."},"tap-ms":{"type":"int","description":"The default time to wait (in milliseconds) between the press and release events on a tapped macro behavior binding"}}},"zmk,behavior-mod-morph":{"description":"Mod Morph Behavior","compatible":"zmk,behavior-mod-morph","include":"zero_param.yaml","properties":{"bindings":{"type":"phandle-array","required":true},"mods":{"type":"int","required":true},"keep-mods":{"type":"int","required":false},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-momentary-layer":{"description":"Momentary layer on press/release behavior","compatible":"zmk,behavior-momentary-layer","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-none":{"description":"None Binding Behavior","compatible":"zmk,behavior-none","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-outputs":{"description":"Output Selection Behavior","compatible":"zmk,behavior-outputs","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-reset":{"description":"Keyboard Reset Behavior","compatible":"zmk,behavior-reset","include":"zero_param.yaml","properties":{"type":{"type":"int","default":0},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-rgb-underglow":{"description":"RGB Underglow Action","compatible":"zmk,behavior-rgb-underglow","include":"two_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":2}}},"zmk,behavior-sensor-rotate-var":{"description":"Sensor rotate behavior","compatible":"zmk,behavior-sensor-rotate-var","properties":{"label":{"type":"string","required":true},"#sensor-binding-cells":{"type":"int","required":true,"const":2},"bindings":{"type":"phandles","required":true},"tap-ms":{"type":"int","default":5}},"sensor-binding-cells":["param1","param2"]},"zmk,behavior-sensor-rotate":{"description":"Sensor rotate behavior","compatible":"zmk,behavior-sensor-rotate","properties":{"label":{"type":"string","required":true},"#sensor-binding-cells":{"type":"int","required":true,"const":0},"bindings":{"type":"phandle-array","required":true},"tap-ms":{"type":"int","default":5}}},"zmk,behavior-sticky-key":{"description":"Sticky key behavior","compatible":"zmk,behavior-sticky-key","include":"one_param.yaml","properties":{"bindings":{"type":"phandles","required":true},"release-after-ms":{"type":"int","required":true},"quick-release":{"type":"boolean"},"ignore-modifiers":{"type":"boolean"},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-tap-dance":{"description":"Tap Dance Behavior","compatible":"zmk,behavior-tap-dance","include":"zero_param.yaml","properties":{"bindings":{"type":"phandle-array","required":true},"tapping-term-ms":{"type":"int","default":200},"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,behavior-to-layer":{"description":"To Layer","compatible":"zmk,behavior-to-layer","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-toggle-layer":{"description":"Toggle Layer","compatible":"zmk,behavior-toggle-layer","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,behavior-transparent":{"description":"Transparent Binding Behavior","compatible":"zmk,behavior-transparent","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-control-mode-press":{"description":"Set Macro To Press Mode","compatible":"zmk,macro-control-mode-press","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-control-mode-release":{"description":"Set Macro To Release Mode","compatible":"zmk,macro-control-mode-release","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-control-mode-tap":{"description":"Set Macro To Tap Mode","compatible":"zmk,macro-control-mode-tap","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-control-tap-time":{"description":"Set Macro Tap Duration","compatible":"zmk,macro-control-tap-time","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,macro-control-wait-time":{"description":"Set Macro Wait Duration","compatible":"zmk,macro-control-wait-time","include":"one_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":1}}},"zmk,macro-param-1to1":{"description":"Macro Parameter One Substituted Into Next Binding\'s First Parameter","compatible":"zmk,macro-param-1to1","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-param-1to2":{"description":"Macro Parameter One Substituted Into Next Binding\'s Second Parameter","compatible":"zmk,macro-param-1to2","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-param-2to1":{"description":"Macro Parameter Two Substituted Into Next Binding\'s First Parameter","compatible":"zmk,macro-param-2to1","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-param-2to2":{"description":"Macro Parameter Two Substituted Into Next Binding\'s Second Parameter","compatible":"zmk,macro-param-2to2","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}},"zmk,macro-pause-for-release":{"description":"Macro Pause Until Release Marker","compatible":"zmk,macro-pause-for-release","include":"zero_param.yaml","properties":{"label":{"type":"string","required":true},"#binding-cells":{"type":"int","required":true,"const":0}}}}')},61443:function(o){"use strict";o.exports=JSON.parse('[{"name":"behavior_backlight","labels":["bl"],"code":"&bl","compatible":"zmk,behavior-backlight","properties":{"compatible":{"raw":"\\"zmk,behavior-backlight\\"","parsed":"zmk,behavior-backlight"},"label":{"raw":"\\"BCKLGHT\\"","parsed":"BCKLGHT"},"#binding-cells":{"raw":"<2>","parsed":2}}},{"name":"behavior_bluetooth","labels":["bt"],"code":"&bt","compatible":"zmk,behavior-bluetooth","properties":{"compatible":{"raw":"\\"zmk,behavior-bluetooth\\"","parsed":"zmk,behavior-bluetooth"},"label":{"raw":"\\"BLUETOOTH\\"","parsed":"BLUETOOTH"},"#binding-cells":{"raw":"<2>","parsed":2}}},{"name":"behavior_caps_word","labels":["caps_word"],"code":"&caps_word","compatible":"zmk,behavior-caps-word","properties":{"compatible":{"raw":"\\"zmk,behavior-caps-word\\"","parsed":"zmk,behavior-caps-word"},"continue-list":{"raw":"","parsed":["UNDERSCORE","BACKSPACE","DELETE"]},"label":{"raw":"\\"CAPS_WORD\\"","parsed":"CAPS_WORD"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_ext_power","labels":["ext_power"],"code":"&ext_power","compatible":"zmk,behavior-ext-power","properties":{"compatible":{"raw":"\\"zmk,behavior-ext-power\\"","parsed":"zmk,behavior-ext-power"},"label":{"raw":"\\"EXTPOWER\\"","parsed":"EXTPOWER"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"grave_escape","labels":["gresc"],"code":"&gresc","compatible":"zmk,behavior-mod-morph","properties":{"compatible":{"raw":"\\"zmk,behavior-mod-morph\\"","parsed":"zmk,behavior-mod-morph"},"bindings":{"raw":"<&kp ESC>, <&kp GRAVE>","parsed":["&kp","ESC","&kp","GRAVE"]},"mods":{"raw":"<(MOD_LGUI|MOD_LSFT|MOD_RGUI|MOD_RSFT)>","parsed":["MOD_LGUI","MOD_LSFT","MOD_RGUI","MOD_RSFT"]},"label":{"raw":"\\"GRAVE_ESCAPE\\"","parsed":"GRAVE_ESCAPE"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_key_press","labels":["cp","kp"],"code":"&kp","compatible":"zmk,behavior-key-press","properties":{"compatible":{"raw":"\\"zmk,behavior-key-press\\"","parsed":"zmk,behavior-key-press"},"label":{"raw":"\\"KEY_PRESS\\"","parsed":"KEY_PRESS"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_key_repeat","labels":["key_repeat"],"code":"&key_repeat","compatible":"zmk,behavior-key-repeat","properties":{"compatible":{"raw":"\\"zmk,behavior-key-repeat\\"","parsed":"zmk,behavior-key-repeat"},"usage-pages":{"raw":"","parsed":["HID_USAGE_KEY"]},"label":{"raw":"\\"KEY_REPEAT\\"","parsed":"KEY_REPEAT"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_key_toggle","labels":["kt"],"code":"&kt","compatible":"zmk,behavior-key-toggle","properties":{"compatible":{"raw":"\\"zmk,behavior-key-toggle\\"","parsed":"zmk,behavior-key-toggle"},"label":{"raw":"\\"KEY_TOGGLE\\"","parsed":"KEY_TOGGLE"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_layer_tap","labels":["lt"],"code":"<","compatible":"zmk,behavior-hold-tap","properties":{"compatible":{"raw":"\\"zmk,behavior-hold-tap\\"","parsed":"zmk,behavior-hold-tap"},"bindings":{"raw":"<&mo>, <&kp>","parsed":["&mo","&kp"]},"tapping-term-ms":{"raw":"<200>","parsed":200},"flavor":{"raw":"\\"tap-preferred\\"","parsed":"tap-preferred"},"label":{"raw":"\\"LAYER_TAP\\"","parsed":"LAYER_TAP"},"#binding-cells":{"raw":"<2>","parsed":2}}},{"name":"macro_control_mode_tap","labels":["macro_tap"],"code":"¯o_tap","compatible":"zmk,macro-control-mode-tap","properties":{"compatible":{"raw":"\\"zmk,macro-control-mode-tap\\"","parsed":"zmk,macro-control-mode-tap"},"label":{"raw":"\\"MAC_TAP\\"","parsed":"MAC_TAP"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_control_mode_press","labels":["macro_press"],"code":"¯o_press","compatible":"zmk,macro-control-mode-press","properties":{"compatible":{"raw":"\\"zmk,macro-control-mode-press\\"","parsed":"zmk,macro-control-mode-press"},"label":{"raw":"\\"MAC_PRESS\\"","parsed":"MAC_PRESS"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_control_mode_release","labels":["macro_release"],"code":"¯o_release","compatible":"zmk,macro-control-mode-release","properties":{"compatible":{"raw":"\\"zmk,macro-control-mode-release\\"","parsed":"zmk,macro-control-mode-release"},"label":{"raw":"\\"MAC_REL\\"","parsed":"MAC_REL"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_control_tap_time","labels":["macro_tap_time"],"code":"¯o_tap_time","compatible":"zmk,macro-control-tap-time","properties":{"compatible":{"raw":"\\"zmk,macro-control-tap-time\\"","parsed":"zmk,macro-control-tap-time"},"label":{"raw":"\\"MAC_TAP_TIME\\"","parsed":"MAC_TAP_TIME"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"macro_control_wait_time","labels":["macro_wait_time"],"code":"¯o_wait_time","compatible":"zmk,macro-control-wait-time","properties":{"compatible":{"raw":"\\"zmk,macro-control-wait-time\\"","parsed":"zmk,macro-control-wait-time"},"label":{"raw":"\\"MAC_WAIT_TIME\\"","parsed":"MAC_WAIT_TIME"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"macro_pause_for_release","labels":["macro_pause_for_release"],"code":"¯o_pause_for_release","compatible":"zmk,macro-pause-for-release","properties":{"compatible":{"raw":"\\"zmk,macro-pause-for-release\\"","parsed":"zmk,macro-pause-for-release"},"label":{"raw":"\\"MAC_WAIT_REL\\"","parsed":"MAC_WAIT_REL"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_param_1to1","labels":["macro_param_1to1"],"code":"¯o_param_1to1","compatible":"zmk,macro-param-1to1","properties":{"compatible":{"raw":"\\"zmk,macro-param-1to1\\"","parsed":"zmk,macro-param-1to1"},"label":{"raw":"\\"MAC_PARAM_1TO1\\"","parsed":"MAC_PARAM_1TO1"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_param_1to2","labels":["macro_param_1to2"],"code":"¯o_param_1to2","compatible":"zmk,macro-param-1to2","properties":{"compatible":{"raw":"\\"zmk,macro-param-1to2\\"","parsed":"zmk,macro-param-1to2"},"label":{"raw":"\\"MAC_PARAM_1TO2\\"","parsed":"MAC_PARAM_1TO2"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_param_2to1","labels":["macro_param_2to1"],"code":"¯o_param_2to1","compatible":"zmk,macro-param-2to1","properties":{"compatible":{"raw":"\\"zmk,macro-param-2to1\\"","parsed":"zmk,macro-param-2to1"},"label":{"raw":"\\"MAC_PARAM_2TO1\\"","parsed":"MAC_PARAM_2TO1"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"macro_param_2to2","labels":["macro_param_2to2"],"code":"¯o_param_2to2","compatible":"zmk,macro-param-2to2","properties":{"compatible":{"raw":"\\"zmk,macro-param-2to2\\"","parsed":"zmk,macro-param-2to2"},"label":{"raw":"\\"MAC_PARAM_2TO2\\"","parsed":"MAC_PARAM_2TO2"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_mod_tap","labels":["mt"],"code":"&mt","compatible":"zmk,behavior-hold-tap","properties":{"compatible":{"raw":"\\"zmk,behavior-hold-tap\\"","parsed":"zmk,behavior-hold-tap"},"bindings":{"raw":"<&kp>, <&kp>","parsed":["&kp","&kp"]},"tapping-term-ms":{"raw":"<200>","parsed":200},"flavor":{"raw":"\\"hold-preferred\\"","parsed":"hold-preferred"},"label":{"raw":"\\"MOD_TAP\\"","parsed":"MOD_TAP"},"#binding-cells":{"raw":"<2>","parsed":2}}},{"name":"behavior_momentary_layer","labels":["mo"],"code":"&mo","compatible":"zmk,behavior-momentary-layer","properties":{"compatible":{"raw":"\\"zmk,behavior-momentary-layer\\"","parsed":"zmk,behavior-momentary-layer"},"label":{"raw":"\\"MO\\"","parsed":"MO"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_none","labels":["none"],"code":"&none","compatible":"zmk,behavior-none","properties":{"compatible":{"raw":"\\"zmk,behavior-none\\"","parsed":"zmk,behavior-none"},"label":{"raw":"\\"NONE\\"","parsed":"NONE"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_outputs","labels":["out"],"code":"&out","compatible":"zmk,behavior-outputs","properties":{"compatible":{"raw":"\\"zmk,behavior-outputs\\"","parsed":"zmk,behavior-outputs"},"label":{"raw":"\\"OUTPUTS\\"","parsed":"OUTPUTS"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_reset","labels":["sys_reset"],"code":"&sys_reset","compatible":"zmk,behavior-reset","properties":{"compatible":{"raw":"\\"zmk,behavior-reset\\"","parsed":"zmk,behavior-reset"},"label":{"raw":"\\"SYSRESET\\"","parsed":"SYSRESET"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_reset_dfu","labels":["bootloader"],"code":"&bootloader","compatible":"zmk,behavior-reset","properties":{"compatible":{"raw":"\\"zmk,behavior-reset\\"","parsed":"zmk,behavior-reset"},"type":{"raw":"","parsed":"RST_UF2"},"label":{"raw":"\\"BOOTLOAD\\"","parsed":"BOOTLOAD"},"#binding-cells":{"raw":"<0>","parsed":0}}},{"name":"behavior_rgb_underglow","labels":["rgb_ug"],"code":"&rgb_ug","compatible":"zmk,behavior-rgb-underglow","properties":{"compatible":{"raw":"\\"zmk,behavior-rgb-underglow\\"","parsed":"zmk,behavior-rgb-underglow"},"label":{"raw":"\\"RGB_UG\\"","parsed":"RGB_UG"},"#binding-cells":{"raw":"<2>","parsed":2}}},{"name":"behavior_sensor_rotate_key_press","labels":["inc_dec_cp","inc_dec_kp"],"code":"&inc_dec_kp","compatible":"zmk,behavior-sensor-rotate-var","properties":{"compatible":{"raw":"\\"zmk,behavior-sensor-rotate-var\\"","parsed":"zmk,behavior-sensor-rotate-var"},"#sensor-binding-cells":{"raw":"<2>","parsed":2},"bindings":{"raw":"<&kp>, <&kp>","parsed":["&kp","&kp"]},"label":{"raw":"\\"ENC_KEY_PRESS\\"","parsed":"ENC_KEY_PRESS"}}},{"name":"behavior_sticky_key","labels":["sk"],"code":"&sk","compatible":"zmk,behavior-sticky-key","properties":{"compatible":{"raw":"\\"zmk,behavior-sticky-key\\"","parsed":"zmk,behavior-sticky-key"},"bindings":{"raw":"<&kp>","parsed":["&kp"]},"release-after-ms":{"raw":"<1000>","parsed":1000},"ignore-modifiers":{"raw":"","parsed":true},"label":{"raw":"\\"STICKY_KEY\\"","parsed":"STICKY_KEY"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_sticky_layer","labels":["sl"],"code":"&sl","compatible":"zmk,behavior-sticky-key","properties":{"compatible":{"raw":"\\"zmk,behavior-sticky-key\\"","parsed":"zmk,behavior-sticky-key"},"bindings":{"raw":"<&mo>","parsed":["&mo"]},"release-after-ms":{"raw":"<1000>","parsed":1000},"quick-release":{"raw":"","parsed":true},"label":{"raw":"\\"STICKY_LAYER\\"","parsed":"STICKY_LAYER"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_to_layer","labels":["to"],"code":"&to","compatible":"zmk,behavior-to-layer","properties":{"compatible":{"raw":"\\"zmk,behavior-to-layer\\"","parsed":"zmk,behavior-to-layer"},"label":{"raw":"\\"TO_LAYER\\"","parsed":"TO_LAYER"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_toggle_layer","labels":["tog"],"code":"&tog","compatible":"zmk,behavior-toggle-layer","properties":{"compatible":{"raw":"\\"zmk,behavior-toggle-layer\\"","parsed":"zmk,behavior-toggle-layer"},"label":{"raw":"\\"TOGGLE_LAYER\\"","parsed":"TOGGLE_LAYER"},"#binding-cells":{"raw":"<1>","parsed":1}}},{"name":"behavior_transparent","labels":["trans"],"code":"&trans","compatible":"zmk,behavior-transparent","properties":{"compatible":{"raw":"\\"zmk,behavior-transparent\\"","parsed":"zmk,behavior-transparent"},"label":{"raw":"\\"TRANS\\"","parsed":"TRANS"},"#binding-cells":{"raw":"<0>","parsed":0}}}]')},15126:function(o){"use strict";o.exports=JSON.parse('[{"names":["A"],"description":"a and A","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458756}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["B"],"description":"b and B","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458757}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["C"],"description":"c and C","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458758}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["D"],"description":"d and D","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458759}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["E"],"description":"e and E","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458760}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F"],"description":"f and F","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458761}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["G"],"description":"g and G","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458762}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["H"],"description":"h and H","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458763}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["I"],"description":"i and I","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458764}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["J"],"description":"j and J","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458765}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["K"],"description":"k and K","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458766}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["L"],"description":"l and L","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458767}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["M"],"description":"m and M","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458768}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["N"],"description":"n and N","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458769}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["O"],"description":"o and O","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458770}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["P"],"description":"p and P","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458771}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["Q"],"description":"q and Q","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458772}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["R"],"description":"r and R","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458773}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["S"],"description":"s and S","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458774}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["T"],"description":"t and T","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458775}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["U"],"description":"u and U","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458776}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=83","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["V"],"description":"v and V","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458777}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["W"],"description":"w and W","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458778}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["X"],"description":"x and X","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458779}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["Y"],"description":"y and Y","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458780}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["Z"],"description":"z and Z","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458781}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_1","N1"],"description":"1 and ! [Exclamation]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458782}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["EXCLAMATION","EXCL"],"description":"! [Exclamation]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458782},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_2","N2"],"description":"2 and @ [At Sign]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458783}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["AT_SIGN","AT"],"description":"@ [At Sign]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458783},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_3","N3"],"description":"3 and # [Hash / Pound]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458784}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["HASH","POUND"],"description":"# [Hash / Pound]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458784},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_4","N4"],"description":"4 and $ [Dollar]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458785}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["DOLLAR","DLLR"],"description":"$ [Dollar]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458785},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_5","N5"],"description":"5 and % [Percent]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458786}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PERCENT","PRCNT"],"description":"% [Percent]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458786},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_6","N6"],"description":"6 and ^ [Caret]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458787}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["CARET"],"description":"^ [Caret]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458787},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_7","N7"],"description":"7 and & [Ampersand]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458788}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["AMPERSAND","AMPS"],"description":"& [Ampersand]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458788},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_8","N8"],"description":"8 and * [Asterisk / Star]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458789}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["ASTERISK","ASTRK","STAR"],"description":"* [Asterisk / Star]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458789},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_9","N9"],"description":"9 and ( [Left Parenthesis]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458790}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_PARENTHESIS","LPAR"],"description":"( [Left Parenthesis]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458790},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NUMBER_0","N0"],"description":"0 and ) [Right Parenthesis]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458791}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_PARENTHESIS","RPAR"],"description":") [Right Parenthesis]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458791},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RETURN","ENTER","RET"],"description":"Return (Enter)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458792}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["ESCAPE","ESC"],"description":"Escape","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458793}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["BACKSPACE","BSPC"],"description":"Backspace","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458794}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["TAB"],"description":"Tab","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458795}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["SPACE"],"description":"Space","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458796}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["MINUS"],"description":"- [Minus] and _ [Underscore]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458797}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["UNDERSCORE","UNDER"],"description":"_ [Underscore]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458797},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["EQUAL"],"description":"= [Equal] and + [Plus]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458798}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PLUS"],"description":"+ [Plus]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458798},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_BRACKET","LBKT"],"description":"[ [Left Bracket] and { [Left Brace]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458799}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_BRACE","LBRC"],"description":"{ [Left Brace]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458799},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_BRACKET","RBKT"],"description":"] [Right Bracket] and } [Right Brace]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458800}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_BRACE","RBRC"],"description":"} [Right Brace]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458800},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["BACKSLASH","BSLH"],"description":"\\\\ [Backslash] and | [Pipe]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458801}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PIPE"],"description":"| [Pipe]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458801},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NON_US_HASH","NUHS"],"description":"Non-US # [Hash/Pound] and ~ [Tilde]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458802}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["TILDE2"],"description":"~ [Tilde]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458802},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["SEMICOLON","SEMI"],"description":"; [Semicolon] and : [Colon]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458803}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["COLON"],"description":": [Colon]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458803},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["SINGLE_QUOTE","SQT","APOSTROPHE","APOS"],"description":"\' [Apostrophe] and \\" [Quote (Double)]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458804}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["DOUBLE_QUOTES","DQT"],"description":"\\" [Quote (Double)]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458804},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["GRAVE"],"description":"` [Grave Accent] and ~ [Tilde]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458805}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["TILDE"],"description":"~ [Tilde]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458805},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["COMMA"],"description":", [Comma] and < [Less Than]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458806}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LESS_THAN","LT"],"description":"< [Less Than]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458806},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PERIOD","DOT"],"description":". [Period] and > [Greater Than]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458807}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["GREATER_THAN","GT"],"description":"> [Greater Than]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458807},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["SLASH","FSLH"],"description":"/ [Forward Slash] and ? [Question Mark]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458808}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["QUESTION","QMARK"],"description":"? [Question Mark]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458808},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["CAPSLOCK","CAPS","CLCK"],"description":"Caps Lock","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458809}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F1"],"description":"F1","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458810}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F2"],"description":"F2","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458811}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F3"],"description":"F3","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458812}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F4"],"description":"F4","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458813}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=84","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F5"],"description":"F5","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458814}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F6"],"description":"F6","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458815}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F7"],"description":"F7","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458816}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F8"],"description":"F8","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458817}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F9"],"description":"F9","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458818}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F10"],"description":"F10","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458819}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F11"],"description":"F11","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458820}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["F12"],"description":"F12","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458821}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PRINTSCREEN","PSCRN"],"description":"Print Screen","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458822}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["SCROLLLOCK","SLCK"],"description":"Scroll Lock","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458823}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PAUSE_BREAK"],"description":"Pause / Break","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458824}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["INSERT","INS"],"description":"Insert","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458825}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["HOME"],"description":"Home","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458826}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PAGE_UP","PG_UP"],"description":"Page Up","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458827}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["DELETE","DEL"],"description":"Delete","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458828}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["END"],"description":"End","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458829}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PAGE_DOWN","PG_DN"],"description":"Page Down","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458830}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_ARROW","RIGHT"],"description":"⮕ [Right Arrow]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458831}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_ARROW","LEFT"],"description":"⬅ [Left Arrow]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458832}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["DOWN_ARROW","DOWN"],"description":"⬇ [Down Arrow]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458833}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["UP_ARROW","UP"],"description":"⬆ [Up Arrow]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458834}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMLOCK","KP_NUM","KP_NLCK"],"description":"Numlock and Clear","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458835}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["CLEAR2"],"description":"Clear","context":"Keypad","clarify":null,"usages":[{"application":65542,"item":458835},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["KP_DIVIDE","KP_SLASH"],"description":"/ [Divide]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458836}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_MULTIPLY","KP_ASTERISK"],"description":"* [Multiply]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458837}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_MINUS","KP_SUBTRACT"],"description":"- [Minus]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458838}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_PLUS"],"description":"+ [Plus]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458839}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_ENTER"],"description":"Enter","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458840}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_1","KP_N1"],"description":"1","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458841}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_2","KP_N2"],"description":"2","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458842}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_3","KP_N3"],"description":"3","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458843}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_4","KP_N4"],"description":"4","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458844}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_5","KP_N5"],"description":"5","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458845}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_6","KP_N6"],"description":"6","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458846}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_7","KP_N7"],"description":"7","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458847}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_8","KP_N8"],"description":"8","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458848}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_9","KP_N9"],"description":"9","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458849}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_NUMBER_0","KP_N0"],"description":"0","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458850}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=85","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["KP_DOT"],"description":". [Dot]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458851}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["NON_US_BACKSLASH","NON_US_BSLH","NUBS"],"description":"Non-US \\\\ [Backslash] and | [Pipe]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458852}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["PIPE2"],"description":"| [Pipe]","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458852},{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["K_APPLICATION","K_APP","K_CONTEXT_MENU","K_CMENU"],"description":"Application (Context Menu)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458853}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{"ios":["iosApplication"]}},{"names":["K_POWER","K_PWR"],"description":"Power","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458854}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":false,"android":true,"macos":true,"ios":true},"footnotes":{"macos":["macosPower"],"ios":["iosPower"]}},{"names":["KP_EQUAL"],"description":"= [Equal]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458855}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":true,"macos":null,"ios":true},"footnotes":{}},{"names":["F13"],"description":"F13","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458856}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F14"],"description":"F14","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458857}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F15"],"description":"F15","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458858}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F16"],"description":"F16","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458859}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F17"],"description":"F17","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458860}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F18"],"description":"F18","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458861}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F19"],"description":"F19","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458862}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F20"],"description":"F20","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458863}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F21"],"description":"F21","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458864}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F22"],"description":"F22","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458865}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F23"],"description":"F23","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458866}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["F24"],"description":"F24","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458867}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{}},{"names":["K_EXECUTE","K_EXEC"],"description":"Execute","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458868}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_HELP"],"description":"Help","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458869}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_MENU"],"description":"Menu","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458870}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_SELECT"],"description":"Select","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458871}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_STOP"],"description":"Stop","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458872}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["K_AGAIN","K_REDO"],"description":"Again","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458873}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_UNDO"],"description":"Undo","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458874}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_CUT"],"description":"Cut","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458875}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_COPY"],"description":"Copy","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458876}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_PASTE"],"description":"Paste","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458877}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_FIND"],"description":"Find","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458878}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_MUTE"],"description":"Mute","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458879}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["K_VOLUME_UP","K_VOL_UP"],"description":"Volume Up","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458880}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":null},"footnotes":{}},{"names":["K_VOLUME_DOWN","K_VOL_DN"],"description":"Volume Down","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458881}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":null},"footnotes":{}},{"names":["LOCKING_CAPS","LCAPS"],"description":"Locking Caps Lock","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458882}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LOCKING_NUM","LNLCK"],"description":"Locking Num Lock","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458883}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LOCKING_SCROLL","LSLCK"],"description":"Locking Scroll Lock","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458884}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":true,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["KP_COMMA"],"description":", [Comma]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458885}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["KP_EQUAL_AS400"],"description":"= [Equal] (AS/400 keyboards)","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458886}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_1","INT1","INT_RO"],"description":"ろ (International 1)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458887}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_2","INT2","INT_KATAKANAHIRAGANA","INT_KANA"],"description":"かな (International 2)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458888}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_3","INT3","INT_YEN"],"description":"¥ (International 3)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458889}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_4","INT4","INT_HENKAN"],"description":"変換 (International 4)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458890}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=86","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_5","INT5","INT_MUHENKAN"],"description":"無変換 (International 5)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458891}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_6","INT6","INT_KPJPCOMMA"],"description":", [カソマ] (International 6)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458892}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_7","INT7"],"description":"International 7","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458893}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_8","INT8"],"description":"International 8","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458894}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["INTERNATIONAL_9","INT9"],"description":"International 9","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458895}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_1","LANG1","LANG_HANGEUL"],"description":"한/영 (Language 1)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458896}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":true,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_2","LANG2","LANG_HANJA"],"description":"한자 (Language 2)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458897}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":true,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_3","LANG3","LANG_KATAKANA"],"description":"カタカナ (Language 3)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458898}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_4","LANG4","LANG_HIRAGANA"],"description":"ひらがな (Language 4)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458899}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_5","LANG5","LANG_ZENKAKUHANKAKU"],"description":"半角/全角 (Language 5)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458900}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_6","LANG6"],"description":"Language 6","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458901}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_7","LANG7"],"description":"Language 7","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458902}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_8","LANG8"],"description":"Language 8","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458903}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["LANGUAGE_9","LANG9"],"description":"Language 9","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458904}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["ALT_ERASE"],"description":"Alternate Erase","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458905}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["SYSREQ","ATTENTION"],"description":"SysReq / Attention","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458906}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["K_CANCEL"],"description":"Cancel","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458907}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["CLEAR"],"description":"Clear","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458908}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["PRIOR"],"description":"Prior","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458909}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["RETURN2","RET2"],"description":"Return","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458910}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["SEPARATOR"],"description":"Separator","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458911}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["OUT"],"description":"Out","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458912}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["OPER"],"description":"Oper","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458913}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["CLEAR_AGAIN"],"description":"Clear / Again","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458914}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["CRSEL"],"description":"CrSel / Props","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458915}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["EXSEL"],"description":"ExSel","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458916}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["KP_LEFT_PARENTHESIS","KP_LPAR"],"description":"( [Left Parenthesis]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458934}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["KP_RIGHT_PARENTHESIS","KP_RPAR"],"description":") [Right Parenthesis]","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458935}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=87","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["KP_CLEAR"],"description":"Clear","context":"Keypad","clarify":false,"usages":[{"application":65542,"item":458968}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":null,"linux":true,"android":false,"macos":false,"ios":false},"footnotes":{}},{"names":["LEFT_CONTROL","LCTRL","LC(code)"],"description":"Left Control","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458976}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_SHIFT","LSHIFT","LSHFT","LS(code)"],"description":"Left Shift ⇧","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_ALT","LALT","LA(code)"],"description":"Left Alt","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458978}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["LEFT_GUI","LGUI","LG(code)","LEFT_WIN","LWIN","LEFT_COMMAND","LCMD","LEFT_META","LMETA"],"description":"Left GUI (Windows / Command / Meta)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458979}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_CONTROL","RCTRL","RC(code)"],"description":"Right Control","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458980}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=88","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_SHIFT","RSHIFT","RSHFT","RS(code)"],"description":"Right Shift ⇧","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458981}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=89","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_ALT","RALT","RA(code)"],"description":"Right Alt","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458982}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=89","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["RIGHT_GUI","RGUI","RG(code)","RIGHT_WIN","RWIN","RIGHT_COMMAND","RCMD","RIGHT_META","RMETA"],"description":"Right GUI (Windows / Command / Meta)","context":"Keyboard","clarify":false,"usages":[{"application":65542,"item":458983}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=89","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":true},"footnotes":{}},{"names":["K_PLAY_PAUSE","K_PP"],"description":"Play / Pause","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458984}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_STOP2"],"description":"Stop","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458985}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_PREVIOUS","K_PREV"],"description":"Previous","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458986}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_NEXT"],"description":"Next","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458987}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_EJECT"],"description":"Eject","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458988}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_VOLUME_UP2","K_VOL_UP2"],"description":"Volume Up","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458989}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_VOLUME_DOWN2","K_VOL_DN2"],"description":"Volume Down","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458990}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_MUTE2"],"description":"Mute","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458991}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_WWW"],"description":"Internet Browser","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458992}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_BACK"],"description":"Back","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458993}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_FORWARD"],"description":"Forward","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458994}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_STOP3"],"description":"Stop","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458995}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":false,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_FIND2"],"description":"Find","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458996}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":false,"macos":false,"ios":false},"footnotes":{}},{"names":["K_SCROLL_UP"],"description":"Scroll Up","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458997}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_SCROLL_DOWN"],"description":"Scroll Down","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458998}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_EDIT"],"description":"Edit","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":458999}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":false,"macos":false,"ios":false},"footnotes":{}},{"names":["K_SLEEP"],"description":"Sleep","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":459000}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":false,"macos":false,"ios":false},"footnotes":{}},{"names":["K_LOCK","K_SCREENSAVER","K_COFFEE"],"description":"Lock","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":459001}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["K_REFRESH"],"description":"Refresh","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":459002}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":false,"macos":false,"ios":false},"footnotes":{}},{"names":["K_CALCULATOR","K_CALC"],"description":"Calculator","context":"Keyboard","clarify":true,"usages":[{"application":65542,"item":459003}],"documentation":"https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07","os":{"windows":null,"linux":true,"android":true,"macos":false,"ios":false},"footnotes":{}},{"names":["C_POWER","C_PWR"],"description":"Power","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786480}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=132","os":{"windows":null,"linux":true,"android":false,"macos":true,"ios":true},"footnotes":{"macos":["macosPower"],"ios":["iosPower"]}},{"names":["C_RESET"],"description":"Reset","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786481}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=132","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_SLEEP"],"description":"Sleep","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786482}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=132","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_SLEEP_MODE"],"description":"Sleep Mode","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786484}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=132","os":{"windows":null,"linux":false,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU"],"description":"Menu","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786496}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_PICK","C_MENU_SELECT"],"description":"Pick","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786497}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_UP"],"description":"Up","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786498}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_DOWN"],"description":"Down","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786499}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_LEFT"],"description":"Left","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786500}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_RIGHT"],"description":"Right","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786501}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_ESCAPE","C_MENU_ESC"],"description":"Escape","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786502}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_INCREASE","C_MENU_INC"],"description":"Value Increase","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786503}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MENU_DECREASE","C_MENU_DEC"],"description":"Value Decrease","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786504}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_DATA_ON_SCREEN"],"description":"Data On Screen","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786528}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_CAPTIONS","C_SUBTITLES"],"description":"Closed Caption","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786529}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_SNAPSHOT"],"description":"Snapshot","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786533}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_PIP"],"description":"Picture-in-Picture Toggle","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786535}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":false,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_RED_BUTTON","C_RED"],"description":"Red Button","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786537}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_GREEN_BUTTON","C_GREEN"],"description":"Green Button","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786538}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BLUE_BUTTON","C_BLUE"],"description":"Blue Button","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786539}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_YELLOW_BUTTON","C_YELLOW"],"description":"Yellow Button","context":"Consumer Menu","clarify":true,"usages":[{"application":786433,"item":786540}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=133","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_ASPECT"],"description":"Aspect","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786541}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BRIGHTNESS_INC","C_BRI_INC","C_BRI_UP"],"description":"Increase Brightness","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786543}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":true,"linux":true,"android":null,"macos":true,"ios":null},"footnotes":{}},{"names":["C_BRIGHTNESS_DEC","C_BRI_DEC","C_BRI_DN"],"description":"Decrease Brightness","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786544}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":true,"linux":true,"android":null,"macos":true,"ios":null},"footnotes":{}},{"names":["C_BACKLIGHT_TOGGLE","C_BKLT_TOG"],"description":"Backlight Toggle","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786546}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BRIGHTNESS_MINIMUM","C_BRI_MIN"],"description":"Minimum Brightness","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786547}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BRIGHTNESS_MAXIMUM","C_BRI_MAX"],"description":"Maximum Brightness","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786548}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BRIGHTNESS_AUTO","C_BRI_AUTO"],"description":"Auto Brightness","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786549}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=134","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_STEP","C_MODE_STEP"],"description":"Mode Step","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786562}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_RECALL_LAST","C_CHAN_LAST"],"description":"Recall Last","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786563}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_COMPUTER"],"description":"Computer","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786568}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_TV"],"description":"TV","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786569}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_WWW"],"description":"WWW","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786570}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_DVD"],"description":"DVD","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786571}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_PHONE"],"description":"Telephone","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786572}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_GUIDE"],"description":"Program Guide","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786573}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_VIDEOPHONE"],"description":"Video Phone","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786574}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_GAMES"],"description":"Games","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786575}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_MESSAGES"],"description":"Messages","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786576}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_CD"],"description":"CD","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786577}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_VCR"],"description":"VCR","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786578}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_TUNER"],"description":"Tuner","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786579}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_QUIT"],"description":"Quit","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786580}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_HELP"],"description":"Help","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786581}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_TAPE"],"description":"Tape","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786582}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_CABLE"],"description":"Cable","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786583}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_SATELLITE"],"description":"Satellite","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786584}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_HOME"],"description":"Home","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786586}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=136","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_CHANNEL_INC","C_CHAN_INC"],"description":"Channel Increment","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786588}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=136","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_CHANNEL_DEC","C_CHAN_DEC"],"description":"Channel Decrement","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786589}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=136","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MEDIA_VCR_PLUS"],"description":"VCR Plus","context":"Consumer Media","clarify":true,"usages":[{"application":786433,"item":786592}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=135","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_PLAY"],"description":"Play","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786608}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_PAUSE"],"description":"Pause","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786609}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_RECORD","C_REC"],"description":"Record","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786610}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":false,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_FAST_FORWARD","C_FF"],"description":"Fast Forward","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786611}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_REWIND","C_RW"],"description":"Rewind","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786612}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_NEXT"],"description":"Next","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786613}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_PREVIOUS","C_PREV"],"description":"Previous","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786614}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_STOP"],"description":"Stop","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786615}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":false,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_EJECT"],"description":"Eject","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786616}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_RANDOM_PLAY","C_SHUFFLE"],"description":"Random Play","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786617}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_REPEAT"],"description":"Repeat","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786620}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_SLOW_TRACKING","C_SLOW2"],"description":"Slow Tracking","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786623}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_STOP_EJECT"],"description":"Stop / Eject","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786636}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":null,"linux":false,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_PLAY_PAUSE","C_PP"],"description":"Play / Pause","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786637}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=137","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_VOICE_COMMAND"],"description":"Voice Command","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786639}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=132","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_MUTE"],"description":"Mute","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786658}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=139","os":{"windows":true,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_BASS_BOOST"],"description":"Bass Boost","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786661}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=139","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_VOLUME_UP","C_VOL_UP"],"description":"Volume Up","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786665}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=139","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_VOLUME_DOWN","C_VOL_DN"],"description":"Volume Down","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786666}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=139","os":{"windows":true,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_SLOW"],"description":"Slow","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786677}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=141","os":{"windows":false,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_ALTERNATE_AUDIO_INCREMENT","C_ALT_AUDIO_INC"],"description":"Alternate Audio Increment","context":"Consumer","clarify":true,"usages":[{"application":786433,"item":786803}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf","os":{"windows":null,"linux":false,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_CCC"],"description":"Consumer Control Configuration","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786819}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_WORD"],"description":"Word Processor","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786820}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_TEXT_EDITOR"],"description":"Text Editor","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786821}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_SPREADSHEET","C_AL_SHEET"],"description":"Spreadsheet","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786822}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_GRAPHICS_EDITOR"],"description":"Graphics Editor","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786823}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_PRESENTATION"],"description":"Presentation","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786824}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_DATABASE","C_AL_DB"],"description":"Database App","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786825}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_EMAIL","C_AL_MAIL"],"description":"Email Reader","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786826}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_NEWS"],"description":"Newsreader","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786827}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_VOICEMAIL"],"description":"Voicemail","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786828}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_CONTACTS","C_AL_ADDRESS_BOOK"],"description":"Contacts / Address Book","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786829}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_CALENDAR","C_AL_CAL"],"description":"Calendar / Schedule","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786830}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_TASK_MANAGER"],"description":"Task / Project Manager","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786831}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_JOURNAL"],"description":"Log / Journal / Timecard","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786832}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_FINANCE"],"description":"Checkbook / Finance","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786833}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_CALCULATOR","C_AL_CALC"],"description":"Calculator","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786834}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_AV_CAPTURE_PLAYBACK"],"description":"A/V Capture / Playback","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786835}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_MY_COMPUTER"],"description":"Local Machine Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786836}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_WWW"],"description":"Internet Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786838}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=147","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_NETWORK_CHAT","C_AL_CHAT"],"description":"Network Chat","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786841}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_LOGOFF"],"description":"Logoff","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786844}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_LOCK","C_AL_SCREENSAVER","C_AL_COFFEE"],"description":"Terminal Lock / Screensaver","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786846}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_CONTROL_PANEL"],"description":"Control Panel","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786847}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_SELECT_TASK"],"description":"Select Task / Application","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786850}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_NEXT_TASK"],"description":"Next Task / Application","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786851}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_PREVIOUS_TASK","C_AL_PREV_TASK"],"description":"Previous Task / Application","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786852}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_HELP"],"description":"Integrated Help Center","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786854}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_DOCUMENTS","C_AL_DOCS"],"description":"Documents","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786855}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_SPELLCHECK","C_AL_SPELL"],"description":"Spell Check","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786859}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_KEYBOARD_LAYOUT"],"description":"Keyboard Layout","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786862}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_SCREEN_SAVER"],"description":"Screen Saver","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786865}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_FILE_BROWSER","C_AL_FILES"],"description":"File Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786868}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_IMAGE_BROWSER","C_AL_IMAGES"],"description":"Image Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786870}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_AUDIO_BROWSER","C_AL_AUDIO","C_AL_MUSIC"],"description":"Audio Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786871}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_MOVIE_BROWSER","C_AL_MOVIES"],"description":"Movie Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786872}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=148","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_INSTANT_MESSAGING","C_AL_IM"],"description":"Instant Messaging","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786876}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=149","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AL_OEM_FEATURES","C_AL_TIPS","C_AL_TUTORIAL"],"description":"OEM Features / Tips / Tutorial Browser","context":"Consumer AL","clarify":true,"usages":[{"application":786433,"item":786877}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=149","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_NEW"],"description":"New","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786945}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_OPEN"],"description":"Open","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786946}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_CLOSE"],"description":"Close","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786947}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_EXIT"],"description":"Exit","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786948}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_SAVE"],"description":"Save","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786951}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_PRINT"],"description":"Print","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786952}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_PROPERTIES","C_AC_PROPS"],"description":"Properties","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786953}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_UNDO"],"description":"Undo","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786970}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_COPY"],"description":"Copy","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786971}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_CUT"],"description":"Cut","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786972}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_PASTE"],"description":"Paste","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786973}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_FIND"],"description":"Find","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786975}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_SEARCH"],"description":"Search","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786977}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":true,"ios":null},"footnotes":{}},{"names":["C_AC_GOTO"],"description":"Go To","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786978}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_HOME"],"description":"Home","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786979}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_BACK"],"description":"Back","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786980}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_FORWARD"],"description":"Forward","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786981}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_STOP"],"description":"Stop","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786982}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_REFRESH"],"description":"Refresh","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786983}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_BOOKMARKS","C_AC_FAVORITES","C_AC_FAVOURITES"],"description":"Bookmarks","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786986}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_ZOOM_IN"],"description":"Zoom In","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786989}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_ZOOM_OUT"],"description":"Zoom Out","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786990}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_ZOOM"],"description":"Zoom","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786991}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=150","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_VIEW_TOGGLE"],"description":"View Toggle","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786994}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=151","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_SCROLL_UP"],"description":"Scroll Up","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786995}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=151","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_SCROLL_DOWN"],"description":"Scroll Down","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":786996}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=151","os":{"windows":null,"linux":true,"android":true,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_EDIT"],"description":"Edit","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787005}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=151","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_CANCEL"],"description":"Cancel","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787039}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=152","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_INSERT","C_AC_INS"],"description":"Insert Mode","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787049}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=152","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_DEL"],"description":"Delete","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787050}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=152","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_REDO"],"description":"Redo / Repeat","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787065}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=152","os":{"windows":false,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_REPLY"],"description":"Reply","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787081}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=153","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_FORWARD_MAIL"],"description":"Forward","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787083}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=153","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_SEND"],"description":"Send","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787084}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=153","os":{"windows":null,"linux":true,"android":false,"macos":null,"ios":null},"footnotes":{}},{"names":["C_AC_DESKTOP_SHOW_ALL_WINDOWS"],"description":"Desktop Show All Windows","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787103}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=153","os":{"windows":null,"linux":true,"android":null,"macos":true,"ios":null},"footnotes":{}},{"names":["C_AC_DESKTOP_SHOW_ALL_APPLICATIONS"],"description":"Desktop Show All Applications","context":"Consumer AC","clarify":true,"usages":[{"application":786433,"item":787106}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=153","os":{"windows":null,"linux":true,"android":null,"macos":true,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_PREVIOUS","C_KBIA_PREV"],"description":"Previous","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787143}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_NEXT","C_KBIA_NEXT"],"description":"Next","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787144}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP","C_KBIA_PREV_GRP"],"description":"Previous Group","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787145}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP","C_KBIA_NEXT_GRP"],"description":"Next Group","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787146}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_ACCEPT","C_KBIA_ACCEPT"],"description":"Accept","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787147}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}},{"names":["C_KEYBOARD_INPUT_ASSIST_CANCEL","C_KBIA_CANCEL"],"description":"Cancel","context":"Consumer KBIA","clarify":true,"usages":[{"application":786433,"item":787148}],"documentation":"https://usb.org/sites/default/files/hut1_2.pdf#page=157","os":{"windows":null,"linux":true,"android":null,"macos":null,"ios":null},"footnotes":{}}]')},2024:function(o){"use strict";o.exports=JSON.parse('["BL_ON_CMD","BL_OFF_CMD","BL_TOG_CMD","BL_INC_CMD","BL_DEC_CMD","BL_CYCLE_CMD","BL_SET_CMD","BL_ON","BL_OFF","BL_TOG","BL_INC","BL_DEC","BL_CYCLE","BL_SET","BT_CLR_CMD","BT_NXT_CMD","BT_PRV_CMD","BT_SEL_CMD","BT_CLR","BT_NXT","BT_PRV","BT_SEL","EXT_POWER_OFF_CMD","EXT_POWER_ON_CMD","EXT_POWER_TOGGLE_CMD","EP_ON","EP_OFF","EP_TOG","HID_USAGE_GD_UNDEFINED","HID_USAGE_GD_POINTER","HID_USAGE_GD_MOUSE","HID_USAGE_GD_JOYSTICK","HID_USAGE_GD_GAMEPAD","HID_USAGE_GD_KEYBOARD","HID_USAGE_GD_KEYPAD","HID_USAGE_GD_MULTI_AXIS_CONTROLLER","HID_USAGE_GD_TABLET_PC_SYSTEM_CONTROLS","HID_USAGE_GD_WATER_COOLING_DEVICE","HID_USAGE_GD_COMPUTER_CHASSIS_DEVICE","HID_USAGE_GD_WIRELESS_RADIO_CONTROLS","HID_USAGE_GD_PORTABLE_DEVICE_CONTROL","HID_USAGE_GD_SYSTEM_MULTI_AXIS_CONTROLLER","HID_USAGE_GD_SPATIAL_CONTROLLER","HID_USAGE_GD_ASSISTIVE_CONTROL","HID_USAGE_GD_DEVICE_DOCK","HID_USAGE_GD_DOCKABLE_DEVICE","HID_USAGE_GD_X","HID_USAGE_GD_Y","HID_USAGE_GD_Z","HID_USAGE_GD_RX","HID_USAGE_GD_RY","HID_USAGE_GD_RZ","HID_USAGE_GD_SLIDER","HID_USAGE_GD_DIAL","HID_USAGE_GD_WHEEL","HID_USAGE_GD_HAT_SWITCH","HID_USAGE_GD_COUNTED_BUFFER","HID_USAGE_GD_BYTE_COUNT","HID_USAGE_GD_MOTION_WAKEUP","HID_USAGE_GD_START","HID_USAGE_GD_SELECT","HID_USAGE_GD_VX","HID_USAGE_GD_VY","HID_USAGE_GD_VZ","HID_USAGE_GD_VBRX","HID_USAGE_GD_VBRY","HID_USAGE_GD_VBRZ","HID_USAGE_GD_VNO","HID_USAGE_GD_FEATURE_NOTIFICATION","HID_USAGE_GD_RESOLUTION_MULTIPLIER","HID_USAGE_GD_QX","HID_USAGE_GD_QY","HID_USAGE_GD_QZ","HID_USAGE_GD_QW","HID_USAGE_GD_SYSTEM_CONTROL","HID_USAGE_GD_SYSTEM_POWER_DOWN","HID_USAGE_GD_SYSTEM_SLEEP","HID_USAGE_GD_SYSTEM_WAKE_UP","HID_USAGE_GD_SYSTEM_CONTEXT_MENU","HID_USAGE_GD_SYSTEM_MAIN_MENU","HID_USAGE_GD_SYSTEM_APP_MENU","HID_USAGE_GD_SYSTEM_MENU_HELP","HID_USAGE_GD_SYSTEM_MENU_EXIT","HID_USAGE_GD_SYSTEM_MENU_SELECT","HID_USAGE_GD_SYSTEM_MENU_RIGHT","HID_USAGE_GD_SYSTEM_MENU_LEFT","HID_USAGE_GD_SYSTEM_MENU_UP","HID_USAGE_GD_SYSTEM_MENU_DOWN","HID_USAGE_GD_SYSTEM_COLD_RESTART","HID_USAGE_GD_SYSTEM_WARM_RESTART","HID_USAGE_GD_D_PAD_UP","HID_USAGE_GD_D_PAD_DOWN","HID_USAGE_GD_D_PAD_RIGHT","HID_USAGE_GD_D_PAD_LEFT","HID_USAGE_GD_INDEX_TRIGGER","HID_USAGE_GD_PALM_TRIGGER","HID_USAGE_GD_THUMBSTICK","HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT","HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT_LOCK","HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT_LOCK_INDICATOR","HID_USAGE_GD_SYSTEM_DISMISS_NOTIFICATION","HID_USAGE_GD_SYSTEM_DO_NOT_DISTURB","HID_USAGE_GD_SYSTEM_DOCK","HID_USAGE_GD_SYSTEM_UNDOCK","HID_USAGE_GD_SYSTEM_SETUP","HID_USAGE_GD_SYSTEM_BREAK","HID_USAGE_GD_SYSTEM_DEBUGGER_BREAK","HID_USAGE_GD_APPLICATION_BREAK","HID_USAGE_GD_APPLICATION_DEBUGGER_BREAK","HID_USAGE_GD_SYSTEM_SPEAKER_MUTE","HID_USAGE_GD_SYSTEM_HIBERNATE","HID_USAGE_GD_SYSTEM_DISPLAY_INVERT","HID_USAGE_GD_SYSTEM_DISPLAY_INTERNAL","HID_USAGE_GD_SYSTEM_DISPLAY_EXTERNAL","HID_USAGE_GD_SYSTEM_DISPLAY_BOTH","HID_USAGE_GD_SYSTEM_DISPLAY_DUAL","HID_USAGE_GD_SYSTEM_DISPLAY_TOGGLE_INT_EXT_MODE","HID_USAGE_GD_SYSTEM_DISPLAY_SWAP_PRIMARY_SECONDARY","HID_USAGE_GD_SYSTEM_DISPLAY_TOGGLE_LCD_AUTOSCALE","HID_USAGE_GD_SENSOR_ZONE","HID_USAGE_GD_RPM","HID_USAGE_GD_COOLANT_LEVEL","HID_USAGE_GD_COOLANT_CRITICAL_LEVEL","HID_USAGE_GD_COOLANT_PUMP","HID_USAGE_GD_CHASSIS_ENCLOSURE","HID_USAGE_GD_WIRELESS_RADIO_BUTTON","HID_USAGE_GD_WIRELESS_RADIO_LED","HID_USAGE_GD_WIRELESS_RADIO_SLIDER_SWITCH","HID_USAGE_GD_SYSTEM_DISPLAY_ROTATION_LOCK_BUTTON","HID_USAGE_GD_SYSTEM_DISPLAY_ROTATION_LOCK_SLIDER_SWITCH","HID_USAGE_GD_CONTROL_ENABLE","HID_USAGE_GD_DOCKABLE_DEVICE_UNIQUE_ID","HID_USAGE_GD_DOCKABLE_DEVICE_VENDOR_ID","HID_USAGE_GD_DOCKABLE_DEVICE_PRIMARY_USAGE_PAGE","HID_USAGE_GD_DOCKABLE_DEVICE_PRIMARY_USAGE_ID","HID_USAGE_GD_DOCKABLE_DEVICE_DOCKING_STATE","HID_USAGE_GD_DOCKABLE_DEVICE_DISPLAY_OCCLUSION","HID_USAGE_GD_DOCKABLE_DEVICE_OBJECT_TYPE","HID_USAGE_SIM_UNDEFINED","HID_USAGE_SIM_FLIGHT_SIMULATION_DEVICE","HID_USAGE_SIM_AUTOMOBILE_SIMULATION_DEVICE","HID_USAGE_SIM_TANK_SIMULATION_DEVICE","HID_USAGE_SIM_SPACESHIP_SIMULATION_DEVICE","HID_USAGE_SIM_SUBMARINE_SIMULATION_DEVICE","HID_USAGE_SIM_SAILING_SIMULATION_DEVICE","HID_USAGE_SIM_MOTORCYCLE_SIMULATION_DEVICE","HID_USAGE_SIM_SPORTS_SIMULATION_DEVICE","HID_USAGE_SIM_AIRPLANE_SIMULATION_DEVICE","HID_USAGE_SIM_HELICOPTER_SIMULATION_DEVICE","HID_USAGE_SIM_MAGIC_CARPET_SIMULATION_DEVICE","HID_USAGE_SIM_BICYCLE_SIMULATION_DEVICE","HID_USAGE_SIM_FLIGHT_CONTROL_STICK","HID_USAGE_SIM_FLIGHT_STICK","HID_USAGE_SIM_CYCLIC_CONTROL","HID_USAGE_SIM_CYCLIC_TRIM","HID_USAGE_SIM_FLIGHT_YOKE","HID_USAGE_SIM_TRACK_CONTROL","HID_USAGE_SIM_AILERON","HID_USAGE_SIM_AILERON_TRIM","HID_USAGE_SIM_ANTI_TORQUE_CONTROL","HID_USAGE_SIM_AUTOPILOT_ENABLE","HID_USAGE_SIM_CHAFF_RELEASE","HID_USAGE_SIM_COLLECTIVE_CONTROL","HID_USAGE_SIM_DIVE_BRAKE","HID_USAGE_SIM_ELECTRONIC_COUNTERMEASURES","HID_USAGE_SIM_ELEVATOR","HID_USAGE_SIM_ELEVATOR_TRIM","HID_USAGE_SIM_RUDDER","HID_USAGE_SIM_THROTTLE","HID_USAGE_SIM_FLIGHT_COMMUNICATIONS","HID_USAGE_SIM_FLARE_RELEASE","HID_USAGE_SIM_LANDING_GEAR","HID_USAGE_SIM_TOE_BRAKE","HID_USAGE_SIM_TRIGGER","HID_USAGE_SIM_WEAPONS_ARM","HID_USAGE_SIM_WEAPONS_SELECT","HID_USAGE_SIM_WING_FLAPS","HID_USAGE_SIM_ACCELERATOR","HID_USAGE_SIM_BRAKE","HID_USAGE_SIM_CLUTCH","HID_USAGE_SIM_SHIFTER","HID_USAGE_SIM_STEERING","HID_USAGE_SIM_TURRET_DIRECTION","HID_USAGE_SIM_BARREL_ELEVATION","HID_USAGE_SIM_DIVE_PLANE","HID_USAGE_SIM_BALLAST","HID_USAGE_SIM_BICYCLE_CRANK","HID_USAGE_SIM_HANDLE_BARS","HID_USAGE_SIM_FRONT_BRAKE","HID_USAGE_SIM_REAR_BRAKE","HID_USAGE_VR_UNDEFINED","HID_USAGE_VR_BELT","HID_USAGE_VR_BODY_SUIT","HID_USAGE_VR_FLEXOR","HID_USAGE_VR_GLOVE","HID_USAGE_VR_HEAD_TRACKER","HID_USAGE_VR_HEAD_MOUNTED_DISPLAY","HID_USAGE_VR_HAND_TRACKER","HID_USAGE_VR_OCULOMETER","HID_USAGE_VR_VEST","HID_USAGE_VR_ANIMATRONIC_DEVICE","HID_USAGE_VR_STEREO_ENABLE","HID_USAGE_VR_DISPLAY_ENABLE","HID_USAGE_SPORT_UNDEFINED","HID_USAGE_SPORT_BASEBALL_BAT","HID_USAGE_SPORT_GOLF_CLUB","HID_USAGE_SPORT_ROWING_MACHINE","HID_USAGE_SPORT_TREADMILL","HID_USAGE_SPORT_OAR","HID_USAGE_SPORT_SLOPE","HID_USAGE_SPORT_RATE","HID_USAGE_SPORT_STICK_SPEED","HID_USAGE_SPORT_STICK_FACE_ANGLE","HID_USAGE_SPORT_STICK_HEEL_TOE","HID_USAGE_SPORT_STICK_FOLLOW_THROUGH","HID_USAGE_SPORT_STICK_TEMPO","HID_USAGE_SPORT_STICK_TYPE","HID_USAGE_SPORT_STICK_HEIGHT","HID_USAGE_SPORT_PUTTER","HID_USAGE_SPORT_1_IRON","HID_USAGE_SPORT_2_IRON","HID_USAGE_SPORT_3_IRON","HID_USAGE_SPORT_4_IRON","HID_USAGE_SPORT_5_IRON","HID_USAGE_SPORT_6_IRON","HID_USAGE_SPORT_7_IRON","HID_USAGE_SPORT_8_IRON","HID_USAGE_SPORT_9_IRON","HID_USAGE_SPORT_10_IRON","HID_USAGE_SPORT_11_IRON","HID_USAGE_SPORT_SAND_WEDGE","HID_USAGE_SPORT_LOFT_WEDGE","HID_USAGE_SPORT_POWER_WEDGE","HID_USAGE_SPORT_1_WOOD","HID_USAGE_SPORT_3_WOOD","HID_USAGE_SPORT_5_WOOD","HID_USAGE_SPORT_7_WOOD","HID_USAGE_SPORT_9_WOOD","HID_USAGE_GAME_UNDEFINED","HID_USAGE_GAME_3D_GAME_CONTROLLER","HID_USAGE_GAME_PINBALL_DEVICE","HID_USAGE_GAME_GUN_DEVICE","HID_USAGE_GAME_POINT_OF_VIEW","HID_USAGE_GAME_TURN_RIGHT_LEFT","HID_USAGE_GAME_PITCH_FORWARD_BACKWARD","HID_USAGE_GAME_ROLL_RIGHT_LEFT","HID_USAGE_GAME_MOVE_RIGHT_LEFT","HID_USAGE_GAME_MOVE_FORWARD_BACKWARD","HID_USAGE_GAME_MOVE_UP_DOWN","HID_USAGE_GAME_LEAN_RIGHT_LEFT","HID_USAGE_GAME_LEAN_FORWARD_BACKWARD","HID_USAGE_GAME_HEIGHT_OF_POV","HID_USAGE_GAME_FLIPPER","HID_USAGE_GAME_SECONDARY_FLIPPER","HID_USAGE_GAME_BUMP","HID_USAGE_GAME_NEW_GAME","HID_USAGE_GAME_SHOOT_BALL","HID_USAGE_GAME_PLAYER","HID_USAGE_GAME_GUN_BOLT","HID_USAGE_GAME_GUN_CLIP","HID_USAGE_GAME_GUN_SELECTOR","HID_USAGE_GAME_GUN_SINGLE_SHOT","HID_USAGE_GAME_GUN_BURST","HID_USAGE_GAME_GUN_AUTOMATIC","HID_USAGE_GAME_GUN_SAFETY","HID_USAGE_GAME_GAMEPAD_FIRE_JUMP","HID_USAGE_GAME_GAMEPAD_TRIGGER","HID_USAGE_GAME_FORM_FITTING_GAMEPAD","HID_USAGE_GDV_UNDEFINED","HID_USAGE_GDV_BACKGROUND_NONUSER_CONTROLS","HID_USAGE_GDV_BATTERY_STRENGTH","HID_USAGE_GDV_WIRELESS_CHANNEL","HID_USAGE_GDV_WIRELESS_ID","HID_USAGE_GDV_DISCOVER_WIRELESS_CONTROL","HID_USAGE_GDV_SECURITY_CODE_CHARACTER_ENTERED","HID_USAGE_GDV_SECURITY_CODE_CHARACTER_ERASED","HID_USAGE_GDV_SECURITY_CODE_CLEARED","HID_USAGE_GDV_SEQUENCE_ID","HID_USAGE_GDV_SEQUENCE_ID_RESET","HID_USAGE_GDV_RF_SIGNAL_STRENGTH","HID_USAGE_GDV_SOFTWARE_VERSION","HID_USAGE_GDV_PROTOCOL_VERSION","HID_USAGE_GDV_HARDWARE_VERSION","HID_USAGE_GDV_MAJOR","HID_USAGE_GDV_MINOR","HID_USAGE_GDV_REVISION","HID_USAGE_GDV_HANDEDNESS","HID_USAGE_GDV_EITHER_HAND","HID_USAGE_GDV_LEFT_HAND","HID_USAGE_GDV_RIGHT_HAND","HID_USAGE_GDV_BOTH_HANDS","HID_USAGE_GDV_GRIP_POSE_OFFSET","HID_USAGE_GDV_POINTER_POSE_OFFSET","HID_USAGE_KEY_KEYBOARD_ERRORROLLOVER","HID_USAGE_KEY_KEYBOARD_POSTFAIL","HID_USAGE_KEY_KEYBOARD_ERRORUNDEFINED","HID_USAGE_KEY_KEYBOARD_A","HID_USAGE_KEY_KEYBOARD_B","HID_USAGE_KEY_KEYBOARD_C","HID_USAGE_KEY_KEYBOARD_D","HID_USAGE_KEY_KEYBOARD_E","HID_USAGE_KEY_KEYBOARD_F","HID_USAGE_KEY_KEYBOARD_G","HID_USAGE_KEY_KEYBOARD_H","HID_USAGE_KEY_KEYBOARD_I","HID_USAGE_KEY_KEYBOARD_J","HID_USAGE_KEY_KEYBOARD_K","HID_USAGE_KEY_KEYBOARD_L","HID_USAGE_KEY_KEYBOARD_M","HID_USAGE_KEY_KEYBOARD_N","HID_USAGE_KEY_KEYBOARD_O","HID_USAGE_KEY_KEYBOARD_P","HID_USAGE_KEY_KEYBOARD_Q","HID_USAGE_KEY_KEYBOARD_R","HID_USAGE_KEY_KEYBOARD_S","HID_USAGE_KEY_KEYBOARD_T","HID_USAGE_KEY_KEYBOARD_U","HID_USAGE_KEY_KEYBOARD_V","HID_USAGE_KEY_KEYBOARD_W","HID_USAGE_KEY_KEYBOARD_X","HID_USAGE_KEY_KEYBOARD_Y","HID_USAGE_KEY_KEYBOARD_Z","HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION","HID_USAGE_KEY_KEYBOARD_2_AND_AT","HID_USAGE_KEY_KEYBOARD_3_AND_HASH","HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR","HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT","HID_USAGE_KEY_KEYBOARD_6_AND_CARET","HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND","HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK","HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS","HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS","HID_USAGE_KEY_KEYBOARD_RETURN_ENTER","HID_USAGE_KEY_KEYBOARD_ESCAPE","HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE","HID_USAGE_KEY_KEYBOARD_TAB","HID_USAGE_KEY_KEYBOARD_SPACEBAR","HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE","HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS","HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE","HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE","HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE","HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE","HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON","HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE","HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE","HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN","HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN","HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK","HID_USAGE_KEY_KEYBOARD_CAPS_LOCK","HID_USAGE_KEY_KEYBOARD_F1","HID_USAGE_KEY_KEYBOARD_F2","HID_USAGE_KEY_KEYBOARD_F3","HID_USAGE_KEY_KEYBOARD_F4","HID_USAGE_KEY_KEYBOARD_F5","HID_USAGE_KEY_KEYBOARD_F6","HID_USAGE_KEY_KEYBOARD_F7","HID_USAGE_KEY_KEYBOARD_F8","HID_USAGE_KEY_KEYBOARD_F9","HID_USAGE_KEY_KEYBOARD_F10","HID_USAGE_KEY_KEYBOARD_F11","HID_USAGE_KEY_KEYBOARD_F12","HID_USAGE_KEY_KEYBOARD_PRINTSCREEN","HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK","HID_USAGE_KEY_KEYBOARD_PAUSE","HID_USAGE_KEY_KEYBOARD_INSERT","HID_USAGE_KEY_KEYBOARD_HOME","HID_USAGE_KEY_KEYBOARD_PAGEUP","HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD","HID_USAGE_KEY_KEYBOARD_END","HID_USAGE_KEY_KEYBOARD_PAGEDOWN","HID_USAGE_KEY_KEYBOARD_RIGHTARROW","HID_USAGE_KEY_KEYBOARD_LEFTARROW","HID_USAGE_KEY_KEYBOARD_DOWNARROW","HID_USAGE_KEY_KEYBOARD_UPARROW","HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR","HID_USAGE_KEY_KEYPAD_SLASH","HID_USAGE_KEY_KEYPAD_ASTERISK","HID_USAGE_KEY_KEYPAD_MINUS","HID_USAGE_KEY_KEYPAD_PLUS","HID_USAGE_KEY_KEYPAD_ENTER","HID_USAGE_KEY_KEYPAD_1_AND_END","HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW","HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN","HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW","HID_USAGE_KEY_KEYPAD_5","HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW","HID_USAGE_KEY_KEYPAD_7_AND_HOME","HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW","HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP","HID_USAGE_KEY_KEYPAD_0_AND_INSERT","HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE","HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE","HID_USAGE_KEY_KEYBOARD_APPLICATION","HID_USAGE_KEY_KEYBOARD_POWER","HID_USAGE_KEY_KEYPAD_EQUAL","HID_USAGE_KEY_KEYBOARD_F13","HID_USAGE_KEY_KEYBOARD_F14","HID_USAGE_KEY_KEYBOARD_F15","HID_USAGE_KEY_KEYBOARD_F16","HID_USAGE_KEY_KEYBOARD_F17","HID_USAGE_KEY_KEYBOARD_F18","HID_USAGE_KEY_KEYBOARD_F19","HID_USAGE_KEY_KEYBOARD_F20","HID_USAGE_KEY_KEYBOARD_F21","HID_USAGE_KEY_KEYBOARD_F22","HID_USAGE_KEY_KEYBOARD_F23","HID_USAGE_KEY_KEYBOARD_F24","HID_USAGE_KEY_KEYBOARD_EXECUTE","HID_USAGE_KEY_KEYBOARD_HELP","HID_USAGE_KEY_KEYBOARD_MENU","HID_USAGE_KEY_KEYBOARD_SELECT","HID_USAGE_KEY_KEYBOARD_STOP","HID_USAGE_KEY_KEYBOARD_AGAIN","HID_USAGE_KEY_KEYBOARD_UNDO","HID_USAGE_KEY_KEYBOARD_CUT","HID_USAGE_KEY_KEYBOARD_COPY","HID_USAGE_KEY_KEYBOARD_PASTE","HID_USAGE_KEY_KEYBOARD_FIND","HID_USAGE_KEY_KEYBOARD_MUTE","HID_USAGE_KEY_KEYBOARD_VOLUME_UP","HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN","HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK","HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK","HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK","HID_USAGE_KEY_KEYPAD_COMMA","HID_USAGE_KEY_KEYPAD_EQUAL_SIGN","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8","HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9","HID_USAGE_KEY_KEYBOARD_LANG1","HID_USAGE_KEY_KEYBOARD_LANG2","HID_USAGE_KEY_KEYBOARD_LANG3","HID_USAGE_KEY_KEYBOARD_LANG4","HID_USAGE_KEY_KEYBOARD_LANG5","HID_USAGE_KEY_KEYBOARD_LANG6","HID_USAGE_KEY_KEYBOARD_LANG7","HID_USAGE_KEY_KEYBOARD_LANG8","HID_USAGE_KEY_KEYBOARD_LANG9","HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE","HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION","HID_USAGE_KEY_KEYBOARD_CANCEL","HID_USAGE_KEY_KEYBOARD_CLEAR","HID_USAGE_KEY_KEYBOARD_PRIOR","HID_USAGE_KEY_KEYBOARD_RETURN","HID_USAGE_KEY_KEYBOARD_SEPARATOR","HID_USAGE_KEY_KEYBOARD_OUT","HID_USAGE_KEY_KEYBOARD_OPER","HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN","HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS","HID_USAGE_KEY_KEYBOARD_EXSEL","HID_USAGE_KEY_KEYPAD_00","HID_USAGE_KEY_KEYPAD_000","HID_USAGE_KEY_THOUSANDS_SEPARATOR","HID_USAGE_KEY_DECIMAL_SEPARATOR","HID_USAGE_KEY_CURRENCY_UNIT","HID_USAGE_KEY_CURRENCY_SUB_UNIT","HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS","HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS","HID_USAGE_KEY_KEYPAD_LEFT_BRACE","HID_USAGE_KEY_KEYPAD_RIGHT_BRACE","HID_USAGE_KEY_KEYPAD_TAB","HID_USAGE_KEY_KEYPAD_BACKSPACE","HID_USAGE_KEY_KEYPAD_A","HID_USAGE_KEY_KEYPAD_B","HID_USAGE_KEY_KEYPAD_C","HID_USAGE_KEY_KEYPAD_D","HID_USAGE_KEY_KEYPAD_E","HID_USAGE_KEY_KEYPAD_F","HID_USAGE_KEY_KEYPAD_XOR","HID_USAGE_KEY_KEYPAD_CARET","HID_USAGE_KEY_KEYPAD_PERCENT","HID_USAGE_KEY_KEYPAD_LESS_THAN","HID_USAGE_KEY_KEYPAD_GREATER_THAN","HID_USAGE_KEY_KEYPAD_AMPERSAND","HID_USAGE_KEY_KEYPAD_AMPERSAND_AMPERSAND","HID_USAGE_KEY_KEYPAD_PIPE","HID_USAGE_KEY_KEYPAD_PIPE_PIPE","HID_USAGE_KEY_KEYPAD_COLON","HID_USAGE_KEY_KEYPAD_HASH","HID_USAGE_KEY_KEYPAD_SPACE","HID_USAGE_KEY_KEYPAD_AT","HID_USAGE_KEY_KEYPAD_EXCLAMATION","HID_USAGE_KEY_KEYPAD_MEMORY_STORE","HID_USAGE_KEY_KEYPAD_MEMORY_RECALL","HID_USAGE_KEY_KEYPAD_MEMORY_CLEAR","HID_USAGE_KEY_KEYPAD_MEMORY_ADD","HID_USAGE_KEY_KEYPAD_MEMORY_SUBTRACT","HID_USAGE_KEY_KEYPAD_MEMORY_MULTIPLY","HID_USAGE_KEY_KEYPAD_MEMORY_DIVIDE","HID_USAGE_KEY_KEYPAD_PLUS_MINUS","HID_USAGE_KEY_KEYPAD_CLEAR","HID_USAGE_KEY_KEYPAD_CLEAR_ENTRY","HID_USAGE_KEY_KEYPAD_BINARY","HID_USAGE_KEY_KEYPAD_OCTAL","HID_USAGE_KEY_KEYPAD_DECIMAL","HID_USAGE_KEY_KEYPAD_HEXADECIMAL","HID_USAGE_KEY_KEYBOARD_LEFTCONTROL","HID_USAGE_KEY_KEYBOARD_LEFTSHIFT","HID_USAGE_KEY_KEYBOARD_LEFTALT","HID_USAGE_KEY_KEYBOARD_LEFT_GUI","HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL","HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT","HID_USAGE_KEY_KEYBOARD_RIGHTALT","HID_USAGE_KEY_KEYBOARD_RIGHT_GUI","HID_USAGE_LED_UNDEFINED","HID_USAGE_LED_NUM_LOCK","HID_USAGE_LED_CAPS_LOCK","HID_USAGE_LED_SCROLL_LOCK","HID_USAGE_LED_COMPOSE","HID_USAGE_LED_KANA","HID_USAGE_LED_POWER","HID_USAGE_LED_SHIFT","HID_USAGE_LED_DO_NOT_DISTURB","HID_USAGE_LED_MUTE","HID_USAGE_LED_TONE_ENABLE","HID_USAGE_LED_HIGH_CUT_FILTER","HID_USAGE_LED_LOW_CUT_FILTER","HID_USAGE_LED_EQUALIZER_ENABLE","HID_USAGE_LED_SOUND_FIELD_ON","HID_USAGE_LED_SURROUND_ON","HID_USAGE_LED_REPEAT","HID_USAGE_LED_STEREO","HID_USAGE_LED_SAMPLING_RATE_DETECT","HID_USAGE_LED_SPINNING","HID_USAGE_LED_CAV","HID_USAGE_LED_CLV","HID_USAGE_LED_RECORDING_FORMAT_DETECT","HID_USAGE_LED_OFF_HOOK","HID_USAGE_LED_RING","HID_USAGE_LED_MESSAGE_WAITING","HID_USAGE_LED_DATA_MODE","HID_USAGE_LED_BATTERY_OPERATION","HID_USAGE_LED_BATTERY_OK","HID_USAGE_LED_BATTERY_LOW","HID_USAGE_LED_SPEAKER","HID_USAGE_LED_HEAD_SET","HID_USAGE_LED_HOLD","HID_USAGE_LED_MICROPHONE","HID_USAGE_LED_COVERAGE","HID_USAGE_LED_NIGHT_MODE","HID_USAGE_LED_SEND_CALLS","HID_USAGE_LED_CALL_PICKUP","HID_USAGE_LED_CONFERENCE","HID_USAGE_LED_STAND_BY","HID_USAGE_LED_CAMERA_ON","HID_USAGE_LED_CAMERA_OFF","HID_USAGE_LED_ON_LINE","HID_USAGE_LED_OFF_LINE","HID_USAGE_LED_BUSY","HID_USAGE_LED_READY","HID_USAGE_LED_PAPER_OUT","HID_USAGE_LED_PAPER_JAM","HID_USAGE_LED_REMOTE","HID_USAGE_LED_FORWARD","HID_USAGE_LED_REVERSE","HID_USAGE_LED_STOP","HID_USAGE_LED_REWIND","HID_USAGE_LED_FAST_FORWARD","HID_USAGE_LED_PLAY","HID_USAGE_LED_PAUSE","HID_USAGE_LED_RECORD","HID_USAGE_LED_ERROR","HID_USAGE_LED_USAGE_SELECTED_INDICATOR","HID_USAGE_LED_USAGE_IN_USE_INDICATOR","HID_USAGE_LED_USAGE_MULTI_MODE_INDICATOR","HID_USAGE_LED_INDICATOR_ON","HID_USAGE_LED_INDICATOR_FLASH","HID_USAGE_LED_INDICATOR_SLOW_BLINK","HID_USAGE_LED_INDICATOR_FAST_BLINK","HID_USAGE_LED_INDICATOR_OFF","HID_USAGE_LED_FLASH_ON_TIME","HID_USAGE_LED_SLOW_BLINK_ON_TIME","HID_USAGE_LED_SLOW_BLINK_OFF_TIME","HID_USAGE_LED_FAST_BLINK_ON_TIME","HID_USAGE_LED_FAST_BLINK_OFF_TIME","HID_USAGE_LED_USAGE_INDICATOR_COLOR","HID_USAGE_LED_INDICATOR_RED","HID_USAGE_LED_INDICATOR_GREEN","HID_USAGE_LED_INDICATOR_AMBER","HID_USAGE_LED_GENERIC_INDICATOR","HID_USAGE_LED_SYSTEM_SUSPEND","HID_USAGE_LED_EXTERNAL_POWER_CONNECTED","HID_USAGE_LED_INDICATOR_BLUE","HID_USAGE_LED_INDICATOR_ORANGE","HID_USAGE_LED_GOOD_STATUS","HID_USAGE_LED_WARNING_STATUS","HID_USAGE_LED_RGB_LED","HID_USAGE_LED_RED_LED_CHANNEL","HID_USAGE_LED_BLUE_LED_CHANNEL","HID_USAGE_LED_GREEN_LED_CHANNEL","HID_USAGE_LED_LED_INTENSITY","HID_USAGE_LED_PLAYER_INDICATOR","HID_USAGE_LED_PLAYER_1","HID_USAGE_LED_PLAYER_2","HID_USAGE_LED_PLAYER_3","HID_USAGE_LED_PLAYER_4","HID_USAGE_LED_PLAYER_5","HID_USAGE_LED_PLAYER_6","HID_USAGE_LED_PLAYER_7","HID_USAGE_LED_PLAYER_8","HID_USAGE_TELEPHONY_UNDEFINED","HID_USAGE_TELEPHONY_PHONE","HID_USAGE_TELEPHONY_ANSWERING_MACHINE","HID_USAGE_TELEPHONY_MESSAGE_CONTROLS","HID_USAGE_TELEPHONY_HANDSET","HID_USAGE_TELEPHONY_HEADSET","HID_USAGE_TELEPHONY_TELEPHONY_KEY_PAD","HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON","HID_USAGE_TELEPHONY_HOOK_SWITCH","HID_USAGE_TELEPHONY_FLASH","HID_USAGE_TELEPHONY_FEATURE","HID_USAGE_TELEPHONY_HOLD","HID_USAGE_TELEPHONY_REDIAL","HID_USAGE_TELEPHONY_TRANSFER","HID_USAGE_TELEPHONY_DROP","HID_USAGE_TELEPHONY_PARK","HID_USAGE_TELEPHONY_FORWARD_CALLS","HID_USAGE_TELEPHONY_ALTERNATE_FUNCTION","HID_USAGE_TELEPHONY_LINE","HID_USAGE_TELEPHONY_SPEAKER_PHONE","HID_USAGE_TELEPHONY_CONFERENCE","HID_USAGE_TELEPHONY_RING_ENABLE","HID_USAGE_TELEPHONY_RING_SELECT","HID_USAGE_TELEPHONY_PHONE_MUTE","HID_USAGE_TELEPHONY_CALLER_ID","HID_USAGE_TELEPHONY_SEND","HID_USAGE_TELEPHONY_SPEED_DIAL","HID_USAGE_TELEPHONY_STORE_NUMBER","HID_USAGE_TELEPHONY_RECALL_NUMBER","HID_USAGE_TELEPHONY_PHONE_DIRECTORY","HID_USAGE_TELEPHONY_VOICE_MAIL","HID_USAGE_TELEPHONY_SCREEN_CALLS","HID_USAGE_TELEPHONY_DO_NOT_DISTURB","HID_USAGE_TELEPHONY_MESSAGE","HID_USAGE_TELEPHONY_ANSWER_ON_OFF","HID_USAGE_TELEPHONY_INSIDE_DIAL_TONE","HID_USAGE_TELEPHONY_OUTSIDE_DIAL_TONE","HID_USAGE_TELEPHONY_INSIDE_RING_TONE","HID_USAGE_TELEPHONY_OUTSIDE_RING_TONE","HID_USAGE_TELEPHONY_PRIORITY_RING_TONE","HID_USAGE_TELEPHONY_INSIDE_RINGBACK","HID_USAGE_TELEPHONY_PRIORITY_RINGBACK","HID_USAGE_TELEPHONY_LINE_BUSY_TONE","HID_USAGE_TELEPHONY_REORDER_TONE","HID_USAGE_TELEPHONY_CALL_WAITING_TONE","HID_USAGE_TELEPHONY_CONFIRMATION_TONE_1","HID_USAGE_TELEPHONY_CONFIRMATION_TONE_2","HID_USAGE_TELEPHONY_TONES_OFF","HID_USAGE_TELEPHONY_OUTSIDE_RINGBACK","HID_USAGE_TELEPHONY_RINGER","HID_USAGE_TELEPHONY_PHONE_KEY_0","HID_USAGE_TELEPHONY_PHONE_KEY_1","HID_USAGE_TELEPHONY_PHONE_KEY_2","HID_USAGE_TELEPHONY_PHONE_KEY_3","HID_USAGE_TELEPHONY_PHONE_KEY_4","HID_USAGE_TELEPHONY_PHONE_KEY_5","HID_USAGE_TELEPHONY_PHONE_KEY_6","HID_USAGE_TELEPHONY_PHONE_KEY_7","HID_USAGE_TELEPHONY_PHONE_KEY_8","HID_USAGE_TELEPHONY_PHONE_KEY_9","HID_USAGE_TELEPHONY_PHONE_KEY_STAR","HID_USAGE_TELEPHONY_PHONE_KEY_POUND","HID_USAGE_TELEPHONY_PHONE_KEY_A","HID_USAGE_TELEPHONY_PHONE_KEY_B","HID_USAGE_TELEPHONY_PHONE_KEY_C","HID_USAGE_TELEPHONY_PHONE_KEY_D","HID_USAGE_TELEPHONY_PHONE_CALL_HISTORY_KEY","HID_USAGE_TELEPHONY_PHONE_CALLER_ID_KEY","HID_USAGE_TELEPHONY_PHONE_SETTINGS_KEY","HID_USAGE_TELEPHONY_HOST_CONTROL","HID_USAGE_TELEPHONY_HOST_AVAILABLE","HID_USAGE_TELEPHONY_HOST_CALL_ACTIVE","HID_USAGE_TELEPHONY_ACTIVATE_HANDSET_AUDIO","HID_USAGE_TELEPHONY_RING_TYPE","HID_USAGE_TELEPHONY_RE_DIALABLE_PHONE_NUMBER","HID_USAGE_TELEPHONY_STOP_RING_TONE","HID_USAGE_TELEPHONY_PSTN_RING_TONE","HID_USAGE_TELEPHONY_HOST_RING_TONE","HID_USAGE_TELEPHONY_ALERT_SOUND_ERROR","HID_USAGE_TELEPHONY_ALERT_SOUND_CONFIRM","HID_USAGE_TELEPHONY_ALERT_SOUND_NOTIFICATION","HID_USAGE_TELEPHONY_SILENT_RING","HID_USAGE_TELEPHONY_EMAIL_MESSAGE_WAITING","HID_USAGE_TELEPHONY_VOICEMAIL_MESSAGE_WAITING","HID_USAGE_TELEPHONY_HOST_HOLD","HID_USAGE_TELEPHONY_INCOMING_CALL_HISTORY_COUNT","HID_USAGE_TELEPHONY_OUTGOING_CALL_HISTORY_COUNT","HID_USAGE_TELEPHONY_INCOMING_CALL_HISTORY","HID_USAGE_TELEPHONY_OUTGOING_CALL_HISTORY","HID_USAGE_TELEPHONY_PHONE_LOCALE","HID_USAGE_TELEPHONY_PHONE_TIME_SECOND","HID_USAGE_TELEPHONY_PHONE_TIME_MINUTE","HID_USAGE_TELEPHONY_PHONE_TIME_HOUR","HID_USAGE_TELEPHONY_PHONE_DATE_DAY","HID_USAGE_TELEPHONY_PHONE_DATE_MONTH","HID_USAGE_TELEPHONY_PHONE_DATE_YEAR","HID_USAGE_TELEPHONY_HANDSET_NICKNAME","HID_USAGE_TELEPHONY_ADDRESS_BOOK_ID","HID_USAGE_TELEPHONY_CALL_DURATION","HID_USAGE_TELEPHONY_DUAL_MODE_PHONE","HID_USAGE_CONSUMER_UNDEFINED","HID_USAGE_CONSUMER_CONSUMER_CONTROL","HID_USAGE_CONSUMER_NUMERIC_KEY_PAD","HID_USAGE_CONSUMER_PROGRAMMABLE_BUTTONS","HID_USAGE_CONSUMER_MICROPHONE","HID_USAGE_CONSUMER_HEADPHONE","HID_USAGE_CONSUMER_GRAPHIC_EQUALIZER","HID_USAGE_CONSUMER_INCREMENT10","HID_USAGE_CONSUMER_INCREMENT100","HID_USAGE_CONSUMER_AM_PM","HID_USAGE_CONSUMER_POWER","HID_USAGE_CONSUMER_RESET","HID_USAGE_CONSUMER_SLEEP","HID_USAGE_CONSUMER_SLEEP_AFTER","HID_USAGE_CONSUMER_SLEEP_MODE","HID_USAGE_CONSUMER_ILLUMINATION","HID_USAGE_CONSUMER_FUNCTION_BUTTONS","HID_USAGE_CONSUMER_MENU","HID_USAGE_CONSUMER_MENU_PICK","HID_USAGE_CONSUMER_MENU_UP","HID_USAGE_CONSUMER_MENU_DOWN","HID_USAGE_CONSUMER_MENU_LEFT","HID_USAGE_CONSUMER_MENU_RIGHT","HID_USAGE_CONSUMER_MENU_ESCAPE","HID_USAGE_CONSUMER_MENU_VALUE_INCREASE","HID_USAGE_CONSUMER_MENU_VALUE_DECREASE","HID_USAGE_CONSUMER_DATA_ON_SCREEN","HID_USAGE_CONSUMER_CLOSED_CAPTION","HID_USAGE_CONSUMER_CLOSED_CAPTION_SELECT","HID_USAGE_CONSUMER_VCR_TV","HID_USAGE_CONSUMER_BROADCAST_MODE","HID_USAGE_CONSUMER_SNAPSHOT","HID_USAGE_CONSUMER_STILL","HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE","HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_SWAP","HID_USAGE_CONSUMER_RED_MENU_BUTTON","HID_USAGE_CONSUMER_GREEN_MENU_BUTTON","HID_USAGE_CONSUMER_BLUE_MENU_BUTTON","HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON","HID_USAGE_CONSUMER_ASPECT","HID_USAGE_CONSUMER_3D_MODE_SELECT","HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT","HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT","HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS","HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE","HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM","HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM","HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS","HID_USAGE_CONSUMER_CAMERA_ACCESS_ENABLED","HID_USAGE_CONSUMER_CAMERA_ACCESS_DISABLED","HID_USAGE_CONSUMER_CAMERA_ACCESS_TOGGLE","HID_USAGE_CONSUMER_KEYBOARD_BRIGHTNESS_INCREMENT","HID_USAGE_CONSUMER_KEYBOARD_BRIGHTNESS_DECREMENT","HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_LEVEL","HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_OOC","HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_MINIMUM","HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_MAXIMUM","HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_AUTO","HID_USAGE_CONSUMER_SELECTION","HID_USAGE_CONSUMER_ASSIGN_SELECTION","HID_USAGE_CONSUMER_MODE_STEP","HID_USAGE_CONSUMER_RECALL_LAST","HID_USAGE_CONSUMER_ENTER_CHANNEL","HID_USAGE_CONSUMER_ORDER_MOVIE","HID_USAGE_CONSUMER_CHANNEL","HID_USAGE_CONSUMER_MEDIA_SELECTION","HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER","HID_USAGE_CONSUMER_MEDIA_SELECT_TV","HID_USAGE_CONSUMER_MEDIA_SELECT_WWW","HID_USAGE_CONSUMER_MEDIA_SELECT_DVD","HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE","HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE","HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE","HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES","HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES","HID_USAGE_CONSUMER_MEDIA_SELECT_CD","HID_USAGE_CONSUMER_MEDIA_SELECT_VCR","HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER","HID_USAGE_CONSUMER_QUIT","HID_USAGE_CONSUMER_HELP","HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE","HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE","HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE","HID_USAGE_CONSUMER_MEDIA_SELECT_SECURITY","HID_USAGE_CONSUMER_MEDIA_SELECT_HOME","HID_USAGE_CONSUMER_MEDIA_SELECT_CALL","HID_USAGE_CONSUMER_CHANNEL_INCREMENT","HID_USAGE_CONSUMER_CHANNEL_DECREMENT","HID_USAGE_CONSUMER_MEDIA_SELECT_SAP","HID_USAGE_CONSUMER_VCR_PLUS","HID_USAGE_CONSUMER_ONCE","HID_USAGE_CONSUMER_DAILY","HID_USAGE_CONSUMER_WEEKLY","HID_USAGE_CONSUMER_MONTHLY","HID_USAGE_CONSUMER_PLAY","HID_USAGE_CONSUMER_PAUSE","HID_USAGE_CONSUMER_RECORD","HID_USAGE_CONSUMER_FAST_FORWARD","HID_USAGE_CONSUMER_REWIND","HID_USAGE_CONSUMER_SCAN_NEXT_TRACK","HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK","HID_USAGE_CONSUMER_STOP","HID_USAGE_CONSUMER_EJECT","HID_USAGE_CONSUMER_RANDOM_PLAY","HID_USAGE_CONSUMER_SELECT_DISC","HID_USAGE_CONSUMER_ENTER_DISC","HID_USAGE_CONSUMER_REPEAT","HID_USAGE_CONSUMER_TRACKING","HID_USAGE_CONSUMER_TRACK_NORMAL","HID_USAGE_CONSUMER_SLOW_TRACKING","HID_USAGE_CONSUMER_FRAME_FORWARD","HID_USAGE_CONSUMER_FRAME_BACK","HID_USAGE_CONSUMER_MARK","HID_USAGE_CONSUMER_CLEAR_MARK","HID_USAGE_CONSUMER_REPEAT_FROM_MARK","HID_USAGE_CONSUMER_RETURN_TO_MARK","HID_USAGE_CONSUMER_SEARCH_MARK_FORWARD","HID_USAGE_CONSUMER_SEARCH_MARK_BACKWARDS","HID_USAGE_CONSUMER_COUNTER_RESET","HID_USAGE_CONSUMER_SHOW_COUNTER","HID_USAGE_CONSUMER_TRACKING_INCREMENT","HID_USAGE_CONSUMER_TRACKING_DECREMENT","HID_USAGE_CONSUMER_STOP_EJECT","HID_USAGE_CONSUMER_PLAY_PAUSE","HID_USAGE_CONSUMER_PLAY_SKIP","HID_USAGE_CONSUMER_VOICE_COMMAND","HID_USAGE_CONSUMER_INVOKE_CAPTURE_INTERFACE","HID_USAGE_CONSUMER_START_OR_STOP_GAME_RECORDING","HID_USAGE_CONSUMER_HISTORICAL_GAME_CAPTURE","HID_USAGE_CONSUMER_CAPTURE_GAME_SCREENSHOT","HID_USAGE_CONSUMER_SHOW_OR_HIDE_RECORDING_INDICATOR","HID_USAGE_CONSUMER_START_OR_STOP_MICROPHONE_CAPTURE","HID_USAGE_CONSUMER_START_OR_STOP_CAMERA_CAPTURE","HID_USAGE_CONSUMER_START_OR_STOP_GAME_BROADCAST","HID_USAGE_CONSUMER_VOLUME","HID_USAGE_CONSUMER_BALANCE","HID_USAGE_CONSUMER_MUTE","HID_USAGE_CONSUMER_BASS","HID_USAGE_CONSUMER_TREBLE","HID_USAGE_CONSUMER_BASS_BOOST","HID_USAGE_CONSUMER_SURROUND_MODE","HID_USAGE_CONSUMER_LOUDNESS","HID_USAGE_CONSUMER_MPX","HID_USAGE_CONSUMER_VOLUME_INCREMENT","HID_USAGE_CONSUMER_VOLUME_DECREMENT","HID_USAGE_CONSUMER_SPEED_SELECT","HID_USAGE_CONSUMER_PLAYBACK_SPEED","HID_USAGE_CONSUMER_STANDARD_PLAY","HID_USAGE_CONSUMER_LONG_PLAY","HID_USAGE_CONSUMER_EXTENDED_PLAY","HID_USAGE_CONSUMER_SLOW","HID_USAGE_CONSUMER_FAN_ENABLE","HID_USAGE_CONSUMER_FAN_SPEED","HID_USAGE_CONSUMER_LIGHT_ENABLE","HID_USAGE_CONSUMER_LIGHT_ILLUMINATION_LEVEL","HID_USAGE_CONSUMER_CLIMATE_CONTROL_ENABLE","HID_USAGE_CONSUMER_ROOM_TEMPERATURE","HID_USAGE_CONSUMER_SECURITY_ENABLE","HID_USAGE_CONSUMER_FIRE_ALARM","HID_USAGE_CONSUMER_POLICE_ALARM","HID_USAGE_CONSUMER_PROXIMITY","HID_USAGE_CONSUMER_MOTION","HID_USAGE_CONSUMER_DURESS_ALARM","HID_USAGE_CONSUMER_HOLDUP_ALARM","HID_USAGE_CONSUMER_MEDICAL_ALARM","HID_USAGE_CONSUMER_BALANCE_RIGHT","HID_USAGE_CONSUMER_BALANCE_LEFT","HID_USAGE_CONSUMER_BASS_INCREMENT","HID_USAGE_CONSUMER_BASS_DECREMENT","HID_USAGE_CONSUMER_TREBLE_INCREMENT","HID_USAGE_CONSUMER_TREBLE_DECREMENT","HID_USAGE_CONSUMER_SPEAKER_SYSTEM","HID_USAGE_CONSUMER_CHANNEL_LEFT","HID_USAGE_CONSUMER_CHANNEL_RIGHT","HID_USAGE_CONSUMER_CHANNEL_CENTER","HID_USAGE_CONSUMER_CHANNEL_FRONT","HID_USAGE_CONSUMER_CHANNEL_CENTER_FRONT","HID_USAGE_CONSUMER_CHANNEL_SIDE","HID_USAGE_CONSUMER_CHANNEL_SURROUND","HID_USAGE_CONSUMER_CHANNEL_LOW_FREQUENCY_ENHANCEMENT","HID_USAGE_CONSUMER_CHANNEL_TOP","HID_USAGE_CONSUMER_CHANNEL_UNKNOWN","HID_USAGE_CONSUMER_SUB_CHANNEL","HID_USAGE_CONSUMER_SUB_CHANNEL_INCREMENT","HID_USAGE_CONSUMER_SUB_CHANNEL_DECREMENT","HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT","HID_USAGE_CONSUMER_ALTERNATE_AUDIO_DECREMENT","HID_USAGE_CONSUMER_APPLICATION_LAUNCH_BUTTONS","HID_USAGE_CONSUMER_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL","HID_USAGE_CONSUMER_AL_PROGRAMMABLE_BUTTON_CONFIGURATION","HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION","HID_USAGE_CONSUMER_AL_WORD_PROCESSOR","HID_USAGE_CONSUMER_AL_TEXT_EDITOR","HID_USAGE_CONSUMER_AL_SPREADSHEET","HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR","HID_USAGE_CONSUMER_AL_PRESENTATION_APP","HID_USAGE_CONSUMER_AL_DATABASE_APP","HID_USAGE_CONSUMER_AL_EMAIL_READER","HID_USAGE_CONSUMER_AL_NEWSREADER","HID_USAGE_CONSUMER_AL_VOICEMAIL","HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK","HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE","HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER","HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD","HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE","HID_USAGE_CONSUMER_AL_CALCULATOR","HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK","HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER","HID_USAGE_CONSUMER_AL_LAN_WAN_BROWSER","HID_USAGE_CONSUMER_AL_INTERNET_BROWSER","HID_USAGE_CONSUMER_AL_REMOTE_NETWORKING_ISP_CONNECT","HID_USAGE_CONSUMER_AL_NETWORK_CONFERENCE","HID_USAGE_CONSUMER_AL_NETWORK_CHAT","HID_USAGE_CONSUMER_AL_TELEPHONY_DIALER","HID_USAGE_CONSUMER_AL_LOGON","HID_USAGE_CONSUMER_AL_LOGOFF","HID_USAGE_CONSUMER_AL_LOGON_LOGOFF","HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER","HID_USAGE_CONSUMER_AL_CONTROL_PANEL","HID_USAGE_CONSUMER_AL_COMMAND_LINE_PROCESSOR_RUN","HID_USAGE_CONSUMER_AL_PROCESS_TASK_MANAGER","HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION","HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION","HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION","HID_USAGE_CONSUMER_AL_PREEMPTIVE_HALT_TASK_APPLICATION","HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER","HID_USAGE_CONSUMER_AL_DOCUMENTS","HID_USAGE_CONSUMER_AL_THESAURUS","HID_USAGE_CONSUMER_AL_DICTIONARY","HID_USAGE_CONSUMER_AL_DESKTOP","HID_USAGE_CONSUMER_AL_SPELL_CHECK","HID_USAGE_CONSUMER_AL_GRAMMAR_CHECK","HID_USAGE_CONSUMER_AL_WIRELESS_STATUS","HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT","HID_USAGE_CONSUMER_AL_VIRUS_PROTECTION","HID_USAGE_CONSUMER_AL_ENCRYPTION","HID_USAGE_CONSUMER_AL_SCREEN_SAVER","HID_USAGE_CONSUMER_AL_ALARMS","HID_USAGE_CONSUMER_AL_CLOCK","HID_USAGE_CONSUMER_AL_FILE_BROWSER","HID_USAGE_CONSUMER_AL_POWER_STATUS","HID_USAGE_CONSUMER_AL_IMAGE_BROWSER","HID_USAGE_CONSUMER_AL_AUDIO_BROWSER","HID_USAGE_CONSUMER_AL_MOVIE_BROWSER","HID_USAGE_CONSUMER_AL_DIGITAL_RIGHTS_MANAGER","HID_USAGE_CONSUMER_AL_DIGITAL_WALLET","HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING","HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER","HID_USAGE_CONSUMER_AL_OEM_HELP","HID_USAGE_CONSUMER_AL_ONLINE_COMMUNITY","HID_USAGE_CONSUMER_AL_ENTERTAINMENT_CONTENT_BROWSER","HID_USAGE_CONSUMER_AL_ONLINE_SHOPPING_BROWSER","HID_USAGE_CONSUMER_AL_SMARTCARD_INFORMATION_HELP","HID_USAGE_CONSUMER_AL_MARKET_MONITOR_FINANCE_BROWSER","HID_USAGE_CONSUMER_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER","HID_USAGE_CONSUMER_AL_ONLINE_ACTIVITY_BROWSER","HID_USAGE_CONSUMER_AL_RESEARCH_SEARCH_BROWSER","HID_USAGE_CONSUMER_AL_AUDIO_PLAYER","HID_USAGE_CONSUMER_AL_MESSAGE_STATUS","HID_USAGE_CONSUMER_AL_CONTACT_SYNC","HID_USAGE_CONSUMER_AL_NAVIGATION","HID_USAGE_CONSUMER_AL_CONTEXT_AWARE_DESKTOP_ASSISTANT","HID_USAGE_CONSUMER_GENERIC_GUI_APPLICATION_CONTROLS","HID_USAGE_CONSUMER_AC_NEW","HID_USAGE_CONSUMER_AC_OPEN","HID_USAGE_CONSUMER_AC_CLOSE","HID_USAGE_CONSUMER_AC_EXIT","HID_USAGE_CONSUMER_AC_MAXIMIZE","HID_USAGE_CONSUMER_AC_MINIMIZE","HID_USAGE_CONSUMER_AC_SAVE","HID_USAGE_CONSUMER_AC_PRINT","HID_USAGE_CONSUMER_AC_PROPERTIES","HID_USAGE_CONSUMER_AC_UNDO","HID_USAGE_CONSUMER_AC_COPY","HID_USAGE_CONSUMER_AC_CUT","HID_USAGE_CONSUMER_AC_PASTE","HID_USAGE_CONSUMER_AC_SELECT_ALL","HID_USAGE_CONSUMER_AC_FIND","HID_USAGE_CONSUMER_AC_FIND_AND_REPLACE","HID_USAGE_CONSUMER_AC_SEARCH","HID_USAGE_CONSUMER_AC_GO_TO","HID_USAGE_CONSUMER_AC_HOME","HID_USAGE_CONSUMER_AC_BACK","HID_USAGE_CONSUMER_AC_FORWARD","HID_USAGE_CONSUMER_AC_STOP","HID_USAGE_CONSUMER_AC_REFRESH","HID_USAGE_CONSUMER_AC_PREVIOUS_LINK","HID_USAGE_CONSUMER_AC_NEXT_LINK","HID_USAGE_CONSUMER_AC_BOOKMARKS","HID_USAGE_CONSUMER_AC_HISTORY","HID_USAGE_CONSUMER_AC_SUBSCRIPTIONS","HID_USAGE_CONSUMER_AC_ZOOM_IN","HID_USAGE_CONSUMER_AC_ZOOM_OUT","HID_USAGE_CONSUMER_AC_ZOOM","HID_USAGE_CONSUMER_AC_FULL_SCREEN_VIEW","HID_USAGE_CONSUMER_AC_NORMAL_VIEW","HID_USAGE_CONSUMER_AC_VIEW_TOGGLE","HID_USAGE_CONSUMER_AC_SCROLL_UP","HID_USAGE_CONSUMER_AC_SCROLL_DOWN","HID_USAGE_CONSUMER_AC_SCROLL","HID_USAGE_CONSUMER_AC_PAN_LEFT","HID_USAGE_CONSUMER_AC_PAN_RIGHT","HID_USAGE_CONSUMER_AC_PAN","HID_USAGE_CONSUMER_AC_NEW_WINDOW","HID_USAGE_CONSUMER_AC_TILE_HORIZONTALLY","HID_USAGE_CONSUMER_AC_TILE_VERTICALLY","HID_USAGE_CONSUMER_AC_FORMAT","HID_USAGE_CONSUMER_AC_EDIT","HID_USAGE_CONSUMER_AC_BOLD","HID_USAGE_CONSUMER_AC_ITALICS","HID_USAGE_CONSUMER_AC_UNDERLINE","HID_USAGE_CONSUMER_AC_STRIKETHROUGH","HID_USAGE_CONSUMER_AC_SUBSCRIPT","HID_USAGE_CONSUMER_AC_SUPERSCRIPT","HID_USAGE_CONSUMER_AC_ALL_CAPS","HID_USAGE_CONSUMER_AC_ROTATE","HID_USAGE_CONSUMER_AC_RESIZE","HID_USAGE_CONSUMER_AC_FLIP_HORIZONTAL","HID_USAGE_CONSUMER_AC_FLIP_VERTICAL","HID_USAGE_CONSUMER_AC_MIRROR_HORIZONTAL","HID_USAGE_CONSUMER_AC_MIRROR_VERTICAL","HID_USAGE_CONSUMER_AC_FONT_SELECT","HID_USAGE_CONSUMER_AC_FONT_COLOR","HID_USAGE_CONSUMER_AC_FONT_SIZE","HID_USAGE_CONSUMER_AC_JUSTIFY_LEFT","HID_USAGE_CONSUMER_AC_JUSTIFY_CENTER_H","HID_USAGE_CONSUMER_AC_JUSTIFY_RIGHT","HID_USAGE_CONSUMER_AC_JUSTIFY_BLOCK_H","HID_USAGE_CONSUMER_AC_JUSTIFY_TOP","HID_USAGE_CONSUMER_AC_JUSTIFY_CENTER_V","HID_USAGE_CONSUMER_AC_JUSTIFY_BOTTOM","HID_USAGE_CONSUMER_AC_JUSTIFY_BLOCK_V","HID_USAGE_CONSUMER_AC_INDENT_DECREASE","HID_USAGE_CONSUMER_AC_INDENT_INCREASE","HID_USAGE_CONSUMER_AC_NUMBERED_LIST","HID_USAGE_CONSUMER_AC_RESTART_NUMBERING","HID_USAGE_CONSUMER_AC_BULLETED_LIST","HID_USAGE_CONSUMER_AC_PROMOTE","HID_USAGE_CONSUMER_AC_DEMOTE","HID_USAGE_CONSUMER_AC_YES","HID_USAGE_CONSUMER_AC_NO","HID_USAGE_CONSUMER_AC_CANCEL","HID_USAGE_CONSUMER_AC_CATALOG","HID_USAGE_CONSUMER_AC_BUY_CHECKOUT","HID_USAGE_CONSUMER_AC_ADD_TO_CART","HID_USAGE_CONSUMER_AC_EXPAND","HID_USAGE_CONSUMER_AC_EXPAND_ALL","HID_USAGE_CONSUMER_AC_COLLAPSE","HID_USAGE_CONSUMER_AC_COLLAPSE_ALL","HID_USAGE_CONSUMER_AC_PRINT_PREVIEW","HID_USAGE_CONSUMER_AC_PASTE_SPECIAL","HID_USAGE_CONSUMER_AC_INSERT_MODE","HID_USAGE_CONSUMER_AC_DELETE","HID_USAGE_CONSUMER_AC_LOCK","HID_USAGE_CONSUMER_AC_UNLOCK","HID_USAGE_CONSUMER_AC_PROTECT","HID_USAGE_CONSUMER_AC_UNPROTECT","HID_USAGE_CONSUMER_AC_ATTACH_COMMENT","HID_USAGE_CONSUMER_AC_DELETE_COMMENT","HID_USAGE_CONSUMER_AC_VIEW_COMMENT","HID_USAGE_CONSUMER_AC_SELECT_WORD","HID_USAGE_CONSUMER_AC_SELECT_SENTENCE","HID_USAGE_CONSUMER_AC_SELECT_PARAGRAPH","HID_USAGE_CONSUMER_AC_SELECT_COLUMN","HID_USAGE_CONSUMER_AC_SELECT_ROW","HID_USAGE_CONSUMER_AC_SELECT_TABLE","HID_USAGE_CONSUMER_AC_SELECT_OBJECT","HID_USAGE_CONSUMER_AC_REDO_REPEAT","HID_USAGE_CONSUMER_AC_SORT","HID_USAGE_CONSUMER_AC_SORT_ASCENDING","HID_USAGE_CONSUMER_AC_SORT_DESCENDING","HID_USAGE_CONSUMER_AC_FILTER","HID_USAGE_CONSUMER_AC_SET_CLOCK","HID_USAGE_CONSUMER_AC_VIEW_CLOCK","HID_USAGE_CONSUMER_AC_SELECT_TIME_ZONE","HID_USAGE_CONSUMER_AC_EDIT_TIME_ZONES","HID_USAGE_CONSUMER_AC_SET_ALARM","HID_USAGE_CONSUMER_AC_CLEAR_ALARM","HID_USAGE_CONSUMER_AC_SNOOZE_ALARM","HID_USAGE_CONSUMER_AC_RESET_ALARM","HID_USAGE_CONSUMER_AC_SYNCHRONIZE","HID_USAGE_CONSUMER_AC_SEND_RECEIVE","HID_USAGE_CONSUMER_AC_SEND_TO","HID_USAGE_CONSUMER_AC_REPLY","HID_USAGE_CONSUMER_AC_REPLY_ALL","HID_USAGE_CONSUMER_AC_FORWARD_MSG","HID_USAGE_CONSUMER_AC_SEND","HID_USAGE_CONSUMER_AC_ATTACH_FILE","HID_USAGE_CONSUMER_AC_UPLOAD","HID_USAGE_CONSUMER_AC_DOWNLOAD_SAVE_TARGET_AS","HID_USAGE_CONSUMER_AC_SET_BORDERS","HID_USAGE_CONSUMER_AC_INSERT_ROW","HID_USAGE_CONSUMER_AC_INSERT_COLUMN","HID_USAGE_CONSUMER_AC_INSERT_FILE","HID_USAGE_CONSUMER_AC_INSERT_PICTURE","HID_USAGE_CONSUMER_AC_INSERT_OBJECT","HID_USAGE_CONSUMER_AC_INSERT_SYMBOL","HID_USAGE_CONSUMER_AC_SAVE_AND_CLOSE","HID_USAGE_CONSUMER_AC_RENAME","HID_USAGE_CONSUMER_AC_MERGE","HID_USAGE_CONSUMER_AC_SPLIT","HID_USAGE_CONSUMER_AC_DISRIBUTE_HORIZONTALLY","HID_USAGE_CONSUMER_AC_DISTRIBUTE_VERTICALLY","HID_USAGE_CONSUMER_AC_NEXT_KEYBOARD_LAYOUT_SELECT","HID_USAGE_CONSUMER_AC_NAVIGATION_GUIDANCE","HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS","HID_USAGE_CONSUMER_AC_SOFT_KEY_LEFT","HID_USAGE_CONSUMER_AC_SOFT_KEY_RIGHT","HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_APPLICATIONS","HID_USAGE_CONSUMER_AC_IDLE_KEEP_ALIVE","HID_USAGE_CONSUMER_EXTENDED_KEYBOARD_ATTRIBUTES_COLLECTION","HID_USAGE_CONSUMER_KEYBOARD_FORM_FACTOR","HID_USAGE_CONSUMER_KEYBOARD_KEY_TYPE","HID_USAGE_CONSUMER_KEYBOARD_PHYSICAL_LAYOUT","HID_USAGE_CONSUMER_VENDOR_SPECIFIC_KEYBOARD_PHYSICAL_LAYOUT","HID_USAGE_CONSUMER_KEYBOARD_IETF_LANGUAGE_TAG_INDEX","HID_USAGE_CONSUMER_IMPLEMENTED_KEYBOARD_INPUT_ASSIST_CONTROLS","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT","HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL","HID_USAGE_CONSUMER_PRIVACY_SCREEN_TOGGLE","HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_DECREMENT","HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_INCREMENT","HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_MINIMUM","HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_MAXIMUM","HID_USAGE_CONSUMER_CONTACT_EDITED","HID_USAGE_CONSUMER_CONTACT_ADDED","HID_USAGE_CONSUMER_CONTACT_RECORD_ACTIVE","HID_USAGE_CONSUMER_CONTACT_INDEX","HID_USAGE_CONSUMER_CONTACT_NICKNAME","HID_USAGE_CONSUMER_CONTACT_FIRST_NAME","HID_USAGE_CONSUMER_CONTACT_LAST_NAME","HID_USAGE_CONSUMER_CONTACT_FULL_NAME","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_PERSONAL","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_BUSINESS","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_MOBILE","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_PAGER","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_FAX","HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_OTHER","HID_USAGE_CONSUMER_CONTACT_EMAIL_PERSONAL","HID_USAGE_CONSUMER_CONTACT_EMAIL_BUSINESS","HID_USAGE_CONSUMER_CONTACT_EMAIL_OTHER","HID_USAGE_CONSUMER_CONTACT_EMAIL_MAIN","HID_USAGE_CONSUMER_CONTACT_SPEED_DIAL_NUMBER","HID_USAGE_CONSUMER_CONTACT_STATUS_FLAG","HID_USAGE_CONSUMER_CONTACT_MISC","HID_USAGE_DIGITIZERS_UNDEFINED","HID_USAGE_DIGITIZERS_DIGITIZER","HID_USAGE_DIGITIZERS_PEN","HID_USAGE_DIGITIZERS_LIGHT_PEN","HID_USAGE_DIGITIZERS_TOUCH_SCREEN","HID_USAGE_DIGITIZERS_TOUCH_PAD","HID_USAGE_DIGITIZERS_WHITEBOARD","HID_USAGE_DIGITIZERS_COORDINATE_MEASURING_MACHINE","HID_USAGE_DIGITIZERS_3D_DIGITIZER","HID_USAGE_DIGITIZERS_STEREO_PLOTTER","HID_USAGE_DIGITIZERS_ARTICULATED_ARM","HID_USAGE_DIGITIZERS_ARMATURE","HID_USAGE_DIGITIZERS_MULTIPLE_POINT_DIGITIZER","HID_USAGE_DIGITIZERS_FREE_SPACE_WAND","HID_USAGE_DIGITIZERS_DEVICE_CONFIGURATION","HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_DIGITIZER","HID_USAGE_DIGITIZERS_STYLUS","HID_USAGE_DIGITIZERS_PUCK","HID_USAGE_DIGITIZERS_FINGER","HID_USAGE_DIGITIZERS_DEVICE_SETTINGS","HID_USAGE_DIGITIZERS_CHARACTER_GESTURE","HID_USAGE_DIGITIZERS_TIP_PRESSURE","HID_USAGE_DIGITIZERS_BARREL_PRESSURE","HID_USAGE_DIGITIZERS_IN_RANGE","HID_USAGE_DIGITIZERS_TOUCH","HID_USAGE_DIGITIZERS_UNTOUCH","HID_USAGE_DIGITIZERS_TAP","HID_USAGE_DIGITIZERS_QUALITY","HID_USAGE_DIGITIZERS_DATA_VALID","HID_USAGE_DIGITIZERS_TRANSDUCER_INDEX","HID_USAGE_DIGITIZERS_TABLET_FUNCTION_KEYS","HID_USAGE_DIGITIZERS_PROGRAM_CHANGE_KEYS","HID_USAGE_DIGITIZERS_BATTERY_STRENGTH","HID_USAGE_DIGITIZERS_INVERT","HID_USAGE_DIGITIZERS_X_TILT","HID_USAGE_DIGITIZERS_Y_TILT","HID_USAGE_DIGITIZERS_AZIMUTH","HID_USAGE_DIGITIZERS_ALTITUDE","HID_USAGE_DIGITIZERS_TWIST","HID_USAGE_DIGITIZERS_TIP_SWITCH","HID_USAGE_DIGITIZERS_SECONDARY_TIP_SWITCH","HID_USAGE_DIGITIZERS_BARREL_SWITCH","HID_USAGE_DIGITIZERS_ERASER","HID_USAGE_DIGITIZERS_TABLET_PICK","HID_USAGE_DIGITIZERS_TOUCH_VALID","HID_USAGE_DIGITIZERS_WIDTH","HID_USAGE_DIGITIZERS_HEIGHT","HID_USAGE_DIGITIZERS_CONTACT_IDENTIFIER","HID_USAGE_DIGITIZERS_DEVICE_MODE","HID_USAGE_DIGITIZERS_DEVICE_IDENTIFIER","HID_USAGE_DIGITIZERS_CONTACT_COUNT","HID_USAGE_DIGITIZERS_CONTACT_COUNT_MAXIMUM","HID_USAGE_DIGITIZERS_SCAN_TIME","HID_USAGE_DIGITIZERS_SURFACE_SWITCH","HID_USAGE_DIGITIZERS_BUTTON_SWITCH","HID_USAGE_DIGITIZERS_PAD_TYPE","HID_USAGE_DIGITIZERS_SECONDARY_BARREL_SWITCH","HID_USAGE_DIGITIZERS_TRANSDUCER_SERIAL_NUMBER","HID_USAGE_DIGITIZERS_PREFERRED_COLOR","HID_USAGE_DIGITIZERS_PREFERRED_COLOR_IS_LOCKED","HID_USAGE_DIGITIZERS_PREFERRED_LINE_WIDTH","HID_USAGE_DIGITIZERS_PREFERRED_LINE_WIDTH_IS_LOCKED","HID_USAGE_DIGITIZERS_LATENCY_MODE","HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_QUALITY","HID_USAGE_DIGITIZERS_CHARACTER_GESTURE_DATA_LENGTH","HID_USAGE_DIGITIZERS_CHARACTER_GESTURE_DATA","HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_ENCODING","HID_USAGE_DIGITIZERS_UTF8_CHARACTER_GESTURE_ENCODING","HID_USAGE_DIGITIZERS_UTF16_LITTLE_ENDIAN_CHARACTER_GESTURE_ENCODING","HID_USAGE_DIGITIZERS_UTF16_BIG_ENDIAN_CHARACTER_GESTURE_ENCODING","HID_USAGE_DIGITIZERS_UTF32_LITTLE_ENDIAN_CHARACTER_GESTURE_ENCODING","HID_USAGE_DIGITIZERS_UTF32_BIG_ENDIAN_CHARACTER_GESTURE_ENCODING","HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_PROTOCOL_VENDOR_ID","HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_PROTOCOL_VERSION","HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_FRAME_DATA","HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_ENABLE","HID_USAGE_DIGITIZERS_PREFERRED_LINE_STYLE","HID_USAGE_DIGITIZERS_PREFERRED_LINE_STYLE_IS_LOCKED","HID_USAGE_DIGITIZERS_INK","HID_USAGE_DIGITIZERS_PENCIL","HID_USAGE_DIGITIZERS_HIGHLIGHTER","HID_USAGE_DIGITIZERS_CHISEL_MARKER","HID_USAGE_DIGITIZERS_BRUSH","HID_USAGE_DIGITIZERS_NO_PREFERENCE","HID_USAGE_DIGITIZERS_DIGITIZER_DIAGNOSTIC","HID_USAGE_DIGITIZERS_DIGITIZER_ERROR","HID_USAGE_DIGITIZERS_ERR_NORMAL_STATUS","HID_USAGE_DIGITIZERS_ERR_TRANSDUCERS_EXCEEDED","HID_USAGE_DIGITIZERS_ERR_FULL_TRANS_FEATURES_UNAVAILABLE","HID_USAGE_DIGITIZERS_ERR_CHARGE_LOW","HID_USAGE_DIGITIZERS_TRANSDUCER_SOFTWARE_INFO","HID_USAGE_DIGITIZERS_TRANSDUCER_VENDOR_ID","HID_USAGE_DIGITIZERS_TRANSDUCER_PRODUCT_ID","HID_USAGE_DIGITIZERS_DEVICE_SUPPORTED_PROTOCOLS","HID_USAGE_DIGITIZERS_TRANSDUCER_SUPPORTED_PROTOCOLS","HID_USAGE_DIGITIZERS_NO_PROTOCOL","HID_USAGE_DIGITIZERS_WACOM_AES_PROTOCOL","HID_USAGE_DIGITIZERS_USI_PROTOCOL","HID_USAGE_DIGITIZERS_MICROSOFT_PEN_PROTOCOL","HID_USAGE_DIGITIZERS_SUPPORTED_REPORT_RATES","HID_USAGE_DIGITIZERS_REPORT_RATE","HID_USAGE_DIGITIZERS_TRANSDUCER_CONNECTED","HID_USAGE_DIGITIZERS_SWITCH_DISABLED","HID_USAGE_DIGITIZERS_SWITCH_UNIMPLEMENTED","HID_USAGE_DIGITIZERS_TRANSDUCER_SWITCHES","HID_USAGE_HAPTICS_UNDEFINED","HID_USAGE_HAPTICS_SIMPLE_HAPTIC_CONTROLLER","HID_USAGE_HAPTICS_WAVEFORM_LIST","HID_USAGE_HAPTICS_DURATION_LIST","HID_USAGE_HAPTICS_AUTO_TRIGGER","HID_USAGE_HAPTICS_MANUAL_TRIGGER","HID_USAGE_HAPTICS_AUTO_TRIGGER_ASSOCIATED_CONTROL","HID_USAGE_HAPTICS_INTENSITY","HID_USAGE_HAPTICS_REPEAT_COUNT","HID_USAGE_HAPTICS_RETRIGGER_PERIOD","HID_USAGE_HAPTICS_WAVEFORM_VENDOR_PAGE","HID_USAGE_HAPTICS_WAVEFORM_VENDOR_ID","HID_USAGE_HAPTICS_WAVEFORM_CUTOFF_TIME","HID_USAGE_HAPTICS_WAVEFORM_NONE","HID_USAGE_HAPTICS_WAVEFORM_STOP","HID_USAGE_HAPTICS_WAVEFORM_CLICK","HID_USAGE_HAPTICS_WAVEFORM_BUZZ_CONTINUOUS","HID_USAGE_HAPTICS_WAVEFORM_RUMBLE_CONTINUOUS","HID_USAGE_HAPTICS_WAVEFORM_PRESS","HID_USAGE_HAPTICS_WAVEFORM_RELEASE","HID_USAGE_PID_UNDEFINED","HID_USAGE_PID_PHYSICAL_INTERFACE_DEVICE","HID_USAGE_PID_NORMAL","HID_USAGE_PID_SET_EFFECT_REPORT","HID_USAGE_PID_EFFECT_BLOCK_INDEX","HID_USAGE_PID_PARAMETER_BLOCK_OFFSET","HID_USAGE_PID_ROM_FLAG","HID_USAGE_PID_EFFECT_TYPE","HID_USAGE_PID_ET_CONSTANT_FORCE","HID_USAGE_PID_ET_RAMP","HID_USAGE_PID_ET_CUSTOM_FORCE_DATA","HID_USAGE_PID_ET_SQUARE","HID_USAGE_PID_ET_SINE","HID_USAGE_PID_ET_TRIANGLE","HID_USAGE_PID_ET_SAWTOOTH_UP","HID_USAGE_PID_ET_SAWTOOTH_DOWN","HID_USAGE_PID_ET_SPRING","HID_USAGE_PID_ET_DAMPER","HID_USAGE_PID_ET_INERTIA","HID_USAGE_PID_ET_FRICTION","HID_USAGE_PID_DURATION","HID_USAGE_PID_SAMPLE_PERIOD","HID_USAGE_PID_GAIN","HID_USAGE_PID_TRIGGER_BUTTON","HID_USAGE_PID_TRIGGER_REPEAT_INTERVAL","HID_USAGE_PID_AXES_ENABLE","HID_USAGE_PID_DIRECTION_ENABLE","HID_USAGE_PID_DIRECTION","HID_USAGE_PID_TYPE_SPECIFIC_BLOCK_OFFSET","HID_USAGE_PID_BLOCK_TYPE","HID_USAGE_PID_SET_ENVELOPE_REPORT","HID_USAGE_PID_ATTACK_LEVEL","HID_USAGE_PID_ATTACK_TIME","HID_USAGE_PID_FADE_LEVEL","HID_USAGE_PID_FADE_TIME","HID_USAGE_PID_SET_CONDITION_REPORT","HID_USAGE_PID_CP_OFFSET","HID_USAGE_PID_POSITIVE_COEFFICIENT","HID_USAGE_PID_NEGATIVE_COEFFICIENT","HID_USAGE_PID_POSITIVE_SATURATION","HID_USAGE_PID_NEGATIVE_SATURATION","HID_USAGE_PID_DEAD_BAND","HID_USAGE_PID_DOWNLOAD_FORCE_SAMPLE","HID_USAGE_PID_ISOCH_CUSTOM_FORCE_ENABLE","HID_USAGE_PID_CUSTOM_FORCE_DATA_REPORT","HID_USAGE_PID_CUSTOM_FORCE_DATA","HID_USAGE_PID_CUSTOM_FORCE_VENDOR_DEFINED_DATA","HID_USAGE_PID_SET_CUSTOM_FORCE_REPORT","HID_USAGE_PID_CUSTOM_FORCE_DATA_OFFSET","HID_USAGE_PID_SAMPLE_COUNT","HID_USAGE_PID_SET_PERIODIC_REPORT","HID_USAGE_PID_OFFSET","HID_USAGE_PID_MAGNITUDE","HID_USAGE_PID_PHASE","HID_USAGE_PID_PERIOD","HID_USAGE_PID_SET_CONSTANT_FORCE_REPORT","HID_USAGE_PID_SET_RAMP_FORCE_REPORT","HID_USAGE_PID_RAMP_START","HID_USAGE_PID_RAMP_END","HID_USAGE_PID_EFFECT_OPERATION_REPORT","HID_USAGE_PID_EFFECT_OPERATION","HID_USAGE_PID_OP_EFFECT_START","HID_USAGE_PID_OP_EFFECT_START_SOLO","HID_USAGE_PID_OP_EFFECT_STOP","HID_USAGE_PID_LOOP_COUNT","HID_USAGE_PID_DEVICE_GAIN_REPORT","HID_USAGE_PID_DEVICE_GAIN","HID_USAGE_PID_PID_POOL_REPORT","HID_USAGE_PID_RAM_POOL_SIZE","HID_USAGE_PID_ROM_POOL_SIZE","HID_USAGE_PID_ROM_EFFECT_BLOCK_COUNT","HID_USAGE_PID_SIMULTANEOUS_EFFECTS_MAX","HID_USAGE_PID_POOL_ALIGNMENT","HID_USAGE_PID_PID_POOL_MOVE_REPORT","HID_USAGE_PID_MOVE_SOURCE","HID_USAGE_PID_MOVE_DESTINATION","HID_USAGE_PID_MOVE_LENGTH","HID_USAGE_PID_PID_BLOCK_LOAD_REPORT","HID_USAGE_PID_BLOCK_LOAD_STATUS","HID_USAGE_PID_BLOCK_LOAD_SUCCESS","HID_USAGE_PID_BLOCK_LOAD_FULL","HID_USAGE_PID_BLOCK_LOAD_ERROR","HID_USAGE_PID_BLOCK_HANDLE","HID_USAGE_PID_PID_BLOCK_FREE_REPORT","HID_USAGE_PID_TYPE_SPECIFIC_BLOCK_HANDLE","HID_USAGE_PID_PID_STATE_REPORT","HID_USAGE_PID_EFFECT_PLAYING","HID_USAGE_PID_PID_DEVICE_CONTROL_REPORT","HID_USAGE_PID_PID_DEVICE_CONTROL","HID_USAGE_PID_DC_ENABLE_ACTUATORS","HID_USAGE_PID_DC_DISABLE_ACTUATORS","HID_USAGE_PID_DC_STOP_ALL_EFFECTS","HID_USAGE_PID_DC_DEVICE_RESET","HID_USAGE_PID_DC_DEVICE_PAUSE","HID_USAGE_PID_DC_DEVICE_CONTINUE","HID_USAGE_PID_DEVICE_PAUSED","HID_USAGE_PID_ACTUATORS_ENABLED","HID_USAGE_PID_SAFETY_SWITCH","HID_USAGE_PID_ACTUATOR_OVERRIDE_SWITCH","HID_USAGE_PID_ACTUATOR_POWER","HID_USAGE_PID_START_DELAY","HID_USAGE_PID_PARAMETER_BLOCK_SIZE","HID_USAGE_PID_DEVICE_MANAGED_POOL","HID_USAGE_PID_SHARED_PARAMETER_BLOCKS","HID_USAGE_PID_CREATE_NEW_EFFECT_REPORT","HID_USAGE_PID_RAM_POOL_AVAILABLE","HID_USAGE_EHT_UNDEFINED","HID_USAGE_EHT_EYE_TRACKER","HID_USAGE_EHT_HEAD_TRACKER","HID_USAGE_EHT_TRACKING_DATA","HID_USAGE_EHT_CAPABILITIES","HID_USAGE_EHT_CONFIGURATION","HID_USAGE_EHT_STATUS","HID_USAGE_EHT_CONTROL","HID_USAGE_EHT_SENSOR_TIMESTAMP","HID_USAGE_EHT_POSITION_X","HID_USAGE_EHT_POSITION_Y","HID_USAGE_EHT_POSITION_Z","HID_USAGE_EHT_GAZE_POINT","HID_USAGE_EHT_LEFT_EYE_POSITION","HID_USAGE_EHT_RIGHT_EYE_POSITION","HID_USAGE_EHT_HEAD_POSITION","HID_USAGE_EHT_HEAD_DIRECTION_POINT","HID_USAGE_EHT_ROTATION_ABOUT_X_AXIS","HID_USAGE_EHT_ROTATION_ABOUT_Y_AXIS","HID_USAGE_EHT_ROTATION_ABOUT_Z_AXIS","HID_USAGE_EHT_TRACKER_QUALITY","HID_USAGE_EHT_MINIMUM_TRACKING_DISTANCE","HID_USAGE_EHT_OPTIMUM_TRACKING_DISTANCE","HID_USAGE_EHT_MAXIMUM_TRACKING_DISTANCE","HID_USAGE_EHT_MAXIMUM_SCREEN_PLANE_WIDTH","HID_USAGE_EHT_MAXIMUM_SCREEN_PLANE_HEIGHT","HID_USAGE_EHT_DISPLAY_MANUFACTURER_ID","HID_USAGE_EHT_DISPLAY_PRODUCT_ID","HID_USAGE_EHT_DISPLAY_SERIAL_NUMBER","HID_USAGE_EHT_DISPLAY_MANUFACTURER_DATE","HID_USAGE_EHT_CALIBRATED_SCREEN_WIDTH","HID_USAGE_EHT_CALIBRATED_SCREEN_HEIGHT","HID_USAGE_EHT_SAMPLING_FREQUENCY","HID_USAGE_EHT_CONFIGURATION_STATUS","HID_USAGE_EHT_DEVICE_MODE_REQUEST","HID_USAGE_AUXDISP_UNDEFINED","HID_USAGE_AUXDISP_ALPHANUMERIC_DISPLAY","HID_USAGE_AUXDISP_AUXILIARY_DISPLAY","HID_USAGE_AUXDISP_DISPLAY_ATTRIBUTES_REPORT","HID_USAGE_AUXDISP_ASCII_CHARACTER_SET","HID_USAGE_AUXDISP_DATA_READ_BACK","HID_USAGE_AUXDISP_FONT_READ_BACK","HID_USAGE_AUXDISP_DISPLAY_CONTROL_REPORT","HID_USAGE_AUXDISP_CLEAR_DISPLAY","HID_USAGE_AUXDISP_DISPLAY_ENABLE","HID_USAGE_AUXDISP_SCREEN_SAVER_DELAY","HID_USAGE_AUXDISP_SCREEN_SAVER_ENABLE","HID_USAGE_AUXDISP_VERTICAL_SCROLL","HID_USAGE_AUXDISP_HORIZONTAL_SCROLL","HID_USAGE_AUXDISP_CHARACTER_REPORT","HID_USAGE_AUXDISP_DISPLAY_DATA","HID_USAGE_AUXDISP_DISPLAY_STATUS","HID_USAGE_AUXDISP_STAT_NOT_READY","HID_USAGE_AUXDISP_STAT_READY","HID_USAGE_AUXDISP_ERR_NOT_A_LOADABLE_CHARACTER","HID_USAGE_AUXDISP_ERR_FONT_DATA_CANNOT_BE_READ","HID_USAGE_AUXDISP_CURSOR_POSITION_REPORT","HID_USAGE_AUXDISP_ROW","HID_USAGE_AUXDISP_COLUMN","HID_USAGE_AUXDISP_ROWS","HID_USAGE_AUXDISP_COLUMNS","HID_USAGE_AUXDISP_CURSOR_PIXEL_POSITIONING","HID_USAGE_AUXDISP_CURSOR_MODE","HID_USAGE_AUXDISP_CURSOR_ENABLE","HID_USAGE_AUXDISP_CURSOR_BLINK","HID_USAGE_AUXDISP_FONT_REPORT","HID_USAGE_AUXDISP_FONT_DATA","HID_USAGE_AUXDISP_CHARACTER_WIDTH","HID_USAGE_AUXDISP_CHARACTER_HEIGHT","HID_USAGE_AUXDISP_CHARACTER_SPACING_HORIZONTAL","HID_USAGE_AUXDISP_CHARACTER_SPACING_VERTICAL","HID_USAGE_AUXDISP_UNICODE_CHARACTER_SET","HID_USAGE_AUXDISP_FONT_7_SEGMENT","HID_USAGE_AUXDISP_7_SEGMENT_DIRECT_MAP","HID_USAGE_AUXDISP_FONT_14_SEGMENT","HID_USAGE_AUXDISP_14_SEGMENT_DIRECT_MAP","HID_USAGE_AUXDISP_DISPLAY_BRIGHTNESS","HID_USAGE_AUXDISP_DISPLAY_CONTRAST","HID_USAGE_AUXDISP_CHARACTER_ATTRIBUTE","HID_USAGE_AUXDISP_ATTRIBUTE_READBACK","HID_USAGE_AUXDISP_ATTRIBUTE_DATA","HID_USAGE_AUXDISP_CHAR_ATTR_ENHANCE","HID_USAGE_AUXDISP_CHAR_ATTR_UNDERLINE","HID_USAGE_AUXDISP_CHAR_ATTR_BLINK","HID_USAGE_AUXDISP_BITMAP_SIZE_X","HID_USAGE_AUXDISP_BITMAP_SIZE_Y","HID_USAGE_AUXDISP_MAX_BLIT_SIZE","HID_USAGE_AUXDISP_BIT_DEPTH_FORMAT","HID_USAGE_AUXDISP_DISPLAY_ORIENTATION","HID_USAGE_AUXDISP_PALETTE_REPORT","HID_USAGE_AUXDISP_PALETTE_DATA_SIZE","HID_USAGE_AUXDISP_PALETTE_DATA_OFFSET","HID_USAGE_AUXDISP_PALETTE_DATA","HID_USAGE_AUXDISP_BLIT_REPORT","HID_USAGE_AUXDISP_BLIT_RECTANGLE_X1","HID_USAGE_AUXDISP_BLIT_RECTANGLE_Y1","HID_USAGE_AUXDISP_BLIT_RECTANGLE_X2","HID_USAGE_AUXDISP_BLIT_RECTANGLE_Y2","HID_USAGE_AUXDISP_BLIT_DATA","HID_USAGE_AUXDISP_SOFT_BUTTON","HID_USAGE_AUXDISP_SOFT_BUTTON_ID","HID_USAGE_AUXDISP_SOFT_BUTTON_SIDE","HID_USAGE_AUXDISP_SOFT_BUTTON_OFFSET_1","HID_USAGE_AUXDISP_SOFT_BUTTON_OFFSET_2","HID_USAGE_AUXDISP_SOFT_BUTTON_REPORT","HID_USAGE_AUXDISP_SOFT_KEYS","HID_USAGE_AUXDISP_DISPLAY_DATA_EXTENSIONS","HID_USAGE_AUXDISP_CHARACTER_MAPPING","HID_USAGE_AUXDISP_UNICODE_EQUIVALENT","HID_USAGE_AUXDISP_CHARACTER_PAGE_MAPPING","HID_USAGE_AUXDISP_REQUEST_REPORT","HID_USAGE_SENSORS_UNDEFINED","HID_USAGE_SENSORS_SENSOR","HID_USAGE_SENSORS_BIOMETRIC","HID_USAGE_SENSORS_BIOMETRIC_HUMAN_PRESENCE","HID_USAGE_SENSORS_BIOMETRIC_HUMAN_PROXIMITY","HID_USAGE_SENSORS_BIOMETRIC_HUMAN_TOUCH","HID_USAGE_SENSORS_BIOMETRIC_BLOOD_PRESSURE","HID_USAGE_SENSORS_BIOMETRIC_BODY_TEMPERATURE","HID_USAGE_SENSORS_BIOMETRIC_HEART_RATE","HID_USAGE_SENSORS_BIOMETRIC_HEART_RATE_VARIABILITY","HID_USAGE_SENSORS_BIOMETRIC_PERIPHERAL_OXYGEN_SATURATION","HID_USAGE_SENSORS_BIOMETRIC_RESPIRATORY_RATE","HID_USAGE_SENSORS_ELECTRICAL","HID_USAGE_SENSORS_ELECTRICAL_CAPACITANCE","HID_USAGE_SENSORS_ELECTRICAL_CURRENT","HID_USAGE_SENSORS_ELECTRICAL_POWER","HID_USAGE_SENSORS_ELECTRICAL_INDUCTANCE","HID_USAGE_SENSORS_ELECTRICAL_RESISTANCE","HID_USAGE_SENSORS_ELECTRICAL_VOLTAGE","HID_USAGE_SENSORS_ELECTRICAL_POTENTIOMETER","HID_USAGE_SENSORS_ELECTRICAL_FREQUENCY","HID_USAGE_SENSORS_ELECTRICAL_PERIOD","HID_USAGE_SENSORS_ENVIRONMENTAL","HID_USAGE_SENSORS_ENVIRONMENTAL_ATMOSPHERIC_PRESSURE","HID_USAGE_SENSORS_ENVIRONMENTAL_HUMIDITY","HID_USAGE_SENSORS_ENVIRONMENTAL_TEMPERATURE","HID_USAGE_SENSORS_ENVIRONMENTAL_WIND_DIRECTION","HID_USAGE_SENSORS_ENVIRONMENTAL_WIND_SPEED","HID_USAGE_SENSORS_ENVIRONMENTAL_AIR_QUALITY","HID_USAGE_SENSORS_ENVIRONMENTAL_HEAT_INDEX","HID_USAGE_SENSORS_ENVIRONMENTAL_SURFACE_TEMPERATURE","HID_USAGE_SENSORS_ENVIRONMENTAL_VOLATILE_ORGANIC_COMPOUNDS","HID_USAGE_SENSORS_ENVIRONMENTAL_OBJECT_PRESENCE","HID_USAGE_SENSORS_ENVIRONMENTAL_OBJECT_PROXIMITY","HID_USAGE_SENSORS_LIGHT","HID_USAGE_SENSORS_LIGHT_AMBIENT_LIGHT","HID_USAGE_SENSORS_LIGHT_CONSUMER_INFRARED","HID_USAGE_SENSORS_LIGHT_INFRARED_LIGHT","HID_USAGE_SENSORS_LIGHT_VISIBLE_LIGHT","HID_USAGE_SENSORS_LIGHT_ULTRAVIOLET_LIGHT","HID_USAGE_SENSORS_LOCATION","HID_USAGE_SENSORS_LOCATION_BROADCAST","HID_USAGE_SENSORS_LOCATION_DEAD_RECKONING","HID_USAGE_SENSORS_LOCATION_GPS_GLOBAL_POSITIONING_SYSTEM","HID_USAGE_SENSORS_LOCATION_LOOKUP","HID_USAGE_SENSORS_LOCATION_OTHER","HID_USAGE_SENSORS_LOCATION_STATIC","HID_USAGE_SENSORS_LOCATION_TRIANGULATION","HID_USAGE_SENSORS_MECHANICAL","HID_USAGE_SENSORS_MECHANICAL_BOOLEAN_SWITCH","HID_USAGE_SENSORS_MECHANICAL_BOOLEAN_SWITCH_ARRAY","HID_USAGE_SENSORS_MECHANICAL_MULTIVALUE_SWITCH","HID_USAGE_SENSORS_MECHANICAL_FORCE","HID_USAGE_SENSORS_MECHANICAL_PRESSURE","HID_USAGE_SENSORS_MECHANICAL_STRAIN","HID_USAGE_SENSORS_MECHANICAL_WEIGHT","HID_USAGE_SENSORS_MECHANICAL_HAPTIC_VIBRATOR","HID_USAGE_SENSORS_MECHANICAL_HALL_EFFECT_SWITCH","HID_USAGE_SENSORS_MOTION","HID_USAGE_SENSORS_MOTION_ACCELEROMETER_1D","HID_USAGE_SENSORS_MOTION_ACCELEROMETER_2D","HID_USAGE_SENSORS_MOTION_ACCELEROMETER_3D","HID_USAGE_SENSORS_MOTION_GYROMETER_1D","HID_USAGE_SENSORS_MOTION_GYROMETER_2D","HID_USAGE_SENSORS_MOTION_GYROMETER_3D","HID_USAGE_SENSORS_MOTION_MOTION_DETECTOR","HID_USAGE_SENSORS_MOTION_SPEEDOMETER","HID_USAGE_SENSORS_MOTION_ACCELEROMETER","HID_USAGE_SENSORS_MOTION_GYROMETER","HID_USAGE_SENSORS_MOTION_GRAVITY_VECTOR","HID_USAGE_SENSORS_MOTION_LINEAR_ACCELEROMETER","HID_USAGE_SENSORS_ORIENTATION","HID_USAGE_SENSORS_ORIENTATION_COMPASS_1D","HID_USAGE_SENSORS_ORIENTATION_COMPASS_2D","HID_USAGE_SENSORS_ORIENTATION_COMPASS_3D","HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_1D","HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_2D","HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_3D","HID_USAGE_SENSORS_ORIENTATION_DISTANCE_1D","HID_USAGE_SENSORS_ORIENTATION_DISTANCE_2D","HID_USAGE_SENSORS_ORIENTATION_DISTANCE_3D","HID_USAGE_SENSORS_ORIENTATION_DEVICE_ORIENTATION","HID_USAGE_SENSORS_ORIENTATION_COMPASS","HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER","HID_USAGE_SENSORS_ORIENTATION_DISTANCE","HID_USAGE_SENSORS_ORIENTATION_RELATIVE_ORIENTATION","HID_USAGE_SENSORS_ORIENTATION_SIMPLE_ORIENTATION","HID_USAGE_SENSORS_SCANNER","HID_USAGE_SENSORS_SCANNER_BARCODE","HID_USAGE_SENSORS_SCANNER_RFID","HID_USAGE_SENSORS_SCANNER_NFC","HID_USAGE_SENSORS_TIME","HID_USAGE_SENSORS_TIME_ALARM_TIMER","HID_USAGE_SENSORS_TIME_REAL_TIME_CLOCK","HID_USAGE_SENSORS_PERSONAL_ACTIVITY","HID_USAGE_SENSORS_PERSONAL_ACTIVITY_ACTIVITY_DETECTION","HID_USAGE_SENSORS_PERSONAL_ACTIVITY_DEVICE_POSITION","HID_USAGE_SENSORS_PERSONAL_ACTIVITY_PEDOMETER","HID_USAGE_SENSORS_PERSONAL_ACTIVITY_STEP_DETECTION","HID_USAGE_SENSORS_ORIENTATION_EXTENDED","HID_USAGE_SENSORS_ORIENTATION_EXTENDED_GEOMAGNETIC_ORIENTATION","HID_USAGE_SENSORS_ORIENTATION_EXTENDED_MAGNETOMETER","HID_USAGE_SENSORS_GESTURE","HID_USAGE_SENSORS_GESTURE_CHASSIS_FLIP_GESTURE","HID_USAGE_SENSORS_GESTURE_HINGE_FOLD_GESTURE","HID_USAGE_SENSORS_OTHER","HID_USAGE_SENSORS_OTHER_CUSTOM","HID_USAGE_SENSORS_OTHER_GENERIC","HID_USAGE_SENSORS_OTHER_GENERIC_ENUMERATOR","HID_USAGE_SENSORS_OTHER_HINGE_ANGLE","HID_USAGE_SENSORS_EVENT","HID_USAGE_SENSORS_EVENT_SENSOR_STATE","HID_USAGE_SENSORS_EVENT_SENSOR_EVENT","HID_USAGE_SENSORS_PROPERTY","HID_USAGE_SENSORS_PROPERTY_FRIENDLY_NAME","HID_USAGE_SENSORS_PROPERTY_PERSISTENT_UNIQUE_ID","HID_USAGE_SENSORS_PROPERTY_SENSOR_STATUS","HID_USAGE_SENSORS_PROPERTY_MINIMUM_REPORT_INTERVAL","HID_USAGE_SENSORS_PROPERTY_SENSOR_MANUFACTURER","HID_USAGE_SENSORS_PROPERTY_SENSOR_MODEL","HID_USAGE_SENSORS_PROPERTY_SENSOR_SERIAL_NUMBER","HID_USAGE_SENSORS_PROPERTY_SENSOR_DESCRIPTION","HID_USAGE_SENSORS_PROPERTY_SENSOR_CONNECTION_TYPE","HID_USAGE_SENSORS_PROPERTY_SENSOR_DEVICE_PATH","HID_USAGE_SENSORS_PROPERTY_HARDWARE_REVISION","HID_USAGE_SENSORS_PROPERTY_FIRMWARE_VERSION","HID_USAGE_SENSORS_PROPERTY_RELEASE_DATE","HID_USAGE_SENSORS_PROPERTY_REPORT_INTERVAL","HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_ABSOLUTE","HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_PERCENT_OF_RANGE","HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_PERCENT_RELATIVE","HID_USAGE_SENSORS_PROPERTY_ACCURACY","HID_USAGE_SENSORS_PROPERTY_RESOLUTION","HID_USAGE_SENSORS_PROPERTY_MAXIMUM","HID_USAGE_SENSORS_PROPERTY_MINIMUM","HID_USAGE_SENSORS_PROPERTY_REPORTING_STATE","HID_USAGE_SENSORS_PROPERTY_SAMPLING_RATE","HID_USAGE_SENSORS_PROPERTY_RESPONSE_CURVE","HID_USAGE_SENSORS_PROPERTY_POWER_STATE","HID_USAGE_SENSORS_PROPERTY_MAXIMUM_FIFO_EVENTS","HID_USAGE_SENSORS_PROPERTY_REPORT_LATENCY","HID_USAGE_SENSORS_PROPERTY_FLUSH_FIFO_EVENTS","HID_USAGE_SENSORS_PROPERTY_MAXIMUM_POWER_CONSUMPTION","HID_USAGE_SENSORS_PROPERTY_IS_PRIMARY","HID_USAGE_SENSORS_DATA_FIELD_LOCATION","HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ANTENNA_SEA_LEVEL","HID_USAGE_SENSORS_DATA_FIELD_DIFFERENTIAL_REFERENCE_STATION_ID","HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ELLIPSOID_ERROR","HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ELLIPSOID","HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_SEA_LEVEL_ERROR","HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_SEA_LEVEL","HID_USAGE_SENSORS_DATA_FIELD_DIFFERENTIAL_GPS_DATA_AGE","HID_USAGE_SENSORS_DATA_FIELD_ERROR_RADIUS","HID_USAGE_SENSORS_DATA_FIELD_FIX_QUALITY","HID_USAGE_SENSORS_DATA_FIELD_FIX_TYPE","HID_USAGE_SENSORS_DATA_FIELD_GEOIDAL_SEPARATION","HID_USAGE_SENSORS_DATA_FIELD_GPS_OPERATION_MODE","HID_USAGE_SENSORS_DATA_FIELD_GPS_SELECTION_MODE","HID_USAGE_SENSORS_DATA_FIELD_GPS_STATUS","HID_USAGE_SENSORS_DATA_FIELD_POSITION_DILUTION_OF_PRECISION","HID_USAGE_SENSORS_DATA_FIELD_HORIZONTAL_DILUTION_OF_PRECISION","HID_USAGE_SENSORS_DATA_FIELD_VERTICAL_DILUTION_OF_PRECISION","HID_USAGE_SENSORS_DATA_FIELD_LATITUDE","HID_USAGE_SENSORS_DATA_FIELD_LONGITUDE","HID_USAGE_SENSORS_DATA_FIELD_TRUE_HEADING","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_HEADING","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_VARIATION","HID_USAGE_SENSORS_DATA_FIELD_SPEED","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_AZIMUTH","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_ELEVATION","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_IDS","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_PRNS","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_S_N_RATIOS","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_USED_COUNT","HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_USED_PRNS","HID_USAGE_SENSORS_DATA_FIELD_NMEA_SENTENCE","HID_USAGE_SENSORS_DATA_FIELD_ADDRESS_LINE_1","HID_USAGE_SENSORS_DATA_FIELD_ADDRESS_LINE_2","HID_USAGE_SENSORS_DATA_FIELD_CITY","HID_USAGE_SENSORS_DATA_FIELD_STATE_OR_PROVINCE","HID_USAGE_SENSORS_DATA_FIELD_COUNTRY_OR_REGION","HID_USAGE_SENSORS_DATA_FIELD_POSTAL_CODE","HID_USAGE_SENSORS_PROPERTY_LOCATION","HID_USAGE_SENSORS_PROPERTY_LOCATION_DESIRED_ACCURACY","HID_USAGE_SENSORS_DATA_FIELD_ENVIRONMENTAL","HID_USAGE_SENSORS_DATA_FIELD_ATMOSPHERIC_PRESSURE","HID_USAGE_SENSORS_DATA_FIELD_RELATIVE_HUMIDITY","HID_USAGE_SENSORS_DATA_FIELD_TEMPERATURE","HID_USAGE_SENSORS_DATA_FIELD_WIND_DIRECTION","HID_USAGE_SENSORS_DATA_FIELD_WIND_SPEED","HID_USAGE_SENSORS_DATA_FIELD_AIR_QUALITY_INDEX","HID_USAGE_SENSORS_DATA_FIELD_EQUIVALENT_CO2","HID_USAGE_SENSORS_DATA_FIELD_VOLATILE_ORGANIC_COMPOUND_CONCENTRATION","HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PRESENCE","HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PROXIMITY_RANGE","HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PROXIMITY_OUT_OF_RANGE","HID_USAGE_SENSORS_PROPERTY_ENVIRONMENTAL","HID_USAGE_SENSORS_PROPERTY_REFERENCE_PRESSURE","HID_USAGE_SENSORS_DATA_FIELD_MOTION","HID_USAGE_SENSORS_DATA_FIELD_MOTION_STATE","HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION","HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_X","HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_Y","HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_Z","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_MOTION_SPEED","HID_USAGE_SENSORS_DATA_FIELD_MOTION_INTENSITY","HID_USAGE_SENSORS_DATA_FIELD_ORIENTATION","HID_USAGE_SENSORS_DATA_FIELD_HEADING","HID_USAGE_SENSORS_DATA_FIELD_HEADING_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_HEADING_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_HEADING_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_HEADING_COMPENSATED_MAGNETIC_NORTH","HID_USAGE_SENSORS_DATA_FIELD_HEADING_COMPENSATED_TRUE_NORTH","HID_USAGE_SENSORS_DATA_FIELD_HEADING_MAGNETIC_NORTH","HID_USAGE_SENSORS_DATA_FIELD_HEADING_TRUE_NORTH","HID_USAGE_SENSORS_DATA_FIELD_DISTANCE","HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_OUT_OF_RANGE","HID_USAGE_SENSORS_DATA_FIELD_TILT","HID_USAGE_SENSORS_DATA_FIELD_TILT_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_TILT_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_TILT_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_ROTATION_MATRIX","HID_USAGE_SENSORS_DATA_FIELD_QUATERNION","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_X_AXIS","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_Y_AXIS","HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_Z_AXIS","HID_USAGE_SENSORS_DATA_FIELD_MAGNETOMETER_ACCURACY","HID_USAGE_SENSORS_DATA_FIELD_SIMPLE_ORIENTATION_DIRECTION","HID_USAGE_SENSORS_DATA_FIELD_MECHANICAL","HID_USAGE_SENSORS_DATA_FIELD_BOOLEAN_SWITCH_STATE","HID_USAGE_SENSORS_DATA_FIELD_BOOLEAN_SWITCH_ARRAY_STATES","HID_USAGE_SENSORS_DATA_FIELD_MULTIVALUE_SWITCH_VALUE","HID_USAGE_SENSORS_DATA_FIELD_FORCE","HID_USAGE_SENSORS_DATA_FIELD_ABSOLUTE_PRESSURE","HID_USAGE_SENSORS_DATA_FIELD_GAUGE_PRESSURE","HID_USAGE_SENSORS_DATA_FIELD_STRAIN","HID_USAGE_SENSORS_DATA_FIELD_WEIGHT","HID_USAGE_SENSORS_PROPERTY_MECHANICAL","HID_USAGE_SENSORS_PROPERTY_VIBRATION_STATE","HID_USAGE_SENSORS_PROPERTY_FORWARD_VIBRATION_SPEED","HID_USAGE_SENSORS_PROPERTY_BACKWARD_VIBRATION_SPEED","HID_USAGE_SENSORS_DATA_FIELD_BIOMETRIC","HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PRESENCE","HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PROXIMITY_RANGE","HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PROXIMITY_OUT_OF_RANGE","HID_USAGE_SENSORS_DATA_FIELD_HUMAN_TOUCH_STATE","HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE","HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE_DIASTOLIC","HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE_SYSTOLIC","HID_USAGE_SENSORS_DATA_FIELD_HEART_RATE","HID_USAGE_SENSORS_DATA_FIELD_RESTING_HEART_RATE","HID_USAGE_SENSORS_DATA_FIELD_HEARTBEAT_INTERVAL","HID_USAGE_SENSORS_DATA_FIELD_RESPIRATORY_RATE","HID_USAGE_SENSORS_DATA_FIELD_SPO2","HID_USAGE_SENSORS_DATA_FIELD_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_ILLUMINANCE","HID_USAGE_SENSORS_DATA_FIELD_COLOR_TEMPERATURE","HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY","HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY_X","HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY_Y","HID_USAGE_SENSORS_DATA_FIELD_CONSUMER_IR_SENTENCE_RECEIVE","HID_USAGE_SENSORS_DATA_FIELD_INFRARED_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_RED_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_GREEN_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_BLUE_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_A_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_B_LIGHT","HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_INDEX","HID_USAGE_SENSORS_DATA_FIELD_NEAR_INFRARED_LIGHT","HID_USAGE_SENSORS_PROPERTY_LIGHT","HID_USAGE_SENSORS_PROPERTY_CONSUMER_IR_SENTENCE_SEND","HID_USAGE_SENSORS_PROPERTY_AUTO_BRIGHTNESS_PREFERRED","HID_USAGE_SENSORS_PROPERTY_AUTO_COLOR_PREFERRED","HID_USAGE_SENSORS_DATA_FIELD_SCANNER","HID_USAGE_SENSORS_DATA_FIELD_RFID_TAG_40_BIT","HID_USAGE_SENSORS_DATA_FIELD_NFC_SENTENCE_RECEIVE","HID_USAGE_SENSORS_PROPERTY_SCANNER","HID_USAGE_SENSORS_PROPERTY_NFC_SENTENCE_SEND","HID_USAGE_SENSORS_DATA_FIELD_ELECTRICAL","HID_USAGE_SENSORS_DATA_FIELD_CAPACITANCE","HID_USAGE_SENSORS_DATA_FIELD_CURRENT","HID_USAGE_SENSORS_DATA_FIELD_ELECTRICAL_POWER","HID_USAGE_SENSORS_DATA_FIELD_INDUCTANCE","HID_USAGE_SENSORS_DATA_FIELD_RESISTANCE","HID_USAGE_SENSORS_DATA_FIELD_VOLTAGE","HID_USAGE_SENSORS_DATA_FIELD_FREQUENCY","HID_USAGE_SENSORS_DATA_FIELD_PERIOD","HID_USAGE_SENSORS_DATA_FIELD_PERCENT_OF_RANGE","HID_USAGE_SENSORS_DATA_FIELD_TIME","HID_USAGE_SENSORS_DATA_FIELD_YEAR","HID_USAGE_SENSORS_DATA_FIELD_MONTH","HID_USAGE_SENSORS_DATA_FIELD_DAY","HID_USAGE_SENSORS_DATA_FIELD_DAY_OF_WEEK","HID_USAGE_SENSORS_DATA_FIELD_HOUR","HID_USAGE_SENSORS_DATA_FIELD_MINUTE","HID_USAGE_SENSORS_DATA_FIELD_SECOND","HID_USAGE_SENSORS_DATA_FIELD_MILLISECOND","HID_USAGE_SENSORS_DATA_FIELD_TIMESTAMP","HID_USAGE_SENSORS_DATA_FIELD_JULIAN_DAY_OF_YEAR","HID_USAGE_SENSORS_DATA_FIELD_TIME_SINCE_SYSTEM_BOOT","HID_USAGE_SENSORS_PROPERTY_TIME","HID_USAGE_SENSORS_PROPERTY_TIME_ZONE_OFFSET_FROM_UTC","HID_USAGE_SENSORS_PROPERTY_TIME_ZONE_NAME","HID_USAGE_SENSORS_PROPERTY_DAYLIGHT_SAVINGS_TIME_OBSERVED","HID_USAGE_SENSORS_PROPERTY_TIME_TRIM_ADJUSTMENT","HID_USAGE_SENSORS_PROPERTY_ARM_ALARM","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_USAGE","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_BOOLEAN_ARRAY","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_1","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_2","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_3","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_4","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_5","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_6","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_7","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_8","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_9","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_10","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_11","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_12","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_13","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_14","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_15","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_16","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_17","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_18","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_19","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_20","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_21","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_22","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_23","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_24","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_25","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_26","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_27","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_28","HID_USAGE_SENSORS_DATA_FIELD_GENERIC","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID_OR_PROPERTYKEY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_CATEGORY_GUID","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_TYPE_GUID","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_EVENT_PROPERTYKEY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTY_PROPERTYKEY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_DATA_FIELD_PROPERTYKEY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_EVENT","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_DATA_FIELD","HID_USAGE_SENSORS_DATA_FIELD_ENUMERATOR_TABLE_ROW_INDEX","HID_USAGE_SENSORS_DATA_FIELD_ENUMERATOR_TABLE_ROW_COUNT","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID_OR_PROPERTYKEY_KIND","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTYKEY","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_TOP_LEVEL_COLLECTION_ID","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_ID","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_ITEM_POSITION_INDEX","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_FIRMWARE_VARTYPE","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_UNIT_OF_MEASURE","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_UNIT_EXPONENT","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_SIZE","HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_COUNT","HID_USAGE_SENSORS_PROPERTY_GENERIC","HID_USAGE_SENSORS_PROPERTY_ENUMERATOR_TABLE_ROW_INDEX","HID_USAGE_SENSORS_PROPERTY_ENUMERATOR_TABLE_ROW_COUNT","HID_USAGE_SENSORS_DATA_FIELD_PERSONAL_ACTIVITY","HID_USAGE_SENSORS_DATA_FIELD_ACTIVITY_TYPE","HID_USAGE_SENSORS_DATA_FIELD_ACTIVITY_STATE","HID_USAGE_SENSORS_DATA_FIELD_DEVICE_POSITION","HID_USAGE_SENSORS_DATA_FIELD_STEP_COUNT","HID_USAGE_SENSORS_DATA_FIELD_STEP_COUNT_RESET","HID_USAGE_SENSORS_DATA_FIELD_STEP_DURATION","HID_USAGE_SENSORS_DATA_FIELD_STEP_TYPE","HID_USAGE_SENSORS_PROPERTY_MINIMUM_ACTIVITY_DETECTION_INTERVAL","HID_USAGE_SENSORS_PROPERTY_SUPPORTED_ACTIVITY_TYPES","HID_USAGE_SENSORS_PROPERTY_SUBSCRIBED_ACTIVITY_TYPES","HID_USAGE_SENSORS_PROPERTY_SUPPORTED_STEP_TYPES","HID_USAGE_SENSORS_PROPERTY_SUBSCRIBED_STEP_TYPES","HID_USAGE_SENSORS_PROPERTY_FLOOR_HEIGHT","HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_TYPE_ID","HID_USAGE_SENSORS_PROPERTY_CUSTOM","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_1","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_2","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_3","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_4","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_5","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_6","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_7","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_8","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_9","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_10","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_11","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_12","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_13","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_14","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_15","HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_16","HID_USAGE_SENSORS_DATA_FIELD_HINGE","HID_USAGE_SENSORS_DATA_FIELD_HINGE_ANGLE","HID_USAGE_SENSORS_DATA_FIELD_GESTURE_SENSOR","HID_USAGE_SENSORS_DATA_FIELD_GESTURE_STATE","HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_INITIAL_ANGLE","HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_FINAL_ANGLE","HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_CONTRIBUTING_PANEL","HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_TYPE","HID_USAGE_SENSORS_SENSOR_STATE_UNDEFINED","HID_USAGE_SENSORS_SENSOR_STATE_READY","HID_USAGE_SENSORS_SENSOR_STATE_NOT_AVAILABLE","HID_USAGE_SENSORS_SENSOR_STATE_NO_DATA","HID_USAGE_SENSORS_SENSOR_STATE_INITIALIZING","HID_USAGE_SENSORS_SENSOR_STATE_ACCESS_DENIED","HID_USAGE_SENSORS_SENSOR_STATE_ERROR","HID_USAGE_SENSORS_SENSOR_EVENT_UNKNOWN","HID_USAGE_SENSORS_SENSOR_EVENT_STATE_CHANGED","HID_USAGE_SENSORS_SENSOR_EVENT_PROPERTY_CHANGED","HID_USAGE_SENSORS_SENSOR_EVENT_DATA_UPDATED","HID_USAGE_SENSORS_SENSOR_EVENT_POLL_RESPONSE","HID_USAGE_SENSORS_SENSOR_EVENT_CHANGE_SENSITIVITY","HID_USAGE_SENSORS_SENSOR_EVENT_RANGE_MAXIMUM_REACHED","HID_USAGE_SENSORS_SENSOR_EVENT_RANGE_MINIMUM_REACHED","HID_USAGE_SENSORS_SENSOR_EVENT_HIGH_THRESHOLD_CROSS_UPWARD","HID_USAGE_SENSORS_SENSOR_EVENT_HIGH_THRESHOLD_CROSS_DOWNWARD","HID_USAGE_SENSORS_SENSOR_EVENT_LOW_THRESHOLD_CROSS_UPWARD","HID_USAGE_SENSORS_SENSOR_EVENT_LOW_THRESHOLD_CROSS_DOWNWARD","HID_USAGE_SENSORS_SENSOR_EVENT_ZERO_THRESHOLD_CROSS_UPWARD","HID_USAGE_SENSORS_SENSOR_EVENT_ZERO_THRESHOLD_CROSS_DOWNWARD","HID_USAGE_SENSORS_SENSOR_EVENT_PERIOD_EXCEEDED","HID_USAGE_SENSORS_SENSOR_EVENT_FREQUENCY_EXCEEDED","HID_USAGE_SENSORS_SENSOR_EVENT_COMPLEX_TRIGGER","HID_USAGE_SENSORS_CONNECTION_TYPE_PC_INTEGRATED","HID_USAGE_SENSORS_CONNECTION_TYPE_PC_ATTACHED","HID_USAGE_SENSORS_CONNECTION_TYPE_PC_EXTERNAL","HID_USAGE_SENSORS_REPORTING_STATE_REPORT_NO_EVENTS","HID_USAGE_SENSORS_REPORTING_STATE_REPORT_ALL_EVENTS","HID_USAGE_SENSORS_REPORTING_STATE_REPORT_THRESHOLD_EVENTS","HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_NO_EVENTS","HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_ALL_EVENTS","HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_THRESHOLD_EVENTS","HID_USAGE_SENSORS_POWER_STATE_UNDEFINED","HID_USAGE_SENSORS_POWER_STATE_D0_FULL_POWER","HID_USAGE_SENSORS_POWER_STATE_D1_LOW_POWER","HID_USAGE_SENSORS_POWER_STATE_D2_STANDBY_POWER_WITH_WAKEUP","HID_USAGE_SENSORS_POWER_STATE_D3_SLEEP_WITH_WAKEUP","HID_USAGE_SENSORS_POWER_STATE_D4_POWER_OFF","HID_USAGE_SENSORS_FIX_QUALITY_NO_FIX","HID_USAGE_SENSORS_FIX_QUALITY_GPS","HID_USAGE_SENSORS_FIX_QUALITY_DGPS","HID_USAGE_SENSORS_FIX_TYPE_NO_FIX","HID_USAGE_SENSORS_FIX_TYPE_GPS_SPS_MODE_FIX_VALID","HID_USAGE_SENSORS_FIX_TYPE_DGPS_SPS_MODE_FIX_VALID","HID_USAGE_SENSORS_FIX_TYPE_GPS_PPS_MODE_FIX_VALID","HID_USAGE_SENSORS_FIX_TYPE_REAL_TIME_KINEMATIC","HID_USAGE_SENSORS_FIX_TYPE_FLOAT_RTK","HID_USAGE_SENSORS_FIX_TYPE_ESTIMATED_DEAD_RECKONED","HID_USAGE_SENSORS_FIX_TYPE_MANUAL_INPUT_MODE","HID_USAGE_SENSORS_FIX_TYPE_SIMULATOR_MODE","HID_USAGE_SENSORS_GPS_OPERATION_MODE_MANUAL","HID_USAGE_SENSORS_GPS_OPERATION_MODE_AUTOMATIC","HID_USAGE_SENSORS_GPS_SELECTION_MODE_AUTONOMOUS","HID_USAGE_SENSORS_GPS_SELECTION_MODE_DGPS","HID_USAGE_SENSORS_GPS_SELECTION_MODE_ESTIMATED_DEAD_RECKONED","HID_USAGE_SENSORS_GPS_SELECTION_MODE_MANUAL_INPUT","HID_USAGE_SENSORS_GPS_SELECTION_MODE_SIMULATOR","HID_USAGE_SENSORS_GPS_SELECTION_MODE_DATA_NOT_VALID","HID_USAGE_SENSORS_GPS_STATUS_DATA_VALID","HID_USAGE_SENSORS_GPS_STATUS_DATA_NOT_VALID","HID_USAGE_SENSORS_ACCURACY_DEFAULT","HID_USAGE_SENSORS_ACCURACY_HIGH","HID_USAGE_SENSORS_ACCURACY_MEDIUM","HID_USAGE_SENSORS_ACCURACY_LOW","HID_USAGE_SENSORS_DAY_OF_WEEK_SUNDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_MONDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_TUESDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_WEDNESDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_THURSDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_FRIDAY","HID_USAGE_SENSORS_DAY_OF_WEEK_SATURDAY","HID_USAGE_SENSORS_KIND_CATEGORY","HID_USAGE_SENSORS_KIND_TYPE","HID_USAGE_SENSORS_KIND_EVENT","HID_USAGE_SENSORS_KIND_PROPERTY","HID_USAGE_SENSORS_KIND_DATA_FIELD","HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_LOW","HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_MEDIUM","HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_HIGH","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_NOT_ROTATED","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_90_DEGREES_CCW","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_180_DEGREES_CCW","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_270_DEGREES_CCW","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_FACE_UP","HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_FACE_DOWN","HID_USAGE_SENSORS_VT_NULL","HID_USAGE_SENSORS_VT_BOOL","HID_USAGE_SENSORS_VT_UI1","HID_USAGE_SENSORS_VT_I1","HID_USAGE_SENSORS_VT_UI2","HID_USAGE_SENSORS_VT_I2","HID_USAGE_SENSORS_VT_UI4","HID_USAGE_SENSORS_VT_I4","HID_USAGE_SENSORS_VT_UI8","HID_USAGE_SENSORS_VT_I8","HID_USAGE_SENSORS_VT_R4","HID_USAGE_SENSORS_VT_R8","HID_USAGE_SENSORS_VT_WSTR","HID_USAGE_SENSORS_VT_STR","HID_USAGE_SENSORS_VT_CLSID","HID_USAGE_SENSORS_VT_VECTOR_VT_UI1","HID_USAGE_SENSORS_VT_F16E0","HID_USAGE_SENSORS_VT_F16E1","HID_USAGE_SENSORS_VT_F16E2","HID_USAGE_SENSORS_VT_F16E3","HID_USAGE_SENSORS_VT_F16E4","HID_USAGE_SENSORS_VT_F16E5","HID_USAGE_SENSORS_VT_F16E6","HID_USAGE_SENSORS_VT_F16E7","HID_USAGE_SENSORS_VT_F16E8","HID_USAGE_SENSORS_VT_F16E9","HID_USAGE_SENSORS_VT_F16EA","HID_USAGE_SENSORS_VT_F16EB","HID_USAGE_SENSORS_VT_F16EC","HID_USAGE_SENSORS_VT_F16ED","HID_USAGE_SENSORS_VT_F16EE","HID_USAGE_SENSORS_VT_F16EF","HID_USAGE_SENSORS_VT_F32E0","HID_USAGE_SENSORS_VT_F32E1","HID_USAGE_SENSORS_VT_F32E2","HID_USAGE_SENSORS_VT_F32E3","HID_USAGE_SENSORS_VT_F32E4","HID_USAGE_SENSORS_VT_F32E5","HID_USAGE_SENSORS_VT_F32E6","HID_USAGE_SENSORS_VT_F32E7","HID_USAGE_SENSORS_VT_F32E8","HID_USAGE_SENSORS_VT_F32E9","HID_USAGE_SENSORS_VT_F32EA","HID_USAGE_SENSORS_VT_F32EB","HID_USAGE_SENSORS_VT_F32EC","HID_USAGE_SENSORS_VT_F32ED","HID_USAGE_SENSORS_VT_F32EE","HID_USAGE_SENSORS_VT_F32EF","HID_USAGE_SENSORS_ACTIVITY_TYPE_UNKNOWN","HID_USAGE_SENSORS_ACTIVITY_TYPE_STATIONARY","HID_USAGE_SENSORS_ACTIVITY_TYPE_FIDGETING","HID_USAGE_SENSORS_ACTIVITY_TYPE_WALKING","HID_USAGE_SENSORS_ACTIVITY_TYPE_RUNNING","HID_USAGE_SENSORS_ACTIVITY_TYPE_IN_VEHICLE","HID_USAGE_SENSORS_ACTIVITY_TYPE_BIKING","HID_USAGE_SENSORS_ACTIVITY_TYPE_IDLE","HID_USAGE_SENSORS_UNIT_NOT_SPECIFIED","HID_USAGE_SENSORS_UNIT_LUX","HID_USAGE_SENSORS_UNIT_DEGREES_KELVIN","HID_USAGE_SENSORS_UNIT_DEGREES_CELSIUS","HID_USAGE_SENSORS_UNIT_PASCAL","HID_USAGE_SENSORS_UNIT_NEWTON","HID_USAGE_SENSORS_UNIT_METERS_SECOND","HID_USAGE_SENSORS_UNIT_KILOGRAM","HID_USAGE_SENSORS_UNIT_METER","HID_USAGE_SENSORS_UNIT_METERS_SECOND_SECOND","HID_USAGE_SENSORS_UNIT_FARAD","HID_USAGE_SENSORS_UNIT_AMPERE","HID_USAGE_SENSORS_UNIT_WATT","HID_USAGE_SENSORS_UNIT_HENRY","HID_USAGE_SENSORS_UNIT_OHM","HID_USAGE_SENSORS_UNIT_VOLT","HID_USAGE_SENSORS_UNIT_HERTZ","HID_USAGE_SENSORS_UNIT_BAR","HID_USAGE_SENSORS_UNIT_DEGREES_ANTI_CLOCKWISE","HID_USAGE_SENSORS_UNIT_DEGREES_CLOCKWISE","HID_USAGE_SENSORS_UNIT_DEGREES","HID_USAGE_SENSORS_UNIT_DEGREES_SECOND","HID_USAGE_SENSORS_UNIT_DEGREES_SECOND_SECOND","HID_USAGE_SENSORS_UNIT_KNOT","HID_USAGE_SENSORS_UNIT_PERCENT","HID_USAGE_SENSORS_UNIT_SECOND","HID_USAGE_SENSORS_UNIT_MILLISECOND","HID_USAGE_SENSORS_UNIT_G","HID_USAGE_SENSORS_UNIT_BYTES","HID_USAGE_SENSORS_UNIT_MILLIGAUSS","HID_USAGE_SENSORS_UNIT_BITS","HID_USAGE_SENSORS_ACTIVITY_STATE_NO_STATE_CHANGE","HID_USAGE_SENSORS_ACTIVITY_STATE_START_ACTIVITY","HID_USAGE_SENSORS_ACTIVITY_STATE_END_ACTIVITY","HID_USAGE_SENSORS_EXPONENT_0","HID_USAGE_SENSORS_EXPONENT_1","HID_USAGE_SENSORS_EXPONENT_2","HID_USAGE_SENSORS_EXPONENT_3","HID_USAGE_SENSORS_EXPONENT_4","HID_USAGE_SENSORS_EXPONENT_5","HID_USAGE_SENSORS_EXPONENT_6","HID_USAGE_SENSORS_EXPONENT_7","HID_USAGE_SENSORS_EXPONENT_8","HID_USAGE_SENSORS_EXPONENT_9","HID_USAGE_SENSORS_EXPONENT_A","HID_USAGE_SENSORS_EXPONENT_B","HID_USAGE_SENSORS_EXPONENT_C","HID_USAGE_SENSORS_EXPONENT_D","HID_USAGE_SENSORS_EXPONENT_E","HID_USAGE_SENSORS_EXPONENT_F","HID_USAGE_SENSORS_DEVICE_POSITION_UNKNOWN","HID_USAGE_SENSORS_DEVICE_POSITION_UNCHANGED","HID_USAGE_SENSORS_DEVICE_POSITION_ON_DESK","HID_USAGE_SENSORS_DEVICE_POSITION_IN_HAND","HID_USAGE_SENSORS_DEVICE_POSITION_MOVING_IN_BAG","HID_USAGE_SENSORS_DEVICE_POSITION_STATIONARY_IN_BAG","HID_USAGE_SENSORS_STEP_TYPE_UNKNOWN","HID_USAGE_SENSORS_STEP_TYPE_RUNNING","HID_USAGE_SENSORS_STEP_TYPE_WALKING","HID_USAGE_SENSORS_GESTURE_STATE_UNKNOWN","HID_USAGE_SENSORS_GESTURE_STATE_STARTED","HID_USAGE_SENSORS_GESTURE_STATE_COMPLETED","HID_USAGE_SENSORS_GESTURE_STATE_CANCELLED","HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_UNKNOWN","HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_PANEL_1","HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_PANEL_2","HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_BOTH","HID_USAGE_SENSORS_HINGE_FOLD_TYPE_UNKNOWN","HID_USAGE_SENSORS_HINGE_FOLD_TYPE_INCREASING","HID_USAGE_SENSORS_HINGE_FOLD_TYPE_DECREASING","HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_ABSOLUTE","HID_USAGE_SENSORS_MODIFIER_MAXIMUM","HID_USAGE_SENSORS_MODIFIER_MINIMUM","HID_USAGE_SENSORS_MODIFIER_ACCURACY","HID_USAGE_SENSORS_MODIFIER_RESOLUTION","HID_USAGE_SENSORS_MODIFIER_THRESHOLD_HIGH","HID_USAGE_SENSORS_MODIFIER_THRESHOLD_LOW","HID_USAGE_SENSORS_MODIFIER_CALIBRATION_OFFSET","HID_USAGE_SENSORS_MODIFIER_CALIBRATION_MULTIPLIER","HID_USAGE_SENSORS_MODIFIER_REPORT_INTERVAL","HID_USAGE_SENSORS_MODIFIER_FREQUENCY_MAX","HID_USAGE_SENSORS_MODIFIER_PERIOD_MAX","HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_PERCENT_OF_RANGE","HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_PERCENT_RELATIVE","HID_USAGE_MEDICAL_UNDEFINED","HID_USAGE_MEDICAL_MEDICAL_ULTRASOUND","HID_USAGE_MEDICAL_VCR_ACQUISITION","HID_USAGE_MEDICAL_FREEZE_THAW","HID_USAGE_MEDICAL_CLIP_STORE","HID_USAGE_MEDICAL_UPDATE","HID_USAGE_MEDICAL_NEXT","HID_USAGE_MEDICAL_SAVE","HID_USAGE_MEDICAL_PRINT","HID_USAGE_MEDICAL_MICROPHONE_ENABLE","HID_USAGE_MEDICAL_CINE","HID_USAGE_MEDICAL_TRANSMIT_POWER","HID_USAGE_MEDICAL_VOLUME","HID_USAGE_MEDICAL_FOCUS","HID_USAGE_MEDICAL_DEPTH","HID_USAGE_MEDICAL_SOFT_STEP_MINUS_PRIMARY","HID_USAGE_MEDICAL_SOFT_STEP_MINUS_SECONDARY","HID_USAGE_MEDICAL_DEPTH_GAIN_COMPENSATION","HID_USAGE_MEDICAL_ZOOM_SELECT","HID_USAGE_MEDICAL_ZOOM_ADJUST","HID_USAGE_MEDICAL_SPECTRAL_DOPPLER_MODE_SELECT","HID_USAGE_MEDICAL_SPECTRAL_DOPPLER_ADJUST","HID_USAGE_MEDICAL_COLOR_DOPPLER_MODE_SELECT","HID_USAGE_MEDICAL_COLOR_DOPPLER_ADJUST","HID_USAGE_MEDICAL_MOTION_MODE_SELECT","HID_USAGE_MEDICAL_MOTION_MODE_ADJUST","HID_USAGE_MEDICAL_2_D_MODE_SELECT","HID_USAGE_MEDICAL_2_D_MODE_ADJUST","HID_USAGE_MEDICAL_SOFT_CONTROL_SELECT","HID_USAGE_MEDICAL_SOFT_CONTROL_ADJUST","HID_USAGE_BRAILLE_UNDEFINED","HID_USAGE_BRAILLE_BRAILLE_DISPLAY","HID_USAGE_BRAILLE_BRAILLE_ROW","HID_USAGE_BRAILLE_8_DOT_BRAILLE_CELL","HID_USAGE_BRAILLE_6_DOT_BRAILLE_CELL","HID_USAGE_BRAILLE_NUMBER_OF_BRAILLE_CELLS","HID_USAGE_BRAILLE_SCREEN_READER_CONTROL","HID_USAGE_BRAILLE_SCREEN_READER_IDENTIFIER","HID_USAGE_BRAILLE_ROUTER_SET_1","HID_USAGE_BRAILLE_ROUTER_SET_2","HID_USAGE_BRAILLE_ROUTER_SET_3","HID_USAGE_BRAILLE_ROUTER_KEY","HID_USAGE_BRAILLE_ROW_ROUTER_KEY","HID_USAGE_BRAILLE_BRAILLE_BUTTONS","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_1","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_2","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_3","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_4","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_5","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_6","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_7","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_8","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_SPACE","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_LEFT_SPACE","HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_RIGHT_SPACE","HID_USAGE_BRAILLE_BRAILLE_FACE_CONTROLS","HID_USAGE_BRAILLE_BRAILLE_LEFT_CONTROLS","HID_USAGE_BRAILLE_BRAILLE_RIGHT_CONTROLS","HID_USAGE_BRAILLE_BRAILLE_TOP_CONTROLS","HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_CENTER","HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_UP","HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_DOWN","HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_LEFT","HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_RIGHT","HID_USAGE_BRAILLE_BRAILLE_D_PAD_CENTER","HID_USAGE_BRAILLE_BRAILLE_D_PAD_UP","HID_USAGE_BRAILLE_BRAILLE_D_PAD_DOWN","HID_USAGE_BRAILLE_BRAILLE_D_PAD_LEFT","HID_USAGE_BRAILLE_BRAILLE_D_PAD_RIGHT","HID_USAGE_BRAILLE_BRAILLE_PAN_LEFT","HID_USAGE_BRAILLE_BRAILLE_PAN_RIGHT","HID_USAGE_BRAILLE_BRAILLE_ROCKER_UP","HID_USAGE_BRAILLE_BRAILLE_ROCKER_DOWN","HID_USAGE_BRAILLE_BRAILLE_ROCKER_PRESS","HID_USAGE_LIGHT_UNDEFINED","HID_USAGE_LIGHT_LAMP_ARRAY","HID_USAGE_LIGHT_LAMP_ARRAY_ATTRIBUTES_REPORT","HID_USAGE_LIGHT_LAMP_COUNT","HID_USAGE_LIGHT_BOUNDING_BOX_WIDTH_IN_MICROMETERS","HID_USAGE_LIGHT_BOUNDING_BOX_HEIGHT_IN_MICROMETERS","HID_USAGE_LIGHT_BOUNDING_BOX_DEPTH_IN_MICROMETERS","HID_USAGE_LIGHT_LAMP_ARRAY_KIND","HID_USAGE_LIGHT_MIN_UPDATE_INTERVAL_IN_MICROSECONDS","HID_USAGE_LIGHT_LAMP_ATTRIBUTES_REQUEST_REPORT","HID_USAGE_LIGHT_LAMP_ID","HID_USAGE_LIGHT_LAMP_ATTRIBUTES_RESPONSE_REPORT","HID_USAGE_LIGHT_POSITION_X_IN_MICROMETERS","HID_USAGE_LIGHT_POSITION_Y_IN_MICROMETERS","HID_USAGE_LIGHT_POSITION_Z_IN_MICROMETERS","HID_USAGE_LIGHT_LAMP_PURPOSES","HID_USAGE_LIGHT_UPDATE_LATENCY_IN_MICROSECONDS","HID_USAGE_LIGHT_RED_LEVEL_COUNT","HID_USAGE_LIGHT_GREEN_LEVEL_COUNT","HID_USAGE_LIGHT_BLUE_LEVEL_COUNT","HID_USAGE_LIGHT_INTENSITY_LEVEL_COUNT","HID_USAGE_LIGHT_IS_PROGRAMMABLE","HID_USAGE_LIGHT_INPUT_BINDING","HID_USAGE_LIGHT_LAMP_MULTI_UPDATE_REPORT","HID_USAGE_LIGHT_RED_UPDATE_CHANNEL","HID_USAGE_LIGHT_GREEN_UPDATE_CHANNEL","HID_USAGE_LIGHT_BLUE_UPDATE_CHANNEL","HID_USAGE_LIGHT_INTENSITY_UPDATE_CHANNEL","HID_USAGE_LIGHT_LAMP_UPDATE_FLAGS","HID_USAGE_LIGHT_LAMP_RANGE_UPDATE_REPORT","HID_USAGE_LIGHT_LAMP_ID_START","HID_USAGE_LIGHT_LAMP_ID_END","HID_USAGE_LIGHT_LAMP_ARRAY_CONTROL_REPORT","HID_USAGE_LIGHT_AUTONOMOUS_MODE","HID_USAGE_MONITOR_MONITOR_CONTROL","HID_USAGE_MONITOR_EDID_INFORMATION","HID_USAGE_MONITOR_VDIF_INFORMATION","HID_USAGE_MONITOR_VESA_VERSION","HID_USAGE_MONITOR_VESA_BRIGHTNESS","HID_USAGE_MONITOR_VESA_CONTRAST","HID_USAGE_MONITOR_VESA_RED_VIDEO_GAIN","HID_USAGE_MONITOR_VESA_GREEN_VIDEO_GAIN","HID_USAGE_MONITOR_VESA_BLUE_VIDEO_GAIN","HID_USAGE_MONITOR_VESA_FOCUS","HID_USAGE_MONITOR_VESA_HORIZONTAL_POSITION","HID_USAGE_MONITOR_VESA_HORIZONTAL_SIZE","HID_USAGE_MONITOR_VESA_HORIZONTAL_PINCUSHION","HID_USAGE_MONITOR_VESA_HORIZONTAL_PINCUSHION_BALANCE","HID_USAGE_MONITOR_VESA_HORIZONTAL_MISCONVERGENCE","HID_USAGE_MONITOR_VESA_HORIZONTAL_LINEARITY","HID_USAGE_MONITOR_VESA_HORIZONTAL_LINEARITY_BALANCE","HID_USAGE_MONITOR_VESA_VERTICAL_POSITION","HID_USAGE_MONITOR_VESA_VERTICAL_SIZE","HID_USAGE_MONITOR_VESA_VERTICAL_PINCUSHION","HID_USAGE_MONITOR_VESA_VERTICAL_PINCUSHION_BALANCE","HID_USAGE_MONITOR_VESA_VERTICAL_MISCONVERGENCE","HID_USAGE_MONITOR_VESA_VERTICAL_LINEARITY","HID_USAGE_MONITOR_VESA_VERTICAL_LINEARITY_BALANCE","HID_USAGE_MONITOR_VESA_PARALLELOGRAM_DISTORTION_KEY_BALANCE","HID_USAGE_MONITOR_VESA_TRAPEZOIDAL_DISTORTION_KEY","HID_USAGE_MONITOR_VESA_TILT_ROTATION","HID_USAGE_MONITOR_VESA_TOP_CORNER_DISTORTION_CONTROL","HID_USAGE_MONITOR_VESA_TOP_CORNER_DISTORTION_BALANCE","HID_USAGE_MONITOR_VESA_BOTTOM_CORNER_DISTORTION_CONTROL","HID_USAGE_MONITOR_VESA_BOTTOM_CORNER_DISTORTION_BALANCE","HID_USAGE_MONITOR_VESA_HORIZONTAL_MOIR","HID_USAGE_MONITOR_VESA_VERTICAL_MOIR","HID_USAGE_MONITOR_VESA_RED_VIDEO_BLACK_LEVEL","HID_USAGE_MONITOR_VESA_GREEN_VIDEO_BLACK_LEVEL","HID_USAGE_MONITOR_VESA_BLUE_VIDEO_BLACK_LEVEL","HID_USAGE_MONITOR_VESA_INPUT_LEVEL_SELECT","HID_USAGE_MONITOR_VESA_INPUT_SOURCE_SELECT","HID_USAGE_MONITOR_VESA_ON_SCREEN_DISPLAY","HID_USAGE_MONITOR_VESA_STEREOMODE","HID_USAGE_MONITOR_VESA_AUTO_SIZE_CENTER","HID_USAGE_MONITOR_VESA_POLARITY_HORIZONTAL_SYNCHRONIZATION","HID_USAGE_MONITOR_VESA_POLARITY_VERTICAL_SYNCHRONIZATION","HID_USAGE_MONITOR_VESA_SYNCHRONIZATION_TYPE","HID_USAGE_MONITOR_VESA_SCREEN_ORIENTATION","HID_USAGE_MONITOR_VESA_HORIZONTAL_FREQUENCY","HID_USAGE_MONITOR_VESA_VERTICAL_FREQUENCY","HID_USAGE_MONITOR_VESA_DEGAUSS","HID_USAGE_MONITOR_VESA_SETTINGS","HID_USAGE_POS_BARCODE_UNDEFINED","HID_USAGE_POS_BARCODE_BAR_CODE_BADGE_READER","HID_USAGE_POS_BARCODE_BAR_CODE_SCANNER","HID_USAGE_POS_BARCODE_DUMB_BAR_CODE_SCANNER","HID_USAGE_POS_BARCODE_CORDLESS_SCANNER_BASE","HID_USAGE_POS_BARCODE_BAR_CODE_SCANNER_CRADLE","HID_USAGE_POS_BARCODE_ATTRIBUTE_REPORT","HID_USAGE_POS_BARCODE_SETTINGS_REPORT","HID_USAGE_POS_BARCODE_SCANNED_DATA_REPORT","HID_USAGE_POS_BARCODE_RAW_SCANNED_DATA_REPORT","HID_USAGE_POS_BARCODE_TRIGGER_REPORT","HID_USAGE_POS_BARCODE_STATUS_REPORT","HID_USAGE_POS_BARCODE_UPC_EAN_CONTROL_REPORT","HID_USAGE_POS_BARCODE_EAN_2_3_LABEL_CONTROL_REPORT","HID_USAGE_POS_BARCODE_CODE_39_CONTROL_REPORT","HID_USAGE_POS_BARCODE_INTERLEAVED_2_OF_5_CONTROL_REPORT","HID_USAGE_POS_BARCODE_STANDARD_2_OF_5_CONTROL_REPORT","HID_USAGE_POS_BARCODE_MSI_PLESSEY_CONTROL_REPORT","HID_USAGE_POS_BARCODE_CODABAR_CONTROL_REPORT","HID_USAGE_POS_BARCODE_CODE_128_CONTROL_REPORT","HID_USAGE_POS_BARCODE_MISC_1D_CONTROL_REPORT","HID_USAGE_POS_BARCODE_2D_CONTROL_REPORT","HID_USAGE_POS_BARCODE_AIMING_POINTER_MODE","HID_USAGE_POS_BARCODE_BAR_CODE_PRESENT_SENSOR","HID_USAGE_POS_BARCODE_CLASS_1A_LASER","HID_USAGE_POS_BARCODE_CLASS_2_LASER","HID_USAGE_POS_BARCODE_HEATER_PRESENT","HID_USAGE_POS_BARCODE_CONTACT_SCANNER","HID_USAGE_POS_BARCODE_ELECTRONIC_ARTICLE_SURVEILLANCE_NOTIFICATION","HID_USAGE_POS_BARCODE_CONSTANT_ELECTRONIC_ARTICLE_SURVEILLANCE","HID_USAGE_POS_BARCODE_ERROR_INDICATION","HID_USAGE_POS_BARCODE_FIXED_BEEPER","HID_USAGE_POS_BARCODE_GOOD_DECODE_INDICATION","HID_USAGE_POS_BARCODE_HANDS_FREE_SCANNING","HID_USAGE_POS_BARCODE_INTRINSICALLY_SAFE","HID_USAGE_POS_BARCODE_KLASSE_EINS_LASER","HID_USAGE_POS_BARCODE_LONG_RANGE_SCANNER","HID_USAGE_POS_BARCODE_MIRROR_SPEED_CONTROL","HID_USAGE_POS_BARCODE_NOT_ON_FILE_INDICATION","HID_USAGE_POS_BARCODE_PROGRAMMABLE_BEEPER","HID_USAGE_POS_BARCODE_TRIGGERLESS","HID_USAGE_POS_BARCODE_WAND","HID_USAGE_POS_BARCODE_WATER_RESISTANT","HID_USAGE_POS_BARCODE_MULTI_RANGE_SCANNER","HID_USAGE_POS_BARCODE_PROXIMITY_SENSOR","HID_USAGE_POS_BARCODE_FRAGMENT_DECODING","HID_USAGE_POS_BARCODE_SCANNER_READ_CONFIDENCE","HID_USAGE_POS_BARCODE_DATA_PREFIX","HID_USAGE_POS_BARCODE_PREFIX_AIMI","HID_USAGE_POS_BARCODE_PREFIX_NONE","HID_USAGE_POS_BARCODE_PREFIX_PROPRIETARY","HID_USAGE_POS_BARCODE_ACTIVE_TIME","HID_USAGE_POS_BARCODE_AIMING_LASER_PATTERN","HID_USAGE_POS_BARCODE_BAR_CODE_PRESENT","HID_USAGE_POS_BARCODE_BEEPER_STATE","HID_USAGE_POS_BARCODE_LASER_ON_TIME","HID_USAGE_POS_BARCODE_LASER_STATE","HID_USAGE_POS_BARCODE_LOCKOUT_TIME","HID_USAGE_POS_BARCODE_MOTOR_STATE","HID_USAGE_POS_BARCODE_MOTOR_TIMEOUT","HID_USAGE_POS_BARCODE_POWER_ON_RESET_SCANNER","HID_USAGE_POS_BARCODE_PREVENT_READ_OF_BARCODES","HID_USAGE_POS_BARCODE_INITIATE_BARCODE_READ","HID_USAGE_POS_BARCODE_TRIGGER_STATE","HID_USAGE_POS_BARCODE_TRIGGER_MODE","HID_USAGE_POS_BARCODE_TRIGGER_MODE_BLINKING_LASER_ON","HID_USAGE_POS_BARCODE_TRIGGER_MODE_CONTINUOUS_LASER_ON","HID_USAGE_POS_BARCODE_TRIGGER_MODE_LASER_ON_WHILE_PULLED","HID_USAGE_POS_BARCODE_TRIGGER_MODE_LASER_STAYS_ON_AFTER_TRIGGER_RELEASE","HID_USAGE_POS_BARCODE_COMMIT_PARAMETERS_TO_NVM","HID_USAGE_POS_BARCODE_PARAMETER_SCANNING","HID_USAGE_POS_BARCODE_PARAMETERS_CHANGED","HID_USAGE_POS_BARCODE_SET_PARAMETER_DEFAULT_VALUES","HID_USAGE_POS_BARCODE_SCANNER_IN_CRADLE","HID_USAGE_POS_BARCODE_SCANNER_IN_RANGE","HID_USAGE_POS_BARCODE_AIM_DURATION","HID_USAGE_POS_BARCODE_GOOD_READ_LAMP_DURATION","HID_USAGE_POS_BARCODE_GOOD_READ_LAMP_INTENSITY","HID_USAGE_POS_BARCODE_GOOD_READ_LED","HID_USAGE_POS_BARCODE_GOOD_READ_TONE_FREQUENCY","HID_USAGE_POS_BARCODE_GOOD_READ_TONE_LENGTH","HID_USAGE_POS_BARCODE_GOOD_READ_TONE_VOLUME","HID_USAGE_POS_BARCODE_NO_READ_MESSAGE","HID_USAGE_POS_BARCODE_NOT_ON_FILE_VOLUME","HID_USAGE_POS_BARCODE_POWERUP_BEEP","HID_USAGE_POS_BARCODE_SOUND_ERROR_BEEP","HID_USAGE_POS_BARCODE_SOUND_GOOD_READ_BEEP","HID_USAGE_POS_BARCODE_SOUND_NOT_ON_FILE_BEEP","HID_USAGE_POS_BARCODE_GOOD_READ_WHEN_TO_WRITE","HID_USAGE_POS_BARCODE_GRWTI_AFTER_DECODE","HID_USAGE_POS_BARCODE_GRWTI_BEEP_LAMP_AFTER_TRANSMIT","HID_USAGE_POS_BARCODE_GRWTI_NO_BEEP_LAMP_USE_AT_ALL","HID_USAGE_POS_BARCODE_BOOKLAND_EAN","HID_USAGE_POS_BARCODE_CONVERT_EAN_8_TO_13_TYPE","HID_USAGE_POS_BARCODE_CONVERT_UPC_A_TO_EAN_13","HID_USAGE_POS_BARCODE_CONVERT_UPC_E_TO_A","HID_USAGE_POS_BARCODE_EAN_13","HID_USAGE_POS_BARCODE_EAN_8","HID_USAGE_POS_BARCODE_EAN_99_128_MANDATORY","HID_USAGE_POS_BARCODE_EAN_99_P5_128_OPTIONAL","HID_USAGE_POS_BARCODE_UPC_EAN","HID_USAGE_POS_BARCODE_UPC_EAN_COUPON_CODE","HID_USAGE_POS_BARCODE_UPC_EAN_PERIODICALS","HID_USAGE_POS_BARCODE_UPC_A","HID_USAGE_POS_BARCODE_UPC_A_WITH_128_MANDATORY","HID_USAGE_POS_BARCODE_UPC_A_WITH_128_OPTIONAL","HID_USAGE_POS_BARCODE_UPC_A_WITH_P5_OPTIONAL","HID_USAGE_POS_BARCODE_UPC_E","HID_USAGE_POS_BARCODE_UPC_E1","HID_USAGE_POS_BARCODE_PERIODICAL","HID_USAGE_POS_BARCODE_PERIODICAL_AUTO_DISCRIMINATE_PLUS_2","HID_USAGE_POS_BARCODE_PERIODICAL_ONLY_DECODE_WITH_PLUS_2","HID_USAGE_POS_BARCODE_PERIODICAL_IGNORE_PLUS_2","HID_USAGE_POS_BARCODE_PERIODICAL_AUTO_DISCRIMINATE_PLUS_5","HID_USAGE_POS_BARCODE_PERIODICAL_ONLY_DECODE_WITH_PLUS_5","HID_USAGE_POS_BARCODE_PERIODICAL_IGNORE_PLUS_5","HID_USAGE_POS_BARCODE_CHECK","HID_USAGE_POS_BARCODE_CHECK_DISABLE_PRICE","HID_USAGE_POS_BARCODE_CHECK_ENABLE_4_DIGIT_PRICE","HID_USAGE_POS_BARCODE_CHECK_ENABLE_5_DIGIT_PRICE","HID_USAGE_POS_BARCODE_CHECK_ENABLE_EUROPEAN_4_DIGIT_PRICE","HID_USAGE_POS_BARCODE_CHECK_ENABLE_EUROPEAN_5_DIGIT_PRICE","HID_USAGE_POS_BARCODE_EAN_TWO_LABEL","HID_USAGE_POS_BARCODE_EAN_THREE_LABEL","HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_1","HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_2","HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_3","HID_USAGE_POS_BARCODE_EAN_13_FLAG_DIGIT_1","HID_USAGE_POS_BARCODE_EAN_13_FLAG_DIGIT_2","HID_USAGE_POS_BARCODE_TRANSMIT_CHECK_DIGIT","HID_USAGE_POS_BARCODE_DISABLE_CHECK_DIGIT_TRANSMIT","HID_USAGE_POS_BARCODE_ENABLE_CHECK_DIGIT_TRANSMIT","HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_1","HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_2","HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_3","HID_USAGE_POS_BARCODE_DECODED_DATA","HID_USAGE_POS_BARCODE_DECODE_DATA_CONTINUED","HID_USAGE_POS_BARCODE_BAR_SPACE_DATA","HID_USAGE_POS_BARCODE_SCANNER_DATA_ACCURACY","HID_USAGE_POS_BARCODE_RAW_DATA_POLARITY","HID_USAGE_POS_BARCODE_POLARITY_INVERTED_BAR_CODE","HID_USAGE_POS_BARCODE_POLARITY_NORMAL_BAR_CODE","HID_USAGE_POS_BARCODE_MINIMUM_LENGTH_TO_DECODE","HID_USAGE_POS_BARCODE_MAXIMUM_LENGTH_TO_DECODE","HID_USAGE_POS_BARCODE_FIRST_DISCRETE_LENGTH_TO_DECODE","HID_USAGE_POS_BARCODE_SECOND_DISCRETE_LENGTH_TO_DECODE","HID_USAGE_POS_BARCODE_DATA_LENGTH_METHOD","HID_USAGE_POS_BARCODE_DL_METHOD_READ_ANY","HID_USAGE_POS_BARCODE_DL_METHOD_CHECK_IN_RANGE","HID_USAGE_POS_BARCODE_DL_METHOD_CHECK_FOR_DISCRETE","HID_USAGE_POS_BARCODE_AZTEC_CODE","HID_USAGE_POS_BARCODE_BC412","HID_USAGE_POS_BARCODE_CHANNEL_CODE","HID_USAGE_POS_BARCODE_CODE_16","HID_USAGE_POS_BARCODE_CODE_32","HID_USAGE_POS_BARCODE_CODE_49","HID_USAGE_POS_BARCODE_CODE_ONE","HID_USAGE_POS_BARCODE_COLORCODE","HID_USAGE_POS_BARCODE_DATA_MATRIX","HID_USAGE_POS_BARCODE_MAXICODE","HID_USAGE_POS_BARCODE_MICROPDF","HID_USAGE_POS_BARCODE_PDF_417","HID_USAGE_POS_BARCODE_POSICODE","HID_USAGE_POS_BARCODE_QR_CODE","HID_USAGE_POS_BARCODE_SUPERCODE","HID_USAGE_POS_BARCODE_ULTRACODE","HID_USAGE_POS_BARCODE_USD_5_SLUG_CODE","HID_USAGE_POS_BARCODE_VERICODE","HID_USAGE_POS_SCALE_UNDEFINED","HID_USAGE_POS_SCALE_WEIGHING_DEVICE","HID_USAGE_POS_SCALE_SCALE_DEVICE","HID_USAGE_POS_SCALE_SCALE_CLASS_I_METRIC","HID_USAGE_POS_SCALE_SCALE_CLASS_I_METRIC_2","HID_USAGE_POS_SCALE_SCALE_CLASS_II_METRIC","HID_USAGE_POS_SCALE_SCALE_CLASS_III_METRIC","HID_USAGE_POS_SCALE_SCALE_CLASS_IIIL_METRIC","HID_USAGE_POS_SCALE_SCALE_CLASS_IV_METRIC","HID_USAGE_POS_SCALE_SCALE_CLASS_III_ENGLISH","HID_USAGE_POS_SCALE_SCALE_CLASS_IIIL_ENGLISH","HID_USAGE_POS_SCALE_SCALE_CLASS_IV_ENGLISH","HID_USAGE_POS_SCALE_SCALE_CLASS_GENERIC","HID_USAGE_POS_SCALE_SCALE_ATTRIBUTE_REPORT","HID_USAGE_POS_SCALE_SCALE_CONTROL_REPORT","HID_USAGE_POS_SCALE_SCALE_DATA_REPORT","HID_USAGE_POS_SCALE_SCALE_STATUS_REPORT","HID_USAGE_POS_SCALE_SCALE_WEIGHT_LIMIT_REPORT","HID_USAGE_POS_SCALE_SCALE_STATISTICS_REPORT","HID_USAGE_POS_SCALE_DATA_WEIGHT","HID_USAGE_POS_SCALE_DATA_SCALING","HID_USAGE_POS_SCALE_WEIGHT_UNIT","HID_USAGE_POS_SCALE_WEIGHT_UNIT_MILLIGRAM","HID_USAGE_POS_SCALE_WEIGHT_UNIT_GRAM","HID_USAGE_POS_SCALE_WEIGHT_UNIT_KILOGRAM","HID_USAGE_POS_SCALE_WEIGHT_UNIT_CARATS","HID_USAGE_POS_SCALE_WEIGHT_UNIT_TAELS","HID_USAGE_POS_SCALE_WEIGHT_UNIT_GRAINS","HID_USAGE_POS_SCALE_WEIGHT_UNIT_PENNYWEIGHTS","HID_USAGE_POS_SCALE_WEIGHT_UNIT_METRIC_TON","HID_USAGE_POS_SCALE_WEIGHT_UNIT_AVOIR_TON","HID_USAGE_POS_SCALE_WEIGHT_UNIT_TROY_OUNCE","HID_USAGE_POS_SCALE_WEIGHT_UNIT_OUNCE","HID_USAGE_POS_SCALE_WEIGHT_UNIT_POUND","HID_USAGE_POS_SCALE_CALIBRATION_COUNT","HID_USAGE_POS_SCALE_RE_ZERO_COUNT","HID_USAGE_POS_SCALE_SCALE_STATUS","HID_USAGE_POS_SCALE_SCALE_STATUS_FAULT","HID_USAGE_POS_SCALE_SCALE_STATUS_STABLE_AT_CENTER_OF_ZERO","HID_USAGE_POS_SCALE_SCALE_STATUS_IN_MOTION","HID_USAGE_POS_SCALE_SCALE_STATUS_WEIGHT_STABLE","HID_USAGE_POS_SCALE_SCALE_STATUS_UNDER_ZERO","HID_USAGE_POS_SCALE_SCALE_STATUS_OVER_WEIGHT_LIMIT","HID_USAGE_POS_SCALE_SCALE_STATUS_REQUIRES_CALIBRATION","HID_USAGE_POS_SCALE_SCALE_STATUS_REQUIRES_RE_ZEROING","HID_USAGE_POS_SCALE_ZERO_SCALE","HID_USAGE_POS_SCALE_ENFORCED_ZERO_RETURN","HID_USAGE_POS_MSR_UNDEFINED","HID_USAGE_POS_MSR_MSR_DEVICE_READ_ONLY","HID_USAGE_POS_MSR_TRACK_1_LENGTH","HID_USAGE_POS_MSR_TRACK_2_LENGTH","HID_USAGE_POS_MSR_TRACK_3_LENGTH","HID_USAGE_POS_MSR_TRACK_JIS_LENGTH","HID_USAGE_POS_MSR_TRACK_DATA","HID_USAGE_POS_MSR_TRACK_1_DATA","HID_USAGE_POS_MSR_TRACK_2_DATA","HID_USAGE_POS_MSR_TRACK_3_DATA","HID_USAGE_POS_MSR_TRACK_JIS_DATA","HID_USAGE_CAMERA_UNDEFINED","HID_USAGE_CAMERA_CAMERA_AUTO_FOCUS","HID_USAGE_CAMERA_CAMERA_SHUTTER","HID_USAGE_FIDO_UNDEFINED","HID_USAGE_FIDO_U2F_AUTHENTICATOR_DEVICE","HID_USAGE_FIDO_INPUT_REPORT_DATA","HID_USAGE_FIDO_OUTPUT_REPORT_DATA","ZMK_HID_USAGE","ZMK_HID_USAGE_ID","ZMK_HID_USAGE_PAGE","USAGE_KEYPAD","USAGE_CONSUMER","HID_USAGE_GD","HID_USAGE_SIM","HID_USAGE_VR","HID_USAGE_SPORT","HID_USAGE_GAME","HID_USAGE_GDV","HID_USAGE_KEY","HID_USAGE_LED","HID_USAGE_TELEPHONY","HID_USAGE_CONSUMER","HID_USAGE_DIGITIZERS","HID_USAGE_HAPTICS","HID_USAGE_PID","HID_USAGE_EHT","HID_USAGE_AUXDISP","HID_USAGE_SENSORS","HID_USAGE_MEDICAL","HID_USAGE_BRAILLE","HID_USAGE_LIGHT","HID_USAGE_MONITOR","HID_USAGE_MONITOR_VALUES","HID_USAGE_MONITOR_VESA","HID_USAGE_POWER","HID_USAGE_POS_BARCODE","HID_USAGE_POS_SCALE","HID_USAGE_POS_MSR","HID_USAGE_POS_RESV","HID_USAGE_CAMERA","HID_USAGE_ARCADE","HID_USAGE_GAMING","HID_USAGE_FIDO","SYSTEM_POWER","SYS_PWR","SYSTEM_SLEEP","SYS_SLEEP","SYSTEM_WAKE_UP","SYS_WAKE","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","NUMBER_1","N1","NUM_1","EXCLAMATION","EXCL","BANG","NUMBER_2","N2","NUM_2","AT_SIGN","AT","ATSN","NUMBER_3","N3","NUM_3","HASH","POUND","NUMBER_4","N4","NUM_4","DOLLAR","DLLR","NUMBER_5","N5","NUM_5","PERCENT","PRCNT","PRCT","NUMBER_6","N6","NUM_6","CARET","CRRT","NUMBER_7","N7","NUM_7","AMPERSAND","AMPS","NUMBER_8","N8","NUM_8","ASTERISK","ASTRK","STAR","NUMBER_9","N9","NUM_9","LEFT_PARENTHESIS","LPAR","LPRN","NUMBER_0","N0","NUM_0","RIGHT_PARENTHESIS","RPAR","RPRN","RETURN","ENTER","RET","ESCAPE","ESC","BACKSPACE","BSPC","BKSP","TAB","SPACE","SPC","MINUS","UNDERSCORE","UNDER","EQUAL","EQL","PLUS","LEFT_BRACKET","LBKT","LEFT_BRACE","LBRC","LCUR","RIGHT_BRACKET","RBKT","RIGHT_BRACE","RBRC","RCUR","BACKSLASH","BSLH","PIPE","NON_US_HASH","NUHS","TILDE2","SEMICOLON","SEMI","SCLN","COLON","COLN","SINGLE_QUOTE","SQT","APOSTROPHE","APOS","QUOT","DOUBLE_QUOTES","DQT","GRAVE","GRAV","TILDE","TILD","COMMA","CMMA","LESS_THAN","LT","LABT","PERIOD","DOT","GREATER_THAN","GT","RABT","SLASH","FSLH","QUESTION","QMARK","CAPSLOCK","CAPS","CLCK","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","PRINTSCREEN","PSCRN","PRSC","SCROLLLOCK","SLCK","SCLK","PAUSE_BREAK","PAUS","INSERT","INS","HOME","PAGE_UP","PG_UP","PGUP","DELETE","DEL","END","PAGE_DOWN","PG_DN","PGDN","RIGHT_ARROW","RIGHT","RARW","LEFT_ARROW","LEFT","LARW","DOWN_ARROW","DOWN","DARW","UP_ARROW","UP","UARW","KP_NUMLOCK","KP_NUM","KP_NLCK","CLEAR2","KP_DIVIDE","KP_SLASH","KDIV","KP_MULTIPLY","KP_ASTERISK","KMLT","KP_MINUS","KP_SUBTRACT","KMIN","KP_PLUS","KPLS","KP_ENTER","KP_NUMBER_1","KP_N1","KP_NUMBER_2","KP_N2","KP_NUMBER_3","KP_N3","KP_NUMBER_4","KP_N4","KP_NUMBER_5","KP_N5","KP_NUMBER_6","KP_N6","KP_NUMBER_7","KP_N7","KP_NUMBER_8","KP_N8","KP_NUMBER_9","KP_N9","KP_NUMBER_0","KP_N0","KP_DOT","NON_US_BACKSLASH","NON_US_BSLH","NUBS","PIPE2","K_APPLICATION","K_APP","K_CONTEXT_MENU","K_CMENU","GUI","K_POWER","K_PWR","KP_EQUAL","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","K_EXECUTE","K_EXEC","K_HELP","K_MENU","K_SELECT","K_STOP","K_AGAIN","K_REDO","K_UNDO","UNDO","K_CUT","CUT","K_COPY","COPY","K_PASTE","PSTE","K_FIND","K_MUTE","K_VOLUME_UP","K_VOL_UP","VOLU","K_VOLUME_DOWN","K_VOL_DN","VOLD","LOCKING_CAPS","LCAPS","LOCKING_NUM","LNLCK","LOCKING_SCROLL","LSLCK","KP_COMMA","KP_EQUAL_AS400","INTERNATIONAL_1","INT1","INT_RO","INTERNATIONAL_2","INT2","INT_KATAKANAHIRAGANA","INT_KANA","INTERNATIONAL_3","INT3","INT_YEN","INTERNATIONAL_4","INT4","INT_HENKAN","INTERNATIONAL_5","INT5","INT_MUHENKAN","INTERNATIONAL_6","INT6","INT_KPJPCOMMA","INTERNATIONAL_7","INT7","INTERNATIONAL_8","INT8","INTERNATIONAL_9","INT9","LANGUAGE_1","LANG1","LANG_HANGEUL","LANGUAGE_2","LANG2","LANG_HANJA","LANGUAGE_3","LANG3","LANG_KATAKANA","LANGUAGE_4","LANG4","LANG_HIRAGANA","LANGUAGE_5","LANG5","LANG_ZENKAKUHANKAKU","LANGUAGE_6","LANG6","LANGUAGE_7","LANG7","LANGUAGE_8","LANG8","LANGUAGE_9","LANG9","ALT_ERASE","SYSREQ","ATTENTION","K_CANCEL","CLEAR","PRIOR","RETURN2","RET2","SEPARATOR","OUT","OPER","CLEAR_AGAIN","CRSEL","EXSEL","CURU","KP_LEFT_PARENTHESIS","KP_LPAR","KP_RIGHT_PARENTHESIS","KP_RPAR","KSPC","KP_CLEAR","LEFT_CONTROL","LCTRL","LCTL","LEFT_SHIFT","LSHIFT","LSHFT","LSFT","LEFT_ALT","LALT","LEFT_GUI","LGUI","LEFT_WIN","LWIN","LEFT_COMMAND","LCMD","LEFT_META","LMETA","RIGHT_CONTROL","RCTRL","RCTL","RIGHT_SHIFT","RSHIFT","RSHFT","RSFT","RIGHT_ALT","RALT","RIGHT_GUI","RGUI","RIGHT_WIN","RWIN","RIGHT_COMMAND","RCMD","RIGHT_META","RMETA","K_PLAY_PAUSE","K_PP","K_STOP2","K_PREVIOUS","K_PREV","K_NEXT","K_EJECT","K_VOLUME_UP2","K_VOL_UP2","K_VOLUME_DOWN2","K_VOL_DN2","K_MUTE2","K_WWW","K_BACK","K_FORWARD","K_STOP3","K_FIND2","K_SCROLL_UP","K_SCROLL_DOWN","K_EDIT","K_SLEEP","K_LOCK","K_SCREENSAVER","K_COFFEE","K_REFRESH","K_CALCULATOR","K_CALC","C_POWER","C_PWR","C_RESET","C_SLEEP","C_SLEEP_MODE","C_MENU","C_MENU_PICK","C_MENU_SELECT","C_MENU_UP","C_MENU_DOWN","C_MENU_LEFT","C_MENU_RIGHT","C_MENU_ESCAPE","C_MENU_ESC","C_MENU_INCREASE","C_MENU_INC","C_MENU_DECREASE","C_MENU_DEC","C_DATA_ON_SCREEN","C_CAPTIONS","C_SUBTITLES","C_SNAPSHOT","C_PIP","C_RED_BUTTON","C_RED","C_GREEN_BUTTON","C_GREEN","C_BLUE_BUTTON","C_BLUE","C_YELLOW_BUTTON","C_YELLOW","C_ASPECT","C_BRIGHTNESS_INC","C_BRI_INC","C_BRI_UP","C_BRIGHTNESS_DEC","C_BRI_DEC","C_BRI_DN","C_BACKLIGHT_TOGGLE","C_BKLT_TOG","C_BRIGHTNESS_MINIMUM","C_BRI_MIN","C_BRIGHTNESS_MAXIMUM","C_BRI_MAX","C_BRIGHTNESS_AUTO","C_BRI_AUTO","C_MEDIA_STEP","C_MODE_STEP","C_RECALL_LAST","C_CHAN_LAST","C_MEDIA_COMPUTER","C_MEDIA_TV","C_MEDIA_WWW","C_MEDIA_DVD","C_MEDIA_PHONE","C_MEDIA_GUIDE","C_MEDIA_VIDEOPHONE","C_MEDIA_GAMES","C_MEDIA_MESSAGES","C_MEDIA_CD","C_MEDIA_VCR","C_MEDIA_TUNER","C_QUIT","C_HELP","C_MEDIA_TAPE","C_MEDIA_CABLE","C_MEDIA_SATELLITE","C_MEDIA_HOME","C_CHANNEL_INC","C_CHAN_INC","C_CHANNEL_DEC","C_CHAN_DEC","C_MEDIA_VCR_PLUS","C_PLAY","C_PAUSE","C_RECORD","C_REC","C_FAST_FORWARD","C_FF","C_REWIND","C_RW","C_NEXT","M_NEXT","C_PREVIOUS","C_PREV","M_PREV","C_STOP","M_STOP","C_EJECT","M_EJCT","C_RANDOM_PLAY","C_SHUFFLE","C_REPEAT","C_SLOW_TRACKING","C_SLOW2","C_STOP_EJECT","C_PLAY_PAUSE","C_PP","M_PLAY","C_VOICE_COMMAND","C_MUTE","M_MUTE","C_BASS_BOOST","C_VOLUME_UP","C_VOL_UP","M_VOLU","C_VOLUME_DOWN","C_VOL_DN","M_VOLD","C_SLOW","C_ALTERNATE_AUDIO_INCREMENT","C_ALT_AUDIO_INC","C_AL_CCC","C_AL_WORD","C_AL_TEXT_EDITOR","C_AL_SPREADSHEET","C_AL_SHEET","C_AL_GRAPHICS_EDITOR","C_AL_PRESENTATION","C_AL_DATABASE","C_AL_DB","C_AL_EMAIL","C_AL_MAIL","C_AL_NEWS","C_AL_VOICEMAIL","C_AL_CONTACTS","C_AL_ADDRESS_BOOK","C_AL_CALENDAR","C_AL_CAL","C_AL_TASK_MANAGER","C_AL_JOURNAL","C_AL_FINANCE","C_AL_CALCULATOR","C_AL_CALC","C_AL_AV_CAPTURE_PLAYBACK","C_AL_MY_COMPUTER","C_AL_WWW","C_AL_NETWORK_CHAT","C_AL_CHAT","C_AL_LOGOFF","C_AL_LOCK","C_AL_SCREENSAVER","C_AL_COFFEE","C_AL_CONTROL_PANEL","C_AL_SELECT_TASK","C_AL_NEXT_TASK","C_AL_PREVIOUS_TASK","C_AL_PREV_TASK","C_AL_HELP","C_AL_DOCUMENTS","C_AL_DOCS","C_AL_SPELLCHECK","C_AL_SPELL","C_AL_KEYBOARD_LAYOUT","C_AL_SCREEN_SAVER","C_AL_FILE_BROWSER","C_AL_FILES","C_AL_IMAGE_BROWSER","C_AL_IMAGES","C_AL_AUDIO_BROWSER","C_AL_AUDIO","C_AL_MUSIC","C_AL_MOVIE_BROWSER","C_AL_MOVIES","C_AL_INSTANT_MESSAGING","C_AL_IM","C_AL_OEM_FEATURES","C_AL_TIPS","C_AL_TUTORIAL","C_AC_NEW","C_AC_OPEN","C_AC_CLOSE","C_AC_EXIT","C_AC_SAVE","C_AC_PRINT","C_AC_PROPERTIES","C_AC_PROPS","C_AC_UNDO","C_AC_COPY","C_AC_CUT","C_AC_PASTE","C_AC_FIND","C_AC_SEARCH","C_AC_GOTO","C_AC_HOME","C_AC_BACK","C_AC_FORWARD","C_AC_STOP","C_AC_REFRESH","C_AC_BOOKMARKS","C_AC_FAVORITES","C_AC_FAVOURITES","C_AC_ZOOM_IN","C_AC_ZOOM_OUT","C_AC_ZOOM","C_AC_VIEW_TOGGLE","C_AC_SCROLL_UP","C_AC_SCROLL_DOWN","C_AC_EDIT","C_AC_CANCEL","C_AC_INSERT","C_AC_INS","C_AC_DEL","C_AC_REDO","C_AC_REPLY","C_AC_FORWARD_MAIL","C_AC_SEND","C_AC_DESKTOP_SHOW_ALL_WINDOWS","C_AC_DESKTOP_SHOW_ALL_APPLICATIONS","C_KEYBOARD_INPUT_ASSIST_PREVIOUS","C_KBIA_PREV","C_KEYBOARD_INPUT_ASSIST_NEXT","C_KBIA_NEXT","C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP","C_KBIA_PREV_GRP","C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP","C_KBIA_NEXT_GRP","C_KEYBOARD_INPUT_ASSIST_ACCEPT","C_KBIA_ACCEPT","C_KEYBOARD_INPUT_ASSIST_CANCEL","C_KBIA_CANCEL","ZMK_MOCK_IS_PRESS","ZMK_MOCK_PRESS","ZMK_MOCK_RELEASE","ZMK_MOCK_ROW","ZMK_MOCK_COL","ZMK_MOCK_MSEC","KT_ROW","KT_COL","RC","MOD_LCTL","MOD_LSFT","MOD_LALT","MOD_LGUI","MOD_RCTL","MOD_RSFT","MOD_RALT","MOD_RGUI","SELECT_MODS","STRIP_MODS","APPLY_MODS","LC","LS","LA","LG","RC","RS","RA","RG","OUT_TOG","OUT_USB","OUT_BLE","RST_WARM","RST_COLD","RST_UF2","RGB_TOG_CMD","RGB_ON_CMD","RGB_OFF_CMD","RGB_HUI_CMD","RGB_HUD_CMD","RGB_SAI_CMD","RGB_SAD_CMD","RGB_BRI_CMD","RGB_BRD_CMD","RGB_SPI_CMD","RGB_SPD_CMD","RGB_EFF_CMD","RGB_EFR_CMD","RGB_EFS_CMD","RGB_COLOR_HSB_CMD","RGB_TOG","RGB_ON","RGB_OFF","RGB_HUI","RGB_HUD","RGB_SAI","RGB_SAD","RGB_BRI","RGB_BRD","RGB_SPI","RGB_SPD","RGB_EFF","RGB_EFR","RGB_COLOR_HSB_VAL","RGB_COLOR_HSB","RGB_COLOR_HSV"]')},30877:function(o){"use strict";o.exports=JSON.parse('[{"match":{"code":"<"},"params":["layer","code"]},{"match":{"code":"&mt"},"params":["code","code"]},{"match":{"code":"&sl"},"params":["layer"]},{"match":{"code":"&sk"},"params":["code"]},{"match":{"code":"&inc_dec_kp"},"params":["code","code"]},{"match":{"compatible":"zmk,behavior-backlight"},"params":[{"name":"backlight action","type":"command","enum":[{"code":"BL_ON","description":"Turn on backlight"},{"code":"BL_OFF","description":"Turn off backlight"},{"code":"BL_TOG","description":"Toggle backlight on and off"},{"code":"BL_INC","description":"Increase brightness"},{"code":"BL_DEC","description":"Decrease brightness"},{"code":"BL_CYCLE","description":"Cycle brightness"},{"code":"BL_SET","description":"Set a specific brightness","additionalParams":[{"name":"brightness","type":"integer","enum":[0,10,20,30,40,50,60,70,80,90,100]}]}]}]},{"match":{"compatible":"zmk,behavior-bluetooth"},"params":[{"name":"bluetooth action","type":"command","enum":[{"code":"BT_CLR","displayName":"Clear profile","description":"Clear bond information between the keyboard and host for the selected profile."},{"code":"BT_NXT","displayName":"Next profile","description":"Switch to the next profile, cycling through to the first one when the end is reached."},{"code":"BT_PRV","displayName":"Previous profile","description":"Switch to the previous profile, cycling through to the last one when the beginning is reached."},{"code":"BT_SEL","displayName":"Select profile","description":"Select the 0-indexed profile by number. Please note: this definition must include a number as an argument in the keymap to work correctly. eg. BT_SEL 0","additionalParams":[{"name":"bluetooth profile","type":"integer","enum":[{"code":0,"displayName":"Bluetooth profile #0"},{"code":1,"displayName":"Bluetooth profile #1"},{"code":2,"displayName":"Bluetooth profile #2"},{"code":3,"displayName":"Bluetooth profile #3"},{"code":4,"displayName":"Bluetooth profile #4"}]}]}]}]},{"match":{"compatible":"zmk,behavior-key-press"},"params":["code"]},{"match":{"compatible":"zmk,behavior-key-toggle"},"params":["code"]},{"match":{"compatible":"zmk,behavior-momentary-layer"},"params":["layer"]},{"match":{"compatible":"zmk,behavior-outputs"},"params":[{"type":"command","name":"keyboard output mode","enum":[{"code":"OUT_BLE","name":"BLE","description":"Prefer sending to the current bluetooth profile"},{"code":"OUT_USB","name":"USB","description":"Prefer sending to USB"},{"code":"OUT_TOG","name":"Toggle","description":"Toggle between USB and BLE"}]}]},{"match":{"compatible":"zmk,behavior-to-layer"},"params":["layer"]},{"match":{"compatible":"zmk,behavior-toggle-layer"},"params":["layer"]},{"match":{"compatible":"zmk,behavior-rgb-underglow"},"params":[{"type":"command","name":"RGB underglow action","enum":[{"code":"RGB_TOG","displayName":"Toggle","description":"Toggles the RGB feature on and off"},{"code":"RGB_HUI","displayName":"Increase hue","description":"Increases the hue of the RGB feature"},{"code":"RGB_HUD","displayName":"Decrease hue","description":"Decreases the hue of the RGB feature"},{"code":"RGB_SAI","displayName":"Increase saturation","description":"Increases the saturation of the RGB feature"},{"code":"RGB_SAD","displayName":"Decrease saturation","description":"Decreases the saturation of the RGB feature"},{"code":"RGB_BRI","displayName":"Increase brightness","description":"Increases the brightness of the RGB feature"},{"code":"RGB_BRD","displayName":"Decrease brightness","description":"Decreases the brightness of the RGB feature"},{"code":"RGB_SPI","displayName":"Increase speed","description":"Increases the speed of the RGB feature effect\'s animation"},{"code":"RGB_SPD","displayName":"Decrease speed","description":"Decreases the speed of the RGB feature effect\'s animation"},{"code":"RGB_EFF","displayName":"Next effect","description":"Cycles the RGB feature\'s effect forwards"},{"code":"RGB_EFR","displayName":"Previous effect","description":"Cycles the RGB feature\'s effect reverse"},{"code":"RGB_COLOR_HSB","displayName":"Set color","description":"Sets a specific HSB (HSV) value for the underglow","symbol":"HSB","helper":"hsb-color-picker","params":[{"name":"hue","type":"integer","enum":[0,30,60,90,120,160,180,210,240,270,300,330,360]},{"name":"saturation","type":"integer","enum":[0,10,20,30,40,50,60,70,80,90,100]},{"name":"value","type":"integer","enum":[0,10,20,30,40,50,60,70,80,90,100]}]}]}]},{"match":{"compatible":"zmk,behavior-ext-power"},"params":[{"type":"command","name":"external power mode","enum":[{"code":"EP_ON","name":"On","description":"Enable the external power"},{"code":"EP_OFF","name":"Off","description":"Disable the external power"},{"code":"EP_TOG","name":"Toggle","description":"Toggle the external power"}]}]},{"match":{"compatible":"zmk,macro-control-tap-time"},"params":[{"type":"number","raw":true}]},{"match":{"compatible":"zmk,macro-control-wait-time"},"params":[{"type":"number","raw":true}]}]')},31742:function(o){"use strict";o.exports=JSON.parse('{"zmk,behavior-sensor-rotate":{"description":"Sensor rotate behavior","compatible":"zmk,behavior-sensor-rotate","include":"zero_param.yaml","properties":{"#sensor-binding-cells":{"type":"int","required":true,"const":0},"bindings":{"type":"phandle-array","required":true},"tap-ms":{"type":"int","default":5},"label":{"type":"string","required":true}}},"zmk,behavior-sensor-rotate-var":{"description":"Sensor rotate behavior","compatible":"zmk,behavior-sensor-rotate-var","include":"two_param.yaml","properties":{"#sensor-binding-cells":{"type":"int","required":true,"const":2},"bindings":{"type":"phandles","required":true},"tap-ms":{"type":"int","default":5},"label":{"type":"string","required":true}}}}')},43003:function(o){"use strict";o.exports=JSON.parse('[{"match":{"compatible":"zmk,behavior-caps-word"},"properties":{"continue-list":{"choices":{"$source":"keycodes","$key":"code"}},"mods":{"type":"integer-union","choices":["MOD_LCTL","MOD_LSFT","MOD_LALT","MOD_LGUI","MOD_RCTL","MOD_RSFT","MOD_RALT","MOD_RGUI"]}}},{"match":{"compatible":"zmk,behavior-mod-morph"},"properties":{"bindings":{"length":2},"mods":{"type":"integer-union","choices":["MOD_LCTL","MOD_LSFT","MOD_LALT","MOD_LGUI","MOD_RCTL","MOD_RSFT","MOD_RALT","MOD_RGUI"]},"keep-mods":{"type":"integer-union","choices":["MOD_LCTL","MOD_LSFT","MOD_LALT","MOD_LGUI","MOD_RCTL","MOD_RSFT","MOD_RALT","MOD_RGUI"]}}},{"match":{"compatible":"zmk,behavior-hold-tap"},"properties":{"bindings":{"length":2},"hold-trigger-key-positions":{"helper":"key-position-picker"},"tapping-term-ms":{"required":true},"tapping_term_ms":{"required":true,"deprecatedBy":"tapping-term-ms"},"quick_tap_ms":{"deprecatedBy":"quick-tap-ms"}}},{"match":{"compatible":"zmk,behavior-sticky-key"},"properties":{"bindings":{"length":1}}},{"match":{"compatible":"zmk,behavior-sensor-rotate-var"},"description":"Sensor rotate behavior (with parameters)","properties":{"bindings":{"length":2}}}]')},80012:function(o){"use strict";o.exports=JSON.parse('[{"name":"behavior_reset","description":"Removed in Zephyr 3.2, use &sys_reset","labels":["reset"],"code":"&reset","compatible":"zmk,behavior-reset","properties":{"compatible":{"raw":"\\"zmk,behavior-reset\\"","parsed":"zmk,behavior-reset"},"#binding-cells":{"raw":"<0>","parsed":0},"label":{"raw":"\\"RESET\\"","parsed":"RESET"}}}]')},92914:function(o){"use strict";o.exports=JSON.parse('[{"match":{"compatible":"zmk,behavior-backlight"},"includes":["#include "],"displayName":"Backlight"},{"match":{"compatible":"zmk,behavior-bluetooth"},"includes":["#include "],"displayName":"Bluetooth"},{"match":{"compatible":"zmk,behavior-key-press"},"displayName":"Key Press","includes":["#include "],"docsUrl":"https://zmk.dev/docs/behaviors/key-press#key-press"},{"match":{"compatible":"zmk,behavior-key-toggle"},"displayName":"Key Toggle","includes":["#include "]},{"match":{"code":"<"},"displayName":"Layer/Tap","description":"Layer or Tap behavior","docsUrl":"https://zmk.dev/docs/behaviors/layers#layer-tap"},{"match":{"compatible":"zmk,behavior-momentary-layer"},"displayName":"Momentary Layer","docsUrl":"https://zmk.dev/docs/behaviors/layers#momentary-layer"},{"match":{"code":"&mt"},"displayName":"Mod/Tap","description":"Mod or Tap behavior"},{"match":{"compatible":"zmk,behavior-outputs"},"includes":["#include "],"displayName":"Output"},{"match":{"code":"&sl"},"displayName":"Sticky Layer","description":"Sticky layer behavior"},{"match":{"code":"&sk"},"displayName":"Sticky Key"},{"match":{"compatible":"zmk,behavior-to-layer"},"displayName":"To Layer","docsUrl":"https://zmk.dev/docs/behaviors/layers#to-layer"},{"match":{"compatible":"zmk,behavior-toggle-layer"},"displayName":"Toggle Layer","docsUrl":"https://zmk.dev/docs/behaviors/layers#toggle-layer"},{"match":{"compatible":"zmk,behavior-rgb-underglow"},"includes":["#include "],"displayName":"RGB Underglow"},{"match":{"compatible":"zmk,behavior-ext-power"},"includes":["#include "],"displayName":"External Power"},{"match":{"compatible":"zmk,macro-control-mode-press"},"context":"macros"},{"match":{"compatible":"zmk,macro-control-mode-release"},"context":"macros"},{"match":{"compatible":"zmk,macro-control-mode-tap"},"context":"macros"},{"match":{"compatible":"zmk,macro-control-tap-time"},"context":"macros"},{"match":{"compatible":"zmk,macro-control-wait-time"},"context":"macros"},{"match":{"compatible":"zmk,macro-pause-for-release"},"context":"macros"},{"match":{"compatible":"zmk,macro-param-1to1"},"context":"macros"},{"match":{"compatible":"zmk,macro-param-1to2"},"context":"macros"},{"match":{"compatible":"zmk,macro-param-2to1"},"context":"macros"},{"match":{"compatible":"zmk,macro-param-2to2"},"context":"macros"},{"match":{"code":"&inc_dec_kp"},"displayName":"Increment/Decrement Key Press","context":"encoders"},{"match":{"compatible":"zmk,behavior-sensor-rotate-var"},"displayName":"Sensor Rotate (variable)","context":"encoders"},{"match":{"compatible":"zmk,behavior-sensor-rotate"},"displayName":"Sensor Rotate","context":"encoders"}]')},27112:function(o){"use strict";o.exports=JSON.parse('[{"names":["LEFT_ALT","LALT","LA(code)"],"symbol":"⌥","faIcon":null},{"names":["RIGHT_ALT","RALT","RA(code)"],"symbol":"⌥","faIcon":null},{"names":["LEFT_GUI","LGUI","LG(code)","LEFT_WIN","LWIN","LEFT_COMMAND","LCMD","LEFT_META","LMETA"],"symbol":"⌘","faIcon":null},{"names":["RIGHT_GUI","RGUI","RG(code)","RIGHT_WIN","RWIN","RIGHT_COMMAND","RCMD","RIGHT_META","RMETA"],"symbol":"⌘","faIcon":null}]')},445:function(o){"use strict";o.exports=JSON.parse('[{"names":["RETURN","ENTER","RET"],"symbol":"⮐","faIcon":null},{"names":["SPACE"],"symbol":"␣","faIcon":null},{"names":["LEFT_SHIFT","LSHIFT","LSHFT","LS(code)"],"symbol":"⇧","faIcon":null},{"names":["RIGHT_SHIFT","RSHIFT","RSHFT","RS(code)"],"symbol":"⇧","faIcon":null}]')},27453:function(o){"use strict";o.exports=JSON.parse('[{"names":["LEFT_GUI","LGUI","LG(code)","LEFT_WIN","LWIN","LEFT_COMMAND","LCMD","LEFT_META","LMETA"],"faIcon":"windows fa-brands"}]')},97107:function(o){"use strict";o.exports=JSON.parse('[{"names":["EXCL"],"symbol":"!"},{"names":["AT"],"symbol":"@"},{"names":["HASH"],"symbol":"#"},{"names":["DLLR"],"symbol":"$"},{"names":["PRCNT"],"symbol":"%"},{"names":["CARET"],"symbol":"^"},{"names":["AMPS"],"symbol":"&"},{"names":["STAR"],"symbol":"*"},{"names":["BSPC"],"faIcon":"delete-left"},{"names":["DEL"],"faIcon":"delete-right"},{"names":["MINUS"],"symbol":"-"},{"names":["UNDER"],"symbol":"_"},{"names":["EQUAL"],"symbol":"="},{"names":["PLUS"],"symbol":"+"},{"names":["PIPE"],"symbol":"|"},{"names":["COLON"],"symbol":":"},{"names":["GRAVE"],"symbol":"`"},{"names":["TILDE"],"symbol":"~"},{"names":["LT"],"symbol":"<"},{"names":["GT"],"symbol":">"},{"names":["RIGHT"],"faIcon":"caret-right"},{"names":["LEFT"],"faIcon":"caret-left"},{"names":["DOWN"],"faIcon":"caret-down"},{"names":["UP"],"faIcon":"caret-up"},{"names":["C_PWR"],"faIcon":"power-off"},{"names":["K_PWR"],"faIcon":"power-off"},{"names":["C_AL_LOCK"],"faIcon":"lock"},{"names":["K_LOCK"],"faIcon":"lock"},{"names":["C_SLEEP"],"faIcon":"moon"},{"names":["K_SLEEP"],"faIcon":"moon"},{"names":["C_SLEEP_MODE"],"faIcon":"moon"},{"names":["LEFT_PARENTHESIS","LPAR"],"symbol":"(","faIcon":null},{"names":["RIGHT_PARENTHESIS","RPAR"],"symbol":")","faIcon":null},{"names":["LEFT_BRACKET","LBKT"],"symbol":"[","faIcon":null},{"names":["LEFT_BRACE","LBRC"],"symbol":"{","faIcon":null},{"names":["RIGHT_BRACKET","RBKT"],"symbol":"]","faIcon":null},{"names":["RIGHT_BRACE","RBRC"],"symbol":"}","faIcon":null},{"names":["BACKSLASH","BSLH"],"symbol":"\\\\","faIcon":null},{"names":["SEMICOLON","SEMI"],"symbol":";","faIcon":null},{"names":["SINGLE_QUOTE","SQT","APOSTROPHE","APOS"],"symbol":"\'","faIcon":null},{"names":["DOUBLE_QUOTES","DQT"],"symbol":"\\"","faIcon":null},{"names":["COMMA"],"symbol":",","faIcon":null},{"names":["PERIOD","DOT"],"symbol":".","faIcon":null},{"names":["GREATER_THAN","GT"],"symbol":">","faIcon":null},{"names":["SLASH","FSLH"],"symbol":"/","faIcon":null},{"names":["QUESTION","QMARK"],"symbol":"?","faIcon":null},{"names":["NON_US_BACKSLASH","NON_US_BSLH"],"symbol":"\\\\","faIcon":null},{"names":["K_MUTE"],"symbol":null,"faIcon":"volume-mute"},{"names":["C_VOLUME_UP","C_VOL_UP"],"symbol":null,"faIcon":"volume-up"},{"names":["C_VOLUME_DOWN","C_VOL_DN"],"symbol":null,"faIcon":"volume-down"}]')}}]); +//# sourceMappingURL=shared.8d18858839cd2d379cfe.js.map \ No newline at end of file diff --git a/shared.8d18858839cd2d379cfe.js.map b/shared.8d18858839cd2d379cfe.js.map new file mode 100644 index 0000000..06316af --- /dev/null +++ b/shared.8d18858839cd2d379cfe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shared.8d18858839cd2d379cfe.js","mappings":"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","sources":["webpack:///../api/packages/devicetree/index.js","webpack:///../api/packages/devicetree/lib/formatters.js","webpack:///../api/packages/devicetree/lib/helpers/index.js","webpack:///../api/packages/devicetree/lib/helpers/nodes.js","webpack:///../api/packages/devicetree/lib/helpers/properties.js","webpack:///../api/packages/devicetree/lib/helpers/trees.js","webpack:///../api/packages/devicetree/lib/helpers/values.js","webpack:///../api/packages/devicetree/lib/node-collection.js","webpack:///../api/packages/devicetree/lib/parser.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/apply-keymap-changes.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/bindings.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/collections/behaviors.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/collections/combos.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/collections/layers.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/collections/macros.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/keymap-document.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/devicetree/sanity-checks.js","webpack:///../api/packages/keymap-editor-zmk-backend/lib/extract-keymap-data.js","webpack:///../api/packages/keymap-layout-tools/lib/render.js","webpack:///../api/packages/keymap-layout-tools/lib/validate.js","webpack:///../api/packages/string-utils/index.js","webpack:///../api/packages/zmk-data/behaviors.js","webpack:///../api/packages/zmk-data/keycode-mappings.js","webpack:///../api/packages/zmk-data/keycodes.js","webpack:///../api/packages/zmk-data/parameters.js"],"sourcesContent":["module.exports = require('./lib/parser')\n","const {\n removeStartingWhitespace,\n removeTrailingWhitespace,\n reindent,\n dedent\n} = require('string-utils')\nconst { getLabeledItem, getNodeLabels } = require('./helpers/nodes')\n\nconst DEFAULT_INDENT = ' '\nconst DEFAULT_MULTILINE_INTEGER_CELLS_INDENT = 'keep'\n\nfunction isMultilineNode (node) {\n return node.text.indexOf('\\n') !== -1\n}\n\nfunction isMultilinePropertyNode (node) {\n return node?.type === 'property' && (\n node.namedChildren.length > 2 ||\n node.namedChildren.slice(1).some(isMultilineNode)\n )\n}\n\nfunction isInlineComment (node) {\n return (\n node.type === 'comment' &&\n node.previousSibling &&\n // Nodes for pre-processor directives include trailing newline characters.\n // For simplicity, a preproc cannot have an inline comment.\n node.previousSibling.type !== 'preproc_def' &&\n node.previousSibling.type !== 'preproc_function_def' &&\n node.previousSibling.type !== 'preproc_include' &&\n node.previousSibling.endPosition.row === node.startPosition.row\n )\n}\n\nfunction getNodeIndentation (node, tab) {\n return tab.repeat(getNodeDepth(node))\n}\n\nfunction getModelineConfiguration (tree) {\n return tree.rootNode.namedChildren.reduce((config, node) => {\n if (node.type === 'comment') {\n const contents = node.text.startsWith('//')\n ? node.text.slice(2).trim()\n : node.text.slice(2, -2).trim()\n\n for (const line of contents.split('\\n')) {\n const match = line.match(/dt-formatter:\\s*(\\w+)\\s*=\\s*(.+)$/)\n if (match) {\n const [key, jsonValue] = match.slice(1)\n try {\n const value = JSON.parse(jsonValue)\n config[key] = value\n } catch {}\n }\n }\n }\n\n return config\n }, {})\n}\n\n/**\n * Determine the depth of the node in the device tree\n *\n * A depth of 0 is anything at the document level -- this includes the \"/\" node\n *\n * @param {SyntaxNode} node any kind of syntax node\n * @returns {Integer} depth\n */\nfunction getNodeDepth (node) {\n let n = node\n let depth = 0\n const stop = node.tree.rootNode\n\n while ((n = n.parent) && n && n.id !== stop.id) {\n if (n.type !== 'labeled_item') {\n depth++\n }\n }\n\n return depth\n}\n\nfunction shouldIncludeBlank (nodeA, nodeB) {\n if (!nodeB) {\n return false\n }\n\n const sameType = nodeA.type === nodeB.type\n const isAdjacentDeviceTreeNode = sameType && nodeA.type === 'node'\n\n // TODO: this should probably just not insert whitespace around comments\n return (\n isAdjacentDeviceTreeNode ||\n isMultilinePropertyNode(nodeA) ||\n (!sameType && !isInlineComment(nodeB))\n )\n}\n\n/**\n * Apply formatting (indentation and whitespace) to a node and its descendents\n *\n * Indentation is based on the node's depth in the full tree (not just relative\n * to the supplied `node` parameter) and currently limited to 4-space tabs.\n *\n * The existing formatting of `integer_cells` nodes (ie, `bindings = <...>;`) is\n * considered sacred and 0 levels of indentation will be applied to those lines.\n * @param {SyntaxNode} node any node in the devicetree\n * @returns {String} the newly-formatted text for the syntax node\n */\nfunction formatNode (node, options = {}) {\n const { indent = DEFAULT_INDENT } = options\n\n if (node.type === 'labeled_item') {\n node = getLabeledItem(node)\n }\n\n const [identifier, ...children] = node.namedChildren\n const indentation = getNodeIndentation(node, indent)\n\n function formatChildren (children) {\n return children.reduce((lines, childNode, i, arr) => {\n // Merge inline comments onto the previous node's line.\n // This feels a bit hacky but it must be performed on the \"unformatted\"\n // comment syntax node (this check is also happening when the previous\n // node is being formatted and the extra blank line is being considered).\n if (isInlineComment(childNode)) {\n lines[lines.length - 1] += childNode.text\n return lines\n }\n lines.push(...formatNode(childNode, options))\n\n if (shouldIncludeBlank(childNode, children[i + 1])) {\n lines.push('')\n }\n\n return lines\n }, [])\n }\n\n switch (node.type) {\n case 'document':\n return [...formatChildren(node.namedChildren), '']\n\n case 'node':\n return [\n indentation + `${formatLabels(getNodeLabels(node))}${identifier.text}${getAddress(node)} {`,\n ...formatChildren(hasAddress(node) ? node.namedChildren.slice(2) : children),\n indentation + '};'\n ]\n\n case 'property':\n return formatPropertyNode(node, options)\n\n case 'preproc_include':\n case 'preproc_def':\n case 'preproc_function_def':\n return [node.text.trimEnd()]\n\n default:\n // this is mainly for things I didn't expect to see, but also includes\n // commonly used features like preproc_includes that technically work when\n // used inside nodes but aren't recognized by the grammar at the moment.\n // See: https://github.com/joelspadin/tree-sitter-devicetree/issues/1\n return [indentation + node.text]\n }\n}\n\nfunction hasAddress (node) {\n return !!node.childForFieldName('address')\n}\n\nfunction getAddress (node) {\n return hasAddress(node)\n // note address field doesn't give the actual value yet\n ? `@${node.namedChildren[1].text}`\n : ''\n}\n\nfunction formatLabels (labels) {\n return labels.map(text => `${text}: `).join('')\n}\n\nfunction formatPropertyNode (node, options = {}) {\n const {\n indent = DEFAULT_INDENT,\n multilineIntegerCellsIndent = DEFAULT_MULTILINE_INTEGER_CELLS_INDENT\n } = options\n\n const [identifier, ...children] = node.namedChildren\n const indentation = getNodeIndentation(node, indent)\n\n const noValue = children.length === 0\n const simpleValue = children.length === 1 && !isMultilineNode(children[0])\n const singleIntegerCell = children.length === 1 && children[0].type === 'integer_cells'\n const labels = formatLabels(getNodeLabels(node))\n\n // TODO: get smarter about different property value types\n if (noValue) return [indentation + node.text]\n\n if (simpleValue) {\n return [indentation + `${labels}${identifier.text} = ${children[0].text};`]\n } else if (singleIntegerCell) {\n let bindingsLines = removeStartingWhitespace(\n removeTrailingWhitespace(\n children[0].text.slice(1, -2)\n )\n )\n\n switch (multilineIntegerCellsIndent) {\n case 'reindent':\n bindingsLines = reindent(bindingsLines, indentation + indent)\n break\n\n case 'dedent':\n bindingsLines = dedent(bindingsLines)\n break\n\n case 'keep':\n default:\n break\n }\n\n return [\n indentation + `${labels}${identifier.text} = <`,\n ...bindingsLines.split('\\n'),\n indentation + '>;'\n ]\n }\n\n return [\n indentation + `${identifier.text} =`,\n ...[].concat(...children.map(node => formatNode(node, options)))\n .map((line, i, arr) => {\n const suffix = i === arr.length - 1 ? ';' : ','\n return [line, suffix].join('')\n })\n ]\n}\n\nmodule.exports = {\n formatNode,\n getModelineConfiguration,\n getNodeDepth,\n isInlineComment,\n shouldIncludeBlank\n}\n","module.exports = Object.assign(\n {},\n require('./nodes'),\n require('./properties'),\n require('./trees'),\n require('./values')\n)\n","const assert = require('assert')\nconst reverse = require('lodash/reverse')\n\n/**\n * Check if an ordered list of nodes are consecutive\n * Nodes are consecutive if each node is adjacent to the next, so that no other\n * sibling nodes exist between them.\n * @param {Array} nodes\n * @returns {Boolean}\n */\nfunction nodesAreConsecutive (nodes) {\n return nodes.every((node, i) => (\n i < nodes.length - 1\n ? node.nextSibling.id === nodes[i + 1].id\n : true\n ))\n}\n\n/**\n * Get the string value of each reference label attached to the given node.\n * Labels are in in descending order of depth.\n * @param {SyntaxNode} node\n * @returns {Array}\n */\nfunction getNodeLabels (node) {\n return getNodeLabelNodes(node).map(label => label.text)\n}\n\n// blech\nfunction getNodeLabelNodes (node) {\n return getNodeChildrenByFieldName(node.parent, 'label')\n}\n\n/**\n * Descend into a chain of labeled_item nodes to get at the actual item\n * @param {SyntaxNode} labeledItemNode syntax node for a devicetree label\n * @returns {SyntaxNode}\n */\nfunction getLabeledItem (labeledItemNode) {\n assert(labeledItemNode.type === 'labeled_item')\n return labeledItemNode.childForFieldName('item')\n}\n\nfunction getNodeChildrenByFieldName (node, fieldName) {\n const children = []\n\n // Iteration is done with a cursor here because only TreeCursor will directly\n // tell us what field is associated with the current node. The node itself\n // will not tell us about its own field, and Node.childForFieldName(field)\n // will only tell us about a single child with the specified field.\n const cursor = node.walk()\n cursor.gotoFirstChild()\n\n do {\n const isNamed = cursor.currentNode().isNamed()\n const isField = cursor.currentFieldName() === fieldName\n if (isNamed && isField) {\n children.push(cursor.currentNode())\n }\n } while (cursor.gotoNextSibling())\n\n cursor.delete()\n\n return children\n}\n\n/**\n * Find a single child of the given node with a matching identifier\n * @param {SyntaxNode} node\n * @param {Function|String} nameOrMatch\n * @returns {SyntaxNode}\n */\nfunction findChildrenByIdentifier (node, nameOrMatch) {\n const match = typeof nameOrMatch === 'string'\n ? text => text === nameOrMatch\n : nameOrMatch\n\n return node.namedChildren.filter(node => (\n node.type === 'node' &&\n node.children.find(sub => (\n sub.type === 'identifier' &&\n match(sub.text)\n ))\n ))\n}\n\n/**\n * Find a child of the given node(s) with a matching name.\n * If multiple nodes are given to search through, they will be searched in\n * reverse order so that the \"latest\" instance of a node takes precedence.\n * @param {Array|SyntaxNode} nodes\n * @param {RegExp|String} nameOrMatch\n */\nfunction findChildByIdentifier (nodes, nameOrMatch) {\n nodes = [].concat(nodes)\n for (const node of reverse(nodes)) {\n const match = findChildrenByIdentifier(node, nameOrMatch)[0]\n if (match) {\n return match\n }\n }\n}\n\nfunction listNodes (nodes, opts = {}) {\n const { stripNewlines = true, limit = 50 } = opts\n for (const node of nodes) {\n let value = node.text\n if (stripNewlines) value = value.replace(/\\n/g, '')\n if (limit) value = value.slice(0, limit)\n\n console.log(node.id, `[${node.type}]`, '->', value)\n }\n}\n\nmodule.exports = {\n nodesAreConsecutive,\n getNodeLabels,\n getNodeLabelNodes,\n getLabeledItem,\n getNodeChildrenByFieldName,\n findChildByIdentifier,\n findChildrenByIdentifier,\n listNodes\n}\n","const { getNodeChildrenByFieldName } = require('./nodes')\nconst {\n parseStringLiteral,\n parseIntegerCells,\n parseIntegerArray,\n parsePhandles,\n parsePhandle,\n parsePhandleArray,\n parseIntegerUnion,\n serializeIntValue,\n serializeArrayValue\n} = require('./values')\n\n/** @typedef {{ parsed: any, raw: string, useRaw?: boolean }} PropertyValue */\n/** @typedef {Object.} Properties */\n\n/**\n * Get a property with the given name in this node, if it exists.\n * @param {SyntaxNode} node\n * @param {String} propertyName\n * @returns {SyntaxNode|undefined}\n */\nfunction findNodeProperty (node, propertyName) {\n return node.children.find(node => (\n node.type === 'property' &&\n node.children[0].text === propertyName\n ))\n}\n\nfunction getPropertyNode (node, propertyName) {\n return node.namedChildren.find(child => (\n child.type === 'property' &&\n child.childForFieldName('name')?.text === propertyName\n ))\n}\n\nfunction getProperty (node, property) {\n const propertyNode = node.children.find(node => (\n node.type === 'property' &&\n node.children[0].text === property\n ))\n\n return propertyNode && {\n syntaxNode: propertyNode,\n name: property,\n value: propertyNode.children[2]?.text\n }\n}\n\nfunction getPropertyValue (node, property) {\n property = typeof property === 'string'\n ? getPropertyNode(node, property)\n : property\n\n return property?.childForFieldName('value')\n}\n\nfunction getPropertyValues (node, property) {\n const propertyNode = getPropertyNode(node, property)\n return propertyNode && getNodeChildrenByFieldName(propertyNode, 'value')\n}\n\n/**\n * @param {SyntaxNode} node devicetree node from which to extract property values\n * @param {Object} schema devicetree schema of a spcecific node\n * @return {Properties} properties\n */\nfunction parsePropertiesFromSchema (node, schema) {\n return Object.keys(schema).reduce((properties, prop) => {\n const propSchema = schema[prop]\n const values = parsePropertyFromSchema(node, prop, propSchema)\n\n if (values !== undefined) {\n properties[prop] = {\n parsed: values\n }\n }\n\n return properties\n }, {})\n}\n\n/**\n * @param {SyntaxNode} node devicetree node from which to extract a property value\n * @param {String} property name of property\n * @param {Object} schema devicetree schema of specific property\n */\nfunction parsePropertyFromSchema (node, property, schema) {\n const propertyNode = findNodeProperty(node, property)\n const values = getPropertyValues(node, property)\n\n switch (schema.type) {\n case 'string':\n return parseStringLiteral(values?.[0])\n\n case 'boolean':\n return !!propertyNode\n\n case 'int':\n return parseIntegerCells(values)?.[0]\n\n case 'array':\n return parseIntegerArray(values)\n\n case 'phandle':\n return parsePhandle(values)\n\n case 'phandles':\n return parsePhandles(values)\n\n case 'phandle-array':\n return parsePhandleArray(values)\n\n case 'integer-union':\n return parseIntegerUnion(values)\n }\n}\n\nfunction serializePropertyFromSchema (property, schema) {\n // TODO: Probably make separate functions?\n switch (schema.type) {\n case 'string':\n return `\"${property.parsed}\"`\n\n case 'boolean':\n // This is a weird case because instead of an explicit value we use the\n // presense of the property (name) to indicate true or false. Note that\n // this will get more complicated when supporting the `/delete-property/`\n // flag (?)\n return property.parsed\n\n case 'int':\n return serializeIntValue(property.parsed)\n\n case 'array':\n return serializeArrayValue(property.parsed)\n\n case 'phandle':\n return property.parsed.map(phandle => `<${phandle}>`).join(', ')\n\n case 'phandles':\n case 'phandle-array':\n // TODO: Grouping binding cells into separate phandle-arrays shouldn't\n // be the default behavior but right now the only place this would be\n // unacceptably weird is the bindings property for layer and macro nodes\n // which already do their own formatting explicitly.\n return property.parsed\n .reduce((bindings, node) => {\n if (node.startsWith('&')) {\n bindings.push([node])\n } else {\n const last = bindings[bindings.length - 1]\n last.push(node)\n }\n\n return bindings\n }, [])\n .map(group => `<${group.join(' ')}>`)\n .join(', ')\n\n case 'integer-union':\n return `<(${property.parsed.map(v => v.toString()).join('|')})>`\n }\n}\n\nmodule.exports = {\n findNodeProperty,\n getProperty,\n getPropertyNode,\n getPropertyValue,\n getPropertyValues,\n parsePropertiesFromSchema,\n parsePropertyFromSchema,\n serializePropertyFromSchema\n}\n","\n/**\n *\n * @param {Tree|Node} tree Starting point for breadth-first traversal\n * @param {Object} [options={}]\n * @param {Integer} [options.maxDepth=-1]\n * @returns {Function} get next node, or undefined when traversal is complete\n */\nfunction BreadthFirstIterator (tree, options = {}) {\n const { maxDepth = -1 } = options\n const queue = [{ depth: 0, node: tree.rootNode || tree }]\n\n return function next () {\n const current = queue.shift()\n if (current && (maxDepth === -1 || current.depth < maxDepth)) {\n queue.push(...current.node.namedChildren.map(node => ({\n node, depth: current.depth + 1\n })))\n }\n return current?.node\n }\n}\n\n/**\n *\n * @param {Tree|Node} tree Starting point for depth-first traversal\n * @param {Object} [options={}]\n * @param {Integer} [options.maxDepth=-1]\n * @returns {Function} get next node, or undefined when traversal is complete\n */\nfunction DepthFirstIterator (tree, options = {}) {\n const { maxDepth = -1 } = options\n const stack = [{ depth: 0, node: tree.rootNode || tree }]\n\n return function next () {\n const current = stack.shift()\n if (current && (maxDepth === -1 || current.depth < maxDepth)) {\n stack.unshift(...current.node.namedChildren.map(node => ({\n node, depth: current.depth + 1\n })))\n }\n return current?.node\n }\n}\n\n/**\n * Find nodes in `tree` that satisfy the given `predicate` function.\n *\n * @param {Tree|SyntaxNode} tree\n * @param {Function} predicate\n * @param {Object} [options={}]\n * @param {Boolean} [options.single=false]\n * @param {Integer} [options.maxDepth=-1]\n * @param {Boolean} [options.depthFirst=false]\n * @returns {Array|SyntaxNode} use options.single to return only the first matching node\n */\nfunction searchTree (tree, predicate, options = {}) {\n const {\n single = false,\n maxDepth = -1,\n depthFirst = false\n } = options\n\n const iter = depthFirst\n ? DepthFirstIterator(tree, { maxDepth })\n : BreadthFirstIterator(tree, { maxDepth })\n\n const matches = []\n let node\n\n while ((node = iter())) {\n if (predicate(node)) {\n if (single) {\n return node\n }\n\n matches.push(node)\n }\n }\n\n if (single) {\n return undefined\n }\n\n return matches\n}\n\nfunction findNodeByIdentifier (tree, name) {\n return searchTree(tree, node => (\n node.type === 'node' &&\n node.childForFieldName('name').text === name\n ), { single: true })\n}\n\nfunction findLabeledItem (tree, name) {\n let node = searchTree(tree, node => (\n node.type === 'labeled_item' &&\n node.children[0].type === 'identifier' &&\n node.children[0].text === name\n ), { single: true })\n\n if (!node) {\n return null\n }\n\n do {\n node = node.childForFieldName('item')\n } while (node.type === 'labeled_item')\n\n return node\n}\n\nfunction createPredicateForCompatible (compatible) {\n let match\n\n if (compatible instanceof RegExp) {\n match = text => compatible.test(text)\n } else if (typeof compatible === 'string') {\n match = text => text === `\"${compatible}\"`\n } else if (typeof compatible === 'function') {\n match = compatible\n } else {\n throw new TypeError('Unexpected type ' + typeof compatible)\n }\n\n return node => (\n node.type === 'property' &&\n node.childForFieldName('name').text === 'compatible' &&\n match(node.childForFieldName('value').text)\n )\n}\n\n/**\n * Find single node including a `compatible` property with the given value.\n *\n * @param {Tree|SyntaxNode} tree\n * @param {String|RegExp|Function} compatible\n * @returns {SyntaxNode|undefined}\n */\nfunction findNodeWithCompatible (tree, compatible) {\n // TODO: look into tree sitter queries again, doing these searches within web\n // assembly is probably much faster. Alternatively, performing this lookup as\n // a breadth-first search would likely save a lot of time since we're often\n // expecting to match nodes just inside the devicetree root node. It may also\n // be worth refining the depth-first search to avoid going deeper in some\n // situations -- if I'm matching a property string it doesn't make sense to\n // recurse into the property values.\n const predicate = createPredicateForCompatible(compatible)\n const propertyNode = searchTree(tree, predicate, { single: true })\n\n return propertyNode?.parent\n}\n/**\n * Find descendent nodes including a `compatible` property with the given value.\n *\n * @param {Tree|SyntaxNode} tree\n * @param {String|RegExp|Function} compatible\n * @returns {Array}\n */\nfunction findNodesWithCompatible (tree, compatible) {\n const predicate = createPredicateForCompatible(compatible)\n return searchTree(tree, predicate).map(property => property.parent)\n}\n\nmodule.exports = {\n BreadthFirstIterator,\n DepthFirstIterator,\n searchTree,\n findLabeledItem,\n findNodeByIdentifier,\n findNodeWithCompatible,\n findNodesWithCompatible\n}\n","const { searchTree } = require('./trees')\n\nconst isNegativeInteger = node => (\n node.type === 'unary_expression' &&\n node.childForFieldName('operator').type === '-' &&\n node.childForFieldName('argument').type === 'integer_literal'\n)\n\nconst isNumberishType = node => (\n ['identifier', 'integer_literal'].includes(node.type) || isNegativeInteger(node)\n)\n\nconst isBindingType = node => (\n // call_expression node includes modifier functions like `LC(A)`\n ['identifier', 'integer_literal', 'reference', 'call_expression'].includes(node.type)\n)\n\nconst isBindingRef = node => node.type === 'reference'\n\nconst extractInteger = node => (\n node.type === 'integer_literal' || isNegativeInteger(node)\n ? Number(node.text)\n : node.text\n)\n\nfunction parseStringLiteral (value) {\n return value?.text?.slice(1, -1)\n}\n\nfunction parseIntegerCells (values) {\n return parseIntegerArray(values)\n}\n\nfunction parseIntegerArray (values) {\n return values?.flatMap(cells => (\n cells.namedChildren\n .filter(isNumberishType)\n .map(extractInteger)\n ))\n}\n\nfunction parsePhandle (values) {\n return parsePhandles(values)[0]\n}\n\nfunction parsePhandles (values) {\n return values?.flatMap(cells => (\n cells.namedChildren\n .filter(isBindingRef)\n .map(value => value.text)\n ))\n}\n\nfunction parsePhandleArray (values) {\n return values?.flatMap(cells => (\n cells.namedChildren\n .filter(isBindingType)\n .map(value => value.text)\n ))\n}\n\nfunction parseIntegerUnion (values) {\n return values?.flatMap(value => (\n searchTree(value, isNumberishType, { depthFirst: true })\n )).map(extractInteger)\n}\n\nfunction sanitizeIdentifier (name) {\n return name\n .replace(/[^a-zA-Z0-9,._+-]/g, '_')\n .slice(0, 31)\n}\n\nfunction serializeIntegerCell (value) {\n value = value.toString()\n if (value.match(/-\\d+/)) {\n value = `(${value})`\n }\n\n return value\n}\n\nfunction serializeIntValue (value) {\n return `<${serializeIntegerCell(value)}>`\n}\n\nfunction serializeArrayValue (values) {\n return `<${values.map(serializeIntegerCell).join(' ')}>`\n}\n\nmodule.exports = {\n parseStringLiteral,\n parseIntegerCells,\n parseIntegerArray,\n parsePhandle,\n parsePhandleArray,\n parsePhandles,\n parseIntegerUnion,\n sanitizeIdentifier,\n serializeIntValue,\n serializeArrayValue\n}\n","const assert = require('assert')\nconst { ReferenceError } = assert\nconst difference = require('lodash/difference')\nconst filter = require('lodash/filter')\nconst isEqual = require('lodash/isEqual')\nconst map = require('lodash/map')\nconst partition = require('lodash/partition')\nconst reverse = require('lodash/reverse')\n\nconst { getNodeLabels, getLabeledItem } = require('./helpers/nodes')\nconst { getPropertyValues } = require('./helpers/properties')\nconst { sanitizeIdentifier } = require('./helpers/values')\n\nclass NodeCollection {\n managedProperties = []\n _cached_container_node = null\n _cached_container_tree_version = 0\n _cached_collection_nodes = null\n _cached_collection_tree_version = 0\n\n constructor (document, options = {}) {\n this.document = document\n if (options.managedProperties) { this.managedProperties = options.managedProperties }\n if (options.lookupContainerNode) { this.lookupContainerNode = options.lookupContainerNode.bind(this) }\n if (options.injectContainerNode) { this.injectContainerNode = options.injectContainerNode.bind(this) }\n if (options.lookupNodes) { this.lookupNodes = options.lookupNodes.bind(this) }\n if (options.injectNode) { this.injectNode = options.injectNode.bind(this) }\n }\n\n lookupContainerNode () { throw new ReferenceError('Provide `lookupContainerNode` in constructor or override this method') }\n injectContainerNode () { throw new ReferenceError('Provide `injectContainerNode` in constructor or override this method') }\n\n lookupNodes () { throw new ReferenceError('Provide `lookupNodes` in constructor or override this method') }\n injectNode () { throw new ReferenceError('Provide `injectNode` in constructor or override this method') }\n\n get container () {\n if (this._cached_container_tree_version !== this.document._parse_version) {\n delete this._cached_container_node\n }\n if (!this._cached_container_node) {\n this._cached_container_node = this.lookupContainerNode(this.document)\n this._cached_container_tree_version = this.document._parse_version\n }\n\n return this._cached_container_node\n }\n\n get nodes () {\n if (this._cached_collection_tree_version !== this.document._parse_version) {\n delete this._cached_collection_nodes\n }\n if (!this._cached_collection_nodes) {\n this._cached_collection_nodes = this.lookupNodes(this.document)\n this._cached_collection_tree_version = this.document._parse_version\n }\n\n return this._cached_collection_nodes\n }\n\n updateCollection (collection) {\n if (collection.length && !this.container) {\n this.injectContainerNode(this)\n this.document.flushChanges()\n }\n\n const originalIndices = [...this.nodes.keys()]\n const reusedIndices = filter(map(collection, 'index'), index => this.nodes[index])\n const removedIndices = difference(originalIndices, reusedIndices)\n const [updates, additions] = partition(collection, node => this.nodes[node.index])\n\n for (const node of updates) {\n this.updateNode(node.index, node)\n }\n\n for (const index of reverse(removedIndices)) {\n this.document.removeNode(this.nodes[index])\n }\n\n for (const node of additions) {\n this.injectNode(this, node)\n this.document.flushChanges()\n this.updateNode(this.nodes.length - 1, node)\n }\n }\n\n /**\n * Update an existing devicetree node\n * @param {Integer} index the position of the existing node to update\n * @param {Object} update the new node state to apply to devicetree\n * @param {String} update.name the devicetree node name\n * @param {Array} update.labels zero or more devictree labels to apply to the node\n * @param {Object} update.properties mapping of property name to (serialized) property values\n */\n updateNode (index, update) {\n const existing = this.extractNode(this.nodes[index])\n this.updateNodeName(index, update, existing)\n this.updateNodeLabels(index, update, existing)\n this.updateNodeProperties(index, update, existing)\n this.cleanupNodeProperties(index, update, existing)\n }\n\n updateNodeName (index, update, existing) {\n if (existing.name !== update.name) {\n const identifier = this.nodes[index].childForFieldName('name')\n this.document.replaceNode(identifier, sanitizeIdentifier(update.name), {\n removeStartingWhitespace: false\n })\n }\n }\n\n updateNodeLabels (index, update, existing) {\n if (!isEqual(existing.labels, update.labels)) {\n this.document.replaceNodeLabels(this.nodes[index], update.labels)\n }\n }\n\n updateNodeProperties (index, update, existing) {\n const { properties } = update\n\n for (const name in properties) {\n const values = properties[name]\n\n if (!isEqual(values, existing.properties[name])) {\n this.document.setProperty(\n this.nodes[index],\n name,\n values\n )\n }\n }\n }\n\n cleanupNodeProperties (index, update, existing) {\n const { properties } = update\n for (const name of this.managedProperties) {\n if (name in existing.properties && !(name in properties)) {\n this.document.deleteProperty(this.nodes[index], name)\n }\n }\n }\n\n /**\n * Extract basic information from a devicetree node for convenience.\n * The output of this function is an object with structure:\n * {\n * name: String,\n * labels: Array\n * properties: Object\n * }\n * This can be overridden to include additional details.\n * @param {SyntaxNode} node a devicetree node from which to extract info\n * @returns {Object}\n */\n extractNode (node) {\n // TODO: should there be a `Node` class?\n // TODO: Should there be a `PropertyCollection` with similar abstractions?\n assert(node.type === 'node')\n\n const name = node.childForFieldName('name').text\n const labels = getNodeLabels(node)\n const properties = node.namedChildren.reduce((acc, child) => {\n if (child.type === 'labeled_item') {\n child = getLabeledItem(child)\n }\n if (child.type === 'property') {\n const name = child.childForFieldName('name').text\n const values = getPropertyValues(node, name)\n const parsed = map(values, 'text')\n const raw = parsed.join(', ')\n acc[name] = { parsed, raw }\n }\n\n return acc\n }, {})\n\n return {\n name,\n labels,\n properties\n }\n }\n\n /**\n * Evaluate each node with `extractNode` and include an `index` property\n * @returns {Array}\n */\n extractCollection () {\n return this.nodes.map((node, index) => ({\n index, ...this.extractNode(node)\n }))\n }\n}\n\nmodule.exports = {\n NodeCollection\n}\n","const assert = require('assert')\nconst { sortBy } = require('lodash')\n\nconst TreeSitter = require('web-tree-sitter')\n\nconst { getPosition } = require('string-utils')\nconst { getNodeLabelNodes } = require('./helpers/nodes')\nconst { getProperty } = require('./helpers/properties')\n\nlet _parser\n\nasync function getParser () {\n if (!_parser) {\n await TreeSitter.init()\n const language = await TreeSitter.Language.load(\n\n // This is meant to make loading possible in a browser.\n global.window\n ? require('../data/tree-sitter-devicetree.wasm')\n : __dirname + '/../data/tree-sitter-devicetree.wasm'\n )\n _parser = new TreeSitter()\n _parser.setLanguage(language)\n }\n\n return _parser\n}\n\nclass DevicetreeDocument {\n constructor (parser, text) {\n this.parser = parser\n this._parse_version = 0\n this._enableChangeBuffering = false\n this._bufferedChanges = []\n this.update(text)\n }\n\n cleanup () {\n this.tree.delete()\n }\n\n update (text, inputEdit = null) {\n if (inputEdit && this.tree && this._enableChangeBuffering) {\n const replacementText = text.slice(inputEdit.startIndex, inputEdit.newEndIndex)\n this._bufferedChanges.push({\n startIndex: inputEdit.startIndex,\n update: inputEdit,\n replacementText\n })\n } else {\n this.text = text\n this._reparse()\n }\n }\n\n _reparse () {\n this.tree && this.tree.delete()\n this.tree = this.parser.parse(this.text)\n this._parse_version++\n }\n\n flushChanges () {\n if (this._bufferedChanges.length === 0) {\n return\n }\n\n const updates = sortBy(this._bufferedChanges, 'startIndex')\n\n // console.log('flushing updates', updates)\n // console.log({ original: this.text })\n\n const chunks = updates.reduce((chunks, { update, replacementText }, i) => {\n const nextUpdate = updates[i + 1]\n const prevEnd = i > 0\n ? updates[i - 1].update.oldEndIndex\n : 0\n\n const preChunk = this.text.slice(prevEnd, update.startIndex)\n const chunk = replacementText\n chunks.push(preChunk)\n chunks.push(chunk)\n\n // console.log({\n // preChunk,\n // chunk\n // })\n\n if (!nextUpdate) {\n // console.log('selecting final cunk', {\n // original: this.text,\n // update,\n // postChunk: this.text.slice(update.oldEndIndex)\n // })\n chunks.push(this.text.slice(update.oldEndIndex))\n }\n\n return chunks\n }, [])\n\n // console.log('generated chunks', chunks)\n\n this.text = chunks.join('')\n // console.log('generated text', this.text)\n this._reparse()\n this._bufferedChanges = []\n }\n\n removeNode (node) {\n this.replaceNode(node, '')\n }\n\n /**\n * Replace the contents of a syntax node with other (serialized) content.\n *\n * @param {SyntaxNode} node the node to be replaced\n * @param {String} newContent the devicetree source replacing the original node\n * @param {Object} options\n * @param {Bool} options.removeStartingWhitespace whether to attempt to start replacing at the start of `node`'s line\n */\n replaceNode (node, newContent, options = {}) {\n const { removeStartingWhitespace = true } = options\n const { text: documentText } = this\n\n // TODO: this all should probably go\n const precedingNewline = documentText.lastIndexOf('\\n', node.startIndex)\n const hasStartingWhitespace = precedingNewline !== -1 && documentText.slice(precedingNewline + 1, node.startIndex).match(/\\s+/)\n const start = hasStartingWhitespace && removeStartingWhitespace\n ? precedingNewline\n : node.startIndex\n\n const replacement = [\n documentText.slice(0, start),\n newContent,\n documentText.slice(node.endIndex)\n ].join('')\n\n const inputEdit = {\n startIndex: start,\n startPosition: getPosition(newContent, start),\n oldEndIndex: node.endIndex,\n oldEndPosition: node.endPosition,\n newEndIndex: start + newContent.length,\n newEndPosition: getPosition(replacement, start + newContent.length)\n }\n\n this.update(replacement, inputEdit)\n }\n\n replaceRange (startIndex, skipToIndex, newContent) {\n const { text: source } = this\n const pre = source.slice(0, startIndex)\n const post = source.slice(skipToIndex)\n const replacement = [pre, newContent, post].join('')\n const newEndIndex = startIndex + newContent.length\n const inputEdit = {\n startIndex,\n startPosition: getPosition(source, startIndex),\n oldEndIndex: skipToIndex,\n oldEndPosition: getPosition(source, skipToIndex),\n newEndIndex,\n newEndPosition: getPosition(replacement, newEndIndex)\n }\n\n return this.update(replacement, inputEdit)\n }\n\n /**\n * Replace any existing labels attached to the specified node.\n * @param {SyntaxNode} labeledNode\n * @param {Array} newLabels\n */\n replaceNodeLabels (labeledNode, newLabels) {\n const labelNodes = getNodeLabelNodes(labeledNode)\n const sorted = sortBy(labelNodes, 'startIndex')\n const serializedLabels = newLabels.map(label => `${label}:`).join(' ')\n const start = (sorted[0] && sorted[0].parent) || labeledNode\n\n this.replaceRange(start.startIndex, labeledNode.startIndex, serializedLabels)\n }\n\n /**\n * Insert text content before a specified node\n * @param {SyntaxNode} node the node before which to insert\n * @param {String} newContent the new devicetree source to be inserted\n */\n insertTextBeforeNode (node, newContent) {\n this.replaceRange(node.startIndex, node.startIndex, newContent)\n }\n\n /**\n * Insert text content after a specified node\n * @param {SyntaxNode} node the node after which to insert\n * @param {String} newContent the new devicetree source to be inserted\n */\n insertTextAfterNode (node, newContent) {\n this.replaceRange(node.endIndex, node.endIndex, newContent)\n }\n\n /**\n * Append devicetree source to the specified node\n * @param {SyntaxNode} parentNode parent node in which to add content\n * @param {*} newContent the new devicetree source to be inserted\n */\n addChildNode (parentNode, newContent) {\n assert(parentNode.type === 'node')\n\n const closingBrace = parentNode.children.find(node => node.type === '}')\n return this.replaceRange(\n closingBrace.startIndex,\n closingBrace.startIndex,\n newContent\n )\n }\n\n /**\n * Set/create a property with the specified value in the specified node\n * @param {SyntaxNode} node target node in which to set property\n * @param {String} property name of property to set\n * @param {String|Boolean} value serialized devicetree value.\n */\n setProperty (node, property, value) {\n const existing = getProperty(node, property)\n\n if (typeof value === 'boolean' && !value) {\n if (existing) {\n this.deleteProperty(node, property)\n }\n\n return\n }\n\n const newText = value.length\n ? `${property} = ${value};`\n : `${property};`\n\n if (existing) {\n return this.replaceNode(\n existing.syntaxNode,\n newText,\n { removeStartingWhitespace: false }\n )\n }\n\n return this.addChildNode(node, `\\n ${newText}`)\n }\n\n /**\n * Remove a property from a specified devicetree node.\n * @param {SyntaxNode} node where to search for the named property\n * @param {String} property name of property to remove\n */\n deleteProperty (node, property) {\n const existing = getProperty(node, property)\n if (existing) {\n this.replaceNode(existing.syntaxNode, '')\n }\n }\n}\n\nmodule.exports = {\n getParser,\n DevicetreeDocument\n}\n","const compact = require('lodash/compact')\nconst flatten = require('lodash/flatten')\nconst get = require('lodash/get')\nconst keyBy = require('lodash/keyBy')\nconst map = require('lodash/map')\nconst omitBy = require('lodash/omitBy')\nconst uniq = require('lodash/uniq')\n\nconst { getParser } = require('devicetree')\nconst { formatNode, getModelineConfiguration } = require('devicetree/lib/formatters')\nconst { behaviorBindings } = require('zmk-data/behaviors')\nconst renderLayout = require('keymap-layout-tools/lib/render')\n\nconst { encodeKeyBinding } = require('./devicetree/bindings')\nconst KeymapDocument = require('./devicetree/keymap-document')\n\nconst behavioursByBind = keyBy(behaviorBindings, 'code')\n\nasync function applyKeymapChanges (layout, keymap, original, featureFlags = {}) {\n formatLayerKeybinds(keymap, layout)\n const behaviorHeaders = flatten(getBehaviorsUsed(keymap).map(\n bind => get(behavioursByBind, [bind, 'includes'], [])\n ))\n\n const devicetreeKeymap = new KeymapDocument(await getParser(), original)\n devicetreeKeymap._enableChangeBuffering = true\n devicetreeKeymap.mergeUpdated(keymap, featureFlags)\n devicetreeKeymap.replaceBehaviourIncludes(behaviorHeaders)\n devicetreeKeymap.flushChanges()\n\n try {\n const config = getModelineConfiguration(devicetreeKeymap.tree)\n return formatNode(devicetreeKeymap.tree.rootNode, config).join('\\n')\n } catch (err) {\n console.error('Failed to format devictree', err)\n return devicetreeKeymap.text\n } finally {\n devicetreeKeymap.cleanup()\n }\n}\n\nfunction formatLayerKeybinds (keymap, layout) {\n for (const layer of keymap.layers) {\n if (layer.properties.bindings?.parsed) {\n const { parsed } = layer.properties.bindings\n layer.properties.bindings = {\n parsed,\n useRaw: true,\n raw: `<\\n${renderLayout(layout, parsed.map(encodeKeyBinding))}\\n>`\n }\n }\n\n if (layer.properties.label && !layer.properties.label.parsed) {\n delete layer.properties.label\n }\n\n layer.properties = omitBy(layer.properties, value => !value)\n }\n}\n\nfunction getBehaviorsUsed (keymap) {\n const bindings = [\n ...flatten(compact(map(keymap.layers, 'properties.bindings.parsed'))),\n ...flatten(compact(map(keymap.layers, 'properties.sensor-bindings.parsed'))),\n ...flatten(compact(map(keymap.combos, 'properties.bindings.parsed'))),\n ...flatten(compact(map(keymap.macros, 'properties.bindings.parsed'))),\n ...flatten(compact(map(keymap.behaviors, 'properties.bindings.parsed')))\n ]\n\n const behaviors = bindings.map(binding => (\n typeof binding === 'object'\n ? binding.value\n : binding\n ))\n\n return uniq(behaviors)\n}\n\nmodule.exports = applyKeymapChanges\nmodule.exports.getBehaviorsUsed = getBehaviorsUsed\n","const filter = require('lodash/filter')\nconst get = require('lodash/get')\nconst { parsePropertyFromSchema } = require('devicetree/lib/helpers/properties')\n\n/** @typedef {String} IntegerCell */\n/** @typedef {String} Bind */\n/** @typedef {{ value: String, params: Array }} BindValue */\n\n/**\n * @param {SyntaxNode} node\n * @param {String} [propertyName='bindings']\n * @returns {Array|undefined} bind strings\n */\nfunction parseBindings (node, propertyName = 'bindings') {\n const bindings = parsePropertyFromSchema(node, propertyName, {\n type: 'phandle-array'\n })\n\n return bindings\n ? groupPhandleArrayBindings([].concat(...bindings))\n : undefined\n}\n\n/**\n * @param {Array} bindingCells\n * @returns {Array}\n */\nfunction groupPhandleArrayBindings (bindingCells) {\n return bindingCells.reduce((bindings, node) => {\n if (node.startsWith('&')) {\n bindings.push([node])\n } else {\n const last = bindings[bindings.length - 1]\n last.push(node)\n }\n\n return bindings\n }, []).map(binding => binding.join(' '))\n}\n\nconst MACRO_CONTROL_BEHAVIOURS = [\n '¯o_tap',\n '¯o_press',\n '¯o_release',\n '¯o_tap_time',\n '¯o_wait_time',\n '¯o_pause_for_release'\n]\n\n/**\n * Group a flat list of bind strings at macro activation mode change\n * @param {Array} bindings\n * @returns {Array>}\n */\nfunction groupMacroBindings (bindings) {\n return bindings.reduce((rows, binding, i, arr) => {\n const behaviourBind = binding.split(' ')[0]\n\n if (MACRO_CONTROL_BEHAVIOURS.includes(behaviourBind)) {\n if (rows.at(-1).length > 0) {\n rows.push([])\n }\n\n rows.at(-1).push(binding)\n if (i < arr.length - 1) {\n rows.push([])\n }\n } else {\n rows.at(-1).push(binding)\n }\n\n return rows\n }, [[]])\n}\n\n/**\n * Parse a bind string into a tree of values and parameters\n * @param {Bind} binding\n * @returns {BindValue}\n */\nfunction parseKeyBinding (binding, keymap) {\n const paramsPattern = /\\((.+)\\)/\n\n function parse (code) {\n const value = code.replace(paramsPattern, '')\n const params = get(code.match(paramsPattern), '[1]', '').split(',')\n .map(s => s.trim())\n .filter(s => s.length > 0)\n .map(parse)\n\n return {\n // TODO: some defines (e.g., in bat43) can involve multiple bind values\n // this replacement should happen before the bindings array is parsed\n value: get(keymap.defines, value, value),\n params\n }\n }\n\n const value = binding.match(/^(&.+?)\\b/)[1]\n const params = filter(binding.replace(/^&.+?\\b\\s*/, '')\n .split(' '))\n .map(parse)\n\n return { value, params }\n}\n\n/**\n * Serialize a node of a BindValue tree\n * @param {BindValue} parsed\n * @returns {Bind}\n */\nfunction encodeBindValue (parsed) {\n const params = (parsed.params || []).map(encodeBindValue)\n const paramString = params.length > 0 ? `(${params.join(',')})` : ''\n return parsed.value + paramString\n}\n\n/**\n * Serialize a top-level BindValue object\n * @param {BindValue} parsed\n * @returns {Bind}\n */\nfunction encodeKeyBinding (parsed) {\n const { value, params } = parsed\n\n return `${value} ${params.map(encodeBindValue).join(' ')}`.trim()\n}\n\nmodule.exports = {\n parseBindings,\n parseKeyBinding,\n groupMacroBindings,\n groupPhandleArrayBindings,\n encodeKeyBinding\n}\n","const isEqual = require('lodash/isEqual')\n\nconst {\n findChildByIdentifier,\n findChildrenByIdentifier,\n findNodesWithCompatible,\n findNodeProperty,\n getPropertyValues,\n parsePropertyFromSchema,\n sanitizeIdentifier,\n serializePropertyFromSchema\n} = require('devicetree/lib/helpers')\nconst { NodeCollection } = require('devicetree/lib/node-collection')\nconst { behaviorSchemas } = require('zmk-data/behaviors')\n\nconst { parseKeyBinding, encodeKeyBinding } = require('../bindings')\n\nfunction resolveBehaviorBindings (behavior) {\n const bindingsValues = getPropertyValues(behavior, 'bindings') || []\n const bindings = bindingsValues.flatMap(bindingsValue => (\n bindingsValue.namedChildren.flatMap(bindCode => bindCode.text)\n ))\n\n return { bindings }\n}\n\nclass BehaviorCollection extends NodeCollection {\n lookupContainerNode () {\n const rootNodes = findChildrenByIdentifier(this.document.tree.rootNode, '/')\n return findChildByIdentifier(rootNodes, 'behaviors')\n }\n\n injectContainerNode () {\n const keymap = findNodesWithCompatible(this.document.tree.rootNode, 'zmk,keymap').at(-1)\n this.document.insertTextBeforeNode(keymap, '\\nbehaviors {};\\n')\n }\n\n lookupNodes () {\n return findNodesWithCompatible(this.document.tree.rootNode, value => (\n value.startsWith('\"zmk,behavior-') &&\n value !== '\"zmk,behavior-macro\"'\n ))\n }\n\n injectNode (_, behavior) {\n const name = sanitizeIdentifier(behavior.name)\n const last = this.nodes.at(-1)\n const nodeContent = `${behavior.labels[0]}: ${name} {\n compatible = ${behavior.properties.compatible.raw};\n };`\n\n // new node will be updated with full set of properties later, but for now\n // a known behavior has to be set to make sure this node is not filtered out\n if (last) {\n this.document.insertTextAfterNode(last, nodeContent)\n } else {\n this.document.addChildNode(this.container, nodeContent)\n }\n }\n\n extractNode (node) {\n const compatible = findNodeProperty(node, 'compatible')?.namedChildren[1].text.slice(1, -1)\n\n const schema = behaviorSchemas[compatible]\n const extracted = super.extractNode(node)\n\n extracted.properties.compatible.parsed = compatible\n\n if (schema) {\n for (const prop in schema.properties) {\n const propSchema = schema.properties[prop]\n const extractedProp = extracted.properties[prop]\n if (extractedProp) {\n extractedProp.parsed = parsePropertyFromSchema(node, prop, propSchema)\n\n if (propSchema.type === 'phandle-array') {\n const bindStrings = extractedProp.parsed\n .reduce((bindings, node) => {\n if (node.startsWith('&')) {\n bindings.push([node])\n } else {\n const last = bindings[bindings.length - 1]\n last.push(node)\n }\n\n return bindings\n }, [])\n .map(group => group.join(' '))\n\n extractedProp.parsed = bindStrings.map(bind => parseKeyBinding(bind, {}))\n }\n }\n }\n }\n\n resolveBehaviorBindings(node)\n\n return extracted\n }\n\n updateNodeProperties (index, update, existing) {\n const { properties } = update\n const compatible = findNodeProperty(this.nodes[index], 'compatible')?.namedChildren[1].text.slice(1, -1)\n const schema = behaviorSchemas[compatible]\n\n for (const name in properties) {\n const prop = properties[name]\n const propSchema = schema?.properties?.[name]\n\n if (!isEqual(prop, existing.properties[name])) {\n const serialized = propSchema && !prop.useRaw\n ? (\n // Not ideal to have this type-check here, but our handling of this\n // type goes beyond devicetree.\n propSchema.type !== 'phandle-array'\n ? serializePropertyFromSchema(prop, propSchema)\n : prop.parsed\n .map(binding => encodeKeyBinding(binding))\n .map(bindString => `<${bindString}>`)\n .join(', ')\n )\n : prop.raw\n\n this.document.setProperty(this.nodes[index], name, serialized)\n }\n }\n }\n\n cleanupNodeProperties (index, update, existing) {\n for (const prop in existing.properties) {\n if (!(prop in update.properties)) {\n this.document.deleteProperty(this.nodes[index], prop)\n }\n }\n }\n}\n\nmodule.exports = BehaviorCollection\n","const isEqual = require('lodash/isEqual')\n\nconst {\n findNodeWithCompatible,\n findNodesWithCompatible,\n getLabeledItem,\n getNodeLabels,\n parsePropertiesFromSchema,\n serializePropertyFromSchema\n} = require('devicetree/lib/helpers')\nconst { NodeCollection } = require('devicetree/lib/node-collection')\n\nconst { groupPhandleArrayBindings, parseKeyBinding, encodeKeyBinding } = require('../bindings')\n\n// TODO: extract the `zmk,combos` schema and handle the `childProperties` prop\nconst comboSchema = {\n bindings: { type: 'phandle-array' },\n 'key-positions': { type: 'array' },\n 'timeout-ms': { type: 'int' },\n 'slow-release': { type: 'boolean' },\n layers: { type: 'array' }\n}\n\nclass ComboCollection extends NodeCollection {\n managedProperties = [\n 'bindings',\n 'key-positions',\n 'timeout-ms',\n 'layers',\n 'slow-release'\n ]\n\n lookupContainerNode () {\n return findNodeWithCompatible(this.document.tree.rootNode, 'zmk,combos')\n }\n\n injectContainerNode () {\n // TODO: this sucks and is making many other things worse.\n // I've encountered keymap files that specify multiple root devicetree nodes\n // which ZMK accepts and merges together, and multiple keymap nodes which\n // devicetree accepts and selects the last one.\n // Working around this is a pain in the ass and is hurting performance so\n // the best thing to do is stop supporting this and present a warning to the\n // user explaining why their keymap isn't being parsed as expected.\n const keymap = findNodesWithCompatible(this.document.tree.rootNode, 'zmk,keymap').at(-1)\n this.document.insertTextBeforeNode(keymap, `\n combos {\n compatible = \"zmk,combos\";\n };\n `)\n }\n\n lookupNodes () {\n if (!this.container) {\n return []\n }\n\n return this.container.namedChildren.reduce((nodes, syntaxNode) => {\n if (syntaxNode.type === 'labeled_item') {\n syntaxNode = getLabeledItem(syntaxNode)\n }\n if (syntaxNode.type === 'node') {\n nodes.push(syntaxNode)\n }\n\n return nodes\n }, [])\n }\n\n injectNode (_, combo) {\n const name = combo.name.replace(/[^a-zA-Z0-9_]/g, '_')\n const last = this.nodes.at(-1)\n const nodeContent = `${name} {};`\n\n if (last) {\n this.document.insertTextAfterNode(last, nodeContent)\n } else {\n this.document.addChildNode(this.container, nodeContent)\n }\n }\n\n updateNodeProperties (index, update, existing) {\n const { properties } = update\n for (const name in properties) {\n const prop = properties[name]\n const propSchema = comboSchema[name]\n\n if (!isEqual(prop, existing.properties[name])) {\n const serialized = propSchema && !prop.useRaw\n ? (\n // Not ideal to have this type-check here, but our handling of this\n // type goes beyond devicetree.\n propSchema.type !== 'phandle-array'\n ? serializePropertyFromSchema(prop, propSchema)\n : prop.parsed\n .map(binding => encodeKeyBinding(binding))\n .map(bindString => `<${bindString}>`)\n .join(', ')\n )\n : prop.raw\n\n this.document.setProperty(this.nodes[index], name, serialized)\n }\n }\n\n if (!update.properties.layers?.parsed?.length) {\n this.document.deleteProperty(this.nodes[index], 'layers')\n }\n }\n\n extractNode (node) {\n const name = node.childForFieldName('name').text\n const labels = getNodeLabels(node)\n const properties = parsePropertiesFromSchema(node, comboSchema)\n\n if (properties.bindings) {\n properties.bindings.parsed = (\n groupPhandleArrayBindings(properties.bindings.parsed)\n .map(parseKeyBinding)\n )\n }\n\n return { name, labels, properties }\n }\n\n legacyParse (node) {\n const { name, labels, properties } = this.extractNode(node)\n const legacyNode = {\n name,\n labels,\n properties,\n identifier: name\n }\n\n const legacyMapping = {\n bindings: 'bindings',\n 'timeout-ms': 'timeoutMs',\n 'key-positions': 'keyPositions',\n 'slow-release': 'slowRelease',\n layers: 'layers'\n }\n\n for (const prop of Object.keys(legacyMapping)) {\n if (properties[prop]) {\n legacyNode[legacyMapping[prop]] = properties[prop].parsed\n }\n }\n\n if (legacyNode.layers?.length === 0 || isEqual(legacyNode.layers, [-1])) {\n delete legacyNode.layers\n }\n\n return legacyNode\n }\n\n legacyParseNodes () {\n return this.nodes.map(node => this.legacyParse(node))\n }\n}\n\nmodule.exports = ComboCollection\n","const difference = require('lodash/difference')\nconst filter = require('lodash/filter')\nconst isEqual = require('lodash/isEqual')\nconst map = require('lodash/map')\n\nconst {\n findChildrenByIdentifier,\n findNodesWithCompatible,\n getLabeledItem,\n getNodeLabels,\n parsePropertiesFromSchema,\n serializePropertyFromSchema\n} = require('devicetree/lib/helpers')\nconst { NodeCollection } = require('devicetree/lib/node-collection')\n\nconst { groupPhandleArrayBindings, parseKeyBinding, encodeKeyBinding } = require('../bindings')\n\nfunction isSorted (array) {\n return array.every((value, i, arr) => (\n i === arr.length - 1 ||\n arr[i] < arr[i + 1]\n ))\n}\n\n// TODO: extract the `zmk,keymap` schema and handle the `childProperties` prop\nconst layerSchema = {\n label: {\n type: 'string'\n },\n bindings: {\n type: 'phandle-array'\n },\n 'sensor-bindings': {\n type: 'phandle-array'\n }\n}\n\nclass LayerCollection extends NodeCollection {\n managedProperties = [\n 'label',\n 'bindings',\n 'sensor-bindings'\n ]\n\n lookupContainerNode () {\n return findNodesWithCompatible(this.document.tree.rootNode, 'zmk,keymap').at(-1)\n }\n\n injectContainerNode () {\n const rootNodes = findChildrenByIdentifier(this.document.tree.rootNode, '/')\n this.document.addChildNode(\n rootNodes.at(-1),\n '\\nkeymap { compatible = \"zmk,keymap\"; };\\n'\n )\n }\n\n lookupNodes () {\n if (!this.container) {\n return []\n }\n\n return this.container.namedChildren.reduce((nodes, syntaxNode) => {\n if (syntaxNode.type === 'labeled_item') {\n syntaxNode = getLabeledItem(syntaxNode)\n }\n if (syntaxNode.type === 'node') {\n nodes.push(syntaxNode)\n }\n\n return nodes\n }, [])\n }\n\n injectNode (_, layer) {\n const last = this.nodes.at(-1)\n const name = (layer.name || 'new_layer').replace(/[^a-zA-Z0-9_]/g, '_')\n const nodeContent = `${name} {};`\n\n if (last) {\n this.document.insertTextAfterNode(last, nodeContent)\n } else {\n this.document.addChildNode(this.container, nodeContent)\n }\n }\n\n updateCollection (collection) {\n const originalIndices = [...this.nodes.keys()]\n\n super.updateCollection(collection)\n this.updateLayerPositions(collection, originalIndices)\n }\n\n /**\n * Sort layer nodes according to the updates array ordering.\n * This could perhaps be implemented generically in NodeCollection or even in\n * DevicetreeDocument but that's complicated, especially considering scenarios\n * like BehaviorCollection and MacroCollection which may be dealing with nodes\n * that are subsets of a single nodes children, or even nodes that aren't even\n * children of the same parent.\n *\n * For now it only makes sense for layer nodes to be sortable, so here you go.\n *\n * @param {Array} updates same argument passed to updateCollection\n * @param {Array} originalIndices node indices from before updates were applied\n */\n updateLayerPositions (updates, originalIndices) {\n const reusedIndices = filter(map(updates, 'index'), index => this.nodes[index])\n const removedIndices = difference(originalIndices, reusedIndices)\n const positionMap = [...originalIndices]\n\n // Add new nodes to the end of the position map. Their current position does\n // not matter because they're already sorted relative to eachother and the\n // mapping will let us reorder everything at the end.\n for (const index in updates) {\n const update = updates[index]\n const nextIndex = positionMap.length\n if (update.index === undefined || !originalIndices.includes(update.index)) {\n update.index = nextIndex\n positionMap[nextIndex] = nextIndex\n }\n }\n\n // Shift every mapped position for nodes following removed nodes.\n for (let i = removedIndices.length - 1; i >= 0; --i) {\n const index = removedIndices[i]\n positionMap[index] = null\n for (let j = index + 1; j < positionMap.length; j++) {\n if (positionMap[j] !== null) {\n positionMap[j] -= 1\n }\n }\n }\n\n const targetIndexOrder = map(updates, 'index')\n if (targetIndexOrder.length > 0 && !isSorted(targetIndexOrder)) {\n this.document.flushChanges()\n this.document.replaceRange(\n this.nodes[0].startIndex,\n this.nodes.at(-1).endIndex,\n targetIndexOrder\n .map(index => positionMap[index])\n .map(index => this.nodes[index].text)\n .join('\\n')\n )\n }\n }\n\n updateNodeProperties (index, update, existing) {\n const { properties } = update\n for (const name in properties) {\n const prop = properties[name]\n const propSchema = layerSchema[name]\n\n if (!isEqual(prop, existing.properties[name])) {\n const serialized = propSchema && !prop.useRaw\n ? (\n // Not ideal to have this type-check here, but our handling of this\n // type goes beyond devicetree.\n propSchema.type !== 'phandle-array'\n ? serializePropertyFromSchema(prop, propSchema)\n : (\n prop.parsed.length === 0\n ? false\n : prop.parsed\n .map(binding => encodeKeyBinding(binding))\n .map(bindString => `<${bindString}>`)\n .join(', ')\n )\n )\n : prop.raw\n\n this.document.setProperty(this.nodes[index], name, serialized)\n }\n }\n }\n\n extractNode (node) {\n const name = node.childForFieldName('name').text\n const labels = getNodeLabels(node)\n const properties = parsePropertiesFromSchema(node, layerSchema)\n\n if (properties.bindings) {\n properties.bindings.parsed = (\n groupPhandleArrayBindings(properties.bindings.parsed)\n .map(parseKeyBinding)\n )\n }\n\n if (properties['sensor-bindings']) {\n properties['sensor-bindings'].parsed = (\n groupPhandleArrayBindings(properties['sensor-bindings'].parsed)\n .map(parseKeyBinding)\n )\n }\n\n return { name, labels, properties }\n }\n}\n\nmodule.exports = LayerCollection\n","const pick = require('lodash/pick')\n\nconst {\n findChildByIdentifier,\n findChildrenByIdentifier,\n findNodesWithCompatible\n} = require('devicetree/lib/helpers')\nconst { NodeCollection } = require('devicetree/lib/node-collection')\n\nconst BehaviorCollection = require('./behaviors')\nconst { groupMacroBindings, encodeKeyBinding } = require('../bindings')\n\nclass MacroCollection extends BehaviorCollection {\n managedProperties = [\n 'label',\n 'tap-ms',\n 'wait-ms'\n ]\n\n lookupContainerNode () {\n const rootNodes = findChildrenByIdentifier(this.document.tree.rootNode, '/')\n return findChildByIdentifier(rootNodes, 'macros')\n }\n\n injectContainerNode () {\n const keymap = findNodesWithCompatible(this.document.tree.rootNode, 'zmk,keymap').at(-1)\n this.document.insertTextBeforeNode(keymap, '\\nmacros {};\\n')\n }\n\n lookupNodes () {\n return findNodesWithCompatible(\n this.document.tree.rootNode,\n 'zmk,behavior-macro'\n )\n }\n\n injectNode (_, macro) {\n const name = macro.name.replace(/[^a-zA-Z0-9_]/g, '_')\n const last = this.nodes.at(-1)\n const nodeContent = (\n `${name}: ${name} {\n compatible = \"zmk,behavior-macro\";\n };`\n )\n\n if (last) {\n this.document.insertTextAfterNode(last, nodeContent)\n } else {\n this.document.addChildNode(this.container, nodeContent)\n }\n }\n\n updateNode (index, update) {\n const serialized = serializeMacroBindings(update.properties.bindings?.parsed || [])\n update.properties.bindings = {\n useRaw: true,\n raw: serialized\n }\n\n super.updateNode(index, update)\n }\n\n legacyParse (node) {\n return pick(this.extractNode(node), ['name', 'labels', 'properties'])\n }\n\n legacyParseNodes () {\n return this.nodes.map(node => this.legacyParse(node))\n }\n\n cleanupNodeProperties (index, update, existing) {\n const { cleanupNodeProperties } = NodeCollection.prototype\n return cleanupNodeProperties.call(this, index, update, existing)\n }\n}\n\nfunction serializeMacroBindings (bindings) {\n const serialized = groupMacroBindings(\n bindings.map(encodeKeyBinding)\n ).map(row => row.join(' '))\n\n return serialized.length === 1\n ? [`<${serialized[0]}>`]\n : serialized.map(row => `<${row}>`)\n}\n\nmodule.exports = MacroCollection\n","const filter = require('lodash/filter')\nconst last = require('lodash/last')\nconst reverse = require('lodash/reverse')\n\nconst { DevicetreeDocument } = require('devicetree')\nconst {\n nodesAreConsecutive,\n findChildByIdentifier,\n findChildrenByIdentifier,\n getLabeledItem\n} = require('devicetree/lib/helpers')\nconst { standardBehaviorIncludeFiles } = require('zmk-data/behaviors')\n\nconst MacroCollection = require('./collections/macros')\nconst ComboCollection = require('./collections/combos')\nconst LayerCollection = require('./collections/layers')\nconst BehaviorCollection = require('./collections/behaviors')\n\nclass KeymapDocument extends DevicetreeDocument {\n constructor (...args) {\n super(...args)\n this.macroCollection = new MacroCollection(this)\n this.comboCollection = new ComboCollection(this)\n this.layerCollection = new LayerCollection(this)\n this.behaviorCollection = new BehaviorCollection(this)\n }\n\n cleanup () {\n super.cleanup()\n delete this.layerCollection\n delete this.comboCollection\n delete this.macroCollection\n delete this.behaviorCollection\n }\n\n getChosenProperties () {\n const rootNodes = findChildrenByIdentifier(this.tree.rootNode, '/')\n const chosen = findChildByIdentifier(rootNodes, 'chosen')\n\n if (!chosen) {\n return {}\n }\n\n return chosen.namedChildren.reduce((acc, child) => {\n if (child.type === 'labeled_item') {\n child = getLabeledItem(child)\n }\n if (child.type === 'property') {\n const name = child.childForFieldName('name').text\n const value = child.childForFieldName('value').text\n acc[name] = value\n }\n\n return acc\n }, {})\n }\n\n mergeUpdated (updated, featureFlags = {}) {\n this.layerCollection.updateCollection(updated.layers)\n this.comboCollection.updateCollection(updated.combos)\n this.macroCollection.updateCollection(updated.macros)\n\n if (featureFlags.enableBehaviorEditing) {\n this.behaviorCollection.updateCollection(updated.behaviors)\n }\n }\n\n replaceBehaviourIncludes (updated) {\n const replacementText = updated.sort().join('\\n') + '\\n'\n const behaviorIncludes = this.tree.rootNode.namedChildren.filter(node => (\n node.type === 'preproc_include' &&\n // TODO: update behavior overlays to just specify the include path and not\n // the include pre-processor statement. `startsWith` is necessary here\n // because preproc_include node parsing includes trailing newline(s).\n standardBehaviorIncludeFiles.some(line => node.text.startsWith(line))\n ))\n\n if (behaviorIncludes.length) {\n if (nodesAreConsecutive(behaviorIncludes)) {\n this.replaceRange(\n behaviorIncludes[0].startIndex,\n behaviorIncludes.at(-1).endIndex,\n ''\n )\n } else {\n const ranges = behaviorIncludes.map(node => [node.startIndex, node.endIndex])\n for (const [startIndex, endIndex] of reverse(ranges)) {\n this.replaceRange(startIndex, endIndex, '\\n')\n }\n }\n }\n\n const lastInclude = last(filter(\n this.tree.rootNode.children,\n { type: 'preproc_include' }\n ))\n const firstDefine = this.tree.rootNode.children.find(node => node.type === 'preproc_def')\n const firstDtNode = this.tree.rootNode.children.find(node => node.type === 'node')\n\n if (lastInclude) {\n this.insertTextAfterNode(lastInclude, replacementText)\n } else if (firstDefine || firstDtNode) {\n this.insertTextBeforeNode(\n firstDefine || firstDtNode,\n replacementText\n )\n }\n }\n}\n\nmodule.exports = KeymapDocument\n","const { getPropertyValues } = require('devicetree/lib/helpers/properties')\n\nconst MISSING_ROOT_NODE = 'MISSING_ROOT_NODE'\nconst USING_ZMK_NODEFREE_MACROS = 'USING_ZMK_NODEFREE_MACROS'\nconst USING_ZMK_MACRO_MACRO = 'USING_ZMK_MACRO_MACRO'\nconst USING_MULTIPLE_ROOT_NODES = 'USING_MULTIPLE_ROOT_NODES'\nconst USING_MIRYOKU_DTSI = 'USING_MIRYOKU_DTSI'\nconst USING_NON_ZMK_MACRO = 'USING_NON_ZMK_MACRO'\nconst USING_AUTOSHIFT_MACRO = 'USING_AUTOSHIFT_MACRO'\n\nfunction keymapUsesNodefreeConfigHelpers (document) {\n const macroNames = [\n 'ZMK_BEHAVIOR',\n 'ZMK_COMBO',\n 'ZMK_CONDITIONAL_LAYER',\n 'ZMK_LAYER',\n 'UC_MACRO'\n ]\n\n for (const node of document.tree.rootNode.namedChildren) {\n if (node.type === 'ERROR') {\n const { text } = node\n if (macroNames.some(name => text.startsWith(name))) {\n return USING_ZMK_NODEFREE_MACROS\n }\n }\n }\n}\n\nfunction keymapUsesMiryoku (document) {\n for (const node of document.tree.rootNode.namedChildren) {\n if (node.type === 'preproc_include') {\n if (node.childForFieldName('path').text.includes('miryoku.dtsi')) {\n return USING_MIRYOKU_DTSI\n }\n }\n }\n}\n\nfunction keymapBindingsUsePreprocessorMacros (document) {\n let usingAutoshiftMacro = false\n const zmkPreprocFunctions = [\n 'LA', 'LC', 'LG', 'LS',\n 'RA', 'RC', 'RG', 'RS',\n 'RGB_COLOR_HSB'\n ]\n\n for (const layerNode of document.layerCollection.nodes) {\n const [bindingsNode] = getPropertyValues(layerNode, 'bindings')\n for (const node of bindingsNode.namedChildren) {\n if (node.type === 'call_expression') {\n const name = node.childForFieldName('function').text\n if (name.match(/^_?AS$/i)) {\n usingAutoshiftMacro = true\n } else if (!zmkPreprocFunctions.includes(name)) {\n return USING_NON_ZMK_MACRO\n }\n }\n }\n }\n\n if (usingAutoshiftMacro) {\n return USING_AUTOSHIFT_MACRO\n }\n}\n\nfunction keymapHasNoRootNodes (document) {\n for (let node of document.tree.rootNode.namedChildren) {\n if (node.type === 'labeled_item') {\n node = node.childForFieldName('item')\n }\n if (node.type === 'node' && node.childForFieldName('name').text === '/') {\n return\n }\n }\n\n return MISSING_ROOT_NODE\n}\n\n/**\n * Check if a devicetree document uses multiple root nodes.\n *\n * People sometimes organize different parts of a keymap (like behaviors and\n * combos) into separate instances of a root node. The devicetree compiler will\n * merge these root nodes into one, but preserving this for editing is annoying\n * and inefficient so I don't want to support it anymore.\n *\n * @param {DevicetreeDocument} document\n * @returns {String|undefined}\n */\nfunction keymapHasMultipleRootNodes (document) {\n let firstRootNode = null\n\n for (let node of document.tree.rootNode.namedChildren) {\n if (node.type === 'labeled_item') {\n node = node.childForFieldName('item')\n }\n if (node.type === 'node' && node.childForFieldName('name').text === '/') {\n if (firstRootNode !== null) {\n return USING_MULTIPLE_ROOT_NODES\n }\n\n firstRootNode = node\n }\n }\n}\n\n/**\n * This is just a last-ditch check to see if keymap parsing failed because of a\n * custom define that replaced the initial binding cell's behavior. This would\n * otherwise be caught by `keymapBindingsUsePreprocessorMacros` except that the\n * initial grouping fails.\n * @param {DevicetreeDocument} document\n */\nfunction keymapHasLayerBindingsWithNonBehaviorStarter (document) {\n return document.layerCollection.nodes.some(node => {\n const bindingCells = [].concat(...getPropertyValues(node, 'bindings'))\n .flatMap(integerCells => integerCells.namedChildren)\n const firstBindType = bindingCells[0]?.type\n\n return firstBindType && firstBindType !== 'reference'\n })\n}\n\nmodule.exports = {\n keymapHasNoRootNodes,\n keymapUsesNodefreeConfigHelpers,\n keymapUsesMiryoku,\n keymapBindingsUsePreprocessorMacros,\n keymapHasMultipleRootNodes,\n keymapHasLayerBindingsWithNonBehaviorStarter,\n warningFlags: {\n MISSING_ROOT_NODE,\n USING_ZMK_NODEFREE_MACROS,\n USING_ZMK_MACRO_MACRO,\n USING_MULTIPLE_ROOT_NODES,\n USING_MIRYOKU_DTSI,\n USING_NON_ZMK_MACRO,\n USING_AUTOSHIFT_MACRO\n }\n}\n","const compact = require('lodash/compact')\nconst { getParser } = require('devicetree')\n\nconst KeymapDocument = require('./devicetree/keymap-document')\nconst {\n keymapUsesNodefreeConfigHelpers,\n keymapUsesMiryoku,\n keymapBindingsUsePreprocessorMacros,\n keymapHasNoRootNodes,\n keymapHasLayerBindingsWithNonBehaviorStarter,\n warningFlags: { USING_NON_ZMK_MACRO }\n} = require('./devicetree/sanity-checks')\nconst { parseStringLiteral } = require('devicetree/lib/helpers/values')\n\nasync function extractKeymapData (keymapText) {\n const parser = await getParser()\n const document = new KeymapDocument(parser, keymapText)\n\n try {\n return {\n warningFlags: extractWarnings(document),\n defines: extractDefines(document),\n headers: extractLocalHeaders(document),\n chosen: document.getChosenProperties(),\n behaviors: document.behaviorCollection.extractCollection(),\n layers: document.layerCollection.extractCollection(),\n combos: document.comboCollection.extractCollection(),\n macros: document.macroCollection.extractCollection()\n }\n } catch (err) {\n if (keymapHasLayerBindingsWithNonBehaviorStarter(document)) {\n return {\n warningFlags: [USING_NON_ZMK_MACRO],\n defines: {},\n headers: [],\n chosen: {},\n behaviors: [],\n layers: [],\n combos: [],\n macros: []\n }\n }\n console.error(err)\n return {\n warningFlags: ['KEYMAP_PARSING_FAILED'],\n defines: {},\n headers: [],\n chosen: {},\n behaviors: [],\n layers: [],\n combos: [],\n macros: []\n }\n } finally {\n document.cleanup()\n }\n}\n\nfunction extractWarnings (document) {\n return compact([\n keymapHasNoRootNodes(document),\n keymapUsesNodefreeConfigHelpers(document),\n keymapUsesMiryoku(document),\n keymapBindingsUsePreprocessorMacros(document)\n ])\n}\n\nfunction extractDefines (document) {\n return document.tree.rootNode.namedChildren.reduce((acc, node) => {\n if (node.type === 'preproc_def') {\n const name = node.childForFieldName('name').text\n const value = node.childForFieldName('value')?.text.trim()\n\n acc[name] = value\n }\n\n return acc\n }, {})\n}\n\nfunction extractLocalHeaders (document) {\n return document.tree.rootNode.namedChildren.reduce((acc, node) => {\n if (node.type === 'preproc_include') {\n const path = node.childForFieldName('path')\n if (path.type === 'string_literal') {\n acc.push(parseStringLiteral(path))\n }\n }\n\n return acc\n }, [])\n}\n\nmodule.exports = extractKeymapData\n","const times = require('lodash/times')\n\nfunction renderLayout (layout, layer, opts = {}) {\n const { margin = 2 } = opts\n const table = layer.reduce((map, code, i) => {\n // TODO: this would be better as a loop over `layout`, checking for a\n // matching element in the `layer` array. Or, alternatively, an earlier\n // validation that asserts each layer is equal in length to the number of\n // keys in the layout.\n if (layout[i]) {\n const { row = 0, col } = layout[i]\n map[row] = map[row] || []\n map[row][col || map[row].length] = code\n }\n\n return map\n }, [])\n\n const rowIndices = Object.keys(table)\n const columns = Math.max(...rowIndices.map(i => table[i].length))\n const columnIndices = times(columns, n => n)\n const columnWidths = columnIndices.map(col => Math.max(\n ...rowIndices.map(row => table[row][col]?.length || 0)\n ))\n\n return table.map((row, i) => {\n return columnIndices.map(i => {\n const noMoreValues = row.slice(i).every(col => col === undefined)\n const padding = columnWidths[i] + (\n i === 0 ? '' : margin\n )\n\n if (noMoreValues) return ''\n if (!row[i]) return ' '.repeat(padding)\n return row[i].padStart(padding)\n }).join('').replace(/\\s+$/, '')\n }).join('\\n')\n}\n\nmodule.exports = renderLayout\n","const isNumber = require('lodash/isNumber')\n\nclass InfoValidationError extends Error {\n constructor (errors) {\n super()\n this.name = 'InfoValidationError'\n this.errors = errors\n }\n}\n\nfunction validateInfoJson (info) {\n const errors = []\n\n if (typeof info !== 'object' || info === null) {\n errors.push('info.json root must be an object')\n } else if (!info.layouts) {\n errors.push('info must define \"layouts\"')\n } else if (typeof info.layouts !== 'object' || info.layouts === null) {\n errors.push('layouts must be an object')\n } else if (Object.values(info.layouts).length === 0) {\n errors.push('layouts must define at least one layout')\n } else {\n for (const name in info.layouts) {\n const layout = info.layouts[name]\n if (typeof layout !== 'object' || layout === null) {\n errors.push(`layout ${name} must be an object`)\n } else if (!Array.isArray(layout.layout)) {\n errors.push(`layout ${name} must define \"layout\" array`)\n } else {\n const anyKeyHasPosition = layout.layout.some(key => (\n key?.row !== undefined ||\n key?.col !== undefined\n ))\n\n for (const i in layout.layout) {\n const key = layout.layout[i]\n const keyPath = `layouts[${name}].layout[${i}]`\n\n if (typeof key !== 'object' || key === null) {\n errors.push(`Key definition at ${keyPath} must be an object`)\n } else {\n const optionalNumberProps = ['u', 'h', 'r', 'rx', 'ry']\n if (!isNumber(key.x)) {\n errors.push(`Key definition at ${keyPath} must include \"x\" position`)\n }\n if (!isNumber(key.y)) {\n errors.push(`Key definition at ${keyPath} must include \"y\" position`)\n }\n for (const prop of optionalNumberProps) {\n if (prop in key && !isNumber(key[prop])) {\n errors.push(`Key definition at ${keyPath} optional \"${prop}\" must be number`)\n }\n }\n for (const prop of ['row', 'col']) {\n if (anyKeyHasPosition && !(prop in key)) {\n errors.push(`Key definition at ${keyPath} is missing property \"${prop}\"`)\n } else if (prop in key && (!Number.isInteger(key[prop]) || key[prop] < 0)) {\n errors.push(`Key definition at ${keyPath} \"${prop}\" must be a non-negative integer`)\n }\n }\n }\n }\n\n const keysByPosition = layout.layout.reduce((acc, key, i) => {\n const { row, col } = key\n const position = `(${row},${col})`\n\n if (row !== undefined && col !== undefined) {\n acc[position] = [...(acc[position] || []), i]\n }\n\n return acc\n }, {})\n\n for (const group of Object.values(keysByPosition)) {\n if (group.length <= 1) {\n continue\n }\n\n const { row, col } = layout.layout[group[0]]\n const coords = `{row: ${row}, col: ${col}}`\n for (const index of group) {\n const keyPath = `layouts[${name}].layout[${index}]`\n errors.push(`Key definition at ${keyPath} has overlapping position ${coords}`)\n }\n }\n\n errors.push(...validateSequentialRows(name, layout.layout))\n errors.push(...validateSequentialColumns(name, layout.layout))\n }\n }\n }\n\n if (errors.length) {\n throw new InfoValidationError(errors)\n }\n}\n\nfunction validateSequentialRows (name, layout) {\n let currentRow = -Infinity\n const errors = []\n\n for (const index of layout.keys()) {\n const { row } = layout[index]\n if (row === undefined) {\n continue\n }\n\n if (row < currentRow) {\n const keyPath = `layouts[${name}].layout[${index}]`\n errors.push(`Row index at ${keyPath} is not sequential`)\n } else {\n currentRow = row\n }\n }\n\n return errors\n}\n\nfunction validateSequentialColumns (name, layout) {\n let currentRow = 0\n let currentCol = -Infinity\n const errors = []\n\n for (const index of layout.keys()) {\n const { row, col } = layout[index]\n if (row === undefined || col === undefined) {\n continue\n }\n\n if (currentRow !== row) {\n currentRow = row\n currentCol = -Infinity\n }\n\n if (col < currentCol) {\n const keyPath = `layouts[${name}].layout[${index}]`\n errors.push(`Column index at ${keyPath} is not sequential`)\n } else {\n currentCol = col\n }\n }\n\n return errors\n}\n\nmodule.exports = {\n InfoValidationError,\n validateInfoJson\n}\n","/**\n * Remove common indentation from lines of a multiline string\n * @param {String} text a multiline string\n * @returns {String}\n */\nfunction dedent (text) {\n return _dedentedLines(text).join('\\n')\n}\n\nfunction _dedentedLines (text) {\n const lines = text.split('\\n')\n const minIndentation = lines.reduce((leastIndentation, line) => {\n const match = line.match(/^(\\s*)\\S/)\n\n if (!match) {\n return leastIndentation\n }\n\n return Math.min(leastIndentation, match[1].length)\n }, Infinity)\n\n return lines.map(line => (\n line.slice(0, minIndentation).match(/^\\s+$/)\n ? line.slice(minIndentation)\n : line\n ))\n}\n\n/**\n * Replace base indentation with a custom indentation string on all lines\n * @param {String} text\n * @param {String} indentation\n * @returns {String}\n */\nfunction reindent (text, indentation) {\n return _dedentedLines(text)\n .map(line => indentation + line)\n .join('\\n')\n}\n\nfunction getPosition (text, index) {\n let row, idx\n for (\n row = 0, idx = 0;\n idx !== -1;\n row++, idx = text.indexOf('\\n', idx + 1)\n );\n\n return { row, col: index - idx }\n}\n\nfunction removeStartingWhitespace (text) {\n return text.split('\\n')\n .reduce((lines, line) => {\n if (lines.length > 0 || line.match(/\\S/)) {\n lines.push(line)\n }\n return lines\n }, [])\n .join('\\n')\n}\n\nfunction removeTrailingWhitespace (text) {\n return text.split('\\n')\n .reverse()\n .reduce((lines, line) => {\n if (lines.length > 0 || line.match(/\\S/)) {\n lines.push(line)\n }\n return lines\n }, [])\n .reverse()\n .join('\\n')\n}\n\nmodule.exports = {\n dedent,\n reindent,\n getPosition,\n removeStartingWhitespace,\n removeTrailingWhitespace\n}\n","const merge = require('lodash/merge')\nconst isMatch = require('lodash/isMatch')\nconst uniq = require('lodash/uniq')\n\n/** @typedef {('string' | 'boolean' | 'int' | 'array' | 'phandle' | 'phandles' | 'phandle-array' | 'integer-union')} PropertyType */\n/** @typedef {{ type: PropertyType, required?: boolean, const?: any, default?: any, enum?: Array, description?: string }} PropertyDefinition */\n/** @typedef {Object.} Properties */\n/** @typedef {{ description?: string, compatible: string, include: string, properties: Properties }} BehaviorSchema */\n/** @typedef {Object.} */\nconst behaviorBindings = require('./data/extracted-data/behaviors.json')\n/** @type {Array} */\nconst behaviorAdditions = require('./data/overlay-data/behaviors-additions.json')\nconst behaviorSchemaOverlays = require('./data/overlay-data/behavior-schemas-overlay.json')\nconst behaviorOverlays = require('./data/overlay-data/behaviors-overlay.json')\n\nObject.assign(behaviorSchemas, behaviorSchemaAdditions)\nbehaviorBindings.push(...behaviorAdditions)\n\nfunction mergeBehaviorOverlays (base, overlays) {\n const baseValues = Array.isArray(base) ? base : Object.values(base)\n\n for (const value of baseValues) {\n for (const { match, ...overlay } of overlays) {\n if (isMatch(value, match)) {\n merge(value, overlay)\n }\n }\n }\n}\n\nmergeBehaviorOverlays(behaviorSchemas, behaviorSchemaOverlays)\nmergeBehaviorOverlays(behaviorBindings, behaviorOverlays)\n\nconst standardBehaviorIncludeFiles = uniq(\n behaviorOverlays.flatMap(overlay => overlay.includes || [])\n)\n\nfor (const behavior of behaviorBindings) {\n const schema = behaviorSchemas[behavior.compatible]\n merge(behavior, { schema })\n}\n\nmodule.exports = {\n behaviorSchemas,\n behaviorBindings,\n behaviorOverlays,\n behaviorSchemaOverlays,\n standardBehaviorIncludeFiles,\n mergeBehaviorOverlays\n}\n","const singleValue = value => ({ value: '&kp', params: [{ value, params: [] }] })\n\nconst patternMappings = [\n { pattern: /^[0-9]$/, convert: digit => singleValue(`N${digit}`) },\n { pattern: /^[a-z]$/, convert: char => singleValue(char.toUpperCase()) },\n {\n pattern: /^[A-Z]$/,\n convert: char => ({\n value: '&kp',\n params: [{\n value: 'LS',\n params: [{\n value: char.toUpperCase(),\n params: []\n }]\n }]\n })\n }\n]\n\nconst simpleMappings = {\n '!': singleValue('EXCL'),\n '@': singleValue('AT'),\n '#': singleValue('POUND'),\n '$': singleValue('DLLR'),\n '%': singleValue('PRCNT'),\n '^': singleValue('CARET'),\n '&': singleValue('AMPS'),\n '*': singleValue('STAR'),\n '(': singleValue('LPAR'),\n ')': singleValue('RPAR'),\n '\\n': singleValue('RET'),\n ' ': singleValue('SPACE'),\n '-': singleValue('MINUS'),\n '_': singleValue('UNDER'),\n '=': singleValue('EQUAL'),\n '+': singleValue('PLUS'),\n '[': singleValue('LBKT'),\n ']': singleValue('LBRC'),\n '{': singleValue('RBKT'),\n '}': singleValue('RBRC'),\n '\\\\': singleValue('BSLH'),\n '|': singleValue('PIPE'),\n '': singleValue('TILDE2'),\n ';': singleValue('SEMI'),\n ':': singleValue('COLON'),\n '\\'': singleValue('SQT'),\n '\"': singleValue('DQT'),\n '`': singleValue('GRAVE'),\n '~': singleValue('TILDE'),\n ',': singleValue('COMMA'),\n '<': singleValue('LT'),\n '.': singleValue('DOT'),\n '>': singleValue('GT'),\n '/': singleValue('FSLH'),\n '?': singleValue('QMARK')\n}\n\nfunction mapCharacter (char) {\n if (simpleMappings[char]) {\n return simpleMappings[char]\n }\n\n for (const { pattern, convert } of patternMappings) {\n if (char.match(pattern)) {\n return convert(char)\n }\n }\n}\n\nmodule.exports = {\n mapCharacter\n}\n","const keycodes = require('./data/extracted-data/keycodes.json')\nconst keycodeGlyphs = {\n basic: require('./data/overlay-data/keycode-glyphs.json'),\n unicode: require('./data/overlay-data/keycode-glyphs-unicode.json'),\n platforms: {\n mac: require('./data/overlay-data/keycode-glyphs-macos.json'),\n win: require('./data/overlay-data/keycode-glyphs-windows.json')\n }\n}\n\nmodule.exports = {\n keycodes,\n keycodeGlyphs\n}\n","const times = require('lodash/times')\nconst { behaviorSchemas, behaviorBindings } = require('./behaviors')\n\nconst parameterOverlays = require('./data/overlay-data/behavior-parameters.json')\nconst overlaysByCode = parameterOverlays.reduce((map, overlay) => {\n if (overlay.match.code) {\n map[`&${overlay.match.code}`] = overlay\n }\n\n return map\n}, {})\n\nconst overlaysByCompatible = parameterOverlays.reduce((map, overlay) => {\n if (overlay.match.compatible) {\n map[overlay.match.compatible] = overlay\n }\n\n return map\n}, {})\n\n/**\n * Parsing keymap gives us a number of custom behaviour definitions\n * Some custom behaviours may reference other behaviours\n * Some custom behaviours may reference other custom behaviours\n *\n * We need to add all new behaviour to a new map upon loading\n * After populating the map with all new behaviours we can resolve bind params\n *\n * Keep a list of \"visited\" behaviours\n * For each behaviour\n * For each behaviour referenced in bindings\n * Resolve behaviour reference to get params list\n * If behaviour reference already exists in list of visited behaviours, bail\n * If number of references to resolve exceeds X, bail\n */\n\nfunction BehaviorResolutionError (message) {\n this.message = message\n this.name = 'BehaviorResolutionError'\n}\n\nfunction matchOverlay (behavior) {\n const refs = behavior.labels.map(label => `&${label}`)\n const compatible = behavior.properties.compatible?.parsed\n\n for (const ref of refs) {\n if (overlaysByCode[ref]) {\n return overlaysByCode[ref]\n }\n }\n\n if (overlaysByCompatible[compatible]) {\n return overlaysByCompatible[compatible]\n }\n}\n\n/** @typedef {string} Identifier */\n/** @typedef {string} Label */\n/** @typedef {{ parsed: any, raw: string, useRaw?: boolean }} PropertyValue */\n/** @typedef {Object.} Properties */\n/** @typedef {{ name: string, labels: Array, properties: Properties }} ParsedBehavior */\n\nfunction parseNumBindingCells (behavior, prop = '#binding-cells') {\n const parsed = behavior.properties?.[prop]?.parsed\n\n if (typeof parsed === 'number') {\n return parsed\n }\n\n // For unrecognized behaviors we don't have the schema to parse the\n // \"#binding-cells\" property like we'd expect, so let's assume its a single\n // integer literal and parse the raw value\n const raw = behavior.properties?.[prop]?.raw || '<>'\n const match = raw.match(/<(\\d+)>/)\n\n if (match) {\n return Number(match[1])\n }\n}\n\nfunction behaviorMap (map, behavior) {\n for (const label of behavior.labels) {\n map[`&${label}`] = behavior\n }\n return map\n}\n\n/**\n * Attempt to provide parameter types for behaviours with binding-cells.\n * @param {Array} behaviors - custom behavior definitions\n */\nfunction resolveBehaviorParams (behaviors) {\n const standardBindingsMap = behaviorBindings.reduce(behaviorMap, {})\n // Here we attempt to resolve the binding to a \"known\" behaviour for which\n // I have already manually described the parameters. Failing that, this\n // would fall back to a single \"code\" parameter for each. This assumes\n // that a custom hold-tap wouldn't want something like \"hold for layer\"\n // and \"tap to connect to BT profile 1\".\n const newBindingsMap = behaviors.reduce(behaviorMap, {})\n\n const allBehaviors = { ...standardBindingsMap, ...newBindingsMap }\n\n const parameters = {}\n\n /**\n * @param {ParsedBehavior} behavior\n * @param {Array} [queue=[]]\n * @returns {void}\n */\n function resolve (behavior, queue = []) {\n const code = `&${behavior.labels[0]}`\n\n if (parameters[code]) {\n return parameters[code]\n }\n\n const overlay = matchOverlay(behavior)\n\n if (overlay) {\n return overlay.params\n }\n\n const compatible = behavior.properties?.compatible?.parsed\n const schema = behaviorSchemas[compatible]\n\n const bindingCells = parseNumBindingCells(behavior) ?? parseNumBindingCells(behavior, '#sensor-binding-cells')\n const bindingDependencies = getBehaviorDependencies(behavior, schema, allBehaviors)\n\n // console.log('resolving for', {\n // compatible,\n // schema,\n // bindingsType,\n // bindingCells,\n // bindings\n // })\n\n if (!bindingCells) {\n return []\n }\n\n if (!bindingDependencies.length) {\n return times(bindingCells, () => ({ type: 'string', raw: true }))\n }\n\n // This implementation relies on the existing pattern for behaviors which\n // reference other behaviors without parameters (hold-tap and sticky-key)\n // will only provide a single parameter to each referenced behavior without\n // concerning itself with the referenced behavior's binding cell count.\n // A possible future exception to this is parameterized macros:\n // https://github.com/zmkfirmware/zmk/pull/1232#issuecomment-1478977559\n // This will require re-visiting this solution.\n // Update: Parameterized macros are now available. The short term solution\n // is to resolve a number of raw parameters equal to #binding-cells for\n // phandle-array type bindings (currently this only affects macros). A more\n // specific parameter resolver for macros can process the bindings array\n // with knowledge of parameter placeholders.\n return bindingDependencies.reduce((params, [binding, paramIndex]) => {\n // This implies the bindings property we're inspecting is actually a\n // phandles-array type (behavior with params) and not phandle/phandles.\n // This shouldn't happen and stricter checking earlier on would be wise.\n if (!binding.startsWith('&')) {\n return params\n }\n\n // TODO: does this need to consider all aliases?\n if (queue.includes(binding)) {\n throw new BehaviorResolutionError(`Circular reference in bindings: \"&${behavior.labels[0]}\" -> \"${binding}\".`)\n } else if (queue.length > 3) {\n throw new BehaviorResolutionError('Reference depth limit exceeded.')\n }\n\n // This check is static so it can't resolve something like `&bt` to the\n // parameters \"command\" and \"connection profile\".\n // TODO: write some tests so that this is defined.\n const nextBehavior = newBindingsMap[binding] || standardBindingsMap[binding]\n\n // Not sure if I'm ok with this. Previously the idea was that a behavior\n // referencing an unrecognized behavior cannot resolve parameters at all,\n // whereas now it just treats that as having a single raw parameter and\n // includes an error message property that nothing else uses.\n if (!nextBehavior) {\n behavior.error = `Unrecognized behavior binding \"${binding}\".`\n return [...params, { raw: true }]\n }\n\n try {\n const resolved = resolve(nextBehavior, [...queue, binding])\n for (const label of nextBehavior.labels) {\n parameters[`&${label}`] = resolved\n }\n params.push(resolved[paramIndex] || { type: 'placeholder' })\n } catch (error) {\n if (error instanceof BehaviorResolutionError) {\n nextBehavior.error = error.message\n parameters[binding] = []\n }\n throw error\n }\n\n return params\n }, [])\n }\n\n for (const behavior of behaviors) {\n // if (!behavior.properties.bindings) {\n // continue\n // }\n\n try {\n const resolved = resolve(behavior)\n for (const alias of behavior.labels) {\n parameters[`&${alias}`] = resolved\n }\n } catch (error) {\n if (!(error instanceof BehaviorResolutionError)) {\n throw error\n }\n\n console.error('Failed to resolve behavior parameters', error)\n behavior.error = error.message\n const resolved = times(parseNumBindingCells(behavior) || 0, () => ({ raw: true }))\n for (const alias of behavior.labels) {\n parameters[`&${alias}`] = resolved\n }\n }\n }\n\n return parameters\n}\n\nfunction getBehaviorDependencies (behavior, schema, behaviors) {\n if (isParameterizedMacroBehavior(behavior)) {\n return getParameterizedMacroDependencies(behavior, behaviors)\n }\n\n return (behavior.properties?.bindings?.parsed || []).map(binding => ([binding, 0]))\n}\n\nfunction isParameterizedMacroBehavior (behavior) {\n return ([\n 'zmk,behavior-macro-one-param',\n 'zmk,behavior-macro-two-param'\n ]).includes(behavior.properties?.compatible?.parsed)\n}\n\nfunction getParameterizedMacroDependencies (macro, behaviors) {\n const bindings = (macro.properties.bindings?.parsed || []).map(node => node.value)\n const bindingTypes = bindings.map(bind => behaviors[bind]?.properties?.compatible?.parsed) || []\n\n const param1to1 = findFirstNonControlBinding(bindings, behaviors, bindingTypes.indexOf('zmk,macro-param-1to1'))\n const param1to2 = findFirstNonControlBinding(bindings, behaviors, bindingTypes.indexOf('zmk,macro-param-1to2'))\n\n const dependencies = []\n\n if (param1to1) {\n dependencies.push([param1to1, 0])\n } else if (param1to2) {\n dependencies.push([param1to2, 1])\n } else {\n dependencies.push(['&none', 0])\n }\n\n if (macro.properties.compatible.parsed === 'zmk,behavior-macro-two-param') {\n const param2to1 = findFirstNonControlBinding(bindings, behaviors, bindingTypes.indexOf('zmk,macro-param-2to1'))\n const param2to2 = findFirstNonControlBinding(bindings, behaviors, bindingTypes.indexOf('zmk,macro-param-2to2'))\n\n if (param2to1) {\n dependencies.push([param2to1, 0])\n } else if (param2to2) {\n dependencies.push([param2to2, 1])\n } else {\n dependencies.push(['&none', 0])\n }\n }\n\n return dependencies\n}\n\n/**\n * Search an array of bindings for the first non macro control binding\n * @param {Array} bindings\n * @param {Object} behaviors\n * @param {Number} [startIndex=0]\n * @returns {Object|null}\n */\nfunction findFirstNonControlBinding (bindings, behaviors, startIndex = 0) {\n if (startIndex === -1) {\n return null\n }\n\n for (let i = Math.min(startIndex, bindings.length - 1); i < bindings.length; i++) {\n const binding = bindings[i]\n const type = behaviors[binding]?.properties?.compatible?.parsed\n if (!(\n type?.startsWith?.('zmk,macro-') ||\n type?.startsWith?.('zmk,behavior-macro-')\n )) {\n return binding\n }\n }\n}\n\nmodule.exports = {\n resolveBehaviorParams,\n getParameterizedMacroDependencies\n}\n"],"names":["module","exports","removeStartingWhitespace","removeTrailingWhitespace","reindent","dedent","require","getLabeledItem","getNodeLabels","DEFAULT_INDENT","DEFAULT_MULTILINE_INTEGER_CELLS_INDENT","isMultilineNode","node","text","indexOf","isInlineComment","type","previousSibling","endPosition","row","startPosition","getNodeIndentation","tab","repeat","getNodeDepth","n","depth","stop","tree","rootNode","parent","id","shouldIncludeBlank","nodeA","nodeB","sameType","namedChildren","length","slice","some","hasAddress","childForFieldName","getAddress","formatLabels","labels","map","join","formatNode","options","indent","identifier","children","indentation","formatChildren","reduce","lines","childNode","i","arr","push","multilineIntegerCellsIndent","noValue","simpleValue","singleIntegerCell","bindingsLines","split","concat","line","formatPropertyNode","trimEnd","getModelineConfiguration","config","contents","startsWith","trim","match","key","jsonValue","value","JSON","parse","Object","assign","assert","reverse","getNodeLabelNodes","getNodeChildrenByFieldName","fieldName","cursor","walk","gotoFirstChild","isNamed","currentNode","isField","currentFieldName","gotoNextSibling","delete","findChildrenByIdentifier","nameOrMatch","filter","find","sub","nodesAreConsecutive","nodes","every","nextSibling","label","labeledItemNode","findChildByIdentifier","listNodes","opts","stripNewlines","limit","replace","console","log","parseStringLiteral","parseIntegerCells","parseIntegerArray","parsePhandles","parsePhandle","parsePhandleArray","parseIntegerUnion","serializeIntValue","serializeArrayValue","findNodeProperty","propertyName","getPropertyNode","child","getPropertyValues","property","propertyNode","parsePropertyFromSchema","schema","values","getProperty","syntaxNode","name","getPropertyValue","parsePropertiesFromSchema","keys","properties","prop","propSchema","undefined","parsed","serializePropertyFromSchema","phandle","bindings","group","v","toString","BreadthFirstIterator","maxDepth","queue","current","shift","DepthFirstIterator","stack","unshift","searchTree","predicate","single","depthFirst","iter","matches","createPredicateForCompatible","compatible","RegExp","test","TypeError","findLabeledItem","findNodeByIdentifier","findNodeWithCompatible","findNodesWithCompatible","isNegativeInteger","isNumberishType","includes","isBindingType","isBindingRef","extractInteger","Number","flatMap","cells","serializeIntegerCell","sanitizeIdentifier","ReferenceError","difference","isEqual","partition","NodeCollection","managedProperties","_cached_container_node","_cached_container_tree_version","_cached_collection_nodes","_cached_collection_tree_version","constructor","document","this","lookupContainerNode","bind","injectContainerNode","lookupNodes","injectNode","container","_parse_version","updateCollection","collection","flushChanges","originalIndices","reusedIndices","index","removedIndices","updates","additions","updateNode","removeNode","update","existing","extractNode","updateNodeName","updateNodeLabels","updateNodeProperties","cleanupNodeProperties","replaceNode","replaceNodeLabels","setProperty","deleteProperty","acc","raw","extractCollection","sortBy","TreeSitter","getPosition","_parser","getParser","async","init","language","Language","load","global","window","__dirname","setLanguage","DevicetreeDocument","parser","_enableChangeBuffering","_bufferedChanges","cleanup","inputEdit","replacementText","startIndex","newEndIndex","_reparse","chunks","nextUpdate","prevEnd","oldEndIndex","preChunk","chunk","newContent","documentText","precedingNewline","lastIndexOf","start","replacement","endIndex","oldEndPosition","newEndPosition","replaceRange","skipToIndex","source","labeledNode","newLabels","labelNodes","sorted","serializedLabels","insertTextBeforeNode","insertTextAfterNode","addChildNode","parentNode","closingBrace","newText","compact","flatten","get","keyBy","omitBy","uniq","behaviorBindings","renderLayout","encodeKeyBinding","KeymapDocument","behavioursByBind","getBehaviorsUsed","keymap","behaviors","layers","combos","macros","binding","layout","original","featureFlags","layer","useRaw","formatLayerKeybinds","behaviorHeaders","devicetreeKeymap","mergeUpdated","replaceBehaviourIncludes","err","error","groupPhandleArrayBindings","bindingCells","MACRO_CONTROL_BEHAVIOURS","encodeBindValue","params","paramString","parseBindings","parseKeyBinding","paramsPattern","code","s","defines","groupMacroBindings","rows","behaviourBind","at","behaviorSchemas","rootNodes","_","behavior","last","nodeContent","extracted","super","extractedProp","bindStrings","bindingsValue","bindCode","serialized","bindString","comboSchema","combo","legacyParse","legacyNode","legacyMapping","legacyParseNodes","layerSchema","updateLayerPositions","positionMap","nextIndex","j","targetIndexOrder","pick","BehaviorCollection","macro","serializeMacroBindings","prototype","call","standardBehaviorIncludeFiles","MacroCollection","ComboCollection","LayerCollection","args","macroCollection","comboCollection","layerCollection","behaviorCollection","getChosenProperties","chosen","updated","enableBehaviorEditing","sort","behaviorIncludes","ranges","lastInclude","firstDefine","firstDtNode","MISSING_ROOT_NODE","USING_ZMK_NODEFREE_MACROS","USING_MULTIPLE_ROOT_NODES","USING_MIRYOKU_DTSI","USING_NON_ZMK_MACRO","USING_AUTOSHIFT_MACRO","keymapHasNoRootNodes","keymapUsesNodefreeConfigHelpers","macroNames","keymapUsesMiryoku","keymapBindingsUsePreprocessorMacros","usingAutoshiftMacro","zmkPreprocFunctions","layerNode","bindingsNode","keymapHasMultipleRootNodes","firstRootNode","keymapHasLayerBindingsWithNonBehaviorStarter","firstBindType","integerCells","warningFlags","USING_ZMK_MACRO_MACRO","extractWarnings","extractDefines","extractLocalHeaders","path","keymapText","headers","times","margin","table","col","rowIndices","columns","Math","max","columnIndices","columnWidths","noMoreValues","padding","padStart","isNumber","InfoValidationError","Error","errors","validateSequentialRows","currentRow","keyPath","validateSequentialColumns","currentCol","validateInfoJson","info","layouts","Array","isArray","anyKeyHasPosition","optionalNumberProps","x","y","isInteger","keysByPosition","position","coords","_dedentedLines","minIndentation","leastIndentation","min","Infinity","idx","merge","isMatch","behaviorSchemaAdditions","behaviorAdditions","behaviorSchemaOverlays","behaviorOverlays","mergeBehaviorOverlays","base","overlays","baseValues","overlay","singleValue","patternMappings","pattern","convert","digit","char","toUpperCase","simpleMappings","mapCharacter","keycodes","keycodeGlyphs","basic","unicode","platforms","mac","win","parameterOverlays","overlaysByCode","overlaysByCompatible","BehaviorResolutionError","message","parseNumBindingCells","behaviorMap","getParameterizedMacroDependencies","bindingTypes","param1to1","findFirstNonControlBinding","param1to2","dependencies","param2to1","param2to2","resolveBehaviorParams","standardBindingsMap","newBindingsMap","allBehaviors","parameters","resolve","refs","ref","matchOverlay","bindingDependencies","isParameterizedMacroBehavior","getBehaviorDependencies","paramIndex","nextBehavior","resolved","alias"],"sourceRoot":""} \ No newline at end of file -- cgit v1.2.3