As is typical with questions that I ask, I found the answer soon after
posting.

The answer was to create a character map.

So, I have this line in my OnCreate:
mKMap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);

and this line in my OnKeyDown
int c = mKMap.get(keyCode, (mToggleAlt ? KeyEvent.META_ALT_ON : 0));

and I get what I need.

Thanks,

Mike

On Nov 22, 1:22 am, Secretly Mike Young <[EMAIL PROTECTED]> wrote:
> Hi there,
>
> I'm trying to use OnKeyDown to find out what key was pressed; however,
> when I want, say *, it always returns 8 (or rather KeyEvent.KEYCODE_8,
> or I can use any one of a number of KeyEvent methods to get the
> unicode value for 8, but not *).
>
> If I press Alt then 8, I'll get the key down for Alt, but when I press
> 8, neither isAltPressed nor getMetaState indicate that the Alt was
> pressed.  Nonetheless, in a text field, this will give me a *, but in
> my app, I get an 8.
>
> Do I need to manually keep track of whether the Alt key was pressed
> and then map the non-alt key to the alt-key value?  That seems wrong,
> since it's possible that future phones might not have the same
> keyboard layout.  Even the keyboard layout of the emulator and the G1
> don't exactly match.  My emulator has /? to the right of the space
> key, but my G1 has ./
>
> If you need example code:
>
>     public boolean onKeyDown(int keyCode, KeyEvent msg) {
>         switch (keyCode) {
>                 case KeyEvent.KEYCODE_0:
>                 case KeyEvent.KEYCODE_1:
>                 case KeyEvent.KEYCODE_2:
>                 case KeyEvent.KEYCODE_3:
>                 case KeyEvent.KEYCODE_4:
>                 case KeyEvent.KEYCODE_5:
>                 case KeyEvent.KEYCODE_6:
>                 case KeyEvent.KEYCODE_7:
>                 case KeyEvent.KEYCODE_8:
>                 case KeyEvent.KEYCODE_9:
>                         AppendNumber(keyCode - KeyEvent.KEYCODE_0);
>                         return true;
>                 case KeyEvent.KEYCODE_STAR:  //this never gets called because
> I'm always getting KEYCODE_8.
>                         AppendOp("*");
>                         return true;
>        }
>
>                 return false;
>     }
>
> Note that I've tried it with getting the code from msg with no luck.
> Any help?
>
> Thanks,
>
> Mike
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to