Seperate electron and web target building

This commit is contained in:
Farkas József
2017-01-20 02:03:27 +01:00
committed by József Farkas
parent 517aed1b1c
commit 983eb72892
276 changed files with 2154 additions and 95 deletions

View File

@@ -0,0 +1,143 @@
import { Injectable } from '@angular/core';
@Injectable()
export class CaptureService {
private mapping: Map<number, number>;
private leftModifiers: Map<number, boolean>;
private rightModifiers: Map<number, boolean>;
constructor() {
this.leftModifiers = new Map<number, boolean>();
this.rightModifiers = new Map<number, boolean>();
this.mapping = new Map<number, number>();
}
public getMap(code: number) {
return this.mapping.get(code);
}
public hasMap(code: number) {
return this.mapping.has(code);
}
public setModifier(left: boolean, code: number) {
return left ? this.leftModifiers.set(code, true) : this.rightModifiers.set(code, true);
}
public getModifiers(left: boolean) {
return left ? this.reMap(this.leftModifiers) : this.reMap(this.rightModifiers);
}
public initModifiers() {
this.leftModifiers.set(16, false); // Shift
this.leftModifiers.set(17, false); // Ctrl
this.leftModifiers.set(18, false); // Alt
this.leftModifiers.set(91, false); // Super
this.rightModifiers.set(16, false); // Shift
this.rightModifiers.set(17, false); // Ctrl
this.rightModifiers.set(18, false); // Alt
this.rightModifiers.set(91, false); // Super
}
public populateMapping () {
this.mapping.set(8, 42); // Backspace
this.mapping.set(9, 43); // Tab
this.mapping.set(13, 40); // Enter
this.mapping.set(19, 72); // Pause/break
this.mapping.set(20, 57); // Caps lock
this.mapping.set(27, 41); // Escape
this.mapping.set(32, 44); // (space)
this.mapping.set(33, 75); // Page up
this.mapping.set(34, 78); // Page down
this.mapping.set(35, 77); // End
this.mapping.set(36, 74); // Home
this.mapping.set(37, 80); // Left arrow
this.mapping.set(38, 82); // Up arrow
this.mapping.set(39, 79); // Right arrow
this.mapping.set(40, 81); // Down arrow
this.mapping.set(45, 73); // Insert
this.mapping.set(46, 76); // Delete
this.mapping.set(48, 39); // 0
this.mapping.set(49, 30); // 1
this.mapping.set(50, 31); // 2
this.mapping.set(51, 32); // 3
this.mapping.set(52, 33); // 4
this.mapping.set(53, 34); // 5
this.mapping.set(54, 35); // 6
this.mapping.set(55, 36); // 7
this.mapping.set(56, 37); // 8
this.mapping.set(57, 38); // 9
this.mapping.set(65, 4); // A
this.mapping.set(66, 5); // B
this.mapping.set(67, 6); // C
this.mapping.set(68, 7); // D
this.mapping.set(69, 8); // E
this.mapping.set(70, 9); // F
this.mapping.set(71, 10); // G
this.mapping.set(72, 11); // H
this.mapping.set(73, 12); // I
this.mapping.set(74, 13); // J
this.mapping.set(75, 14); // K
this.mapping.set(76, 15); // L
this.mapping.set(77, 16); // M
this.mapping.set(78, 17); // N
this.mapping.set(79, 18); // O
this.mapping.set(80, 19); // P
this.mapping.set(81, 20); // Q
this.mapping.set(82, 21); // R
this.mapping.set(83, 22); // S
this.mapping.set(84, 23); // T
this.mapping.set(85, 24); // U
this.mapping.set(86, 25); // V
this.mapping.set(87, 26); // W
this.mapping.set(88, 27); // X
this.mapping.set(89, 28); // Y
this.mapping.set(90, 29); // Z
this.mapping.set(93, 118); // Menu
this.mapping.set(96, 98); // Num pad 0
this.mapping.set(97, 89); // Num pad 1
this.mapping.set(98, 90); // Num pad 2
this.mapping.set(99, 91); // Num pad 3
this.mapping.set(100, 92); // Num pad 4
this.mapping.set(101, 93); // Num pad 5
this.mapping.set(102, 94); // Num pad 6
this.mapping.set(103, 95); // Num pad 7
this.mapping.set(104, 96); // Num pad 8
this.mapping.set(105, 97); // Num pad 9
this.mapping.set(106, 85); // Multiply
this.mapping.set(107, 87); // Add
this.mapping.set(109, 86); // Subtract
this.mapping.set(110, 99); // Decimal point
this.mapping.set(111, 84); // Divide
this.mapping.set(112, 58); // F1
this.mapping.set(113, 59); // F2
this.mapping.set(114, 60); // F3
this.mapping.set(115, 61); // F4
this.mapping.set(116, 62); // F5
this.mapping.set(117, 63); // F6
this.mapping.set(118, 64); // F7
this.mapping.set(119, 65); // F8
this.mapping.set(120, 66); // F9
this.mapping.set(121, 67); // F10
this.mapping.set(122, 68); // F11
this.mapping.set(123, 69); // F12
this.mapping.set(144, 83); // Num lock
this.mapping.set(145, 71); // Scroll lock
this.mapping.set(186, 51); // Semi-colon
this.mapping.set(187, 46); // Equal sign
this.mapping.set(188, 54); // Comma
this.mapping.set(189, 45); // Dash
this.mapping.set(190, 55); // Period
this.mapping.set(191, 56); // Forward slash
this.mapping.set(192, 53); // Grave accent
this.mapping.set(219, 47); // Open bracket
this.mapping.set(220, 49); // Back slash
this.mapping.set(221, 48); // Close bracket
this.mapping.set(222, 52); // Single quote
}
private reMap(value: Map<number, boolean>): boolean[] {
return [value.get(16), value.get(17), value.get(91), value.get(18)];
}
}

