diff options
-rw-r--r-- | app.cpp | 20 | ||||
-rw-r--r-- | app.hpp | 1 | ||||
-rw-r--r-- | c2.cpp | 3 |
3 files changed, 22 insertions, 2 deletions
@@ -218,13 +218,29 @@ struct App_Internal { break; } break; - case KeyPress: + case KeyPress: { + char buf[2][32] = { "", "" }; + char* c; + int l = 0; sym = XLookupKeysym(&e.xkey, 0); key = key_from_xkey(sym); app->key_states[key] |= key_state_pressed | key_state_just_pressed; - break; + XLookupString( + &e.xkey, + buf[0], + sizeof buf[0], + 0, + 0 + ); + for (c = buf[0]; *c; c++) + if (*c >= ' ' && *c <= '~') + buf[1][l++] = *c; + buf[1][l++] = 0; + if (l) + app->on_text_input(buf[1]); + } break; case KeyRelease: sym = XLookupKeysym(&e.xkey, 0); key = key_from_xkey(sym); @@ -133,6 +133,7 @@ struct App { virtual void on_update() = 0; virtual void on_destroy() = 0; virtual void on_resize() = 0; + virtual void on_text_input(const char* buf) = 0; }; #endif @@ -805,6 +805,9 @@ struct C2 : public App { ui->layout(w, h); dev->on_resize(); } + + void on_text_input(const char* buf) override { + } }; |