UNPKG

lost-sia

Version:

Single Image Annotation Tool

89 lines (80 loc) 2.42 kB
import KeyAction from '../models/KeyAction' class KeyMapper { isControlDown: boolean keyActionHandler: ((keyAction) => void) | undefined constructor(keyActionHandler: ((keyAction) => void) | undefined = undefined) { this.isControlDown = false this.keyActionHandler = keyActionHandler } keyDown(key: string, isShiftKeyPressed: boolean = false, isCtrlKeyPressed: boolean) { switch (key) { case 'Enter': this.triggerKeyAction(KeyAction.EDIT_LABEL) break case 'Delete': this.triggerKeyAction(KeyAction.DELETE_ANNO) break case 'Backspace': this.triggerKeyAction(KeyAction.DELETE_ANNO) break case 'z': if (isCtrlKeyPressed) { this.triggerKeyAction(KeyAction.UNDO) } break case 'y': if (isCtrlKeyPressed) this.triggerKeyAction(KeyAction.REDO) break case 'Tab': if (isShiftKeyPressed) this.triggerKeyAction(KeyAction.TRAVERSE_ANNOS_BACKWARDS) else this.triggerKeyAction(KeyAction.TRAVERSE_ANNOS) break case 'w': this.triggerKeyAction(KeyAction.CAM_MOVE_UP) break case 's': this.triggerKeyAction(KeyAction.CAM_MOVE_DOWN) break case 'a': this.triggerKeyAction(KeyAction.CAM_MOVE_LEFT) break case 'd': this.triggerKeyAction(KeyAction.CAM_MOVE_RIGHT) break case 'e': this.triggerKeyAction(KeyAction.RECREATE_ANNO) break case 'j': this.triggerKeyAction(KeyAction.TOGGLE_IMAGE_JUNK) break case 'c': if (isCtrlKeyPressed) this.triggerKeyAction(KeyAction.COPY_ANNOTATION) else this.triggerKeyAction(KeyAction.TOGGLE_ANNO_COMMENT_INPUT) break case 'v': if (isCtrlKeyPressed) this.triggerKeyAction(KeyAction.PASTE_ANNOTATION) break case 'Escape': this.triggerKeyAction(KeyAction.DELETE_ANNO_IN_CREATION) break default: break } } // keyUp(key: string) { // switch (key) { // case "Control": // this.isControlDown = false; // this.triggerKeyAction(KeyAction.LEAVE_ANNO_ADD_MODE); // break; // default: // break; // } // } triggerKeyAction(keyAction: KeyAction) { if (this.keyActionHandler) { this.keyActionHandler(keyAction) } } } export default KeyMapper