From d25d0ca1a3682d97df67f62789767562aa5bf1b3 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 18 May 2020 23:45:03 -0400 Subject: devdraw, libdraw: handle keyboard runes > U+FFFF Runes in Plan 9 were limited to the 16-bit BMP when I drew up the RPC protocol between graphical programs and devdraw a long time ago. Now that they can be 32-bit, use a 32-bit wire encoding too. A new message number to avoid problems with other clients (like 9fans.net/go). Add keyboard shortcut alt : , for U+1F602, face with tears of joy, to test that it all works. --- src/libdraw/drawclient.c | 2 +- src/libdraw/drawfcall.c | 15 +++++++++++++++ src/libdraw/event.c | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src/libdraw') diff --git a/src/libdraw/drawclient.c b/src/libdraw/drawclient.c index 9376f9c0..c38f4801 100644 --- a/src/libdraw/drawclient.c +++ b/src/libdraw/drawclient.c @@ -333,7 +333,7 @@ _displayrdkbd(Display *d, Rune *r) { Wsysmsg tx, rx; - tx.type = Trdkbd; + tx.type = Trdkbd4; if(displayrpc(d, &tx, &rx, nil) < 0) return -1; *r = rx.rune; diff --git a/src/libdraw/drawfcall.c b/src/libdraw/drawfcall.c index eea14095..94115384 100644 --- a/src/libdraw/drawfcall.c +++ b/src/libdraw/drawfcall.c @@ -50,6 +50,7 @@ sizeW2M(Wsysmsg *m) case Rcursor: case Rcursor2: case Trdkbd: + case Trdkbd4: case Rlabel: case Rctxt: case Rinit: @@ -73,6 +74,8 @@ sizeW2M(Wsysmsg *m) return 4+1+1+_stringsize(m->error); case Rrdkbd: return 4+1+1+2; + case Rrdkbd4: + return 4+1+1+4; case Tlabel: return 4+1+1+_stringsize(m->label); case Tctxt: @@ -117,6 +120,7 @@ convW2M(Wsysmsg *m, uchar *p, uint n) case Rcursor: case Rcursor2: case Trdkbd: + case Trdkbd4: case Rlabel: case Rctxt: case Rinit: @@ -166,6 +170,9 @@ convW2M(Wsysmsg *m, uchar *p, uint n) case Rrdkbd: PUT2(p+6, m->rune); break; + case Rrdkbd4: + PUT(p+6, m->rune); + break; case Tlabel: PUTSTRING(p+6, m->label); break; @@ -221,6 +228,7 @@ convM2W(uchar *p, uint n, Wsysmsg *m) case Rcursor: case Rcursor2: case Trdkbd: + case Trdkbd4: case Rlabel: case Rctxt: case Rinit: @@ -270,6 +278,9 @@ convM2W(uchar *p, uint n, Wsysmsg *m) case Rrdkbd: GET2(p+6, m->rune); break; + case Rrdkbd4: + GET(p+6, m->rune); + break; case Tlabel: GETSTRING(p+6, &m->label); break; @@ -360,6 +371,10 @@ drawfcallfmt(Fmt *fmt) return fmtprint(fmt, "Trdkbd"); case Rrdkbd: return fmtprint(fmt, "Rrdkbd rune=%C", m->rune); + case Trdkbd4: + return fmtprint(fmt, "Trdkbd4"); + case Rrdkbd4: + return fmtprint(fmt, "Rrdkbd4 rune=%C", m->rune); case Tlabel: return fmtprint(fmt, "Tlabel label='%s'", m->label); case Rlabel: diff --git a/src/libdraw/event.c b/src/libdraw/event.c index 9d7e10c2..e2d5f707 100644 --- a/src/libdraw/event.c +++ b/src/libdraw/event.c @@ -284,7 +284,7 @@ extract(int canblock) } }else if(i == Skeyboard){ if(eslave[i].rpc == nil) - eslave[i].rpc = startrpc(Trdkbd); + eslave[i].rpc = startrpc(Trdkbd4); if(eslave[i].rpc){ /* if ready, don't block in select */ if(eslave[i].rpc->p) -- cgit v1.2.3 From a6ad39aaaa36b8aadc5c35bfc803afbde32918c0 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 26 May 2020 11:24:18 -0400 Subject: libdraw: handle larger number of subfonts --- src/libdraw/openfont.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libdraw') diff --git a/src/libdraw/openfont.c b/src/libdraw/openfont.c index 9312eb43..8714a8c7 100644 --- a/src/libdraw/openfont.c +++ b/src/libdraw/openfont.c @@ -69,7 +69,7 @@ openfont1(Display *d, char *name) n = _drawflength(fd); if(fd < 0 && strncmp(fname, "/mnt/font/", 10) == 0) { fd = _fontpipe(fname+10); - n = 128*1024; + n = 1024*1024; } if(fd < 0){ free(nambuf); -- cgit v1.2.3