diff --git a/src/pyj/read_book/selection_bar.pyj b/src/pyj/read_book/selection_bar.pyj index d154bb1596..b603a20695 100644 --- a/src/pyj/read_book/selection_bar.pyj +++ b/src/pyj/read_book/selection_bar.pyj @@ -573,9 +573,9 @@ class SelectionBar: self.copy_to_clipboard() return sc_name = shortcut_for_key_event(ev, self.view.keyboard_shortcut_map) - if ev.key is 'ArrowRight' and ev.shiftKey: + if ev.key is 'ArrowRight' and ev.shiftKey and not ev.altKey: sc_name = 'extend_selection_by_word' - elif ev.key is 'ArrowLeft' and ev.shiftKey: + elif ev.key is 'ArrowLeft' and ev.shiftKey and not ev.altKey: sc_name = 'shrink_selection_by_word' if not sc_name: @@ -584,6 +584,7 @@ class SelectionBar: 'toggle_highlights': True, 'edit_book': True, 'extend_selection_by_word': True, 'shrink_selection_by_word': True, + 'extend_selection_by_character': True, 'shrink_selection_by_character': True, 'extend_selection_by_line': True, 'shrink_selection_by_line': True, } if sc_name is 'show_chrome': diff --git a/src/pyj/read_book/shortcuts.pyj b/src/pyj/read_book/shortcuts.pyj index ee5e2186a5..6c8676265d 100644 --- a/src/pyj/read_book/shortcuts.pyj +++ b/src/pyj/read_book/shortcuts.pyj @@ -326,6 +326,18 @@ def common_shortcuts(): # {{{ _('Alter the current selection backwards by a word'), ), + 'extend_selection_by_character': desc( + v"['Alt+Shift+ArrowRight']", + 'ui', + _('Alter the current selection forward by a character'), + ), + + 'shrink_selection_by_character': desc( + v"['Alt+Shift+ArrowLeft']", + 'ui', + _('Alter the current selection backwards by a character'), + ), + 'extend_selection_by_line': desc( v"['Ctrl+Shift+ArrowDown', 'Shift+ArrowDown']", 'ui', diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index c444d87cba..8ba6cff266 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -563,6 +563,10 @@ class View: self.iframe_wrapper.send_message('modify_selection', direction='backward', granularity='word') elif data.name is 'extend_selection_by_word': self.iframe_wrapper.send_message('modify_selection', direction='forward', granularity='word') + elif data.name is 'shrink_selection_by_character': + self.iframe_wrapper.send_message('modify_selection', direction='backward', granularity='character') + elif data.name is 'extend_selection_by_character': + self.iframe_wrapper.send_message('modify_selection', direction='forward', granularity='character') elif data.name is 'shrink_selection_by_line': self.iframe_wrapper.send_message('modify_selection', direction='backward', granularity='line') elif data.name is 'extend_selection_by_line':