insert key values as code points in insert mode

This commit is contained in:
Josh Holtrop 2016-10-29 09:12:50 -04:00
parent fe64622762
commit 752d5b2071

View File

@ -250,46 +250,57 @@ void Window::handle_keysym(uint32_t keysym)
void Window::handle_keyval(uint32_t keyval) void Window::handle_keyval(uint32_t keyval)
{ {
switch (keyval) if (m_buffer->piece_table->in_insert_mode())
{ {
case SDLK_ESCAPE: if (keyval == '\033')
m_exit_requested = true; {
break; m_buffer->piece_table->end_insert();
case '0': }
cursor_move(CURSOR_SOL); else if (keyval <= 0xFFu)
break; {
case '$': m_buffer->piece_table->insert_code_point(keyval);
cursor_move(CURSOR_EOL); }
break;
case 'h':
cursor_move(CURSOR_LEFT);
break;
case 'j':
cursor_move(CURSOR_DOWN);
break;
case 'k':
cursor_move(CURSOR_UP);
break;
case 'l':
cursor_move(CURSOR_RIGHT);
break;
case 'p':
insertion_test();
break;
case 'u':
m_buffer->piece_table->undo();
redraw(); redraw();
break; }
case 'i': else
m_buffer->piece_table->begin_insert(*m_cursor, true); {
break; switch (keyval)
case 'o': {
m_buffer->piece_table->insert_code_point('*'); case SDLK_ESCAPE:
redraw(); m_exit_requested = true;
break; break;
case 'a': case '0':
m_buffer->piece_table->begin_insert(*m_cursor, false); cursor_move(CURSOR_SOL);
break; break;
case '$':
cursor_move(CURSOR_EOL);
break;
case 'h':
cursor_move(CURSOR_LEFT);
break;
case 'j':
cursor_move(CURSOR_DOWN);
break;
case 'k':
cursor_move(CURSOR_UP);
break;
case 'l':
cursor_move(CURSOR_RIGHT);
break;
case 'p':
insertion_test();
break;
case 'u':
m_buffer->piece_table->undo();
redraw();
break;
case 'i':
m_buffer->piece_table->begin_insert(*m_cursor, true);
break;
case 'a':
m_buffer->piece_table->begin_insert(*m_cursor, false);
break;
}
} }
} }