From 1dcdada9090b1e09df83d1a1e2403449a065fd26 Mon Sep 17 00:00:00 2001 From: gabalafou Date: Thu, 19 Oct 2023 21:51:38 +0300 Subject: [PATCH] use event.key for search shortcut (#1525) * use event.key for search shortcut * suggestions from review * caps lock --- .../assets/scripts/pydata-sphinx-theme.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js b/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js index 99ddbeab0..57c329c57 100644 --- a/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js +++ b/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js @@ -236,12 +236,22 @@ var addEventListenerForSearchKeyboard = () => { (event) => { let input = findSearchInput(); // toggle on Ctrl+k or ⌘+k - if ((event.ctrlKey || event.metaKey) && event.code == "KeyK") { + if ( + // Ignore if shift or alt are pressed + !event.shiftKey && + !event.altKey && + // On Mac use ⌘, all other OS use Ctrl + (isMac + ? event.metaKey && !event.ctrlKey + : !event.metaKey && event.ctrlKey) && + // Case-insensitive so the shortcut still works with caps lock + /k/i.test(event.key) + ) { event.preventDefault(); toggleSearchField(); } // also allow Escape key to hide (but not show) the dynamic search field - else if (document.activeElement === input && event.code == "Escape") { + else if (document.activeElement === input && /Escape/i.test(event.key)) { toggleSearchField(); } },