diff options
author | rsc <devnull@localhost> | 2004-04-19 05:56:17 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-19 05:56:17 +0000 |
commit | e543c475e7ac135ce1497d7a0d339eacf8f6cfe1 (patch) | |
tree | 86706812a12badffa87dddfbe514860f785a3958 /src/libdraw/x11-itrans.c | |
parent | 904f0d0b4210ce81304c6cebfb562d9bb67bdfbe (diff) | |
download | plan9port-e543c475e7ac135ce1497d7a0d339eacf8f6cfe1.tar.gz plan9port-e543c475e7ac135ce1497d7a0d339eacf8f6cfe1.tar.bz2 plan9port-e543c475e7ac135ce1497d7a0d339eacf8f6cfe1.zip |
fix drawread, add changes from david tolpin
Diffstat (limited to 'src/libdraw/x11-itrans.c')
-rw-r--r-- | src/libdraw/x11-itrans.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/libdraw/x11-itrans.c b/src/libdraw/x11-itrans.c index 3a745880..4c33a0e8 100644 --- a/src/libdraw/x11-itrans.c +++ b/src/libdraw/x11-itrans.c @@ -9,21 +9,19 @@ #include <cursor.h> #include <keyboard.h> #include "x11-memdraw.h" +#include "x11-keysym2ucs.h" #undef time -static int +static KeySym __xtoplan9kbd(XEvent *e) { - int ind, k, md; - - md = e->xkey.state; - ind = 0; - if(md & ShiftMask) - ind = 1; + KeySym k; - k = XKeycodeToKeysym(e->xany.display, (KeyCode)e->xkey.keycode, ind); + if(e->xany.type != KeyPress) + return -1; + XLookupString((XKeyEvent*)e,NULL,0,&k,NULL); if(k == XK_Multi_key || k == NoSymbol) return -1; @@ -101,7 +99,10 @@ __xtoplan9kbd(XEvent *e) k = Kalt; break; default: /* not ISO-1 or tty control */ - return -1; + if(k>0xff) { + k = keysym2ucs(k); + if(k==-1) return -1; + } } } @@ -116,7 +117,7 @@ __xtoplan9kbd(XEvent *e) } /* BUG: could/should do Alt translation here! */ - return k; + return k+0; } static Rune* |