Reported by jteh on 2007-04-12 23:53
In several non-English keyboard layouts, accented characters are entered by first pressing a special accent key (a dead key), followed by pressing the character to be accented. The dead key normally produces no output. Output only occurs once the second character has been pressed and should only be a single character. pyHook breaks this behaviour. With pyHook hooking the keyboard, dead keys produce output immediately when typed and do not have any effect on the second character, thus breaking typing of these accented characters completely.
This seems to be an issue with the !ToAsciiEx function which is used by pyHook. It seems that !ToAsciiEx flushes the keyboard buffer when a dead key is typed. More info can be found at http://www.experts-exchange.com/Programming/Languages/CPP/Q_21484783.html?qid=21484783
pyHook needs to be fixed. We should be using !ToUnicodeEx anyway, as many international characters can't be represented in ASCII, and should investigate whether it also exhibits this problem.
Reported by jteh on 2007-04-12 23:53
In several non-English keyboard layouts, accented characters are entered by first pressing a special accent key (a dead key), followed by pressing the character to be accented. The dead key normally produces no output. Output only occurs once the second character has been pressed and should only be a single character. pyHook breaks this behaviour. With pyHook hooking the keyboard, dead keys produce output immediately when typed and do not have any effect on the second character, thus breaking typing of these accented characters completely.
This seems to be an issue with the !ToAsciiEx function which is used by pyHook. It seems that !ToAsciiEx flushes the keyboard buffer when a dead key is typed. More info can be found at http://www.experts-exchange.com/Programming/Languages/CPP/Q_21484783.html?qid=21484783
pyHook needs to be fixed. We should be using !ToUnicodeEx anyway, as many international characters can't be represented in ASCII, and should investigate whether it also exhibits this problem.