mirror of
https://github.com/RGBCube/serenity
synced 2025-06-14 22:32:07 +00:00
LibVT: Emit different sequences while in keypad application mode
This commit is contained in:
parent
dea61d95db
commit
55b971e133
1 changed files with 54 additions and 0 deletions
|
@ -1348,7 +1348,61 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
|
||||||
emit_string(builder.string_view());
|
emit_string(builder.string_view());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto emit_application_code = [this](KeyCode key) {
|
||||||
|
// The table providing mapping from numeric keys to application keys can be found at https://vt100.net/docs/vt100-ug/chapter3.html#T3-7
|
||||||
|
StringBuilder builder;
|
||||||
|
builder.append("\x1bO"sv);
|
||||||
|
switch (key) {
|
||||||
|
case KeyCode::Key_0:
|
||||||
|
builder.append('p');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_1:
|
||||||
|
builder.append('q');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_2:
|
||||||
|
builder.append('r');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_3:
|
||||||
|
builder.append('s');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_4:
|
||||||
|
builder.append('t');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_5:
|
||||||
|
builder.append('u');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_6:
|
||||||
|
builder.append('v');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_7:
|
||||||
|
builder.append('w');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_8:
|
||||||
|
builder.append('x');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_9:
|
||||||
|
builder.append('y');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_Minus:
|
||||||
|
builder.append('m');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_Comma:
|
||||||
|
builder.append('l');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_Period:
|
||||||
|
builder.append('n');
|
||||||
|
break;
|
||||||
|
case KeyCode::Key_Return:
|
||||||
|
builder.append('M');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
emit_string(builder.string_view());
|
||||||
|
};
|
||||||
|
|
||||||
if (keypad && m_in_application_keypad_mode) {
|
if (keypad && m_in_application_keypad_mode) {
|
||||||
|
emit_application_code(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue