Commit: 6bfd5ccf1c1e40677b1b5a8d39eff986b75c4d62
Parent: ab9b90435bdfc1d7880a1ff6798a447f7e576a7f
Author: Randy Palamar
Date:   Mon, 19 Aug 2024 23:19:34 -0600
clipboard text pasting
Diffstat:
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/config.def.h b/config.def.h
@@ -36,7 +36,8 @@ struct {
 typedef KEYBIND_FN(KeyBind_Fn);
 
 /* NOTE: Bindable Functions */
-KEYBIND_FN(zoom);              /* arg: .i = font size increment */
+KEYBIND_FN(paste);             /* arg: none                      */
+KEYBIND_FN(zoom);              /* arg: .i = font size increment  */
 
 #define MODKEY  (GLFW_MOD_ALT)
 #define TERMMOD (GLFW_MOD_CONTROL|GLFW_MOD_SHIFT)
@@ -48,6 +49,7 @@ struct hotkey {
 	KeyBind_Fn *fn;
 	Arg arg;
 } g_hotkeys[] = {
+	{ENCODE_KEY(GLFW_PRESS,  MODKEY,  GLFW_KEY_V),         paste, {0}},
 	{ENCODE_KEY(GLFW_PRESS,  TERMMOD, GLFW_KEY_MINUS),     zoom,  {.i = -1}},
 	{ENCODE_KEY(GLFW_REPEAT, TERMMOD, GLFW_KEY_MINUS),     zoom,  {.i = -1}},
 	{ENCODE_KEY(GLFW_PRESS,  TERMMOD, GLFW_KEY_EQUAL),     zoom,  {.i = +1}},
diff --git a/vtgl.c b/vtgl.c
@@ -297,6 +297,16 @@ render_framebuffer(Term *t, RenderPushBuffer *rpb)
 	}
 }
 
+KEYBIND_FN(paste)
+{
+	s8 text = {.data = (u8 *)glfwGetClipboardString(0)};
+	if (text.data) {
+		for (u8 *t = text.data; *t; t++)
+			text.len++;
+		os_child_put_s8(t->child, text);
+	}
+}
+
 KEYBIND_FN(zoom)
 {
 	shift_font_sizes(&t->fa, a.i);