1

我需要能够知道橙色按钮的当前状态是什么,并且如果此状态在摩托罗拉设备 MC65 上发生变化,我需要得到通知。遗憾的是我不能使用 Symbol.Keyboard.KeyPad 类,因为 MC65 不支持它

4

1 回答 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 回答