import Keyboard from "../lib"; import "./css/FullKeyboardDemo.css"; const setDOM = () => { document.querySelector("#root").innerHTML = `
`; }; 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;