From: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Tue, 8 Sep 2015 10:10:11 +0000 (+0200)
Subject: Add key to send a break to the serial line
X-Git-Url: https://git.owens.tech///git?a=commitdiff_plain;h=1f087aa8b70fce67e7c43f689b5fb35667b5d84c;p=st.git

Add key to send a break to the serial line
---

diff --git a/config.def.h b/config.def.h
index 11a0c02..7129fa1 100644
--- a/config.def.h
+++ b/config.def.h
@@ -134,6 +134,7 @@ static Mousekey mshortcuts[] = {
 
 static Shortcut shortcuts[] = {
 	/* mask                 keysym          function        argument */
+	{ XK_NO_MOD,            XK_Pause,       sendbreak,      {.i =  0} },
 	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },
 	{ ShiftMask,            XK_Print,       printscreen,    {.i =  0} },
 	{ XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} },
diff --git a/st.1 b/st.1
index 29e3163..f2f3f0e 100644
--- a/st.1
+++ b/st.1
@@ -122,6 +122,9 @@ and all the remaining arguments are used as a command
 even without it.
 .SH SHORTCUTS
 .TP
+.B Pause
+Send a break in the serial line
+.TP
 .B Ctrl-Print Screen
 Toggle if st should print to the
 .I iofile.
diff --git a/st.c b/st.c
index 256f8f5..7804316 100644
--- a/st.c
+++ b/st.c
@@ -17,6 +17,7 @@
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <termios.h>
 #include <time.h>
 #include <unistd.h>
 #include <libgen.h>
@@ -333,6 +334,7 @@ static void xzoomreset(const Arg *);
 static void printsel(const Arg *);
 static void printscreen(const Arg *) ;
 static void toggleprinter(const Arg *);
+static void sendbreak(const Arg *);
 
 /* Config.h for applying patches and the configuration. */
 #include "config.h"
@@ -2578,6 +2580,13 @@ strreset(void)
 	memset(&strescseq, 0, sizeof(strescseq));
 }
 
+void
+sendbreak(const Arg *arg)
+{
+	if (tcsendbreak(cmdfd, 0))
+		perror("Error sending break");
+}
+
 void
 tprinter(char *s, size_t len)
 {