我想要什么:例如,要知道用户何时按下了数字为“2”的按钮。我不在乎是否按下“Alt”或“Shift”。用户按下了一个按钮,我想评估此按钮是否印有“2”。
当然,如果我切换设备,这个键会改变。在Bold 9700/9500上,这是'E'键。在珍珠上,这是'T'/'Y'键。
通过使用启用ALT按钮并使用Keypad.key()
查找“2”字符的键代码,我已设法使其显示为迂回方式获得实际按钮:
// 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
中定义的常量,但我找不到映射到设备上实际按钮的常量。
更有经验的黑莓开发者是否愿意伸出援助之手?
谢谢!
答案 0 :(得分:3)
使用keyChar查找字符,但是为了捕获而不管字符是否变了,你还需要使用Keypad.getAltedChar:
public boolean keyChar(char key, int status, int time) { if (key == '2' || Keypad.getAltedChar(key) == '2') { // Do your stuff here. } }
答案 1 :(得分: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);
}
使用Characters类可以访问一组众所周知的字符