Basic ^C interrupt implementation.

For testing, I made cat put itself into a new process group.
This should eventually be done by sh between fork() and exec().
This commit is contained in:
Andreas Kling
2018-11-02 14:06:48 +01:00
parent 621217ffeb
commit 10b666f69a
11 changed files with 94 additions and 38 deletions

View File

@@ -384,9 +384,15 @@ void VirtualConsole::on_char(byte ch, bool shouldEmit)
set_cursor(m_cursor_row, m_cursor_column);
}
void VirtualConsole::onKeyPress(byte ch)
void VirtualConsole::onKeyPress(Keyboard::Key key)
{
emit(ch);
if (key.ctrl() && key.character == 'C') {
interrupt();
return;
}
if (key.ctrl())
emit('^');
emit(key.character);
}
void VirtualConsole::onConsoleReceive(byte ch)