From 5b18c93622e97b9a251f3b85bdb088022fd5c0f3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 18 Mar 2013 20:59:48 +0400 Subject: [PATCH] tweak hotkey map notation to allow stuff like shift-arrows --- classes/backend.php | 22 ++++++++++++++++++++++ include/functions.php | 24 ++++++++++++------------ js/tt-rss.js | 6 +++++- plugins/googlereaderkeys/init.php | 4 ++-- 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/classes/backend.php b/classes/backend.php index 5473c5c7..7848b071 100644 --- a/classes/backend.php +++ b/classes/backend.php @@ -45,6 +45,28 @@ class Backend extends Handler { $sequence = substr($sequence, strpos($sequence, "|")+1, strlen($sequence)); + } else { + $keys = explode(" ", $sequence); + + for ($i = 0; $i < count($keys); $i++) { + if (strlen($keys[$i]) > 1) { + $tmp = ''; + foreach (str_split($keys[$i]) as $c) { + switch ($c) { + case '*': + $tmp .= __('Shift') . '+'; + break; + case '^': + $tmp .= __('Ctrl') . '+'; + break; + default: + $tmp .= $c; + } + } + $keys[$i] = $tmp; + } + } + $sequence = join(" ", $keys); } print "
  • "; diff --git a/include/functions.php b/include/functions.php index 8c2ced80..2120a96b 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1928,23 +1928,23 @@ "(191)|/" => "search_dialog", // "article" => array( "s" => "toggle_mark", - "S" => "toggle_publ", + "*s" => "toggle_publ", "u" => "toggle_unread", - "T" => "edit_tags", - "D" => "dismiss_selected", - "X" => "dismiss_read", + "*t" => "edit_tags", + "*d" => "dismiss_selected", + "*x" => "dismiss_read", "o" => "open_in_new_window", "c p" => "catchup_below", "c n" => "catchup_above", - "N" => "article_scroll_down", - "P" => "article_scroll_up", - "a W" => "toggle_widescreen", + "*n" => "article_scroll_down", + "*p" => "article_scroll_up", + "a *w" => "toggle_widescreen", "e" => "email_article", "a q" => "close_article", // "article_selection" => array( "a a" => "select_all", "a u" => "select_unread", - "a U" => "select_marked", + "a *u" => "select_marked", "a p" => "select_published", "a i" => "select_invert", "a n" => "select_none", @@ -1955,9 +1955,9 @@ "f e" => "feed_edit", "f q" => "feed_catchup", "f x" => "feed_reverse", - "f D" => "feed_debug_update", - "f C" => "toggle_combined_mode", - "Q" => "catchup_all", + "f *d" => "feed_debug_update", + "f *c" => "toggle_combined_mode", + "*q" => "catchup_all", "x" => "cat_toggle_collapse", // "goto" => array( "g a" => "goto_all", @@ -1965,7 +1965,7 @@ "g s" => "goto_marked", "g p" => "goto_published", "g t" => "goto_tagcloud", - "g P" => "goto_prefs", + "g *p" => "goto_prefs", // "other" => array( "(9)|Tab" => "select_article_cursor", // tab "c l" => "create_label", diff --git a/js/tt-rss.js b/js/tt-rss.js index badfe870..5ada64d3 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -556,7 +556,7 @@ function hotkey_handler(e) { if (keycode == 16) return; // ignore lone shift if (keycode == 17) return; // ignore lone ctrl - if (!shift_key) keychar = keychar.toLowerCase(); + keychar = keychar.toLowerCase(); var hotkeys = getInitParam("hotkeys"); @@ -577,7 +577,11 @@ function hotkey_handler(e) { Element.hide(cmdline); var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")"; + + // ensure ^*char notation + if (shift_key) hotkey = "*" + hotkey; if (ctrl_key) hotkey = "^" + hotkey; + hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey; hotkey_prefix = false; diff --git a/plugins/googlereaderkeys/init.php b/plugins/googlereaderkeys/init.php index 97133d30..92bf626e 100644 --- a/plugins/googlereaderkeys/init.php +++ b/plugins/googlereaderkeys/init.php @@ -21,8 +21,8 @@ class GoogleReaderKeys extends Plugin { $hotkeys["j"] = "next_article_noscroll"; $hotkeys["k"] = "prev_article_noscroll"; - $hotkeys["N"] = "next_feed"; - $hotkeys["P"] = "prev_feed"; + $hotkeys["*n"] = "next_feed"; + $hotkeys["*p"] = "prev_feed"; $hotkeys["v"] = "open_in_new_window"; $hotkeys["r"] = "feed_refresh"; $hotkeys["(32)|space"] = "next_article";