我需要能够知道橙色按钮的当前状态是什么,并且如果此状态在摩托罗拉设备 MC65 上发生变化,我需要得到通知。遗憾的是我不能使用 Symbol.Keyboard.KeyPad 类,因为 MC65 不支持它
问问题
1740 次
1 回答
2
docos 状态:
支持键盘的功能 - MC65 仅支持以下两个 API。
Symbol.Keyboard.KeyPad.SetKeyState。Symbol.Keyboard.KeyPad.GetKeyStateEx。
MC65 不支持以下键。KEYSTATE_ALT、KEYSTATE_CTRL、KEYSTATE_NUMLOCK、KEYSTATE_NUMERIC_LOCK、KEYSTATE_CAPSLOCK
对于 MC65,不能使用 Microsoft API 来获取橙色键状态。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;
希望有帮助!
于 2012-12-13T16:23:54.177 回答