| Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/keyboard/key-manual.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/keyboard/key-manual.js b/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/keyboard/key-manual.js
|
| deleted file mode 100644
|
| index 175258bd88785febd4be610675b2f0e0a899453d..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/keyboard/key-manual.js
|
| +++ /dev/null
|
| @@ -1,671 +0,0 @@
|
| -var _testing = false;
|
| -
|
| -// The index into _keyTable of the key currently being tested.
|
| -var _currKey = 0;
|
| -
|
| -var _keysTotal = 0;
|
| -var _keysGood = 0;
|
| -var _keysBad = 0;
|
| -var _keysSkipped = 0;
|
| -
|
| -var _modifierMode = "None";
|
| -
|
| -var _keydownCapture = [];
|
| -var _keyupCapture = [];
|
| -
|
| -var CAPTURE_KEYCODE = 0;
|
| -var CAPTURE_CODE = 1;
|
| -var CAPTURE_KEY = 2;
|
| -var CAPTURE_SHIFTKEY = 3;
|
| -var CAPTURE_CONTROLKEY = 4;
|
| -var CAPTURE_ALTKEY = 5;
|
| -var CAPTURE_METAKEY = 6;
|
| -
|
| -// An array of KeyInfo for each key to be tested.
|
| -var _keyTable = [];
|
| -
|
| -// KeyInfo fields.
|
| -var KEYINFO_CODE = 0; // |code| for this key
|
| -var KEYINFO_ROW = 1; // Keyboard row
|
| -var KEYINFO_TYPE = 2; // Key type (see below)
|
| -var KEYINFO_WIDTH = 3; // Width of key: 0=normal
|
| -var KEYINFO_KEYCAP = 4; // Keycap string to display
|
| -var KEYINFO_KEY = 5; // Unmodified key value
|
| -var KEYINFO_KEY_SHIFT = 6; // Shifted key value
|
| -
|
| -var KEYTYPE_NORMAL = 0;
|
| -var KEYTYPE_DISABLED = 1; // Key cannot be tested: e.g., CapsLock
|
| -var KEYTYPE_END = 2; // Used to mark end of KeyTable
|
| -var KEYTYPE_MODIFIER = 3; // Modifer key
|
| -
|
| -function clearChildren(e) {
|
| - while (e.firstChild !== null) {
|
| - e.removeChild(e.firstChild);
|
| - }
|
| -}
|
| -
|
| -function setText(e, text) {
|
| - clearChildren(e);
|
| - e.appendChild(document.createTextNode(text));
|
| -}
|
| -
|
| -function setUserAgent() {
|
| - var userAgent = navigator.userAgent;
|
| - uaDiv = document.getElementById("useragent");
|
| - setText(uaDiv, userAgent);
|
| -}
|
| -
|
| -function addEventListener(obj, etype, handler) {
|
| - if (obj.addEventListener) {
|
| - obj.addEventListener(etype, handler, false);
|
| - } else if (obj.attachEvent) {
|
| - obj.attachEvent("on"+etype, handler);
|
| - } else {
|
| - obj["on"+etype] = handler;
|
| - }
|
| -}
|
| -
|
| -function addClass(obj, className) {
|
| - obj.classList.add(className);
|
| -}
|
| -
|
| -function removeClass(obj, className) {
|
| - obj.classList.remove(className);
|
| -}
|
| -
|
| -function addInnerText(obj, text) {
|
| - obj.appendChild(document.createTextNode(text));
|
| -}
|
| -
|
| -function calcLocation(loc) {
|
| - if (loc == 1) return "LEFT";
|
| - if (loc == 2) return "RIGHT";
|
| - if (loc == 3) return "NUMPAD";
|
| - return loc;
|
| -}
|
| -
|
| -function isModifierKey(e) {
|
| - // Shift, Control, Alt
|
| - if (e.keyCode >= 16 && e.keyCode <= 18) {
|
| - return true;
|
| - }
|
| - // Windows, Command or Meta key.
|
| - if (e.keyCode == 224 // Right/Left: Gecko
|
| - || e.keyCode == 91 // Left: WebKit/Blink
|
| - || e.keyCode == 93 // Right: WebKit/Blink
|
| - ) {
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -function init(title, keytable) {
|
| - _keyTable = keytable;
|
| -
|
| - createBody(title, keytable);
|
| -
|
| - setUserAgent();
|
| -
|
| - var input = document.getElementById("input");
|
| - input.disabled = true;
|
| - addEventListener(input, "keydown", onKeyDown);
|
| - addEventListener(input, "keyup", onKeyUp);
|
| - //addEventListener(input, "beforeInput", onBeforeInput);
|
| - //addEventListener(input, "input", onInput);
|
| -}
|
| -
|
| -function onKeyDown(e) {
|
| - // Ignore modifier keys when checking modifier combinations.
|
| - if (_modifierMode != "None" && isModifierKey(e)) {
|
| - return;
|
| - }
|
| -
|
| - _keydownInfo = [e.keyCode, e.code, e.key, e.shiftKey, e.ctrlKey, e.altKey, e.metaKey];
|
| - if (e.keyCode == 9 || e.code == "Tab") {
|
| - e.preventDefault();
|
| - }
|
| -}
|
| -
|
| -function onKeyUp(e) {
|
| - // Ignore modifier keys when checking modifier combinations.
|
| - if (_modifierMode != "None" && isModifierKey(e)) {
|
| - return;
|
| - }
|
| -
|
| - _keyupInfo = [e.keyCode, e.code, e.key, e.shiftKey, e.ctrlKey, e.altKey, e.metaKey];
|
| -
|
| - if (_testing) {
|
| - verifyKey();
|
| - nextKey();
|
| - }
|
| -}
|
| -
|
| -function onBeforeInput(e) {
|
| -}
|
| -
|
| -function onInput(e) {
|
| -}
|
| -
|
| -function addError(elem, str) {
|
| - var p = document.createElement('p');
|
| - p.classList.add("error2");
|
| - p.textContent = str;
|
| - elem.appendChild(p);
|
| -}
|
| -
|
| -function addErrorIncorrect(elem, eventName, attrName, keyEventInfo, attr, expected) {
|
| - addError(elem, "Incorrect " + eventName
|
| - + " |" + attrName + "| = " + keyEventInfo[attr]
|
| - + " - Expected " + expected);
|
| -}
|
| -
|
| -function verifyKeyEventFields(eventName, keyEventInfo, code, key, error) {
|
| - var verifyCode = document.getElementById("opt_attr_code").checked;
|
| - var verifyKey = document.getElementById("opt_attr_key").checked;
|
| - var verifyModifiers = document.getElementById("opt_attr_modifiers").checked;
|
| - var good = true;
|
| -
|
| - if (!verifyCode && !verifyKey && !verifyModifiers) {
|
| - good = false;
|
| - addError(error, "Invalid test: At least one attribute must be selected for testing.");
|
| - }
|
| - if (verifyCode && keyEventInfo[CAPTURE_CODE] != code) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "code", keyEventInfo, CAPTURE_CODE, code);
|
| - }
|
| - if (verifyKey && keyEventInfo[CAPTURE_KEY] != key) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "key", keyEventInfo, CAPTURE_KEY, key);
|
| - }
|
| - if (verifyModifiers) {
|
| - if (keyEventInfo[CAPTURE_SHIFTKEY] != (_modifierMode == "Shift")) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "shiftKey", keyEventInfo, CAPTURE_SHIFTKEY, false);
|
| - }
|
| - if (keyEventInfo[CAPTURE_CONTROLKEY]) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "controlKey", keyEventInfo, CAPTURE_CONTROLKEY, false);
|
| - }
|
| - if (keyEventInfo[CAPTURE_ALTKEY]) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "altKey", keyEventInfo, CAPTURE_ALTKEY, false);
|
| - }
|
| - if (keyEventInfo[CAPTURE_METAKEY]) {
|
| - good = false;
|
| - addErrorIncorrect(error, eventName, "metaKey", keyEventInfo, CAPTURE_METAKEY, false);
|
| - }
|
| - }
|
| -
|
| - return good;
|
| -}
|
| -
|
| -function verifyKey() {
|
| - _keysTotal++;
|
| -
|
| - var keyInfo = _keyTable[_currKey];
|
| - var code = keyInfo[KEYINFO_CODE];
|
| - var key = keyInfo[KEYINFO_KEY];
|
| - var keyShift = keyInfo[KEYINFO_KEY_SHIFT];
|
| -
|
| - var keyCheck = key;
|
| - if (_modifierMode == "Shift") {
|
| - keyCheck = keyShift;
|
| - }
|
| -
|
| - var verifyKeydown = document.getElementById("opt_event_keydown").checked;
|
| - var verifyKeyup = document.getElementById("opt_event_keyup").checked;
|
| -
|
| - var error = document.createElement('div');
|
| - error.classList.add("error");
|
| - var good = true;
|
| -
|
| - if (verifyKeydown) {
|
| - good = verifyKeyEventFields("keydown", _keydownInfo, code, keyCheck, error);
|
| - }
|
| - if (verifyKeyup) {
|
| - good = verifyKeyEventFields("keyup", _keyupInfo, code, keyCheck, error);
|
| - }
|
| -
|
| - if (!verifyKeydown && !verifyKeyup) {
|
| - good = false;
|
| - addError(error, "Invalid test: At least one event must be selected for testing.");
|
| - }
|
| -
|
| - // Allow Escape key to skip the current key.
|
| - var skipped = false;
|
| - if (_keydownInfo[CAPTURE_KEYCODE] == 27 || _keydownInfo[CAPTURE_CODE] == "Escape") {
|
| - good = true;
|
| - skipped = true;
|
| - }
|
| -
|
| - if (!good) {
|
| - var p = document.createElement('p');
|
| - p.classList.add("error1");
|
| - p.textContent = "Error : " + code;
|
| - error.insertBefore(p, error.firstChild);
|
| - }
|
| -
|
| - removeNextKeyHilight();
|
| - if (skipped) {
|
| - _keysSkipped++;
|
| - document.getElementById(code).classList.add("skippedKey")
|
| - } else if (good) {
|
| - _keysGood++;
|
| - document.getElementById(code).classList.add("goodKey")
|
| - } else {
|
| - _keysBad++;
|
| - document.getElementById(code).classList.add("badKey")
|
| - }
|
| - updateTestSummary(good ? null : error);
|
| -}
|
| -
|
| -function updateTestSummary(error) {
|
| - document.getElementById("keys-total").textContent = _keysTotal;
|
| - document.getElementById("keys-good").textContent = _keysGood;
|
| - document.getElementById("keys-bad").textContent = _keysBad;
|
| - document.getElementById("keys-skipped").textContent = _keysSkipped;
|
| -
|
| - if (error) {
|
| - var errors = document.getElementById("errors");
|
| - errors.insertBefore(error, errors.firstChild);
|
| - }
|
| -}
|
| -
|
| -function resetTest() {
|
| - _keysTotal = 0;
|
| - _keysGood = 0;
|
| - _keysBad = 0;
|
| -
|
| - _currKey = -1;
|
| - nextKey();
|
| -
|
| - updateTestSummary();
|
| -
|
| - // Remove previous test results.
|
| - clearChildren(document.getElementById("errors"));
|
| -
|
| - // Remove highlighting from keys.
|
| - for (var i = 0; i < _keyTable.length; i++) {
|
| - var code = _keyTable[i][KEYINFO_CODE];
|
| - var type = _keyTable[i][KEYINFO_TYPE];
|
| - if (type != KEYTYPE_END) {
|
| - var key = document.getElementById(code);
|
| - key.classList.remove("goodKey");
|
| - key.classList.remove("badKey");
|
| - key.classList.remove("skippedKey");
|
| - }
|
| - }
|
| -}
|
| -
|
| -function startTest() {
|
| - if (_testing) {
|
| - // Cancel the currently running test.
|
| - endTest();
|
| - return;
|
| - }
|
| -
|
| - resetTest();
|
| - _testing = true;
|
| - document.getElementById("start").value = "Stop Test"
|
| -
|
| - var input = document.getElementById("input");
|
| - input.value = "";
|
| - input.disabled = false;
|
| - input.focus();
|
| -
|
| - // Show test instructions and info.
|
| - document.getElementById("test-info").style.display = 'block';
|
| - document.getElementById("instructions").style.display = 'block';
|
| - document.getElementById("test-done").style.display = 'none';
|
| -}
|
| -
|
| -function endTest() {
|
| - _testing = false;
|
| - removeNextKeyHilight();
|
| - document.getElementById("start").value = "Restart Test"
|
| - document.getElementById("input").disabled = true;
|
| - document.getElementById("instructions").style.display = 'none';
|
| - document.getElementById("test-done").style.display = 'block';
|
| -}
|
| -
|
| -function removeNextKeyHilight() {
|
| - var curr = document.getElementById(_keyTable[_currKey][KEYINFO_CODE]);
|
| - if (curr) {
|
| - removeClass(curr, "nextKey")
|
| - }
|
| -}
|
| -
|
| -function addNextKeyHilight() {
|
| - var curr = document.getElementById(_keyTable[_currKey][KEYINFO_CODE]);
|
| - if (curr) {
|
| - addClass(curr, "nextKey")
|
| - }
|
| -}
|
| -
|
| -function nextKey() {
|
| - var keyInfo;
|
| - var keepLooking = true;
|
| - do {
|
| - _currKey++;
|
| - keyInfo = _keyTable[_currKey];
|
| - var type = keyInfo[KEYINFO_TYPE];
|
| -
|
| - // Skip over disabled keys.
|
| - keepLooking = (type == KEYTYPE_DISABLED);
|
| -
|
| - // Skip over modifier keys if we're testing modifier combinations.
|
| - if (_modifierMode != "None" && type == KEYTYPE_MODIFIER) {
|
| - keepLooking = true;
|
| - }
|
| -
|
| - // Skip over keys in disabled rows.
|
| - if (type != KEYTYPE_END) {
|
| - var row = keyInfo[KEYINFO_ROW];
|
| - var rowEnabled = document.getElementById("opt_row_" + row).checked;
|
| - keepLooking = keepLooking || !rowEnabled;
|
| - }
|
| - } while (keepLooking);
|
| -
|
| - if (keyInfo[KEYINFO_TYPE] == KEYTYPE_END) {
|
| - endTest();
|
| - } else {
|
| - addNextKeyHilight();
|
| - }
|
| -}
|
| -
|
| -function toggleOptions() {
|
| - var link = document.getElementById("optionstoggle");
|
| - var options = document.getElementById("options");
|
| - clearChildren(link);
|
| - if (options.style.display == "block") {
|
| - options.style.display = "none";
|
| - addInnerText(link, "Show Options");
|
| - }
|
| - else {
|
| - options.style.display = "block";
|
| - addInnerText(link, "Hide Options");
|
| - }
|
| -}
|
| -
|
| -function toggleHelp() {
|
| - var link = document.getElementById("helptoggle");
|
| - var help = document.getElementById("help");
|
| - clearChildren(link);
|
| - if (help.style.display == "block") {
|
| - help.style.display = "none";
|
| - addInnerText(link, "Show Help");
|
| - }
|
| - else {
|
| - help.style.display = "block";
|
| - addInnerText(link, "Hide Help");
|
| - }
|
| -}
|
| -
|
| -function createBody(title, keytable) {
|
| - var body = document.getElementsByTagName("body")[0];
|
| - var p;
|
| - var span;
|
| -
|
| - var h1 = document.createElement('h1');
|
| - h1.textContent = "Keyboard Event Manual Test - " + title;
|
| - body.appendChild(h1);
|
| -
|
| - // Display useragent.
|
| - p = document.createElement('p');
|
| - p.textContent = "UserAgent: ";
|
| - var useragent = document.createElement('span');
|
| - useragent.id = "useragent";
|
| - p.appendChild(useragent);
|
| - body.appendChild(p);
|
| -
|
| - // Display input textedit.
|
| - p = document.createElement('p');
|
| - p.textContent = "Test Input: ";
|
| - var input1 = document.createElement('input');
|
| - input1.id = "input";
|
| - input1.type = "text";
|
| - input1.size = 80;
|
| - p.appendChild(input1);
|
| - p.appendChild(document.createTextNode(" "));
|
| - var input2 = document.createElement('input');
|
| - input2.id = "start";
|
| - input2.type = "button";
|
| - input2.onclick = function() { startTest(); return false; }
|
| - input2.value = "Start Test";
|
| - p.appendChild(input2);
|
| - p.appendChild(document.createTextNode(" "));
|
| - var optionsToggle = document.createElement('a');
|
| - optionsToggle.id = "optionstoggle";
|
| - optionsToggle.href = "javascript:toggleOptions()";
|
| - optionsToggle.textContent = "Show Options";
|
| - p.appendChild(optionsToggle);
|
| - p.appendChild(document.createTextNode(" "));
|
| - var helpToggle = document.createElement('a');
|
| - helpToggle.id = "helptoggle";
|
| - helpToggle.href = "javascript:toggleHelp()";
|
| - helpToggle.textContent = "Show Help";
|
| - p.appendChild(helpToggle);
|
| - body.appendChild(p);
|
| -
|
| - createOptions(body);
|
| -
|
| - createHelp(body);
|
| -
|
| - createKeyboard(body, keytable);
|
| -
|
| - // Test info and summary.
|
| - var test_info = document.createElement('div');
|
| - test_info.id = "test-info";
|
| - test_info.style.display = "none";
|
| -
|
| - var instructions = document.createElement('div');
|
| - instructions.id = "instructions";
|
| - p = document.createElement('p');
|
| - p.textContent = "Press the highlighted key.";
|
| - instructions.appendChild(p);
|
| - test_info.appendChild(instructions);
|
| -
|
| - var test_done = document.createElement('div');
|
| - test_done.id = "test-done";
|
| - p = document.createElement('p');
|
| - p.textContent = "Test complete!";
|
| - test_done.appendChild(p);
|
| - test_info.appendChild(test_done);
|
| -
|
| - var summary = document.createElement('div');
|
| - summary.id = "summary";
|
| - p = document.createElement('p');
|
| - summary.appendChild(document.createTextNode("Keys Tested: "));
|
| - span = document.createElement('span');
|
| - span.id = "keys-total";
|
| - span.textContent = 0;
|
| - summary.appendChild(span);
|
| - summary.appendChild(document.createTextNode("; Passed "));
|
| - span = document.createElement('span');
|
| - span.id = "keys-good";
|
| - span.textContent = 0;
|
| - summary.appendChild(span);
|
| - summary.appendChild(document.createTextNode("; Failed "));
|
| - span = document.createElement('span');
|
| - span.id = "keys-bad";
|
| - span.textContent = 0;
|
| - summary.appendChild(span);
|
| - summary.appendChild(document.createTextNode("; Skipped "));
|
| - span = document.createElement('span');
|
| - span.id = "keys-skipped";
|
| - span.textContent = 0;
|
| - summary.appendChild(span);
|
| - test_info.appendChild(summary);
|
| -
|
| - var errors = document.createElement('div');
|
| - errors.id = "errors";
|
| - test_info.appendChild(errors);
|
| -
|
| - body.appendChild(test_info);
|
| -}
|
| -
|
| -function addOptionTitle(cell, title) {
|
| - var span = document.createElement('span');
|
| - span.classList.add("opttitle");
|
| - span.textContent = title;
|
| - cell.appendChild(span);
|
| - cell.appendChild(document.createElement("br"));
|
| -}
|
| -
|
| -function addOptionCheckbox(cell, id, text) {
|
| - var label = document.createElement("label");
|
| -
|
| - var input = document.createElement("input");
|
| - input.type = "checkbox";
|
| - input.id = id;
|
| - input.checked = true;
|
| - label.appendChild(input);
|
| -
|
| - label.appendChild(document.createTextNode(" " + text));
|
| - cell.appendChild(label);
|
| -
|
| - cell.appendChild(document.createElement("br"));
|
| -}
|
| -
|
| -function addOptionRadio(cell, group, text, handler, checked) {
|
| - var label = document.createElement("label");
|
| -
|
| - var input = document.createElement("input");
|
| - input.type = "radio";
|
| - input.name = group;
|
| - input.value = text;
|
| - input.onclick = handler;
|
| - input.checked = checked;
|
| - label.appendChild(input);
|
| -
|
| - label.appendChild(document.createTextNode(" " + text));
|
| - cell.appendChild(label);
|
| -
|
| - cell.appendChild(document.createElement("br"));
|
| -}
|
| -
|
| -function handleModifierGroup() {
|
| - var radio = document.querySelector("input[name=opt_modifier]:checked");
|
| - var oldMode = _modifierMode;
|
| - _modifierMode = radio.value;
|
| -
|
| - if (oldMode == "Shift") {
|
| - document.getElementById("ShiftLeft").classList.remove("activeModifierKey");
|
| - document.getElementById("ShiftRight").classList.remove("activeModifierKey");
|
| - }
|
| -
|
| - if (_modifierMode == "Shift") {
|
| - document.getElementById("ShiftLeft").classList.add("activeModifierKey");
|
| - document.getElementById("ShiftRight").classList.add("activeModifierKey");
|
| - }
|
| -}
|
| -
|
| -function createOptions(body) {
|
| - var options = document.createElement('div');
|
| - options.id = "options";
|
| - options.style.display = "none";
|
| -
|
| - var table = document.createElement('table');
|
| - table.classList.add("opttable");
|
| - var row = document.createElement('tr');
|
| - var cell;
|
| -
|
| - cell = document.createElement('td');
|
| - cell.classList.add("optcell");
|
| - addOptionTitle(cell, "Keyboard Rows");
|
| - addOptionCheckbox(cell, "opt_row_0", "Row E (top)");
|
| - addOptionCheckbox(cell, "opt_row_1", "Row D");
|
| - addOptionCheckbox(cell, "opt_row_2", "Row C");
|
| - addOptionCheckbox(cell, "opt_row_3", "Row B");
|
| - addOptionCheckbox(cell, "opt_row_4", "Row A (bottom)");
|
| - row.appendChild(cell);
|
| -
|
| - cell = document.createElement('td');
|
| - cell.classList.add("optcell");
|
| - addOptionTitle(cell, "Events");
|
| - addOptionCheckbox(cell, "opt_event_keydown", "keydown");
|
| - addOptionCheckbox(cell, "opt_event_keyup", "keyup");
|
| - row.appendChild(cell);
|
| -
|
| - cell = document.createElement('td');
|
| - cell.classList.add("optcell");
|
| - addOptionTitle(cell, "Attributes");
|
| - addOptionCheckbox(cell, "opt_attr_code", "code");
|
| - addOptionCheckbox(cell, "opt_attr_key", "key");
|
| - addOptionCheckbox(cell, "opt_attr_modifiers", "modifiers");
|
| - row.appendChild(cell);
|
| -
|
| - cell = document.createElement('td');
|
| - cell.classList.add("optcell");
|
| - addOptionTitle(cell, "Modifiers");
|
| - addOptionRadio(cell, "opt_modifier", "None", handleModifierGroup, true);
|
| - addOptionRadio(cell, "opt_modifier", "Shift", handleModifierGroup, false);
|
| - row.appendChild(cell);
|
| -
|
| - table.appendChild(row);
|
| - options.appendChild(table);
|
| -
|
| - body.appendChild(options);
|
| -}
|
| -
|
| -function addHelpText(div, text) {
|
| - var p = document.createElement('p');
|
| - p.classList.add("help");
|
| - p.textContent = text;
|
| - div.appendChild(p);
|
| -}
|
| -
|
| -function createHelp(body) {
|
| - var help = document.createElement('div');
|
| - help.id = "help";
|
| - help.style.display = "none";
|
| -
|
| - addHelpText(help, "Click on the \"Start Test\" button to begin testing.");
|
| - addHelpText(help, "Press the hilighted key to test it.");
|
| - addHelpText(help, "Clicking anywhere outside the \"Test Input\" editbox will pause testing. To resume, click back inside the editbox.");
|
| - addHelpText(help, "To skip a key while testing, press Escape.");
|
| - addHelpText(help, "When testing with modifier keys, the modifier must be pressed before the keydown and released after the keyup of the key being tested.");
|
| -
|
| - body.appendChild(help);
|
| -}
|
| -
|
| -function createKeyboard(body, keytable) {
|
| - var keyboard = document.createElement('div');
|
| - keyboard.classList.add("keyboard");
|
| -
|
| - var currRow = 0;
|
| - var row = document.createElement('div');
|
| - row.classList.add("key-row");
|
| -
|
| - for (var i = 0; i < keytable.length; i++) {
|
| - var code = keytable[i][KEYINFO_CODE];
|
| - var rowId = keytable[i][KEYINFO_ROW];
|
| - var type = keytable[i][KEYINFO_TYPE];
|
| - var width = keytable[i][KEYINFO_WIDTH];
|
| - var keyCap = keytable[i][KEYINFO_KEYCAP];
|
| -
|
| - if (type == KEYTYPE_END) {
|
| - continue;
|
| - }
|
| -
|
| - if (rowId != currRow) {
|
| - keyboard.appendChild(row);
|
| - row = document.createElement('div');
|
| - row.classList.add("key-row");
|
| - currRow = rowId;
|
| - }
|
| -
|
| - var key = document.createElement('div');
|
| - key.id = code;
|
| - key.classList.add("key");
|
| - if (width != 0) {
|
| - key.classList.add("wide" + width);
|
| - }
|
| - key.textContent = keyCap;
|
| -
|
| - row.appendChild(key);
|
| - }
|
| -
|
| - keyboard.appendChild(row);
|
| - body.appendChild(keyboard);
|
| -}
|
|
|