تابع GetAsyncKeyState() در زبان C++ (در واقع یکی از توابع WinAPI در ویندوز) برای بررسی وضعیت لحظهای کلیدهای صفحهکلید استفاده میشود — یعنی بهصورت asynchronous یا «بدون وابستگی به event queue» وضعیت کلید را مستقیماً از سختافزار یا سیستمعامل میخواند.
?? این تابع در هدر زیر تعریف شده:
#include <windows.h>
پارامترها:
vKeyکدی است که نشاندهنده کلید مورد نظر است (Virtual-Key Code).مثلاً:
VK_LEFT کلید جهت چپ
VK_RIGHT کلید جهت راست
'A' کلید A
VK_SPACE فاصله (space)
نوع خروجی SHORT (16 بیتی) است.
دو بخش مختلف این مقدار، اطلاعات متفاوتی را نشان میدهند:
بیت معنی
بیت 15 (بالاترین بیت) اگر 1 باشد یعنی کلید در حال حاضر فشرده است
بیت 0 (پایینترین بیت) اگر 1 باشد یعنی از آخرین فراخوانی تابع، کلید حداقل یک بار فشرده شده است
?? نکات مهم:
به event queue وابسته نیست ? یعنی حتی اگر برنامه فریمها را از دست بدهد یا پنجره غیرفعال باشد، همچنان میتواند کلیدها را تشخیص دهد.
برای polling استفاده میشود، نه برای event-driven design.اگر برنامه نیاز به پردازش دقیق ورودیها (مانند بازیها) دارد، معمولاً با PeekMessage() یا GetMessage() ترکیب میشود.
در محیط غیر ویندوز قابل استفاده نیست (تابع خاص Win32 API است).