Handle all available keys when a RemoteClient input is available
We were just treating the next key. Which led to <esc> byte remaining after suspend, that led that <esc> being interpretted as <alt> when the following key got available. Fixes #739
This commit is contained in:
parent
006be63a32
commit
f904402486
|
@ -518,7 +518,7 @@ RemoteClient::RemoteClient(StringView session, std::unique_ptr<UserInterface>&&
|
||||||
msg.write(env_vars);
|
msg.write(env_vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->set_input_callback([this](EventMode){ write_next_key(); });
|
m_ui->set_input_callback([this](EventMode){ send_available_keys(); });
|
||||||
|
|
||||||
MsgReader reader;
|
MsgReader reader;
|
||||||
m_socket_watcher.reset(new FDWatcher{sock, [this, reader](FDWatcher& watcher, EventMode) mutable {
|
m_socket_watcher.reset(new FDWatcher{sock, [this, reader](FDWatcher& watcher, EventMode) mutable {
|
||||||
|
@ -589,12 +589,13 @@ RemoteClient::RemoteClient(StringView session, std::unique_ptr<UserInterface>&&
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteClient::write_next_key()
|
void RemoteClient::send_available_keys()
|
||||||
{
|
{
|
||||||
MsgWriter msg(m_socket_watcher->fd(), MessageType::Key);
|
while (m_ui->is_key_available())
|
||||||
// do that before checking dimensions as get_key may
|
{
|
||||||
// handle a resize event.
|
MsgWriter msg(m_socket_watcher->fd(), MessageType::Key);
|
||||||
msg.write(m_ui->get_key());
|
msg.write(m_ui->get_key());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_command(StringView session, StringView command)
|
void send_command(StringView session, StringView command)
|
||||||
|
|
|
@ -37,7 +37,7 @@ public:
|
||||||
const EnvVarMap& env_vars, StringView init_command);
|
const EnvVarMap& env_vars, StringView init_command);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void write_next_key();
|
void send_available_keys();
|
||||||
|
|
||||||
std::unique_ptr<UserInterface> m_ui;
|
std::unique_ptr<UserInterface> m_ui;
|
||||||
std::unique_ptr<FDWatcher> m_socket_watcher;
|
std::unique_ptr<FDWatcher> m_socket_watcher;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user