我需要能够知道橙色按钮的当前状态,并在Motorola设备MC65上发生此状态时收到通知。 遗憾的是,我不能使用Symbol.Keyboard.KeyPad类,因为它在MC65上不受支持
答案 0 :(得分:2)
docos状态:
键盘支持的功能 - 只有以下两个API MC65支持。
Symbol.Keyboard.KeyPad.SetKeyState。 Symbol.Keyboard.KeyPad.GetKeyStateEx。
MC65不支持以下键。 KEYSTATE_ALT,KEYSTATE_CTRL, KEYSTATE_NUMLOCK,KEYSTATE_NUMERIC_LOCK,KEYSTATE_CAPSLOCK
对于MC65,Microsoft API不能用于获取Orange密钥 状态。 Symbol.Keyboard.KeyPad类提供了一个新的 GetKeyStateEx()函数获取修饰符的当前状态 键即可。有关此API的说明,请参阅API函数页面。
它有这个代码示例:
// Get the key states
int keyState = keypad.GetKeyStateEx();
bool lockedState = false;
// Checking for a lock state first as it cannot be combined with others
switch (keyState)
{
case KeyStates.KEYSTATE_ORANGE_SHIFT_LOCK:
checkBoxOrangeShiftLock.Checked = true;
lockedState = true;
break;
case KeyStates.KEYSTATE_FUNCTION_LOCK:
checkBoxFuncLock.Checked = true;
lockedState = true;
break;
case KeyStates.KEYSTATE_ORANGE_LOCK:
checkBoxOrangeLock.Checked = true;
lockedState = true;
break;
case KeyStates.KEYSTATE_NUMERIC_LOCK:
checkBoxNumLock.Checked = true;
lockedState = true;
break;
case KeyStates.KEYSTATE_SHIFT_LOCK:
checkBoxShiftLock.Checked = true;
lockedState = true;
break;
default:
break;
}
if (lockedState)
{
// No need to continue if a locked state
this.Update();
return;
}
// Process unlock or temp lock states if any
this.checkBoxUnShift.Checked = (keyState & KeyStates.KEYSTATE_UNSHIFT) != 0;
this.checkBoxShift.Checked = (keyState & KeyStates.KEYSTATE_SHIFT) != 0;
this.checkBoxCtrl.Checked = (keyState & KeyStates.KEYSTATE_CTRL) != 0;
this.checkBoxAlt.Checked = (keyState & KeyStates.KEYSTATE_ALT) != 0;
this.checkBoxNum.Checked = (keyState & KeyStates.KEYSTATE_NUMLOCK) != 0;
this.checkBoxCaps.Checked = (keyState & KeyStates.KEYSTATE_CAPSLOCK) != 0;
this.checkBoxFunc.Checked = (keyState & KeyStates.KEYSTATE_FUNC) != 0;
this.checkBoxOrangeTemp.Checked = (keyState & KeyStates.KEYSTATE_ORANGE_TEMP) != 0;
希望有所帮助!