External Keyboard Helper
Make your Android device play nice with your non-US external keyboard.
A non visible soft keyboard (Input Method) intended to be used with hardware Bluetooth and USB keyboards. It automaticly detects Bluetooth keyboards (and in some cases also USB keyboards) and brings up the Input Method dialog. It also supports a lot of different keylayouts for non-US external keyboards.
This app does NOT require a rooted device.
Features
International keyboard layouts (se list below).
Up to 16 application shortcuts can be added (for example start Google Maps with Alt+M etc.)
Up to 16 text strings can be add (for example insert your email address with Alt+E etc.)
Remaps the Escape key to Back by default (can be tweaked)
Allows you to control which characters should be treated as combining characters.
A "null" Soft Keyboard to use with hardware keyboards (Bluetooth & USB).
Automaticly brings up Input Method selection dialog when Bluetooth keyboard connects or disconnects (requires Android 2.3+).
Automatic detection can also work with USB keyboards on some platforms (experimental) (requires Android 2.3+).
App that brings up Input Method selection (for easy switching between IME's)
Switch between up to three layouts of your choice using a key or key combination.
Can choose keymap automatically based on language setting in your device.
Blocks long-press-popups on Android 2.x.
Change the key repeat delay and rate.
Layouts can be modified and two user defined custom layouts can be configured.
ConnectBot aware (TAB and CTRL codes)
Key can be assigned to trigger voice input
Currently predefined keyboard layouts
Arabic (101, 102 & 102 AZERTY)
Armenian (Eastern, Western & Phonetic)
Austrian
Belgian
Bosnian & Herzegovian
Bulgarian (Phonetic, Phonetic traditional & Typewriter)
Canadian (French & Multilingual)
Croatian
Czech (qwertz, qwerty & programmers)
Danish
English (Colemak, Dvorak, Dvorak Left hand, Dvorak Right hand, Dvorak Programmer, GB & US-International)
Estonian
Faroese
Finnish (Finland & DAS)
French (Bépo, France & Switzerland)
German (Germany & Switzerland)
Greek
Greenlandic
Hebrew
Hindi Traditional
Hungarian
Icelandic
Italian
Korean/Hangul
Latvian
Lithuanian (Numeric)
Macedonian FYROM Standard
Maldivian
Norwegian
Persian
Polish (214 & Programmers)
Portuguese (Brazil, Portugal & Br-Nativo)
Romanian
Russian (Normal, Typewriter & Phonetic)
Serbian (Latin & Cyrillic)
Slovak (qwerty & qwertz)
Slovene
Spanish (Latin America, Spain/Int & Dvorak)
Swedish (Normal & Svorak A1|A5)
Thai (Kedmanee & Pattachote)
Turkish (F & Q)
Ukrainian
Urdu (Normal & Phonetic)
Vietnamese
Get it from Google Play
Get it from AndroidPIT (for Android devices that cannot use Google Play)
There is a also a forum thread over at XDA-Developers.