MIDP buttons problems (i.e KEY_NUM0)

Excuse me, my program apply GameCanvas,
and then apply this:
public void keyPressed (int keyCode) {
int gameCode = getGameAction(keyCode);
switch(gameCode) {
case Game_A:


case KEY_NUM0:


}}

All buttons can work but except KEY_NUM0,
if :
KEY_NUM1 -> GAME_A
KEY_NUM2 -> UP
KEY_NUM3 -> GAME_B
KEY_NUM4 -> LEFT
KEY_NUM5 -> FIRE
KEY_NUM6 -> RIGHT
KEY_NUM7 -> GAME_C
KEY_NUM8 -> DOWN
KEY_NUM9 -> GAME_D
KEY_NUM0-> ???
Thank you very much !

It seems like the phone you are using does not have any game action associated with key ‘0’. This is quite normal.

If you want to know what key was pressed, you don’t need to use getGameAction - the value of parameter keyCode is what you need. It will take values like KEY_NUM0. If the key has a label which is a Unicode character, keyCode will be the same as its Unicode number (e.g. KEY_NUM0 is 48, Unicode for ‘0’); if the key is some special key like left-softkey, it will have some non-standard negative key code chosen by the manufacturer.

If you want to know what the key conventionally ‘means’ in a game, use getGameAction. Not all keys mean something in a game, and it’s common that KEY_NUM0 has no game action (so getGameAction returns 0). The mapping between keys and game actions is not always the same on different phones, especially if the phones are like Nokia 3650 with unusual key-pad layouts.

Sometimes two different keys can have the same game meaning, and hence they have the same game action. E.g. usually the ‘up’ key (or moving the joystick up) and KEY_NUM2 both mean UP.

In MIDP 2.0, GameCanvas has a method getKeyStates which returns the states of all the game keys. Since it has to tell about all the keys in one 32-bit integer, it uses one bit per key (1 for pressed, 0 for not pressed). So instead of writing:
if (gameAction == UP)
you write:
if ((keyStates & UP_PRESSED) != 0)
Note that you use the binary-arithmetic ‘&’, not the boolean-logic ‘&&’.

Thanks for your reply, and your explaination is very detailed. Thank you very much!! :smiley: