2020-01-22 14:34:46 +00:00
|
|
|
/*
|
|
|
|
* keypress actions
|
|
|
|
* @flow
|
|
|
|
*/
|
|
|
|
import store from '../ui/store';
|
2020-04-28 05:16:47 +00:00
|
|
|
import copy from '../utils/clipboard';
|
2020-01-22 14:34:46 +00:00
|
|
|
import {
|
|
|
|
toggleGrid,
|
2020-06-23 16:49:56 +00:00
|
|
|
toggleHistoricalView,
|
2020-07-05 09:22:40 +00:00
|
|
|
toggleHiddenCanvases,
|
2020-01-22 14:34:46 +00:00
|
|
|
togglePixelNotify,
|
|
|
|
toggleMute,
|
2020-04-28 05:16:47 +00:00
|
|
|
notify,
|
2020-01-22 14:34:46 +00:00
|
|
|
} from '../actions';
|
|
|
|
|
2021-01-27 21:10:06 +00:00
|
|
|
const usedKeys = ['g', 'h', 'x', 'm', 'r', 'p'];
|
2020-01-22 14:34:46 +00:00
|
|
|
|
|
|
|
function onKeyPress(event: KeyboardEvent) {
|
|
|
|
// ignore key presses if modal is open or chat is used
|
|
|
|
if (event.target.nodeName === 'INPUT'
|
|
|
|
|| event.target.nodeName === 'TEXTAREA'
|
|
|
|
) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2021-01-27 21:10:06 +00:00
|
|
|
/*
|
|
|
|
* if char of key isn't used by a keybind,
|
|
|
|
* we check if the key location is where a
|
|
|
|
* key that is used would be on QWERTY
|
|
|
|
*/
|
|
|
|
const key = (usedKeys.includes(event.key))
|
|
|
|
? event.key
|
|
|
|
: event.code.substr(-1).toLowerCase();
|
|
|
|
|
|
|
|
switch (key) {
|
2020-01-22 14:34:46 +00:00
|
|
|
case 'g':
|
|
|
|
store.dispatch(toggleGrid());
|
2021-01-27 21:10:06 +00:00
|
|
|
return;
|
2020-06-23 16:49:56 +00:00
|
|
|
case 'h':
|
|
|
|
store.dispatch(toggleHistoricalView());
|
2021-01-27 21:10:06 +00:00
|
|
|
return;
|
2020-04-28 05:16:47 +00:00
|
|
|
case 'x':
|
2020-01-22 14:34:46 +00:00
|
|
|
store.dispatch(togglePixelNotify());
|
2021-01-27 21:10:06 +00:00
|
|
|
return;
|
2020-01-22 14:34:46 +00:00
|
|
|
case 'm':
|
|
|
|
store.dispatch(toggleMute());
|
2021-01-27 21:10:06 +00:00
|
|
|
return;
|
2020-04-29 02:38:36 +00:00
|
|
|
case 'r': {
|
2020-04-28 05:16:47 +00:00
|
|
|
const state = store.getState();
|
|
|
|
const { hover } = state.gui;
|
|
|
|
const text = hover.join('_');
|
|
|
|
copy(text);
|
|
|
|
store.dispatch(notify('Copied!'));
|
2021-01-27 21:10:06 +00:00
|
|
|
return;
|
2020-04-28 05:16:47 +00:00
|
|
|
}
|
2021-01-27 21:10:06 +00:00
|
|
|
case 'p':
|
2020-07-05 09:22:40 +00:00
|
|
|
store.dispatch(toggleHiddenCanvases());
|
|
|
|
break;
|
2020-01-22 14:34:46 +00:00
|
|
|
default:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default onKeyPress;
|