From a453ddaf374fabf1fa9942a9d0df0d4a999ac79a Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 19 Feb 2013 13:50:27 +0100 Subject: [PATCH] Add support for Home/End key in prompts --- src/input_handler.cc | 4 ++++ src/keys.cc | 12 +++++++++--- src/keys.hh | 2 ++ src/ncurses.cc | 2 ++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/input_handler.cc b/src/input_handler.cc index 88f986ba..be4aa51f 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -95,6 +95,10 @@ public: if (m_cursor_pos < m_line.char_length()) ++m_cursor_pos; } + else if (key == Key::Home) + m_cursor_pos = 0; + else if (key == Key::End) + m_cursor_pos = m_line.char_length(); else if (key == Key::Backspace) { if (m_cursor_pos != 0) diff --git a/src/keys.cc b/src/keys.cc index 70853351..528e24a6 100644 --- a/src/keys.cc +++ b/src/keys.cc @@ -19,12 +19,18 @@ using KeyAndName = std::pair; static std::vector keynamemap = { { "ret", '\r' }, { "space", ' ' }, + { "tab", '\t' }, + { "backspace", Key::Backspace}, { "esc", Key::Escape }, - { "left", Key::Left }, - { "right", Key::Right }, { "up", Key::Up }, { "down", Key::Down}, - { "backspace", Key::Backspace} + { "left", Key::Left }, + { "right", Key::Right }, + { "pageup", Key::PageUp }, + { "pagedown", Key::PageDown }, + { "home", Key::Home }, + { "end", Key::End }, + { "backtab", Key::BackTab }, }; KeyList parse_keys(const String& str) diff --git a/src/keys.hh b/src/keys.hh index 799aadee..749f83c1 100644 --- a/src/keys.hh +++ b/src/keys.hh @@ -28,6 +28,8 @@ struct Key Right, PageUp, PageDown, + Home, + End, BackTab, Invalid, }; diff --git a/src/ncurses.cc b/src/ncurses.cc index 44c7fe0f..47972fff 100644 --- a/src/ncurses.cc +++ b/src/ncurses.cc @@ -273,6 +273,8 @@ Key NCursesUI::get_key() case KEY_RIGHT: return Key::Right; case KEY_PPAGE: return Key::PageUp; case KEY_NPAGE: return Key::PageDown; + case KEY_HOME: return Key::Home; + case KEY_END: return Key::End; case KEY_BTAB: return Key::BackTab; }