emit mapped keys from input-component

This commit is contained in:
Shin'ya Ueoka 2017-10-21 11:06:58 +09:00
parent c2a663a64d
commit 214a5103f3
6 changed files with 95 additions and 21 deletions

View file

@ -1,16 +1,9 @@
import actions from 'content/actions';
const asKeymapChars = (key, ctrl) => {
if (ctrl) {
return '<C-' + key.toUpperCase() + '>';
}
return key;
};
const keyPress = (key, ctrl) => {
const keyPress = (key) => {
return {
type: actions.INPUT_KEY_PRESS,
key: asKeymapChars(key, ctrl),
key,
};
};

View file

@ -10,8 +10,8 @@ export default class Common {
const input = new InputComponent(win.document.body, store);
const keymapper = new KeymapperComponent(store);
input.onKey((key, ctrl) => follow.key(key, ctrl));
input.onKey((key, ctrl) => keymapper.key(key, ctrl));
input.onKey(key => follow.key(key));
input.onKey(key => keymapper.key(key));
this.store = store;
this.children = [

View file

@ -1,3 +1,10 @@
const mapKey = (e) => {
if (e.ctrlKey) {
return '<C-' + e.key.toUpperCase() + '>';
}
return e.key;
};
export default class InputComponent {
constructor(target) {
this.pressed = {};
@ -47,8 +54,10 @@ export default class InputComponent {
return;
}
let key = mapKey(e);
for (let listener of this.onKeyListeners) {
let stop = listener(e.key, e.ctrlKey);
let stop = listener(key);
if (stop) {
e.preventDefault();
e.stopPropagation();

View file

@ -9,8 +9,8 @@ export default class KeymapperComponent {
update() {
}
key(key, ctrl) {
this.store.dispatch(inputActions.keyPress(key, ctrl));
key(key) {
this.store.dispatch(inputActions.keyPress(key));
let input = this.store.getState().input;
let matched = Object.keys(input.keymaps).filter((keyStr) => {