Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2023 mgr Jerzy Wałaszek
|
Wsparcie Klawiatury
SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
SDL używa dwóch różnych rodzajów wartości do reprezentacji klawisza na klawiaturze - kod matrycowy (ang. scancode) i kod klawisza (ang. keycode).
Wartości SDL_Scancode są używane do reprezentacji fizycznego położenia klawisza na klawiaturze. Wartości tego typu używa się między innymi do przedstawiania klawiszy klawiatury w polu key.keysym.scancode struktury SDL_Event. Wartości w enumeracji SDL_Scancode opierają się na definicjach podanych w standardzie USB usage page (http://www.usb.org/developers/docs/). Stałe kodów matrycowych używają nazwy symbolu poprzedzonej przez przedrostek SDL_SCANCODE_ (np.: SDL_SCANCODE_SPACE).
Wartości SDL_Keycode są odwzorowane na bieżący układ klawiatury i wiążą się z wartościami SDL_Scancode. Wartości tego typu są używane miedzy innymi do reprezentacji symboli klawiszy w polu key.keysym.sym field struktury SDL_Event. Wartości w enumeracji SDL_Keycode opierają się na wartościach Unicode reprezentujących niezmodyfikowany znak, który zostałby wygenerowany po naciśnięciu klawisza, lub kod matrycowy z ustawionym najstarszym bitem (połączonym alternatywą bitową z 0x40000000) dla tych klawiszy, które nie generują znaków. Stałe kodów znaków używają nazwy symbolu (pisanej małymi znakami dla liter) poprzedzonej prefiksem SDLK_ (np.: SDLK_SPACE).
Specjalnym wyjątkiem są klawisze liczbowe u góry klawiatury, które zawsze są odwzorowane jako SDLK_0, SDLK_1, ..., SDLK_9, bez względu na układ klawiatury.
Podstawowa różnica pomiędzy tymi dwoma wartościami ujawnia się w sytuacjach, gdzie system operacyjny odwzorowuje fizyczne klawisze w różne wirtualne litery. Na przykład, gdy standardowa klawiatura QWERTY jest odwzorowana w układ klawiatury niemieckiej QWERTZ , klawisz "Y" wygeneruje zdarzenie z kodem matrycowym SDL_SCANCODE_Y, lecz z kodem klawisza SDLK_z. Które z tych kodów używać, pozostawione jest do decyzji aplikacji: kody matrycowe są wygodne w sytuacjach, gdzie sterowanie zależy od układu klawiszy (np. klawisze "WASD" jako klawisze strzałek dla lewej ręki), natomiast kody klawiszy nadają się lepiej w sytuacjach, gdzie sterowanie zależy od wprowadzanych znaków (np. klawisz "I" jako Inventory).
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.