La struttura SDL_Keysym
ha SDL_Scancode
e SDL_Keycode
membri. Qual'è la differenza tra loro? La documentazione in realtà non lo chiarisce per me. Ho provato entrambi e sembrano fare la stessa cosa.Qual è la differenza tra un codice di chiave fisica SDL e un codice di chiave virtuale SDL?
risposta
Vedere the SDL documentation. Gli Scancodes rappresentano la posizione fisica dei tasti, modellati su una tastiera QWERTY standard, mentre i Keycode sono i caratteri ottenuti premendo il tasto.
su una tastiera AZERTY, premendo Un emetterà un 'Q'
scancode e un 'a'
codice.
Generalmente, scancode s sono i veri valori emessi dalla tastiera (hardware) per il sistema operativo mentre il codice tasto è ciò che il sistema operativo/libreria associa a esso in base al layout scelto. Il layout decide la mappatura tra scancode su un codice di chiave virtuale. Fa parte delle impostazioni del sistema operativo. Qui, per il layout , intendo il layout funzionale; ci sono anche layout meccanici e visivi. Maggiori informazioni su keyboard layouts in Wikipedia. Il concetto di codice di scansione e chiave virtuale è explained better con l'illustrazione in MSDN.
Tuttavia, SDL utilizza scancode per indicare qualcosa di diverso: lo scancode della chiave nella tastiera QWERTY statunitense la cui posizione è la stessa di quella in questione. È il modo indipendente dal dispositivo di denotare una chiave in base alla sua posizione. Questo è sepolto in una posizione insolita in SDL's manual:
Scancodes sono pensati per essere indipendenti dal layout. Pensa a questo come "l'utente ha premuto il tasto Q come sarebbe su una tastiera QWERTY USA" a prescindere dal fatto che si tratti effettivamente di una tastiera europea o di una tastiera Dvorak o altro. Lo scancode è sempre la stessa posizione chiave.
I codici chiave devono essere dipendenti dal layout. Pensa a questo come "l'utente ha premuto il tasto con l'etichetta" Q "su una tastiera specifica."
Ad esempio, se si preme il tasto che si trova a due tasti a destra di BLOC MAIUSC su una tastiera QWERTY USA, verrà segnalato un codice scanza di SDL_SCANCODE_S e un codice chiave di SDLK_S. Lo stesso tasto su una tastiera di Dvorak, riporterà un codice di scansione di SDL_SCANCODE_S e un codice di accesso di SDLK_O.
Nella citazione precedente, per layout il manuale indica il layout funzionale. La main part delle tastiere per quanto riguarda manuale è una breve po 'su questo tema:
valori SDL_Scancode vengono utilizzati per rappresentare la posizione fisica di un tasto della tastiera sulla tastiera.
I valori del codice SDL_Key sono mappati al layout corrente della tastiera e correlati a un SDL_Scancode.
quale usare viene lasciata all'applicazione: scancodes sono adatte in situazioni in cui i controlli sono la layout-dipendente (ad esempio, i tasti "WASD" come mancino tasti freccia.), Mentre keycodes sono più adatti a situazioni in cui i controlli sono dipendenti dal carattere (ad esempio il tasto "I" per Inventory).
Nella citazione precedente, per layout il manuale indica il layout meccanico/fisico. Quindi, per il controllo del personaggio, ad esempio, è preferibile utilizzare lo scancode, mentre per la ricezione del codice utente il keycode è migliore.
- 1. Percorso di parole chiave in SDL Tridion
- 2. Qual è la differenza tra una chiave e un KeySpec?
- 3. Mappa NSEvent keyCode al codice chiave virtuale
- 4. Qual è la differenza tra la chiave primaria e il vincolo di chiave univoco?
- 5. qual è la differenza tra UNICO INDICE e UNICO CHIAVE?
- 6. Qual è la differenza tra chiave esterna e chiave di riferimento?
- 7. Converti codice chiave virtuale in stringa unicode
- 8. SDL: Cos'è un Blit?
- 9. Qual è la differenza tra un hash e un MAC (codice di autenticazione del messaggio)?
- 10. In un database, qual è la differenza tra una chiave e un indice?
- 11. Qual è la differenza tra `{}` e `()` in questo codice?
- 12. Qual è la differenza tra le direttive di codice e blocco di codice in ReST?
- 13. Qual è la chiave virtuale in Mac per la chiave di espulsione
- 14. Qual è la differenza tra questi due esempi di codice?
- 15. Qual è la differenza tra Session.Add ("chiave", valore) e Sessione ["chiave"] = valore?
- 16. Qual è la differenza tra codice di compilazione e codice eseguibile?
- 17. Qual è la differenza tra la parola chiave join e la parola chiave inner join in oracle sql?
- 18. Qual è la differenza tra un indice e una chiave esterna?
- 19. Qual è la differenza tra i parametri di chiusura e la parola chiave 'use'?
- 20. Differenza tra chiave primaria, chiave univoca e chiave candidata
- 21. Qual è la differenza tra le parole chiave di Sunspot e il testo completo
- 22. codice chiave JavaScript =/= codice char
- 23. Multisampling SDL
- 24. Qual è la differenza tra un array e un oggetto?
- 25. C'è differenza tra la chiave surrogata, la chiave sintetica e la chiave artificiale?
- 26. Differenza tra x: Chiave e x: Nome
- 27. Quanto è maturo SDL per iPhone?
- 28. Qual è la differenza tra codice non sicuro e codice non gestito in C#?
- 29. Qual è la differenza tra typecasting normale e l'utilizzo di “AS” parola chiave
- 30. L'entità non è la chiave di codifica del codice compatibile
Stavo parlando dei codici di scansione tradizionali e sembra che SDL abbia usato quel termine per indicare qualcos'altro. Quindi sì, il tuo è stato corretto fino in fondo. Ho risolto la mia risposta per riflettere questo. Grazie per aver chiesto pazientemente di indicarmi la giusta direzione e di farmi capire questo. – legends2k
@ legends2k Pensavo di essere stato rettificato, ahah! Bene, grazie * * per la conferma comunque :) – Quentin