summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2023-05-15 21:25:55 +1000
committerMaxime Coste <mawww@kakoune.org>2023-05-15 21:25:55 +1000
commit1a5a31cfbf4eef263b59a6481b4d1cf64ad9620e (patch)
treec878c6966e8222688e6edb67156d5f4f1e914926 /src
parent375a3c87df2d1cbe7c386ccec89007afb18109dd (diff)
parent2f1e536ac75ddcf9ef4e6fd1c0255c38409b3053 (diff)
Merge remote-tracking branch 'arachsys/mouse-modifiers'
Diffstat (limited to 'src')
-rw-r--r--src/keys.cc52
1 files changed, 24 insertions, 28 deletions
diff --git a/src/keys.cc b/src/keys.cc
index db87e48f..2e9b708b 100644
--- a/src/keys.cc
+++ b/src/keys.cc
@@ -184,37 +184,33 @@ Key::MouseButton str_to_button(StringView str)
String to_string(Key key)
{
const auto coord = key.coord() + DisplayCoord{1,1};
- switch (Key::Modifiers(key.modifiers & ~Key::Modifiers::MouseButtonMask))
- {
- case Key::Modifiers::MousePos:
- return format("<mouse:move:{}.{}>", coord.line, coord.column);
- case Key::Modifiers::MousePress:
- return format("<mouse:press:{}:{}.{}>", key.mouse_button(), coord.line, coord.column);
- case Key::Modifiers::MouseRelease:
- return format("<mouse:release:{}:{}.{}>", key.mouse_button(), 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;
+ bool named = true;
String res;
- auto it = find_if(keynamemap, [&key](const KeyAndName& item)
- { return item.key == key.key; });
- if (it != std::end(keynamemap))
- {
- named = true;
- res = it->name;
- }
- else if (key.key >= Key::F1 and key.key <= Key::F12)
+
+ if (key.modifiers & Key::Modifiers::MousePos)
+ res = format("mouse:move:{}.{}", coord.line, coord.column);
+ else if (key.modifiers & Key::Modifiers::MousePress)
+ res = format("mouse:press:{}:{}.{}", key.mouse_button(), coord.line, coord.column);
+ else if (key.modifiers & Key::Modifiers::MouseRelease)
+ res = format("mouse:release:{}:{}.{}", key.mouse_button(), coord.line, coord.column);
+ else if (key.modifiers & Key::Modifiers::Scroll)
+ res = format("scroll:{}", static_cast<int>(key.key));
+ else if (key.modifiers & Key::Modifiers::Resize)
+ res = format("resize:{}.{}", coord.line, coord.column);
+ else
{
- named = true;
- res = "F" + to_string((int)(key.key - Key::F1 + 1));
+ auto it = find_if(keynamemap, [&key](const KeyAndName& item)
+ { return item.key == key.key; });
+ if (it != std::end(keynamemap))
+ res = it->name;
+ else if (key.key >= Key::F1 and key.key <= Key::F12)
+ res = "F" + to_string((int)(key.key - Key::F1 + 1));
+ else
+ {
+ named = false;
+ res = String{key.key};
+ }
}
- else
- res = String{key.key};
if (key.modifiers & Key::Modifiers::Shift) { res = "s-" + res; named = true; }
if (key.modifiers & Key::Modifiers::Alt) { res = "a-" + res; named = true; }