View File

@@ -0,0 +1,205 @@
/* tslint:disable:variable-name */
const __svg__ = { path: '../../../images/icons/**/*.svg', name: 'assets/compiled_sprite.svg' };
/* tslint:enable:variable-name */
import { Injectable } from '@angular/core';
@Injectable()
export class MapperService {
private scanCodeTextMap: Map<number, string[]>;
private scanCodeFileName: Map<number, string>;
private nameToFileName: Map<string, string>;
constructor() {
this.initScanCodeTextMap();
this.initScanCodeFileName();
this.initNameToFileNames();
}
public scanCodeToText(scanCode: number): string[] {
return this.scanCodeTextMap.get(scanCode);
}
public hasScancodeIcon(scancode: number): boolean {
return this.scanCodeFileName.has(scancode);
}
public scanCodeToSvgImagePath(scanCode: number): string {
let fileName: string = this.scanCodeFileName.get(scanCode);
if (fileName) {
return 'assets/compiled_sprite.svg#' + fileName;
}
return undefined;
}
public getIcon(iconName: string): string {
return 'assets/compiled_sprite.svg#' + this.nameToFileName.get(iconName);
}
public modifierMapper(x: number) {
if (x < 8) {
return Math.floor(x / 2) * 4 + 1 - x; // 1, 0, 3, 2, 5, 4, 7, 6
} else {
return x;
}
}
// TODO: read the mapping from JSON
private initScanCodeTextMap(): void {
this.scanCodeTextMap = new Map<number, string[]>();
this.scanCodeTextMap.set(4, ['A']);
this.scanCodeTextMap.set(5, ['B']);
this.scanCodeTextMap.set(6, ['C']);
this.scanCodeTextMap.set(7, ['D']);
this.scanCodeTextMap.set(8, ['E']);
this.scanCodeTextMap.set(9, ['F']);
this.scanCodeTextMap.set(10, ['G']);
this.scanCodeTextMap.set(11, ['H']);
this.scanCodeTextMap.set(12, ['I']);
this.scanCodeTextMap.set(13, ['J']);
this.scanCodeTextMap.set(14, ['K']);
this.scanCodeTextMap.set(15, ['L']);
this.scanCodeTextMap.set(16, ['M']);
this.scanCodeTextMap.set(17, ['N']);
this.scanCodeTextMap.set(18, ['O']);
this.scanCodeTextMap.set(19, ['P']);
this.scanCodeTextMap.set(20, ['Q']);
this.scanCodeTextMap.set(21, ['R']);
this.scanCodeTextMap.set(22, ['S']);
this.scanCodeTextMap.set(23, ['T']);
this.scanCodeTextMap.set(24, ['U']);
this.scanCodeTextMap.set(25, ['V']);
this.scanCodeTextMap.set(26, ['W']);
this.scanCodeTextMap.set(27, ['X']);
this.scanCodeTextMap.set(28, ['Y']);
this.scanCodeTextMap.set(29, ['Z']);
this.scanCodeTextMap.set(30, ['1', '!']);
this.scanCodeTextMap.set(31, ['2', '@']);
this.scanCodeTextMap.set(32, ['3', '#']);
this.scanCodeTextMap.set(33, ['4', '$']);
this.scanCodeTextMap.set(34, ['5', '%']);
this.scanCodeTextMap.set(35, ['6', '^']);
this.scanCodeTextMap.set(36, ['7', '&']);
this.scanCodeTextMap.set(37, ['8', '*']);
this.scanCodeTextMap.set(38, ['9', '(']);
this.scanCodeTextMap.set(39, ['0', ')']);
this.scanCodeTextMap.set(40, ['Enter']);
this.scanCodeTextMap.set(41, ['Esc']);
this.scanCodeTextMap.set(42, ['Backspace']);
this.scanCodeTextMap.set(43, ['Tab']);
this.scanCodeTextMap.set(44, ['Space']);
this.scanCodeTextMap.set(45, ['-', '_']);
this.scanCodeTextMap.set(46, ['=', '+']);
this.scanCodeTextMap.set(47, ['[', '{']);
this.scanCodeTextMap.set(48, [']', '}']);
this.scanCodeTextMap.set(49, ['\\', '|']);
this.scanCodeTextMap.set(50, ['NON_US_HASHMARK_AND_TILDE']);
this.scanCodeTextMap.set(51, [';', ':']);
this.scanCodeTextMap.set(52, ['\'', '"']);
this.scanCodeTextMap.set(53, ['`', '~']);
this.scanCodeTextMap.set(54, [',', '<']);
this.scanCodeTextMap.set(55, ['.', '>']);
this.scanCodeTextMap.set(56, ['/', '?']);
this.scanCodeTextMap.set(57, ['Caps Lock']);
this.scanCodeTextMap.set(58, ['F1']);
this.scanCodeTextMap.set(59, ['F2']);
this.scanCodeTextMap.set(60, ['F3']);
this.scanCodeTextMap.set(61, ['F4']);
this.scanCodeTextMap.set(62, ['F5']);
this.scanCodeTextMap.set(63, ['F6']);
this.scanCodeTextMap.set(64, ['F7']);
this.scanCodeTextMap.set(65, ['F8']);
this.scanCodeTextMap.set(66, ['F9']);
this.scanCodeTextMap.set(67, ['F10']);
this.scanCodeTextMap.set(68, ['F11']);
this.scanCodeTextMap.set(69, ['F12']);
this.scanCodeTextMap.set(70, ['PrtScn']);
this.scanCodeTextMap.set(71, ['Scroll Lock']);
this.scanCodeTextMap.set(72, ['Pause']);
this.scanCodeTextMap.set(73, ['Insert']);
this.scanCodeTextMap.set(74, ['Home']);
this.scanCodeTextMap.set(75, ['PgUp']);
this.scanCodeTextMap.set(76, ['Del']);
this.scanCodeTextMap.set(77, ['End']);
this.scanCodeTextMap.set(78, ['PgDn']);
this.scanCodeTextMap.set(79, ['Right Arrow']);
this.scanCodeTextMap.set(80, ['Left Arrow']);
this.scanCodeTextMap.set(81, ['Down Arrow']);
this.scanCodeTextMap.set(82, ['Up Arrow']);
this.scanCodeTextMap.set(83, ['Num Lock']);
this.scanCodeTextMap.set(84, ['/']);
this.scanCodeTextMap.set(85, ['*']);
this.scanCodeTextMap.set(86, ['-']);
this.scanCodeTextMap.set(87, ['+']);
this.scanCodeTextMap.set(88, ['Enter']);
this.scanCodeTextMap.set(89, ['end', '1']);
this.scanCodeTextMap.set(90, ['2']);
this.scanCodeTextMap.set(91, ['pgdn', '3']);
this.scanCodeTextMap.set(92, ['4']);
this.scanCodeTextMap.set(93, ['5']);
this.scanCodeTextMap.set(94, ['6']);
this.scanCodeTextMap.set(95, ['home', '7']);
this.scanCodeTextMap.set(96, ['8']);
this.scanCodeTextMap.set(97, ['pgup', '9']);
this.scanCodeTextMap.set(98, ['Insert', '0']);
this.scanCodeTextMap.set(99, ['Del', '.']);
this.scanCodeTextMap.set(104, ['F13']);
this.scanCodeTextMap.set(105, ['F14']);
this.scanCodeTextMap.set(106, ['F15']);
this.scanCodeTextMap.set(107, ['F16']);
this.scanCodeTextMap.set(108, ['F17']);
this.scanCodeTextMap.set(109, ['F18']);
this.scanCodeTextMap.set(110, ['F19']);
this.scanCodeTextMap.set(111, ['F20']);
this.scanCodeTextMap.set(112, ['F21']);
this.scanCodeTextMap.set(113, ['F22']);
this.scanCodeTextMap.set(114, ['F23']);
this.scanCodeTextMap.set(115, ['F24']);
this.scanCodeTextMap.set(118, ['Menu']);
this.scanCodeTextMap.set(176, ['00']);
this.scanCodeTextMap.set(177, ['000']);
this.scanCodeTextMap.set(232, ['Play']);
this.scanCodeTextMap.set(233, ['Stop']);
this.scanCodeTextMap.set(234, ['Prev']);
this.scanCodeTextMap.set(235, ['Next']);
this.scanCodeTextMap.set(236, ['Eject']);
this.scanCodeTextMap.set(237, ['Vol +']);
this.scanCodeTextMap.set(238, ['Vol -']);
this.scanCodeTextMap.set(239, ['Mute']);
this.scanCodeTextMap.set(240, ['WWW']);
this.scanCodeTextMap.set(241, ['Bckwrd']);
this.scanCodeTextMap.set(242, ['Frwrd']);
this.scanCodeTextMap.set(243, ['Cancel']);
}
private initScanCodeFileName(): void {
this.scanCodeFileName = new Map<number, string>();
this.scanCodeFileName.set(79, 'icon-kbd__mod--arrow-right');
this.scanCodeFileName.set(80, 'icon-kbd__mod--arrow-left');
this.scanCodeFileName.set(81, 'icon-kbd__mod--arrow-down');
this.scanCodeFileName.set(82, 'icon-kbd__mod--arrow-up');
this.scanCodeFileName.set(118, 'icon-kbd__mod--menu');
}
private initNameToFileNames(): void {
this.nameToFileName = new Map<string, string>();
this.nameToFileName.set('toggle', 'icon-kbd__fn--toggle');
this.nameToFileName.set('switch-keymap', 'icon-kbd__mod--switch-keymap');
this.nameToFileName.set('macro', 'icon-icon__macro');
this.nameToFileName.set('shift', 'icon-kbd__default--modifier-shift');
this.nameToFileName.set('option', 'icon-kbd__default--modifier-option');
this.nameToFileName.set('command', 'icon-kbd__default--modifier-command');
this.nameToFileName.set('mouse', 'icon-kbd__mouse');
this.nameToFileName.set('left-arrow', 'icon-kbd__mod--arrow-left');
this.nameToFileName.set('right-arrow', 'icon-kbd__mod--arrow-right');
this.nameToFileName.set('down-arrow', 'icon-kbd__mod--arrow-down');
this.nameToFileName.set('up-arrow', 'icon-kbd__mod--arrow-up');
this.nameToFileName.set('scroll-left', 'icon-kbd__mouse--scroll-left');
this.nameToFileName.set('scroll-right', 'icon-kbd__mouse--scroll-right');
this.nameToFileName.set('scroll-down', 'icon-kbd__mouse--scroll-down');
this.nameToFileName.set('scroll-up', 'icon-kbd__mouse--scroll-up');
}
}