From 93393be85b89f98c2636fe99f99d9531338062a7 Mon Sep 17 00:00:00 2001 From: John Alanbrook Date: Mon, 13 Feb 2023 19:35:01 +0000 Subject: [PATCH] text input --- source/engine/input.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/engine/input.c b/source/engine/input.c index f7e624f8..cdcdc150 100644 --- a/source/engine/input.c +++ b/source/engine/input.c @@ -115,11 +115,24 @@ void set_mouse_mode(int mousemode) glfwSetInputMode(mainwin->window, GLFW_CURSOR, mousemode); } +void char_cb(GLFWwindow *w, unsigned int codepoint) +{ + for (int i = 0; i < arrlen(pawns); i++) { + if (!pawns[i] || script_eval_setup("input_text", pawns[i])) continue; + char out[2]; + out[0] = (char)codepoint; + out[1] = 0; + duk_push_string(duk, out); + script_eval_exec(1); + } +} + void input_init() { glfwSetCursorPosCallback(mainwin->window, cursor_pos_cb); glfwSetScrollCallback(mainwin->window, scroll_cb); glfwSetMouseButtonCallback(mainwin->window, mb_cb); + glfwSetCharCallback(mainwin->window, char_cb); } void call_input_signal(char *signal) { @@ -133,6 +146,7 @@ void call_input_signal(char *signal) { } } + const char *keyname_extd(int key, int scancode) { char keybuf[50]; const char *kkey = NULL; @@ -236,6 +250,10 @@ const char *keyname_extd(int key, int scancode) { case GLFW_KEY_RIGHT_BRACKET: kkey = "rbracket"; break; + + case GLFW_KEY_BACKSPACE: + kkey = "backspace"; + break; } if (kkey) return kkey;