summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-02-19 13:50:27 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-02-19 13:50:27 +0100
commita453ddaf374fabf1fa9942a9d0df0d4a999ac79a (patch)
treef7f01339178dc838df102c36c47ac6c0c3a27538 /src
parentb08749285e76d77ebdab4ea1c56092438d953ff9 (diff)
Add support for Home/End key in prompts
Diffstat (limited to 'src')
-rw-r--r--src/input_handler.cc4
-rw-r--r--src/keys.cc12
-rw-r--r--src/keys.hh2
-rw-r--r--src/ncurses.cc2
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<String, Codepoint>;
static std::vector<KeyAndName> 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;
}