diff --git a/dat.h b/dat.h index e6fa157..dffeedd 100644 --- a/dat.h +++ b/dat.h @@ -128,6 +128,7 @@ struct Keyreq int fd; u32int ks; u32int mod; + int want; /* nonzero: append preedit after commit */ }; typedef struct Dictreq Dictreq; diff --git a/srv.c b/srv.c index 9cbe99d..d1f3892 100644 --- a/srv.c +++ b/srv.c @@ -11,6 +11,7 @@ sendkey(int fd, u32int ks, u32int mod) kr.fd = fd; kr.ks = ks; kr.mod = mod; + kr.want = 0; chansend(keyc, &kr); } diff --git a/strans.c b/strans.c index 85dd8cf..9a1392e 100644 --- a/strans.c +++ b/strans.c @@ -312,6 +312,13 @@ imthread(void*) out[1] = len; n += len; } + if(kr.want){ + len = im.pre.n > 0 ? + stoutf(&im.pre, (char*)(out+n+1), + sizeof(out)-n-1) : 0; + out[n] = len; + n += 1 + len; + } write(kr.fd, out, n); break; case 1: