69
src/App.cpp
69
src/App.cpp
@@ -189,23 +189,57 @@ auto App::init_wayland() -> void
|
||||
bool ctrl = app->m_kbd.mod_active("Control");
|
||||
bool alt = app->m_kbd.mod_active("Mod1");
|
||||
bool meta = app->m_kbd.mod_active("Mod4");
|
||||
if (!(ctrl || alt || meta)) {
|
||||
if (sym == XKB_KEY_Left) {
|
||||
app->m_kbd.typing.push_back(1);
|
||||
} else if (sym == XKB_KEY_Down) {
|
||||
app->m_kbd.typing.push_back(2);
|
||||
} else if (sym == XKB_KEY_Up) {
|
||||
app->m_kbd.typing.push_back(3);
|
||||
} else if (sym == XKB_KEY_Right) {
|
||||
app->m_kbd.typing.push_back(4);
|
||||
} else {
|
||||
u32 cp = xkb_keysym_to_utf32(sym);
|
||||
if (cp >= 0x20) {
|
||||
char buf[8];
|
||||
int n = xkb_keysym_to_utf8(sym, buf, sizeof(buf));
|
||||
if (n > 0)
|
||||
app->m_kbd.typing.push_utf8(buf);
|
||||
}
|
||||
|
||||
bool handled = false;
|
||||
switch (sym) {
|
||||
case XKB_KEY_Left:
|
||||
app->m_kbd.typing.push_back(1);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_Down:
|
||||
app->m_kbd.typing.push_back(2);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_Up:
|
||||
app->m_kbd.typing.push_back(3);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_Right:
|
||||
app->m_kbd.typing.push_back(4);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_BackSpace:
|
||||
app->m_kbd.typing.push_back(8);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_Delete:
|
||||
case XKB_KEY_KP_Delete:
|
||||
app->m_kbd.typing.push_back(0x7F);
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_Return:
|
||||
case XKB_KEY_KP_Enter:
|
||||
app->m_kbd.typing.push_back('\n');
|
||||
handled = true;
|
||||
break;
|
||||
case XKB_KEY_w:
|
||||
case XKB_KEY_W:
|
||||
if (ctrl) {
|
||||
app->m_kbd.typing.push_back(8);
|
||||
handled = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!handled && !(ctrl || alt || meta)) {
|
||||
u32 cp = xkb_keysym_to_utf32(sym);
|
||||
if (cp >= 0x20) {
|
||||
char buf[8];
|
||||
int n = xkb_keysym_to_utf8(sym, buf, sizeof(buf));
|
||||
if (n > 0)
|
||||
app->m_kbd.typing.push_utf8(buf);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -346,6 +380,7 @@ auto App::init_egl() -> void
|
||||
auto const font_handle = m_tr->load_font(*font, std::span(fallback_paths));
|
||||
assert(font_handle && "Could not load font");
|
||||
m_font = *font_handle;
|
||||
m_gui->set_font(m_font);
|
||||
}
|
||||
|
||||
auto App::init_signal() -> void
|
||||
|
||||
Reference in New Issue
Block a user