diff --git a/src/assets/index.html b/src/assets/index.html index a82c914..645f8d2 100644 --- a/src/assets/index.html +++ b/src/assets/index.html @@ -393,5 +393,6 @@ + diff --git a/src/assets/javascripts/keybindings.js b/src/assets/javascripts/keybindings.js new file mode 100644 index 0000000..306354d --- /dev/null +++ b/src/assets/javascripts/keybindings.js @@ -0,0 +1,23 @@ +const keybindings = {} + +function isTextBox(element) { + var tagName = element.tagName.toLowerCase(); + // Input elements that aren't text + const inputBlocklist = ['button','checkbox','color','file','hidden','image','radio','range','reset','search','submit'] + + return tagName === 'textarea' || + ( tagName === 'input' + && !inputBlocklist.includes(element.getAttribute('type').toLowerCase()) + ) +} + +document.addEventListener('keydown',function(event) { + if(isTextBox(event.target)) { + return; + } + const keybindFunction = keybindings[event.key]; + if(keybindFunction) { + event.preventDefault(); + keybindFunction(); + } +})