From 1015ae8ea86cc4cdcea7ab6048440b9e5f58da26 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 17 Oct 2013 18:39:44 +0200 Subject: kbdfs: implement x to enter variable length unicode as suggested by erik quanstro from: http://9fans.net/archive/2013/04/327 since x is not yet entrenched, i have a suggestion for ease of input. suppose x were redefined so the syntax were "x[0-9a-f]+;". in the case that 6 hex digits are entered, then the ";" is not necessary. not only would this allow for entering 21-bit runes, it would also allow for short sequences to be entered more easily. - erik --- sys/src/cmd/aux/kbdfs/kbdfs.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/src/cmd/aux/kbdfs/kbdfs.c b/sys/src/cmd/aux/kbdfs/kbdfs.c index 323b23a54..8bbe77f75 100644 --- a/sys/src/cmd/aux/kbdfs/kbdfs.c +++ b/sys/src/cmd/aux/kbdfs/kbdfs.c @@ -514,22 +514,22 @@ Forward: if(nextrune(rawchan, &r)) continue; - if(r == 'X'){ + if(r == 'x' || r == 'X'){ + i = (r == 'X') ? 4 : 6; r = 0; - for(i = 0; i<4; i++){ + do { if(nextrune(rawchan, &rr)) break; - r <<= 4; if(rr >= '0' && rr <= '9') - r |= (rr - '0'); + r = (r << 4) | (rr - '0'); else if(rr >= 'a' && rr <= 'f') - r |= 10 + (rr - 'a'); + r = (r << 4) | (10 + (rr - 'a')); else if(rr >= 'A' && rr <= 'F') - r |= 10 + (rr - 'A'); + r = (r << 4) | (10 + (rr - 'A')); else break; - } - if(i == 4 && r) + } while(--i > 0); + if((i == 0 || rr == ';') && r != 0 && r < Runemax) goto Forward; } else { if(nextrune(rawchan, &rr)) -- cgit v1.2.3