jianlinwei / connectbot

Automatically exported from code.google.com/p/connectbot
Apache License 2.0
0 stars 0 forks source link

Patch: Fully implement dead key support #416

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
ConnectBot git (2010-12-09) partially implements dead key support, but it 
doesn't work quite right.  Attached is a patch against git master (as of 
2010-12-17) that completes the dead key implementation so that it works as I 
believe it was intended.

This patch does a few things:
- Fixes rendering of dead key glyph in the cursor:
  - Assigns the correct font to cursorPaint.
  - Updates cursorPaint's font size as appropriate.
  - Draws the glyph in the appropriate position (origin 0, -cursorTop).
  - Forces redraw when dead key is entered.
- Adds "DEAD_KEY" meta state:
  - Ensures dead key "goes away" if an incompatible (e.g., arrow-key) non-printable is entered.
  - Treats dead keys the same as shift, alt, and ctrl transient modifiers.
- Combines (dead key) accent with printable key character, not any key code:
  - Key code is wrong thing to feed to getDeadChar.
  - Requiring a printable allows, e.g., "Shift+Alt+', Shift+e" to generate "É".

For anyone interested in trying this:

Dead key support requires the device keycharmap to include combining accents, 
which I don't think many do by default.  I made a custom keymap for the Epic 
[1] to add these.  Also, my custom ConnectBot build [2] includes this patch and 
should work on any device with an appropriate keymap.

[1] http://forum.xda-developers.com/showthread.php?t=911967
[2] http://forum.xda-developers.com/showthread.php?t=813176

Original issue reported on code.google.com by mkas...@gmail.com on 13 Jan 2011 at 5:40

Attachments: