From ec7523f9b002d34086f231e4bf6ed4325d7f72fa Mon Sep 17 00:00:00 2001 From: isark Date: Thu, 20 Jul 2023 21:56:55 +0200 Subject: [PATCH] Testing keydown/keyup events for keyboard shortcut rebinding --- src/app/app.component.html | 7 +++++-- src/app/app.component.ts | 14 +++---------- src/app/app.module.ts | 3 ++- .../directives/record-key-chord.directive.ts | 20 +++++++++++++++++++ src/app/services/keybind-manager.service.ts | 9 +++++++++ src/app/services/shortcut.service.ts | 1 + 6 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 src/app/directives/record-key-chord.directive.ts create mode 100644 src/app/services/keybind-manager.service.ts diff --git a/src/app/app.component.html b/src/app/app.component.html index b880b6e..3358da8 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -14,5 +14,8 @@ {{interactable}} - - + + + + + \ No newline at end of file diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 2bc61a7..584f33e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,9 +1,5 @@ -import { AfterViewInit, Component, OnInit } from "@angular/core"; -import { app, tauri } from "@tauri-apps/api"; +import { Component, Directive, HostListener, OnInit } from "@angular/core"; import { invoke } from "@tauri-apps/api/tauri"; -import { ShortcutHandler, register } from "@tauri-apps/api/globalShortcut"; -import { Event, listen } from '@tauri-apps/api/event'; -import { Observable, Subscriber, from } from "rxjs"; import { ShortcutService } from "./services/shortcut.service"; import { EventsService } from "./services/events.service"; @@ -21,15 +17,14 @@ class StateEvent { export class AppComponent implements OnInit { auto_hide: boolean = true; interactable: boolean = false; + test: boolean = false; constructor(private shortcuts: ShortcutService, private events: EventsService) { } ngOnInit(): void { - invoke("set_auto_hide", { auto_hide: this.auto_hide }).then(); this.shortcuts.register('F6').subscribe((s) => { - if (this.interactable) { this.interactable = false; } else { @@ -42,13 +37,10 @@ export class AppComponent implements OnInit { this.events.listen("OverlayStateChange").subscribe(event => { this.interactable = event.payload.Interactable != null; }) - - } toggleAutoHide() { console.log("toggle auto hide!!"); invoke("set_auto_hide", { autoHide: this.auto_hide }).then(); } - -} +} \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2605abf..c931da2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,9 +3,10 @@ import { BrowserModule } from "@angular/platform-browser"; import { AppComponent } from "./app.component"; import { FormsModule } from "@angular/forms"; +import { RecordKeyChord } from "./directives/record-key-chord.directive"; @NgModule({ - declarations: [AppComponent], + declarations: [AppComponent, RecordKeyChord], imports: [BrowserModule, FormsModule], providers: [], bootstrap: [AppComponent], diff --git a/src/app/directives/record-key-chord.directive.ts b/src/app/directives/record-key-chord.directive.ts new file mode 100644 index 0000000..1c3f27e --- /dev/null +++ b/src/app/directives/record-key-chord.directive.ts @@ -0,0 +1,20 @@ + +import { Directive, HostListener, Input } from '@angular/core'; + +@Directive({ + selector: '[RecordKeyChord]' +}) +export class RecordKeyChord { + @Input('enable') enable: boolean = false; + + @HostListener('window:keydown', ['$event']) + handleKeyDown(event: KeyboardEvent) { + console.log("keydown:", event); + } + + @HostListener('window:keyup', ['$event']) + handleKeyUp(event: KeyboardEvent) { + console.log("keydown:", event); + } + +} \ No newline at end of file diff --git a/src/app/services/keybind-manager.service.ts b/src/app/services/keybind-manager.service.ts new file mode 100644 index 0000000..920c0fc --- /dev/null +++ b/src/app/services/keybind-manager.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class KeybindManagerService { + constructor() { } + +} diff --git a/src/app/services/shortcut.service.ts b/src/app/services/shortcut.service.ts index 71ed305..2f7252a 100644 --- a/src/app/services/shortcut.service.ts +++ b/src/app/services/shortcut.service.ts @@ -14,5 +14,6 @@ export class ShortcutService { this.zone.run(() => subscriber.next(s)); }) }); + } }