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)
{
switch (keyval)
if (m_buffer->piece_table->in_insert_mode())
{
case SDLK_ESCAPE:
m_exit_requested = true;
break;
case '0':
cursor_move(CURSOR_SOL);
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();
if (keyval == '\033')
{
m_buffer->piece_table->end_insert();
}
else if (keyval <= 0xFFu)
{
m_buffer->piece_table->insert_code_point(keyval);
}
redraw();
break;
case 'i':
m_buffer->piece_table->begin_insert(*m_cursor, true);
break;
case 'o':
m_buffer->piece_table->insert_code_point('*');
redraw();
break;
case 'a':
m_buffer->piece_table->begin_insert(*m_cursor, false);
break;
}
else
{
switch (keyval)
{
case SDLK_ESCAPE:
m_exit_requested = true;
break;
case '0':
cursor_move(CURSOR_SOL);
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;
}
}
}