2010-04-22 2 views
2

Что я хочу: знать, когда пользователь нажал кнопку, на которой, например, есть номер «2». Меня не волнует, были ли нажаты клавиши «Alt» или «Shift». Пользователь нажал кнопку, и я хочу оценить, напечатана ли на этой кнопке «2».Как определить, какая клавиша была нажата на BlackBerry

Естественно, если я переключу устройства, этот ключ изменится. На Bold 9700/9500 это клавиша «E». На жемчужине это клавиша «T»/«Y».

мне удалось получить эту работу в том, что, как представляется, окольным путем, путем поиска кода ключа от характера «2» с кнопку ALT включена и с помощью Keypad.key() получить фактическую кнопку:

// figure out which key the '2' is on: 
final int BUTTON_2_KEY = Keypad.key(KeypadUtil.getKeyCode('2', KeypadListener.STATUS_ALT, KeypadUtil.MODE_EN_LOCALE)); 

protected boolean keyDown(int keycode, int time) { 
    int key = Keypad.key(keycode); 
    if (key == BUTTON_2_KEY) { 
     // do something 
     return true; 
    } 
    return super.keyDown(keycode,time); 
} 

Я не могу не задаться вопросом, есть ли лучший способ сделать это. Я посмотрел на константы, определенные в KeypadListener и Keypad, но я не могу найти константы, сопоставленные фактическим кнопкам на устройстве.

Будут ли более опытные разработчики BlackBerry оказывать помощь?

Спасибо!

+0

«Grätz на 1к. – Cephron

ответ

3

Использование keyChar найти символ , но для того, чтобы захватить независимо от того, является ли alted характер, вы также должны использовать Keypad.getAltedChar:

 
public boolean keyChar(char key, int status, int time) 
{ 
    if (key == '2' || Keypad.getAltedChar(key) == '2') { 
    // Do your stuff here. 
    } 
}
+0

Спасибо! Это в значительной степени то, что я искал. :-D – Skrud

0

Вместо KeyDown(), переопределяют keyChar() вместо того, чтобы, например, так:

public boolean keyChar(char key, int status, int time) 
{ 
    switch (key) 
    { 
     case Characters.DIGIT_TWO: 

      //do something 
      return true; 
    } 
    return super.keyChar(key, status, time); 
} 

Класс символов дает вам доступ к хорошо известному набору символов

+0

Это скажет мне, был ли введен символ «2» (если пользователь сначала нажал «ALT»). То, что я хочу знать, - это нажать кнопку _button_ с «2» на ней. Если ALT не включен, 'keyChar' скажет мне 'e' или 't' (в зависимости от типа BlackBerry). – Skrud

Смежные вопросы