Как выяснить, какая клавиша была нажата на BlackBerry - PullRequest
2 голосов
/ 23 апреля 2010

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

Естественно, если я переключаю устройства, эта клавиша изменится.На 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 оказать помощьрука?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 24 апреля 2010

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

public boolean keyChar(char key, int status, int time) 
{
    if (key == '2' || Keypad.getAltedChar(key) == '2') { 
    // Do your stuff here. 
    } 
}
0 голосов
/ 23 апреля 2010

Вместо 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);
}

Класс «Персонажи» предоставляет вам доступ к общеизвестному набору символов

...