La mayoría de los juegos de gran presupuesto (aquellos con un distribuidor internacional) funcionarán de fábrica, usando ZQSD en lugar de WASD para diseños de azerty. Un juego decente también introducirá el diseño en el primer nivel, otros permitirán que el jugador lo descubra a través de la pantalla de personalización. La estrategia de implementación se puede detectar pidiéndole al sistema operativo que cambie de diseño. O bien el juego usa códigos de escaneo (posiciones) internamente y los asigna a códigos de teclas (símbolos) cuando muestra cuadros de diálogo y mensajes de configuración; o utiliza códigos clave internamente y detecta el diseño en el inicio o en el primer inicio.
La primera estrategia (códigos de escaneo internamente) es más sólida, pero requiere un poco de cuidado para evitar que la abstracción se filtre. Recuerde reasignar códigos de escaneo a códigos clave cuando presente claves al usuario (en tutoriales, indicaciones y diálogos de personalización). Aún tendrá que mirar los códigos clave al tomar entrada de texto (permitiendo que un jugador escriba su nombre, por ejemplo). Si necesita manejar más texto que eso, mire usando el soporte de entrada de texto de la plataforma, que está fuera del alcance de un motor de juego (maneja teclas muertas, bloqueo de mayúsculas, pegado de copia, métodos de entrada avanzados ...).
Al portar un juego que nunca usó códigos de escaneo (que no es el caso con un motor decente, ya que los códigos de escaneo también están más cerca del hardware y más rápido), la otra estrategia podría ser más práctica. Puede asignar códigos de escaneo a códigos clave utilizando las funciones SDL2 SDL_GetKeyFromScancode y SDL_GetScancodeFromKey , o equivalentes específicos de la plataforma. Si también usa el bucle de eventos SDL2, esas funciones seguirán siendo precisas en todos los conmutadores de diseño. Evite funciones como GetKeyboardLayout () en Windows; no hay garantía de que pueda encontrar el diseño en una lista conocida.