From cffc14a46abc68b132f7e9ff3ccdb1e71387db59 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Mon, 1 Jul 2024 18:06:09 +0530 Subject: [PATCH] Trigger voice chat via keyboard shortcut in Khoj side pane Quickly trigger voice chat from Khoj side pane using Keyboard shortcuts --- src/interface/obsidian/src/chat_view.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/interface/obsidian/src/chat_view.ts b/src/interface/obsidian/src/chat_view.ts index 8e0d4d6d..ca0c95e8 100644 --- a/src/interface/obsidian/src/chat_view.ts +++ b/src/interface/obsidian/src/chat_view.ts @@ -1,4 +1,4 @@ -import { ItemView, MarkdownRenderer, WorkspaceLeaf, request, requestUrl, setIcon } from 'obsidian'; +import { ItemView, MarkdownRenderer, Scope, WorkspaceLeaf, request, requestUrl, setIcon } from 'obsidian'; import * as DOMPurify from 'dompurify'; import { KhojSetting } from 'src/settings'; import { KhojPaneView } from 'src/pane_view'; @@ -28,6 +28,10 @@ export class KhojChatView extends KhojPaneView { constructor(leaf: WorkspaceLeaf, setting: KhojSetting) { super(leaf, setting); + // Register Modal Keybindings to send voice message + this.scope = new Scope(this.app.scope); + this.scope.register(["Mod"], 's', async (event) => { await this.speechToText(event); }); + this.waitingForLocation = true; fetch("https://ipapi.co/json") @@ -958,7 +962,7 @@ export class KhojChatView extends KhojPaneView { sendMessageTimeout: NodeJS.Timeout | undefined; mediaRecorder: MediaRecorder | undefined; - async speechToText(event: MouseEvent | TouchEvent) { + async speechToText(event: MouseEvent | TouchEvent | KeyboardEvent) { event.preventDefault(); const transcribeButton = this.contentEl.getElementsByClassName("khoj-transcribe")[0]; const chatInput = this.contentEl.getElementsByClassName("khoj-chat-input")[0];