From 5e527e434a3b2af531d581563b9e744b189a7786 Mon Sep 17 00:00:00 2001 From: ginnyTheCat Date: Fri, 5 Aug 2022 15:42:25 +0200 Subject: [PATCH] Fix shortcuts on non QWERTY keyboards (#715) * Use key instead of keyCode or code * Use key for Escape --- src/app/molecules/message/Message.jsx | 6 +++--- src/app/organisms/room/RoomViewCmdBar.jsx | 4 ++-- src/app/organisms/room/RoomViewInput.jsx | 6 ++---- src/client/event/hotkeys.js | 6 +++--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/app/molecules/message/Message.jsx b/src/app/molecules/message/Message.jsx index 6950cb48..c1370ec3 100644 --- a/src/app/molecules/message/Message.jsx +++ b/src/app/molecules/message/Message.jsx @@ -162,8 +162,8 @@ const MessageReplyWrapper = React.memo(({ roomTimeline, eventId }) => { }, []); const focusReply = (ev) => { - if (!ev.keyCode || ev.keyCode === 32 || ev.keyCode === 13) { - if (ev.keyCode) ev.preventDefault(); + if (!ev.key || ev.key === ' ' || ev.key === 'Enter') { + if (ev.key) ev.preventDefault(); if (reply?.event === null) return; if (reply?.event.isRedacted()) return; roomTimeline.loadEventTimeline(eventId); @@ -277,7 +277,7 @@ function MessageEdit({ body, onSave, onCancel }) { }, []); const handleKeyDown = (e) => { - if (e.keyCode === 13 && e.shiftKey === false) { + if (e.key === 'Enter' && e.shiftKey === false) { e.preventDefault(); onSave(editInputRef.current.value); } diff --git a/src/app/organisms/room/RoomViewCmdBar.jsx b/src/app/organisms/room/RoomViewCmdBar.jsx index 5bbc0aae..9c47024d 100644 --- a/src/app/organisms/room/RoomViewCmdBar.jsx +++ b/src/app/organisms/room/RoomViewCmdBar.jsx @@ -256,11 +256,11 @@ function RoomViewCmdBar({ roomId, roomTimeline, viewEvent }) { function listenKeyboard(event) { const { activeElement } = document; const lastCmdItem = document.activeElement.parentNode.lastElementChild; - if (event.keyCode === 27) { + if (event.key === 'Escape') { if (activeElement.className !== 'cmd-item') return; viewEvent.emit('focus_msg_input'); } - if (event.keyCode === 9) { + if (event.key === 'Tab') { if (lastCmdItem.className !== 'cmd-item') return; if (lastCmdItem !== activeElement) return; if (event.shiftKey) return; diff --git a/src/app/organisms/room/RoomViewInput.jsx b/src/app/organisms/room/RoomViewInput.jsx index 37e02989..704dd9af 100644 --- a/src/app/organisms/room/RoomViewInput.jsx +++ b/src/app/organisms/room/RoomViewInput.jsx @@ -128,9 +128,7 @@ function RoomViewInput({ } function firedCmd(cmdData) { const msg = textAreaRef.current.value; - textAreaRef.current.value = replaceCmdWith( - msg, cmdCursorPos, typeof cmdData?.replace !== 'undefined' ? cmdData.replace : '', - ); + textAreaRef.current.value = replaceCmdWith(msg, cmdCursorPos, typeof cmdData?.replace !== 'undefined' ? cmdData.replace : ''); deactivateCmd(); } @@ -254,7 +252,7 @@ function RoomViewInput({ }; const handleKeyDown = (e) => { - if (e.keyCode === 13 && e.shiftKey === false) { + if (e.key === 'Enter' && e.shiftKey === false) { e.preventDefault(); sendMessage(); } diff --git a/src/client/event/hotkeys.js b/src/client/event/hotkeys.js index 22170653..e59ce3d7 100644 --- a/src/client/event/hotkeys.js +++ b/src/client/event/hotkeys.js @@ -31,14 +31,14 @@ function listenKeyboard(event) { // Ctrl/Cmd + if (event.ctrlKey || event.metaKey) { // open search modal - if (event.code === 'KeyK') { + if (event.key === 'k') { event.preventDefault(); if (navigation.isRawModalVisible) return; openSearch(); } // focus message field on paste - if (event.code === 'KeyV') { + if (event.key === 'v') { if (navigation.isRawModalVisible) return; const msgTextarea = document.getElementById('message-textarea'); const { activeElement } = document; @@ -52,7 +52,7 @@ function listenKeyboard(event) { if (!event.ctrlKey && !event.altKey && !event.metaKey) { if (navigation.isRawModalVisible) return; - if (event.code === 'Escape') { + if (event.key === 'Escape') { if (navigation.isRoomSettings) { toggleRoomSettings(); return;