Truly Ergonomic keycode table editor — v3yk firmware

Truly Ergonomic keycode table editor

HTML

<address>created by <a href="[email protected]">Yuri Khan</a><br />
configurator released into public domain<br />
firmware used under permission from Truly Ergonomic
</address>

<select id="layout">
    <option value="ansi" selected="selected">ANSI</option>
    <option value="iso">ISO</option>
    <option value="jis">JIS</option>
    <option value="keypad">Keypad</option>
    <option value="rare">Rare keys</option>
    <option value="media">Media and Power</option>
    <option value="al">Application Launch</option>
    <option value="ac">Application Control</option>
    <option value="exotic">Exotic needs</option>
</select>

<label><input type="checkbox" id="warn"/>Dim Linux-incompatible keys</label>

<div id="sources" class="ansi"><div id="warning-wrapper">
    <div id="kbd">
    <div id="fkeys" class="row">
        <div class="main"
            ><kbd id="esc" class="dark" data-u="29">Esc</kbd
            ><span class="spacer"></span
            ><kbd data-u="3A">F1</kbd
            ><kbd data-u="3B">F2</kbd
            ><kbd data-u="3C">F3</kbd
            ><kbd data-u="3D">F4</kbd
            ><span class="spacer"></span
            ><kbd class="dark" data-u="3E">F5</kbd
            ><kbd class="dark" data-u="3F">F6</kbd
            ><kbd class="dark" data-u="40">F7</kbd
            ><kbd class="dark" data-u="41">F8</kbd
            ><span class="spacer"></span
            ><kbd data-u="42">F9</kbd
            ><kbd data-u="43">F10</kbd
            ><kbd data-u="44">F11</kbd
            ><kbd data-u="45">F12</kbd
        ></div>
        <div class="nav"
            ><kbd class="dark" data-u="46">⎙</kbd
            ><kbd class="dark" data-u="47">⇳</kbd
            ><kbd class="dark" data-u="48">⎊</kbd
        ></div>
        <div class="keypad"
            ><kbd class="dark" data-u="DE">T⇭</kbd
            ><kbd class="dark" data-u="AD"></kbd
            ><kbd class="dark" data-u="AE"></kbd
        ></div>
    </div>
    <div class="row">
        <div...

CSS

body { font-family: Ubuntu, Arial, Helvetica, sans-serif; }

address { float: right; text-align: right; opacity: 0.5; font-size: smaller; }
form { display: block; margin-top: 5mm; background-color: #d3d7cf; color: black; padding: 5mm; }
textarea { width: 100%; height: 18em; background-color: #2e3436; color: #73d216; font-family: monospace; }
.hidden { display: none; }
.warning { background-color: #f78787; color: #000000; border-radius: 5mm; }

#targets>div { display: inline-block; vertical-align: top; width: 157mm; }
#targets>#teck { text-align: center;
    padding: 5mm 5mm 20mm 5mm; background-color: #2e3436; color: #f7f8f5;
    border-top: 2px solid #555753; border-left: 2px solid #555753;
    border-bottom: 2px solid #000000; border-right: 2px solid #000000;
    border-radius: 3mm;
}
#targets>#notes { display: inline-block; width: 81mm; }
#layer-selector { margin-bottom: 10mm; text-align: left; }
#pc { float: left; } #mac { float: right; } #t-fkeys { clear: both; }
#t-keys input { width: 9mm; height: 9mm;
    background-color: #2e3436; color: #f7f8f5;
    background: linear-gradient(to right, rgba(85,87,83,0) 0%, rgba(85,87,83,0.3) 100%);
    border-top: 2px solid #555753; border-left: 2px solid #555753;
    border-bottom: 2px solid #000000; border-right: 2px solid #000000;
    border-radius: 4px; font-size: 100%;
}
#targets #layer-selector { color: #d3d7cf; }
#targets #teck.layer-1 #t-num, #targets #teck.layer-4 #t-num {
    background: radial-gradient(circle at center 75%,
        rgba(32,32,255,1) 0%,
        rgba(32,32,255,0.25) 50%,
        rgba(32,32,255,0) 100%);
}
#targets #teck.layer-2 .pc-fn, #targets #teck.layer-5 .mac-fn {
    background-color: #171a1b; color: #f7f8f5;
    border-top: 2px solid #000000; border-left: 2px solid #000000;
    border-bottom: 2px solid #000000; border-right: 2px solid #000000;
}
#targets #teck.layer-2 input, #targets #teck.layer-5 input {
    color: #97c4f0;
}
#targets .spacer { display: inline-block; width: 4mm;...

JavaScript

var _ = null;

function warn(warning) {
    function _warn(data)
    {
        if (typeof(data) === 'string')
        {
            return _warn([data]);
        }
        var result = data;
        result.warning = warning;
        return result;
    }
    return _warn;
}

var L = warn('Ignored by Linux kernel module');
var W = warn('Wide Linux keycode, unusable by XKB');

var usages = [
    '', '01h', '02h', '03h', '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', ['1!', '1'], ['2@', '2'],
    ['3#', '3'], ['4$', '4'], ['5%', '5'], ['6^', '6'], ['7&', '7'], ['8*', '8'], ['9(', '9'], ['0)', '0'],
    ['⏎', 'Enter'], ['⎋', 'Esc'], ['⌫', 'Backspace', 'Bksp'], ['↹', 'Tab'], ['␣', 'Space'], ['-_', '-'], ['=+', '='], ['[{', '['],
    [']}', ']'], ['\\|', '\\'], ['€#~', 'Euro1'], [';:', ';'], ['\'"', '\''], ['`~', '`'], [',<', ','], ['.>', '.'],
    ['/?', '/'], ['⇬', 'Caps Lock', 'Caps'], 'F1', 'F2', 'F3', 'F4', 'F5', 'F6',
    'F7', 'F8', 'F9', 'F10', 'F11', 'F12', ['⎙', 'PrtScr', 'PrtSc'], ['⇳⃢', 'Scroll Lock', 'Scroll'],
    ['⎉', 'Pause'], ['⎀', 'Insert', 'Ins'], ['⇱', 'Home'], ['⎗', 'Page Up', 'PgUp'], ['⌦', 'Delete', 'Del'], ['⇲', 'End'], ['⎘', 'Page Down', 'PgDn'], ['→', 'Right'],
    ['←', 'Left'], ['↓', 'Down'], ['↑', 'Up'], ['⇭', 'Num Lock', 'Num'], ['÷', 'K/'], ['×', 'K*'], ['−', 'K-'], ['+', 'K+'],
    ['⎆', 'KEnter'], ['1⇲', 'K1'], ['2↓', 'K2'], ['3⎘', 'K3'], ['4←', 'K4'], ['5⎅', 'K5'], ['6→', 'K6'], ['7⇱', 'K7'],
    ['8↑', 'K8'], ['9⎗', 'K9'], ['0⎀', 'K0'], ['.⌦', 'K.'], ['€\\|', 'Euro2'], ['▤', 'Apps', 'App'], ['Ⓘ', 'Power'], ['=', 'K='],
    'F13', 'F14', 'F15', 'F16', 'F17', 'F18', 'F19', 'F20',
    'F21', 'F22', 'F23', 'F24', 'Exec', 'Help', 'Menu', 'Select',
    'Stop', 'Again', 'Undo', 'Cut', 'Copy', 'Paste', 'Find', 'Mute',
    'Vol+', 'Vol−', L(['⇬⃞', 'Locking Caps']), L(['⇭⃞', 'Locking Num']), L(['⇳⃞', 'Locking Scroll']), [',⌦', 'K,'], L(['=⃞', 'K=...