四個方向鍵判斷邏輯:未按下時 X、Y 坐標在中心點;按下右鍵 → X 向右偏移;右+上同時按下 → X 右偏、Y 上偏。
private void GetXYButtonsStateFromLParam(int lParam, ref JoystickButtons buttons) {
int x = lParam & 0x0000FFFF; // 低 16 位 X
int y = (int)((lParam & 0xFFFF0000) >> 16); // 高 16 位 Y(避免負數位移問題)
int m = 0x7EFF; // 中心點數值
if (x > m) buttons |= JoystickButtons.Right;
else if (x < m) buttons |= JoystickButtons.Left;
if (y > m) buttons |= JoystickButtons.Down;
else if (y < m) buttons |= JoystickButtons.Up;
}
被動模式講解完畢,下一步:如何利用手柄模擬鍵盤/滑鼠操作。主動模式開發留待讀者思考。