From fb5faafbc91c7779a7cae88bfe16652be6220df2 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 11 Sep 2022 10:19:16 +0200 Subject: keybinds --- client-web/source/keybinds.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 client-web/source/keybinds.ts (limited to 'client-web/source/keybinds.ts') diff --git a/client-web/source/keybinds.ts b/client-web/source/keybinds.ts new file mode 100644 index 0000000..311b55a --- /dev/null +++ b/client-web/source/keybinds.ts @@ -0,0 +1,27 @@ +import { Room } from "./room.ts" + + +export function setup_keybinds(room: Room) { + let command_mode = false + document.body.addEventListener("keydown", ev => { + // TODO is there a proper solution? + if (ev.target instanceof HTMLInputElement && !(ev.target.type == "button")) return + if (ev.repeat) return + if (ev.code == "Enter") { + room.chat.shown = !room.chat.shown + if (room.chat.shown) room.chat.focus() + ev.preventDefault() // so focused buttons dont trigger + } + if (ev.code == "Space") { + command_mode = true + ev.preventDefault() // so focused buttons dont trigger + return + } + if (command_mode) { + if (ev.code == "KeyM") room.local_user.publish_track(room.local_user.create_mic_track()) + if (ev.code == "KeyC") room.local_user.publish_track(room.local_user.create_camera_track()) + if (ev.code == "KeyS") room.local_user.publish_track(room.local_user.create_screencast_track()) + } + command_mode = false + }) +} -- cgit v1.2.3-70-g09d2