diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-08-19 22:16:39 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-08-19 22:16:39 +1000 |
| commit | 2359df0f1754a29a451e86f6835d572fcd7fe393 (patch) | |
| tree | 053f08739b4fd11e988732f682289986a8747074 /src/keys.cc | |
| parent | f1047181cb35fb5ee6e4e8bf85adfa4aafa4be19 (diff) | |
Make scrolling speed configurable
The UI now can send a 'Scroll' key, whose value is the scrolling
amount encoded as a signed integer. This replaces the MouseWheelUp
and MouseWheelDown keys.
The NCursesUI now has a ncurses_wheel_scroll_amount ui_option that
controls that amount, it can be negative to swap scrolling direction.
Fixes #3045
Diffstat (limited to 'src/keys.cc')
| -rw-r--r-- | src/keys.cc | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/src/keys.cc b/src/keys.cc index 927baed9..8254f6cb 100644 --- a/src/keys.cc +++ b/src/keys.cc @@ -146,32 +146,24 @@ KeyList parse_keys(StringView str) String key_to_str(Key key) { - if (auto mouse_event = (key.modifiers & Key::Modifiers::MouseEvent)) + const auto coord = key.coord() + DisplayCoord{1,1}; + switch (key.modifiers) { - const auto coord = key.coord() + DisplayCoord{1,1}; - switch ((Key::Modifiers)mouse_event) - { - case Key::Modifiers::MousePos: - return format("<mouse:move:{}.{}>", coord.line, coord.column); - case Key::Modifiers::MousePressLeft: - return format("<mouse:press_left:{}.{}>", coord.line, coord.column); - case Key::Modifiers::MousePressRight: - return format("<mouse:press_right:{}.{}>", coord.line, coord.column); - case Key::Modifiers::MouseReleaseLeft: - return format("<mouse:release_left:{}.{}>", coord.line, coord.column); - case Key::Modifiers::MouseReleaseRight: - return format("<mouse:release_right:{}.{}>", coord.line, coord.column); - case Key::Modifiers::MouseWheelDown: - return "<mouse:wheel_down>"; - case Key::Modifiers::MouseWheelUp: - return "<mouse:wheel_up>"; - default: kak_assert(false); - } - } - else if (key.modifiers == Key::Modifiers::Resize) - { - auto size = key.coord() + DisplayCoord{1,1}; - return format("<resize:{}.{}>", size.line, size.column); + case Key::Modifiers::MousePos: + return format("<mouse:move:{}.{}>", coord.line, coord.column); + case Key::Modifiers::MousePressLeft: + return format("<mouse:press_left:{}.{}>", coord.line, coord.column); + case Key::Modifiers::MousePressRight: + return format("<mouse:press_right:{}.{}>", coord.line, coord.column); + case Key::Modifiers::MouseReleaseLeft: + return format("<mouse:release_left:{}.{}>", coord.line, coord.column); + case Key::Modifiers::MouseReleaseRight: + return format("<mouse:release_right:{}.{}>", coord.line, coord.column); + case Key::Modifiers::Scroll: + return format("<scroll:{}>", static_cast<int>(key.key)); + case Key::Modifiers::Resize: + return format("<resize:{}.{}>", coord.line, coord.column); + default: break; } bool named = false; |
