This is usefull to create key bindings that cannot be defined in a
terminal program itself. For example, this adds C-S-t as mapping for
creating a new tab in tmux:

  { TERMMOD,              XK_T,           sendraw,        {.v = "\023c"} },
---
 st.c | 6 ++++++
 st.h | 1 +
 2 files changed, 7 insertions(+)

diff --git a/st.c b/st.c
index ede7ae6..dd1f6b8 100644
--- a/st.c
+++ b/st.c
@@ -1954,6 +1954,12 @@ sendbreak(const Arg *arg)
                perror("Error sending break");
 }

+void
+sendraw(const Arg *arg)
+{
+       ttywrite(arg->v, strlen(arg->v), 0);
+}
+
 void
 tprinter(char *s, size_t len)
 {
diff --git a/st.h b/st.h
index 4da3051..edaaf51 100644
--- a/st.h
+++ b/st.h
@@ -83,6 +83,7 @@ void draw(void);
 void printscreen(const Arg *);
 void printsel(const Arg *);
 void sendbreak(const Arg *);
+void sendraw(const Arg *);
 void toggleprinter(const Arg *);

 int tattrset(int);
-- 
2.20.1


Reply via email to