diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-03-08 15:21:28 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-03-08 15:21:28 +0900 |
| commit | 4437d5b3c3eea76f6e2b0fd4a2ba21c02a098aeb (patch) | |
| tree | e8dcb20bf144aacf88f93b012dccacdeb08015cd /st/patches/st-iso14755-0.8.5.diff | |
| parent | c2b06f0d5795a789f4ddab459179ff89aedfee98 (diff) | |
updates
Diffstat (limited to 'st/patches/st-iso14755-0.8.5.diff')
| -rw-r--r-- | st/patches/st-iso14755-0.8.5.diff | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/st/patches/st-iso14755-0.8.5.diff b/st/patches/st-iso14755-0.8.5.diff new file mode 100644 index 0000000..adaedb4 --- /dev/null +++ b/st/patches/st-iso14755-0.8.5.diff @@ -0,0 +1,89 @@ +diff --git a/config.def.h b/config.def.h +index 91ab8ca..6d1aee0 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -170,6 +170,11 @@ static unsigned int defaultattr = 11; + */ + static uint forcemousemod = ShiftMask; + ++/* ++ * Command used to query unicode glyphs. ++ */ ++char *iso14755_cmd = "dmenu -w \"$WINDOWID\" -p codepoint: </dev/null"; ++ + /* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. +@@ -201,6 +206,7 @@ static Shortcut shortcuts[] = { + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, ++ { TERMMOD, XK_I, iso14755, {.i = 0} }, + }; + + /* +diff --git a/st.1 b/st.1 +index 39120b4..4a98626 100644 +--- a/st.1 ++++ b/st.1 +@@ -159,6 +159,10 @@ Copy the selected text to the clipboard selection. + .TP + .B Ctrl-Shift-v + Paste from the clipboard selection. ++.TP ++.B Ctrl-Shift-i ++Launch dmenu to enter a unicode codepoint and send the corresponding glyph ++to st. + .SH CUSTOMIZATION + .B st + can be customized by creating a custom config.h and (re)compiling the source +diff --git a/st.c b/st.c +index 51049ba..308162b 100644 +--- a/st.c ++++ b/st.c +@@ -2068,6 +2068,28 @@ tprinter(char *s, size_t len) + } + } + ++void ++iso14755(const Arg *arg) ++{ ++ FILE *p; ++ char *us, *e, codepoint[9], uc[UTF_SIZ]; ++ unsigned long utf32; ++ ++ if (!(p = popen(iso14755_cmd, "r"))) ++ return; ++ ++ us = fgets(codepoint, sizeof(codepoint), p); ++ pclose(p); ++ ++ if (!us || *us == '\0' || *us == '-' || strlen(us) > 7) ++ return; ++ if ((utf32 = strtoul(us, &e, 16)) == ULONG_MAX || ++ (*e != '\n' && *e != '\0')) ++ return; ++ ++ ttywrite(uc, utf8encode(utf32, uc), 1); ++} ++ + void + toggleprinter(const Arg *arg) + { +diff --git a/st.h b/st.h +index 519b9bd..51aa1ae 100644 +--- a/st.h ++++ b/st.h +@@ -81,6 +81,7 @@ void die(const char *, ...); + void redraw(void); + void draw(void); + ++void iso14755(const Arg *); + void printscreen(const Arg *); + void printsel(const Arg *); + void sendbreak(const Arg *); +@@ -126,3 +127,4 @@ extern unsigned int tabspaces; + extern unsigned int defaultfg; + extern unsigned int defaultbg; + extern unsigned int defaultcs; ++extern char *iso14755_cmd; |
