GetKeys関数でキーの状態(押されているかどうか)を取得する方法を知っている人はいますか? つまり、この関数を処理する方法は次のとおりです。
bool result = isPressed(kVK_LeftArrow);
ありがとうございました。
GetKeys関数でキーの状態(押されているかどうか)を取得する方法を知っている人はいますか? つまり、この関数を処理する方法は次のとおりです。
bool result = isPressed(kVK_LeftArrow);
ありがとうございました。
KeyMap
型は整数の配列ですが、実際のレイアウトは一連のビットで、キー コードごとに 1 つです。特定のキーのビット数は、仮想キー コードより 1 少ない数です。
非常に大きな値の場合、ビット シフトは正しくないため (たとえば、コンパイラに 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
}