diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-02-18 18:58:07 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-02-18 18:58:07 +0100 |
| commit | b43fdc7eb67f282ff37b98ceb19077185228885b (patch) | |
| tree | 2013b00556d639e752022562d7aeee0beb28c00d /src/input_handler.cc | |
| parent | 577734dae725739aa1fe6f87334253441385f24a (diff) | |
Add macro recording/replay support
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc index 68d8f576..88f986ba 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -690,9 +690,35 @@ void InputHandler::handle_available_inputs() { Key key = m_context.ui().get_key(); if (is_valid(key)) + { + const bool was_recording = is_recording(); + m_mode->on_key(key); + + // do not record the key that made us enter or leave recording mode. + if (was_recording and is_recording()) + m_recorded_keys += key_to_str(key); + } m_mode_trash.clear(); } } +void InputHandler::start_recording(char reg) +{ + assert(m_recording_reg == 0); + m_recording_reg = reg; +} + +bool InputHandler::is_recording() const +{ + return m_recording_reg != 0; +} + +void InputHandler::stop_recording() +{ + assert(m_recording_reg != 0); + RegisterManager::instance()[m_recording_reg] = memoryview<String>(m_recorded_keys); + m_recording_reg = 0; +} + } |
