"Shachar Shemesh" <[EMAIL PROTECTED]> wrote: > The problem is that the Hebrew keysyms are at 0x0fe0-0x0ff9.
According to keysymdef.h Hebrew keysyms are in the range 0xcdf - 0xcfa What says xev when you type hebrew characters? > They don't > pass the condition, and the function tries to convert them using > KEYBOARD_MapDeadKeysym, which obviously fails. My first idea was to > change this to: > if ((keysym < 0x1000) && (keysym != ' ')) > > But I then realized that this was probably just a missing 0, and was > meant to be: > if ((keysym < 0x8000) && (keysym != ' ')) And keysymdef.h confirms your suspicion. I think your fix is correct. > The second problem I encountered was that keymaps that had three letters > per key, but the third letter was wrong, received the same score (i.e. - > were not counted as mismatches) as keymaps that only had two letters. In > fact, if the X representation had only two letters, the three letter > keymaps were not penalized for trying to match a non-existing key. I > believe this is not the right behaviour, but as it does not block me at > the moment, I did not try to fix it. Probably keyboard detection code need some additional work. But since it works for (almost?) all, then it's fine to leave it as it is. -- Dmitry.