Add key to send a break to the serial line

This commit is contained in:
Roberto E. Vargas Caballero 2015-09-08 12:10:11 +02:00
parent 473326f2e3
commit 1f087aa8b7
3 changed files with 13 additions and 0 deletions

View File

@ -134,6 +134,7 @@ static Mousekey mshortcuts[] = {
static Shortcut shortcuts[] = { static Shortcut shortcuts[] = {
/* mask keysym function argument */ /* mask keysym function argument */
{ XK_NO_MOD, XK_Pause, sendbreak, {.i = 0} },
{ ControlMask, XK_Print, toggleprinter, {.i = 0} }, { ControlMask, XK_Print, toggleprinter, {.i = 0} },
{ ShiftMask, XK_Print, printscreen, {.i = 0} }, { ShiftMask, XK_Print, printscreen, {.i = 0} },
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, { XK_ANY_MOD, XK_Print, printsel, {.i = 0} },

3
st.1
View File

@ -122,6 +122,9 @@ and all the remaining arguments are used as a command
even without it. even without it.
.SH SHORTCUTS .SH SHORTCUTS
.TP .TP
.B Pause
Send a break in the serial line
.TP
.B Ctrl-Print Screen .B Ctrl-Print Screen
Toggle if st should print to the Toggle if st should print to the
.I iofile. .I iofile.

9
st.c
View File

@ -17,6 +17,7 @@
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <termios.h>
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
@ -333,6 +334,7 @@ static void xzoomreset(const Arg *);
static void printsel(const Arg *); static void printsel(const Arg *);
static void printscreen(const Arg *) ; static void printscreen(const Arg *) ;
static void toggleprinter(const Arg *); static void toggleprinter(const Arg *);
static void sendbreak(const Arg *);
/* Config.h for applying patches and the configuration. */ /* Config.h for applying patches and the configuration. */
#include "config.h" #include "config.h"
@ -2578,6 +2580,13 @@ strreset(void)
memset(&strescseq, 0, sizeof(strescseq)); memset(&strescseq, 0, sizeof(strescseq));
} }
void
sendbreak(const Arg *arg)
{
if (tcsendbreak(cmdfd, 0))
perror("Error sending break");
}
void void
tprinter(char *s, size_t len) tprinter(char *s, size_t len)
{ {