summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2019-03-14 09:08:52 +0300
committerAndrew Dolgov <[email protected]>2019-03-14 09:08:52 +0300
commitb1bb7c6001c9a2c7c636674c110ccfdd5a09cd7e (patch)
tree82a53b581b0a4012bccb71901685e0039a84627c /js
parent019f4578bcb80069487c4dff7ec5c05f35b0eacd (diff)
parent63d7705b7fbe980bfc4e8c7f01b38e80b3c68928 (diff)
Merge branch 'master' of git.fakecake.org:tt-rss
Diffstat (limited to 'js')
-rw-r--r--js/AppBase.js22
-rw-r--r--js/Feeds.js1
-rwxr-xr-xjs/prefs.js1
-rw-r--r--js/tt-rss.js4
4 files changed, 19 insertions, 9 deletions
diff --git a/js/AppBase.js b/js/AppBase.js
index 121b7aa85..a5e20b8f9 100644
--- a/js/AppBase.js
+++ b/js/AppBase.js
@@ -60,14 +60,12 @@ define(["dojo/_base/declare"], function (declare) {
const hotkeys_map = App.getInitParam("hotkeys");
const keycode = event.which;
- const keychar = String.fromCharCode(keycode).toLowerCase();
+ const keychar = String.fromCharCode(keycode);
if (keycode == 27) { // escape and drop prefix
this.hotkey_prefix = false;
}
- if (keycode == 16 || keycode == 17) return; // ignore lone shift / ctrl
-
if (!this.hotkey_prefix && hotkeys_map[0].indexOf(keychar) != -1) {
this.hotkey_prefix = keychar;
@@ -87,13 +85,19 @@ define(["dojo/_base/declare"], function (declare) {
Element.hide("cmdline");
- let hotkey_name = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")";
+ let hotkey_name = "";
+
+ if (event.type == "keydown") {
+ hotkey_name = "(" + keycode + ")";
- // ensure ^*char notation
- if (event.shiftKey) hotkey_name = "*" + hotkey_name;
- if (event.ctrlKey) hotkey_name = "^" + hotkey_name;
- if (event.altKey) hotkey_name = "+" + hotkey_name;
- if (event.metaKey) hotkey_name = "%" + hotkey_name;
+ // ensure ^*char notation
+ if (event.shiftKey) hotkey_name = "*" + hotkey_name;
+ if (event.ctrlKey) hotkey_name = "^" + hotkey_name;
+ if (event.altKey) hotkey_name = "+" + hotkey_name;
+ if (event.metaKey) hotkey_name = "%" + hotkey_name;
+ } else {
+ hotkey_name = keychar ? keychar : "(" + keycode + ")";
+ }
const hotkey_full = this.hotkey_prefix ? this.hotkey_prefix + " " + hotkey_name : hotkey_name;
this.hotkey_prefix = false;
diff --git a/js/Feeds.js b/js/Feeds.js
index 401d669a7..ba63aac47 100644
--- a/js/Feeds.js
+++ b/js/Feeds.js
@@ -196,6 +196,7 @@ define(["dojo/_base/declare"], function (declare) {
App.setLoadingProgress(50);
document.onkeydown = (event) => { return App.hotkeyHandler(event) };
+ document.onkeypress = (event) => { return App.hotkeyHandler(event) };
window.onresize = () => { Headlines.scrollHandler(); }
if (!this.getActive()) {
diff --git a/js/prefs.js b/js/prefs.js
index b4ac9976e..ae6286330 100755
--- a/js/prefs.js
+++ b/js/prefs.js
@@ -78,6 +78,7 @@ require(["dojo/_base/kernel",
this.enableCsrfSupport();
document.onkeydown = (event) => { return App.hotkeyHandler(event) };
+ document.onkeypress = (event) => { return App.hotkeyHandler(event) };
App.setLoadingProgress(50);
Notify.close();
diff --git a/js/tt-rss.js b/js/tt-rss.js
index 99b44549b..a46fc17e4 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -206,6 +206,10 @@ require(["dojo/_base/kernel",
hotkeyHandler(event) {
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return;
+ // Arrow buttons and escape are not reported via keypress, handle them via keydown.
+ // escape = 27, left = 37, up = 38, right = 39, down = 40
+ if (event.type == "keydown" && event.which != 27 && (event.which < 37 || event.which > 40)) return;
+
const action_name = App.keyeventToAction(event);
if (action_name) {