summaryrefslogtreecommitdiff
path: root/src/keys.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2019-08-19 22:16:39 +1000
committerMaxime Coste <mawww@kakoune.org>2019-08-19 22:16:39 +1000
commit2359df0f1754a29a451e86f6835d572fcd7fe393 (patch)
tree053f08739b4fd11e988732f682289986a8747074 /src/keys.cc
parentf1047181cb35fb5ee6e4e8bf85adfa4aafa4be19 (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.cc42
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;