import React, { Component } from 'react'; import GithubCorner from './components/GithubCorner'; import KeyBoard from './components/KeyBoard'; import Footer from './components/Footer'; import Markdown from './components/Markdown'; import GithubShields from './components/GithubShields'; import styles from './styles/index.less'; import DocumentStr from '../README.md'; import hotkeys from '../dist/hotkeys.common'; import pkg from '../package.json'; export default class App extends Component { constructor() { super(); this.state = { keyCode: [], keyStr: [], }; this.onKeyUpEvent = this.onKeyUpEvent.bind(this); } componentDidMount() { document.addEventListener('keyup', this.onKeyUpEvent); function pkeys(keys, key) { if (keys.indexOf(key) === -1) keys.push(key); return keys; } function pkeysStr(keysStr, key) { if (keysStr.indexOf(key) === -1) keysStr.push(key); return keysStr; } hotkeys('*', (evn) => { evn.preventDefault(); const keys = []; const keyStr = []; if (hotkeys.shift) { pkeys(keys, 16); pkeysStr(keyStr, 'shift'); } if (hotkeys.ctrl) { pkeys(keys, 17); pkeysStr(keyStr, 'ctrl'); } if (hotkeys.alt) { pkeys(keys, 18); pkeysStr(keyStr, 'alt'); } if (hotkeys.control) { pkeys(keys, 17); pkeysStr(keyStr, 'control'); } if (hotkeys.command) { pkeys(keys, 91); pkeysStr(keyStr, 'command'); } keyStr.push(evn.keyCode); if (keys.indexOf(evn.keyCode) === -1) keys.push(evn.keyCode); this.setState({ keyCode: keys, keyStr }); }); return false; } componentWillUnmount() { document.removeEventListener('keyup', this.onKeyUpEvent); } onKeyUpEvent() { this.setState({ keyCode: [], keyStr: [] }); } onKeyBoardMouseDown(item) { if (item.keycode > -1) { this.setState({ keyStr: [item.keycode] }); } } onKeyBoardMouseUp() { this.setState({ keyStr: [] }); } openVersionWebsite(e) { if (e.target && e.target.value) { window.location.href = e.target.value; } } render() { const { keyStr } = this.state; let DocumentStrSource = DocumentStr; if (DocumentStrSource) DocumentStrSource = DocumentStr.replace(/([\s\S]*)/, ''); return (
{keyStr.length > -1 && (
{keyStr.map(item => {item})}
)}
HotKeys.js
A robust Javascript library for capturing keyboard input and key combinations entered. It has no dependencies. Try to press your keyboard, The following button will highlight.
); } }