JsonUI: Add support for a "mouse" RPC calls from the UI
As discussed on issue #2019
This commit is contained in:
parent
a19ce37634
commit
c2637f08d9
|
@ -57,3 +57,6 @@ The requests that the json ui can interpret on stdin are:
|
||||||
|
|
||||||
* keys(String key1, String key2...): keystrokes
|
* keys(String key1, String key2...): keystrokes
|
||||||
* resize(int rows, int columns): notify ui resize
|
* resize(int rows, int columns): notify ui resize
|
||||||
|
* mouse(String type, int line, int column): mouse event, type
|
||||||
|
can be: 'move', 'press', 'release', 'wheel_up', 'wheel_down',
|
||||||
|
line, column is the cursor position.
|
||||||
|
|
|
@ -390,6 +390,26 @@ void JsonUI::eval_json(const Value& json)
|
||||||
m_on_key(key);
|
m_on_key(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (method == "mouse")
|
||||||
|
{
|
||||||
|
if (params.size() != 3)
|
||||||
|
throw runtime_error("mouse type/coordinates not specified");
|
||||||
|
|
||||||
|
const StringView type = params[0].as<String>();
|
||||||
|
const Codepoint coord = encode_coord({params[1].as<int>(), params[2].as<int>()});
|
||||||
|
if (type == "move")
|
||||||
|
m_on_key({Key::Modifiers::MousePos, coord});
|
||||||
|
else if (type == "press")
|
||||||
|
m_on_key({Key::Modifiers::MousePress, coord});
|
||||||
|
else if (type == "release")
|
||||||
|
m_on_key({Key::Modifiers::MouseRelease, coord});
|
||||||
|
else if (type == "wheel_up")
|
||||||
|
m_on_key({Key::Modifiers::MouseWheelUp, coord});
|
||||||
|
else if (type == "wheel_down")
|
||||||
|
m_on_key({Key::Modifiers::MouseWheelDown, coord});
|
||||||
|
else
|
||||||
|
throw runtime_error(format("invalid mouse event type: {}", type));
|
||||||
|
}
|
||||||
else if (method == "resize")
|
else if (method == "resize")
|
||||||
{
|
{
|
||||||
if (params.size() != 2)
|
if (params.size() != 2)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user