Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kromě tradiční klávesnice a myši existuje mnoho uživatelských vstupních zařízení. Uživatelský vstup může například pocházet z joysticku, dotykové obrazovky, mikrofonu nebo jiných zařízení, která umožňují velkou flexibilitu vstupu uživatele. Tato zařízení se souhrnně označují jako HID (Human Interface Devices). API pro přímý vstup poskytuje stabilní a robustní způsob, jak aplikace přijímat syrový vstup z jakéhokoli zařízení HID, včetně klávesnice a myši.
Tato část se zabývá následujícími tématy:
Nezpracovaný vstupní model
Dříve klávesnice a myš obvykle generovaly vstupní data. Systém interpretoval data pocházející z těchto zařízení způsobem, který eliminoval podrobnosti o nezpracovaných informacích specifických pro zařízení. Například klávesnice vygeneruje kód kontroly specifický pro zařízení, ale systém poskytuje aplikaci s kódem virtuálního klíče. Kromě skrytí podrobností nezpracovaného vstupu správce oken nepodporuje všechny nové identifikátory HID. Aby aplikace získala vstup z nepodporovaných identifikátorů HID, musela udělat mnoho věcí: otevřít zařízení, spravovat sdílený režim, pravidelně číst zařízení nebo nastavit port pro doplňování vstupně-výstupních operací atd. Nezpracovaný vstupní model a přidružená rozhraní API byly vyvinuty tak, aby umožňovaly jednoduchý přístup k nezpracovaného vstupu ze všech vstupních zařízení, včetně klávesnice a myši.
Nezpracovaný vstupní model se liší od původního vstupního modelu Windows pro klávesnici a myš. V původním vstupním modelu aplikace přijímá vstup nezávislý na zařízení ve formě zpráv, které se odesílají nebo publikují do svých oken, například WM_CHAR, WM_MOUSEMOVEa WM_APPCOMMAND. Naproti tomu pro nezpracovaný vstup musí aplikace zaregistrovat zařízení, ze kterého chce získat data. Aplikace také získává nezpracovaný vstup prostřednictvím zprávy WM_INPUT.
Nezpracovaný vstupní model má několik výhod:
- Aplikace nemusí zjišťovat ani otevírat vstupní zařízení.
- Aplikace získá data přímo ze zařízení a zpracuje data podle svých potřeb.
- Aplikace dokáže odlišit zdroj vstupu, i když je ze stejného typu zařízení. Například dvě počítačové myši.
- Aplikace spravuje datový provoz zadáním dat z kolekce zařízení nebo pouze konkrétních typů zařízení.
- Zařízení HID se dají používat, jakmile budou dostupná na trhu, aniž by bylo třeba čekat na nové typy zpráv nebo aktualizovaný operační systém pro přidání nových příkazů v WM_APPCOMMAND.
Upozorňujeme, že WM_APPCOMMAND poskytuje některá zařízení HID. WM_APPCOMMAND je však událost vstupu nezávislá na zařízení vyšší úrovně, zatímco WM_INPUT odesílá nezpracovaná data nízké úrovně specifická pro zařízení.
Registrace pro nezpracovaný vstup
Ve výchozím nastavení žádná aplikace nepřijímá nezpracovaný vstup. Pokud chcete přijímat nezpracovaný vstup ze zařízení, musí aplikace zařízení zaregistrovat.
Pokud chcete registrovat zařízení, aplikace nejprve vytvoří pole RAWINPUTDEVICE struktur, které určují kolekci nejvyšší úrovně (TLC) pro požadovaná zařízení. TLC je definován stránkou použití (třída zařízení) a ID použití (zařízení v rámci třídy). Pokud například chcete získat klávesovou zkratku TLC, nastavte UsagePage = 0x01 a UsageID = 0x06. Aplikace volá RegisterRawInputDevices k registraci zařízení.
Aplikace může zaregistrovat zařízení, které není aktuálně připojené k systému. Když je toto zařízení připojené, Správce Windows automaticky odešle nezpracovaný vstup do aplikace. Chcete-li získat seznam nezpracovaných vstupních zařízení v systému, aplikace volá GetRawInputDeviceList. Pomocí hDevice z tohoto volání aplikace používá funkci GetRawInputDeviceInfo ke získání informací o zařízení.
Prostřednictvím dwFlags člena RAWINPUTDEVICEmůže aplikace vybrat zařízení, která má poslouchat, a která má ignorovat. Aplikace může například požádat o vstup ze všech telefonních zařízení s výjimkou zařízení pro odpovídání. Vzorový kód najdete v tématu registrace nezpracovaných vstupních.
Všimněte si, že myš a klávesnice jsou také zařízení HID, takže data z nich mohou přicházet prostřednictvím zpráv HID WM_INPUT a také z tradičních zpráv. Aplikace může vybrat některou metodu správným výběrem příznaků v RAWINPUTDEVICE.
Stav registrace aplikace získáte tak, že kdykoli zavoláte GetRegisteredRawInputDevices.
Čtení nezpracovaných vstupů
Aplikace přijímá nezpracovaný vstup z libovolného HID, jehož kolekce nejvyšší úrovně (TLC) odpovídá TLC z registrace. Když aplikace obdrží nezpracovaný vstup, její fronta zpráv získá zprávu WM_INPUT, a příznak stavu fronty QS_RAWINPUT je nastaven (QS_INPUT také zahrnuje tento příznak). Aplikace může přijímat data, když je v popředí a kdy je na pozadí.
Nezpracovaná data můžete číst dvěma způsoby: metodu bez vyrovnávací paměti (nebo standardní) a metodu uloženou do vyrovnávací paměti. Unbuffered metoda získá nezpracovaná data jeden RAWINPUT strukturu najednou a je adekvátní pro mnoho HID. Zde aplikace volá GetMessage pro získání WM_INPUT zprávy. Potom aplikace volá GetRawInputData pomocí popisovače RAWINPUT obsaženého v WM_INPUT. Příklad najdete v tématu Provádění standardního čtení nezpracovaného vstupu.
Naproti tomu metoda s vyrovnávací pamětí získá pole struktur RAWINPUT současně. To je poskytováno pro zařízení, která můžou produkovat velké objemy nezpracovaného vstupu. V této metodě aplikace volá GetRawInputBuffer, aby se získalo pole struktur RAWINPUT. Všimněte si, že makro NEXTRAWINPUTBLOCK slouží k procházení pole struktur RAWINPUT. Příklad najdete v tématu Jak číst nezpracovaný vstup s vyrovnávací pamětí.
K interpretaci nezpracovaného vstupu se vyžadují podrobné informace o identifikátorech HID. Aplikace získá informace o zařízení voláním GetRawInputDeviceInfo pomocí popisovače zařízení. Tento popisovač může pocházet z WM_INPUT nebo z členu hDeviceRAWINPUTHEADER.
Viz také
- Klávesnicový vstup
- o zadávání pomocí klávesnice