From 084e979143721fc3af8814bc8db6d503a6db8c9d Mon Sep 17 00:00:00 2001 From: Gabriel Fouasnon Date: Wed, 18 Oct 2023 17:33:57 +0200 Subject: [PATCH 1/3] use event.key for search shortcut --- .../assets/scripts/pydata-sphinx-theme.js | 10 ++++++++-- 1 file changed, 8 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..d58a8c3e5 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,18 @@ var addEventListenerForSearchKeyboard = () => { (event) => { let input = findSearchInput(); // toggle on Ctrl+k or ⌘+k - if ((event.ctrlKey || event.metaKey) && event.code == "KeyK") { + if ( + (event.ctrlKey || event.metaKey) && + (/k/i.test(event.key) || event.keyCode === 75) + ) { 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) || event.keyCode === 27) + ) { toggleSearchField(); } }, From 4f12573208569c702a391a0a4c632d13e3ccd886 Mon Sep 17 00:00:00 2001 From: Gabriel Fouasnon Date: Thu, 19 Oct 2023 19:54:37 +0200 Subject: [PATCH 2/3] suggestions from review --- .../assets/scripts/pydata-sphinx-theme.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 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 d58a8c3e5..e00e50673 100644 --- a/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js +++ b/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js @@ -237,17 +237,21 @@ var addEventListenerForSearchKeyboard = () => { let input = findSearchInput(); // toggle on Ctrl+k or ⌘+k if ( - (event.ctrlKey || event.metaKey) && - (/k/i.test(event.key) || event.keyCode === 75) + // 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) && + // Since shift is not allowed, event.key should match lowercase k + event.key === "k" ) { event.preventDefault(); toggleSearchField(); } // also allow Escape key to hide (but not show) the dynamic search field - else if ( - document.activeElement === input && - (/escape/i.test(event.key) || event.keyCode === 27) - ) { + else if (document.activeElement === input && /Escape/i.test(event.key)) { toggleSearchField(); } }, From c0d2808c5dac8b3a4628b5e77b59ab57ec66182f Mon Sep 17 00:00:00 2001 From: Gabriel Fouasnon Date: Thu, 19 Oct 2023 20:01:40 +0200 Subject: [PATCH 3/3] caps lock --- src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js | 4 ++-- 1 file changed, 2 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 e00e50673..57c329c57 100644 --- a/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js +++ b/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js @@ -244,8 +244,8 @@ var addEventListenerForSearchKeyboard = () => { (isMac ? event.metaKey && !event.ctrlKey : !event.metaKey && event.ctrlKey) && - // Since shift is not allowed, event.key should match lowercase k - event.key === "k" + // Case-insensitive so the shortcut still works with caps lock + /k/i.test(event.key) ) { event.preventDefault(); toggleSearchField();