Fix shortcuts on non QWERTY keyboards (#715)
authorginnyTheCat <ginnythecat@lelux.net>
Fri, 5 Aug 2022 13:42:25 +0000 (15:42 +0200)
committerGitHub <noreply@github.com>
Fri, 5 Aug 2022 13:42:25 +0000 (19:12 +0530)
* Use key instead of keyCode or code

* Use key for Escape

src/app/molecules/message/Message.jsx
src/app/organisms/room/RoomViewCmdBar.jsx
src/app/organisms/room/RoomViewInput.jsx
src/client/event/hotkeys.js

index 6950cb48abf639760b7c65d98e8b70f8a6ef8052..c1370ec3d673fdc8a82074d268ad7264c1c46ca4 100644 (file)
@@ -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);
     }
index 5bbc0aae781e215f3ed8d13173a95fc6b8b4af20..9c47024da477881ba7c55d15fbd5d727caff62c7 100644 (file)
@@ -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;
index 37e0298938ebcd72cd532770b62fb34d31c1ec72..704dd9af482ef914a6486ef18bec743e71b00d62 100644 (file)
@@ -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();
     }
index 221706535486d8cac14e4c0360125f83ba137d82..e59ce3d7555783501199d919a774a6d7e3e1cf93 100644 (file)
@@ -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;