有谁知道如何通过 GetKeys 函数获取任何键状态(按下或否)?换句话说,如何处理这个函数:
bool result = isPressed(kVK_LeftArrow);
谢谢你。
有谁知道如何通过 GetKeys 函数获取任何键状态(按下或否)?换句话说,如何处理这个函数:
bool result = isPressed(kVK_LeftArrow);
谢谢你。
该KeyMap
类型是一个整数数组,但它的实际布局是一系列位,每个键码一个。特定键的位数比虚拟键码少一。
由于位移对于非常大的值是不合法的(例如,您不能只要求编译器移动 74 位),因此该KeyMap
类型分为 4 个部分。您需要获取虚拟键码的位数并除以 32 以找到该位的正确整数;然后取余数来确定应该设置哪个位。
所以,试试这个:
uint16_t vKey = kVK_LeftArrow;
uint8_t index = (vKey - 1) / 32;
uint8_t shift = ((vKey - 1) % 32);
KeyMap keyStates;
GetKeys(keyStates);
if (keyStates[index] & (1 << shift))
{
// left arrow key is down
}