mirror of
https://github.com/hodgef/simple-keyboard.git
synced 2025-04-29 17:30:15 +08:00
158 lines
4.4 KiB
JavaScript
158 lines
4.4 KiB
JavaScript
import Keyboard from "../lib";
|
|
import "./css/FullKeyboardDemo.css";
|
|
|
|
const setDOM = () => {
|
|
document.querySelector("#root").innerHTML = `
|
|
<input class="input" placeholder="Tap on the virtual keyboard to start" />
|
|
<div class="keyboardContainer">
|
|
<div class="simple-keyboard-main"></div>
|
|
|
|
<div class="controlArrows">
|
|
<div class="simple-keyboard-control"></div>
|
|
<div class="simple-keyboard-arrows"></div>
|
|
</div>
|
|
|
|
<div class="numPad">
|
|
<div class="simple-keyboard-numpad"></div>
|
|
<div class="simple-keyboard-numpadEnd"></div>
|
|
</div>
|
|
</div>
|
|
`;
|
|
};
|
|
|
|
class Demo {
|
|
constructor() {
|
|
setDOM();
|
|
|
|
/**
|
|
* Demo Start
|
|
*/
|
|
const commonKeyboardOptions = {
|
|
onChange: input => this.onChange(input),
|
|
onKeyPress: button => this.onKeyPress(button),
|
|
theme: "simple-keyboard hg-theme-default hg-layout-default",
|
|
physicalKeyboardHighlight: true,
|
|
syncInstanceInputs: true,
|
|
mergeDisplay: true,
|
|
debug: true
|
|
};
|
|
|
|
this.keyboard = new Keyboard(".simple-keyboard-main", {
|
|
...commonKeyboardOptions,
|
|
/**
|
|
* Layout by:
|
|
* Sterling Butters (https://github.com/SterlingButters)
|
|
*/
|
|
layout: {
|
|
default: [
|
|
"{escape} {f1} {f2} {f3} {f4} {f5} {f6} {f7} {f8} {f9} {f10} {f11} {f12}",
|
|
"` 1 2 3 4 5 6 7 8 9 0 - = {backspace}",
|
|
"{tab} q w e r t y u i o p [ ] \\",
|
|
"{capslock} a s d f g h j k l ; ' {enter}",
|
|
"{shiftleft} z x c v b n m , . / {shiftright}",
|
|
"{controlleft} {altleft} {metaleft} {space} {metaright} {altright}"
|
|
],
|
|
shift: [
|
|
"{escape} {f1} {f2} {f3} {f4} {f5} {f6} {f7} {f8} {f9} {f10} {f11} {f12}",
|
|
"~ ! @ # $ % ^ & * ( ) _ + {backspace}",
|
|
"{tab} Q W E R T Y U I O P { } |",
|
|
'{capslock} A S D F G H J K L : " {enter}',
|
|
"{shiftleft} Z X C V B N M < > ? {shiftright}",
|
|
"{controlleft} {altleft} {metaleft} {space} {metaright} {altright}"
|
|
]
|
|
},
|
|
display: {
|
|
"{escape}": "esc ⎋",
|
|
"{tab}": "tab ⇥",
|
|
"{backspace}": "backspace ⌫",
|
|
"{enter}": "enter ↵",
|
|
"{capslock}": "caps lock ⇪",
|
|
"{shiftleft}": "shift ⇧",
|
|
"{shiftright}": "shift ⇧",
|
|
"{controlleft}": "ctrl ⌃",
|
|
"{controlright}": "ctrl ⌃",
|
|
"{altleft}": "alt ⌥",
|
|
"{altright}": "alt ⌥",
|
|
"{metaleft}": "cmd ⌘",
|
|
"{metaright}": "cmd ⌘"
|
|
}
|
|
});
|
|
|
|
this.keyboardControlPad = new Keyboard(".simple-keyboard-control", {
|
|
...commonKeyboardOptions,
|
|
layout: {
|
|
default: [
|
|
"{prtscr} {scrolllock} {pause}",
|
|
"{insert} {home} {pageup}",
|
|
"{delete} {end} {pagedown}"
|
|
]
|
|
}
|
|
});
|
|
|
|
this.keyboardArrows = new Keyboard(".simple-keyboard-arrows", {
|
|
...commonKeyboardOptions,
|
|
layout: {
|
|
default: ["{arrowup}", "{arrowleft} {arrowdown} {arrowright}"]
|
|
}
|
|
});
|
|
|
|
this.keyboardNumPad = new Keyboard(".simple-keyboard-numpad", {
|
|
...commonKeyboardOptions,
|
|
layout: {
|
|
default: [
|
|
"{numlock} {numpaddivide} {numpadmultiply}",
|
|
"{numpad7} {numpad8} {numpad9}",
|
|
"{numpad4} {numpad5} {numpad6}",
|
|
"{numpad1} {numpad2} {numpad3}",
|
|
"{numpad0} {numpaddecimal}"
|
|
]
|
|
}
|
|
});
|
|
|
|
this.keyboardNumPadEnd = new Keyboard(".simple-keyboard-numpadEnd", {
|
|
...commonKeyboardOptions,
|
|
layout: {
|
|
default: ["{numpadsubtract}", "{numpadadd}", "{numpadenter}"]
|
|
}
|
|
});
|
|
|
|
document.querySelector(".input").addEventListener("input", () => {
|
|
const input = document.querySelector(".input").value;
|
|
this.keyboard.setInput(input);
|
|
});
|
|
}
|
|
|
|
onChange(input) {
|
|
document.querySelector(".input").value = input;
|
|
this.keyboard.setInput(input);
|
|
|
|
console.log("Input changed", input);
|
|
}
|
|
|
|
onKeyPress(button) {
|
|
console.log("Button pressed", button);
|
|
|
|
/**
|
|
* If you want to handle the shift and caps lock buttons
|
|
*/
|
|
if (
|
|
button === "{shift}" ||
|
|
button === "{shiftleft}" ||
|
|
button === "{shiftright}" ||
|
|
button === "{capslock}"
|
|
)
|
|
this.handleShift();
|
|
}
|
|
|
|
handleShift() {
|
|
const currentLayout = this.keyboard.options.layoutName;
|
|
const shiftToggle = currentLayout === "default" ? "shift" : "default";
|
|
|
|
this.keyboard.setOptions({
|
|
layoutName: shiftToggle
|
|
});
|
|
}
|
|
}
|
|
|
|
export default Demo;
|