From ea78bad12c90a15163f9eb8db21610d6d5eb727c Mon Sep 17 00:00:00 2001 From: Thomas Kemmer Date: Sun, 28 Oct 2018 14:29:39 +0100 Subject: [PATCH] Fix #84: Add keyboard shortcuts. --- src/rms/rms.page.ts | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/rms/rms.page.ts b/src/rms/rms.page.ts index cea72bed..7af16728 100644 --- a/src/rms/rms.page.ts +++ b/src/rms/rms.page.ts @@ -1,6 +1,6 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; -import { NavParams, PopoverController } from 'ionic-angular'; +import { NavParams, PopoverController, ViewController } from 'ionic-angular'; import { TranslateService } from '@ngx-translate/core'; @@ -52,6 +52,7 @@ const FIELDS = [{ @Component({ providers: [CONTROL_UNIT_PROVIDER], templateUrl: 'rms.page.html', + host: {'(window:keydown)': 'onKeyDown($event)'} }) export class RmsPage implements OnDestroy, OnInit { @@ -75,8 +76,9 @@ export class RmsPage implements OnDestroy, OnInit { private subscription: Subscription; - constructor(public cu: ControlUnit, private logger: Logger, private settings: Settings, private speech: Speech, - params: NavParams, private popover: PopoverController, private translate: TranslateService) + constructor(public cu: ControlUnit, private logger: Logger, private settings: Settings, + private speech: Speech, params: NavParams, private popover: PopoverController, + private translate: TranslateService, private view: ViewController) { this.options = params.data; @@ -281,6 +283,23 @@ export class RmsPage implements OnDestroy, OnInit { menu.present({ev: event}); } + onKeyDown(event: KeyboardEvent) { + if (this.view.isLast()) { + switch (event.code) { + // on Android, Escape closes the application by default + case 'Escape': + case 'Space': + this.cu.trigger(ControlUnitButton.PACE_CAR); + event.stopPropagation(); + break; + case 'Enter': + this.cu.trigger(ControlUnitButton.START); + event.stopPropagation(); + break; + } + } + } + // see https://github.com/ngx-translate/core/issues/330 private getTranslations(key: string, params?: Object) { return this.translate.get(key, params).concat(