static void key(struct XWindow *xw, struct zr_input *in, XEvent *evt, zr_bool down) { int ret; KeySym *code = XGetKeyboardMapping(xw->dpy, (KeyCode)evt->xkey.keycode, 1, &ret); if (*code == XK_Shift_L || *code == XK_Shift_R) zr_input_key(in, ZR_KEY_SHIFT, down); else if (*code == XK_Delete) zr_input_key(in, ZR_KEY_DEL, down); else if (*code == XK_Return) zr_input_key(in, ZR_KEY_ENTER, down); else if (*code == XK_space) zr_input_key(in, ZR_KEY_SPACE, down); else if (*code == XK_Left) zr_input_key(in, ZR_KEY_LEFT, down); else if (*code == XK_Right) zr_input_key(in, ZR_KEY_RIGHT, down); else if (*code == XK_BackSpace) zr_input_key(in, ZR_KEY_BACKSPACE, down); else if (*code > 32 && *code < 128) { if (*code == 'c') zr_input_key(in, ZR_KEY_COPY, down && (evt->xkey.state & ControlMask)); else if (*code == 'v') zr_input_key(in, ZR_KEY_PASTE, down && (evt->xkey.state & ControlMask)); else if (*code == 'x') zr_input_key(in, ZR_KEY_CUT, down && (evt->xkey.state & ControlMask)); if (!down) zr_input_char(in, (char)*code); } XFree(code); }
static void zrmenu_input_keyboard(struct zr_context *ctx) { /* placeholder, it just presses 1 on right click needs to be hooked up correctly */ if(menu_input_mouse_state(MENU_MOUSE_RIGHT_BUTTON)) zr_input_char(ctx, '1'); }
static void text(struct zr_input *in, MSG *msg) { char glyph; if (msg->wParam < 32 && msg->wParam >= 128) return; glyph = (zr_char)msg->wParam; zr_input_char(in, glyph); }