|
|
@@ -240,6 +240,7 @@ NK_API int
|
|
|
nk_x11_handle_event(XEvent *evt)
|
|
|
{
|
|
|
struct nk_context *ctx = &x11.ctx;
|
|
|
+ static int insert_toggle = 0;
|
|
|
|
|
|
/* optional grabbing behavior */
|
|
|
if (ctx->input.mouse.grab) {
|
|
|
@@ -267,7 +268,7 @@ nk_x11_handle_event(XEvent *evt)
|
|
|
else if (*code == XK_Up) nk_input_key(ctx, NK_KEY_UP, down);
|
|
|
else if (*code == XK_Down) nk_input_key(ctx, NK_KEY_DOWN, down);
|
|
|
else if (*code == XK_BackSpace) nk_input_key(ctx, NK_KEY_BACKSPACE, down);
|
|
|
- else if (*code == XK_space && !down) nk_input_char(ctx, ' ');
|
|
|
+ else if (*code == XK_Escape) nk_input_key(ctx, NK_KEY_TEXT_RESET_MODE, down);
|
|
|
else if (*code == XK_Page_Up) nk_input_key(ctx, NK_KEY_SCROLL_UP, down);
|
|
|
else if (*code == XK_Page_Down) nk_input_key(ctx, NK_KEY_SCROLL_DOWN, down);
|
|
|
else if (*code == XK_Home) {
|
|
|
@@ -295,11 +296,14 @@ nk_x11_handle_event(XEvent *evt)
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_LINE_START, down);
|
|
|
else if (*code == 'e' && (evt->xkey.state & ControlMask))
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_LINE_END, down);
|
|
|
- else {
|
|
|
- if (*code == 'i')
|
|
|
+ else if (*code == XK_Insert) {
|
|
|
+ if (down) insert_toggle = !insert_toggle;
|
|
|
+ if (insert_toggle) {
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, down);
|
|
|
- else if (*code == 'r')
|
|
|
+ } else {
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, down);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
if (down) {
|
|
|
char buf[32];
|
|
|
KeySym keysym = 0;
|