2015-08-11 9 views

Odpowiedz

11

Zobacz the SDL documentation. Scancody reprezentują fizyczną pozycję klawiszy, wzorowaną na standardowej klawiaturze QWERTY, natomiast kody są znakami uzyskanymi przez naciśnięcie klawisza.

Na klawiaturze AZERTY, naciskając wyemituje 'Q' skanowego oraz 'a' kod dostępu.

+0

Mówiłem o tradycyjnych kodach skanowania i wygląda na to, że SDL używa tego terminu do oznaczania czegoś innego. Więc tak, twoja była poprawna. Poprawiłem moją odpowiedź, aby to odzwierciedlić. Dziękuję za cierpliwe zadawanie pytań, by wskazać mi właściwy kierunek i sprawić, że to zrozumiem. – legends2k

+0

@ legends2k Myślałem, że to ja jestem wyprostowany, haha! Cóż, dziękuję * Tobie * za potwierdzenie :) – Quentin

3

Zasadniczo, scancode s są wartościami rzeczywistymi emitowanymi przez klawiaturę (sprzęt) do systemu operacyjnego, podczas gdy kod jest tym, na co system/biblioteka odwzorowuje go na podstawie wybranego układu. Układ decyduje o odwzorowaniu scancode na jakiś kod klucza wirtualnego. Jest to część ustawień systemu operacyjnego. Tutaj, przez układ, mam na myśli układ funkcjonalny; istnieją również układy mechaniczne i wizualne. Przeczytaj więcej o keyboard layouts w Wikipedii. Pojęcie kodu skanowania i klucza wirtualnego to explained better z ilustracją w MSDN.

Jednak SDL używa scancode do oznaczania czegoś innego: scancode klucza w amerykańskiej klawiaturze QWERTY, którego lokalizacja jest taka sama jak ta, o której mowa. Jest to niezależny od urządzenia sposób oznaczania klucza na podstawie jego lokalizacji. To jest pochowane w nietypowym miejscu w SDL's manual:

Scancody mają być niezależne od układu. Pomyśl o tym jako "użytkownik nacisnął klawisz Q, jak to byłoby na amerykańskiej klawiaturze QWERTY", niezależnie od tego, czy jest to rzeczywiście klawiatura europejska, czy klawiatura Dvoraka. Scancode jest zawsze tą samą kluczową pozycją.

Kodowanie ma być zależne od układu. Pomyśl o tym jako "użytkownik nacisnął klawisz oznaczony" Q "na określonej klawiaturze."

Na przykład, jeśli naciśniesz klawisz, który jest dwoma klawiszami po prawej stronie CAPS LOCK na amerykańskiej klawiaturze QWERTY, wyświetli kod zdarzenia SDL_SCANCODE_S i kod SDLK_S. Ten sam klucz na klawiaturze Dvoraka zgłosi kodowanie SDL_SCANCODE_S i kod SDLK_O.

W powyższym cytacie, według układu, instrukcja oznacza układ funkcjonalny. main part z ręcznymi klawiatur zakresie jest nieco krótki w tej kwestii:

wartości SDL_Scancode są używane do reprezentowania fizyczne położenie klawisza klawiatury na klawiaturze.

Wartości SDL_Keycode są odwzorowywane na bieżący układ klawiatury i skorelowane z kodem SDL_Scancode.

Do aplikacji pozostawia się: striptizki są odpowiednie w sytuacjach, w których elementy sterujące są zależne od układu (np. Klawisze "WASD" jako lewostronne klawisze ze strzałkami), natomiast kody klawiszy są lepiej dostosowane do sytuacji, w których kontrolki są zależne od charakteru (np. klawisz "I" dla ekwipunku).

W powyższym cytacie, według układu, instrukcja oznacza układ mechaniczny/fizyczny. Na przykład, w celu kontrolowania postaci, używanie scancode jest lepsze, natomiast do odbierania nazwy użytkownika kod jest lepszy.

Powiązane problemy