From 2dbc7ca222978b23004e3b6e65e2cdbed5551192 Mon Sep 17 00:00:00 2001 From: malc Date: Wed, 22 Feb 2012 21:03:44 +0400 Subject: [PATCH] Handle NoSymbol when shifted --- wsi.ml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/wsi.ml b/wsi.ml index 0f29713..f76c801 100644 --- a/wsi.ml +++ b/wsi.ml @@ -314,6 +314,14 @@ let sendeventreq propagate destwid mask data = s; ;; +let getkeysym code mask = + let index = (mask land 1) lxor ((mask land 2) lsr 1) in + let keysym = state.keymap.(code-state.mink).(index) in + if index = 1 && keysym = 0 + then state.keymap.(code-state.mink).(0) + else keysym +;; + let readresp sock = let resp = readstr sock 32 in let opcode = r8 resp 0 in @@ -337,8 +345,7 @@ let readresp sock = then let code = r8 resp 1 in let mask = r16 resp 28 in - let index = (mask land 1) lxor ((mask land 2) lsr 1) in - let keysym = state.keymap.(code-state.mink).(index) in + let keysym = getkeysym code mask in vlog "keysym = %x %c" keysym (Char.unsafe_chr keysym); state.t#key keysym mask; @@ -347,8 +354,7 @@ let readresp sock = then let code = r8 resp 1 in let mask = r16 resp 28 in - let index = (mask land 1) lxor ((mask land 2) lsr 1) in - let keysym = state.keymap.(code-state.mink).(index) in + let keysym = getkeysym code mask in vlog "release keysym = %x %c mask %#x" keysym (Char.unsafe_chr keysym) mask -- 2.11.4.GIT