diff options
| author | Maxime Coste <mawww@kakoune.org> | 2023-05-15 21:25:55 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2023-05-15 21:25:55 +1000 |
| commit | 1a5a31cfbf4eef263b59a6481b4d1cf64ad9620e (patch) | |
| tree | c878c6966e8222688e6edb67156d5f4f1e914926 /src | |
| parent | 375a3c87df2d1cbe7c386ccec89007afb18109dd (diff) | |
| parent | 2f1e536ac75ddcf9ef4e6fd1c0255c38409b3053 (diff) | |
Merge remote-tracking branch 'arachsys/mouse-modifiers'
Diffstat (limited to 'src')
| -rw-r--r-- | src/keys.cc | 52 |
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; } |
