UNPKG

keyboard-js

Version:
108 lines (81 loc) 3.69 kB
# keyboard-js A little library for keyboard binding. **Now, it just supports chrome**. If you want to support more browsers or nodejs platform, just fork it. Have fun, XD. ## Usage Full list of [key values](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) ### Try it Now, you can try it [here](https://creamidea.github.io/keyboard-js/). ([source](https://github.com/creamidea/keyboard-js/tree/master/samples)) And, you can find **which key(key combo will print on the console.)** do you press at that page, when you find your code didn't run. ### Quickly start ```js var Keyboard = require('keyboard-js').Keyboard var keyboard = new Keyboard() // pay more attention: singal instance // start to listen keyboard.start() // register // when you hit <kbd>Shift+e</kbd> or <kbd>Ctrl+e</kbd> that will print `> test uk successfully`. keyboard.register('uk', function (event) { // event.preventDefault() // event.stopPropagation() // event.stopImmediatePropagation() console.log('test uk successfully.') // event.clearKeys() // if you use function::alert or function::confirm }, ["Shift", "E"], ["Control", "e"]) // attention: Shift E (not e) // have fun :) ``` ### PLEASE DO NOT USE ALERT OR CONFIRM FOR YOUR FAMILY! **Dialog boxes are modal windows - they prevent the user from accessing the rest of the program's interface until the dialog box is closed** + [Window.alert()](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) + Open [this](http://stackoverflow.com/a/12444641/1925954) and then press <kbd>Ctrl</kbd> + <kbd>F</kbd> to find `This key combo keeps activating even though I'm not pressing the keys` + If you really want to use, please don't forget to call `event.clearKeys()` in the callback OMG! Please forgive me. ### Attention Please pay more attention to the key combo. You should avoid the key conflict. For example, if you registe the **Shortcut Key: Shift + B**, you will be confused when you hit <kbd>Shift</kbd> + <kbd>B</kbd> in the textarea. So, be careful. However, you can use `API::Keyboard.end()` to end when the textarea is focused and use `API::Keyboard.start()` to restart when it blurs. Also, you can discard the **Shortcut Key: Shift + B**. ## API Constructor Options ```js { DEBUG: [boolen], // default: false. If true, it will print key message on the console. element: [DOM Element], // default: document. Use this to listen the keydown or keyup. } ``` Exposed Interface: ```js Keyboard.start(): start to listen the keypress event Keyboard.end(): end to listen keypress event and clean some resource Keyboard.register(name:String, callback:Function, [key1:String, key2:String,...], ...): registe the keyboard binding Keyboard.unregister(name:String): remove the register by name Keyboard.getStatistic(): get the key pressing information ``` And the callback defination: ```js // callback function callback (event) { // event.preventDefault() // event.stopPropagation() // event.stopImmediatePropagation() // your code here // ... // event.clearKeys() // if you use function::alert or function::confirm } ``` # Annexation A keyboard layout Library ([**keyboard-layout.js**](./keyboard-layout.js)) ![heatmap](https://cloud.githubusercontent.com/assets/1274730/18864828/acec53ae-84ca-11e6-998f-65d088c96f24.png) # Samples You can find [here](https://creamidea.github.io/keyboard-js/) # Bug If you find bugs or have any questions, you can submit them to the github [issues](https://github.com/creamidea/keyboard-js/issues). ## LICENSE MIT