2010-04-22 91 views
2

我想要什麼:例如,要知道用戶何時按下了具有數字「2」的按鈕。我不在乎是否按下「Alt」或「Shift」鍵。用戶已經按下了一個按鈕,並且我想評估這個按鈕上是否打印有'2'。如何找出在BlackBerry上按下哪個按鍵

當然,如果我切換設備,這個鍵會改變。在Bold 9700/9500上,這是'E'鍵。在Pearl上,這是'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); 
} 

我不禁想知道是否有更好的方法來做到這一點。我查看了在KeypadListenerKeypad中定義的常量,但找不到映射到設備上實際按鈕的任何常量。

有更多有經驗的黑莓開發者會幫忙嗎?

謝謝!

+0

'1 g。 – Cephron 2011-07-11 17:57:58

回答

3

使用keyChar找到字符,但爲了捕獲,不管字符是否被刪除,您還需要使用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 2010-04-26 14:15:44

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 2010-04-23 14:10:03

相關問題