Reutiliza los formularios de Nelkano básicos para configurar mandos o conectar una segunda pantalla. Si necesitas una interfaz propia, el SDK también ofrece sus operaciones.
Configurar un mando
- Empareja el mando en los ajustes de Bluetooth de Android.
- En Nelkano abre Ajustes → General → Controles → Mando Bluetooth.
- Elige un sistema en Emulador, toca la asignación que quieres cambiar y pulsa el botón físico o mueve el eje.
Desde el mismo formulario puedes restaurar las asignaciones del sistema o guardar y cargar perfiles con nombre.
Importar archivo y Exportar archivo abren el selector de documentos de Android o Desktop. El respaldo JSON incluye sistema, asignaciones, perfiles y máscaras PS1, hasta 96 KiB. También puedes usar Copiar / pegar asignaciones. Un respaldo inválido se rechaza sin sustituir la configuración.
Solicita input.gamepad. El puerto ofrece estas operaciones:
host.input.snapshot(): consultar dispositivos.configure(bindings, ps1Bindings?): aplicar asignaciones.capture(device?): esperar un botón durante un máximo de 30 segundos.settings(): abrir los ajustes Bluetooth del host.release(): liberar el control de las asignaciones.host.input.importProfile(): abrir un respaldo; devuelve state o cancelled.exportProfile(state): exportarlo; devuelve saved o cancelled.
El usuario elige el documento. El módulo recibe los datos, sin rutas de archivos, y debe validar state antes de aplicarlo. Las asignaciones usan valores como KEY:96 o AXIS:0:POS.
Solo un módulo puede controlar las asignaciones a la vez. Al desactivarlo se liberan las teclas y se cancela cualquier captura pendiente.
Para usar configure y capture directamente, configura primero el mapa y captura después desde el mismo módulo. En la app, Nelkano básicos suele tener ese control: otro módulo recibe input-owner-busy si intenta sustituirlo. En ese caso utiliza su gancho gamepad, descrito más abajo.
settings() solicita los ajustes Bluetooth al sistema. En Linux puede ser necesario abrirlos manualmente.
Conectar una segunda pantalla
Durante una partida de Nintendo DS o Nintendo 3DS, abre Pantallas → Segunda pantalla. También puedes entrar por Ajustes → General → Apariencia → Segunda pantalla.
Ambas/Superior/Inferior cambia la imagen del dispositivo principal. Al conectar se activa la pantalla completa una vez; puedes salir de ella con Pantalla completa sin desconectar el receptor. Intercambiar pantallas mantiene esa elección.
- Conecta ambos dispositivos a la misma red local.
- En el receptor, pulsa Usar como segunda pantalla y elige Sí.
- En el emisor, pulsa Buscar pantallas y Conectar junto al receptor.
- Acepta el emparejamiento en el receptor si se solicita.
El formulario separa RECEPTOR, EMISOR y DISPOSITIVOS RECORDADOS. Cerrarlo conserva la conexión.
Cada partida empieza enviando la pantalla superior al receptor y mostrando la inferior en el dispositivo principal. Intercambiar pantallas invierte ese reparto durante la partida; al abrir otra se restablece. La entrada táctil del receptor corresponde a la pantalla inferior. El juego debe producir dos pantallas.
Solicita media.second-screen. El puerto incluye host.secondScreen.snapshot(), discover(), connect(id), disconnect(), receiver(enabled), pair(enabled), swap() y forget(id).
Para conectar utiliza el ID de un receptor descubierto; no se aceptan direcciones arbitrarias.
Reutilizar los formularios de Básicos
En consumes declara el proveedor nelkano.basics, el gancho gamepad o second-screen y la versión 1.0.0.
- gamepad: snapshot devuelve devices, bindings y settings. set recibe el respaldo completo: schemaVersion: 1, selectedSystem, bindings, profiles y ps1Bindings.
- ps1Bindings contiene las máscaras PS1, incluidas combinaciones y L3/R3. En la asignación predeterminada, A físico corresponde a Cruz y B a Círculo.
- second-screen: snapshot, discover, connect, disconnect, receiver, pair, swap y forget. Pasa id a connect/forget y enabled a receiver/pair.
Invoca las operaciones con host.hooks.invoke(provider, hook, operation, value).
Qué reproduce Studio
Studio simula el mando y el receptor. Importar un perfil devuelve cancelled; exportarlo simula el guardado sin escribir un archivo. Usa Copiar / pegar asignaciones para revisar el JSON y prueba Bluetooth y segunda pantalla en los dispositivos de destino.
Streaming
Para emitir una partida desde Básicos, consulta Streaming.
Mandos PSP, GameCube y Switch
Controles permite asignar botones de PSP y GameCube. El SDK conserva el perfil Switch para simulación y desarrollo; Switch queda excluido de las apps Android y Desktop. PSP separa cruceta y stick; GameCube, cruceta, stick principal y C-stick. Los ejes se asignan por direcciones con umbrales digitales: no hay inclinación proporcional ni presión progresiva de gatillos. Android lee eventos del sistema y Windows/Linux usa SDL.
Navegar por la app con el mando
La app permite navegar con mando en Android, Windows y Linux. Usa un mapa predeterminado o las reasignaciones reconocidas. Nelkano básicos gestiona las asignaciones de juego y los perfiles guardados.
- Cruceta o stick: moverse entre botones, juegos y opciones. El elemento seleccionado queda resaltado.
- A o Start: aceptar o abrir.
- B o Select: cerrar la ventana o volver.
- L/R: recorrer Home, Biblioteca, Guardados y Ajustes cuando no hay una ventana superpuesta.
- X: seleccionar o quitar de la selección el juego resaltado en Biblioteca.
En un campo select, aceptar abre la lista y vuelve a aceptar para elegir. Los selectores con pestañas tienen un botón por opción. Izquierda/derecha cambia los deslizadores de cinco en cinco; aceptar sobre un campo de texto permite editarlo. Los componentes del SDK reciben esta navegación automáticamente.
Solo el diálogo abierto recibe las acciones del mando. La app libera las pulsaciones del juego al abrir menús, pausar o perder el foco, y no transmite un botón mantenido al cerrar la ventana. Durante una captura, la pulsación sirve para asignar el botón.
Mando durante una partida
En pantalla completa, el mando controla la partida. Fuera de ella, navega por la interfaz. CHIP-8 también recibe el mando en su vista normal.
- SNES incluye X/Y.
- PS1 separa L/R de L2/R2 y admite L3/R3.
- El perfil simulado de Switch separa L/R de ZL/ZR.
- En Android se capturan LTRIGGER, RTRIGGER, BRAKE y GAS, además de los sticks. Reasignar un gatillo sustituye su función predeterminada.
Las plantillas del SDK utilizan el mismo catálogo y resolvedor que la app. Las asignaciones y los archivos de configuración existentes se conservan.
3DS convierte el stick a las direcciones admitidas por su adaptador. El perfil Switch se conserva para simulación y desarrollo del core PC, sin disponibilidad en las apps. Prueba el mando concreto y Steam Input en el dispositivo de destino; el visor de Studio solo utiliza entradas ficticias.
Multijugador y mando PS1
Multijugador viene incluido y ofrece conexiones de GB/GBC, GBA y NDS. La consola compartida PS1 es un prototipo técnico y no aparece en esos menús.
Si vas a usar host.sharedConsole, comprueba capabilities(session).supported. El adaptador real disponible es PS1 Android; Studio simula el contrato. El capítulo Multijugador detalla sus permisos, fragmentos y ganchos.
Cerrar o cancelar un formulario
Mando Bluetooth y Segunda pantalla se abren sobre Ajustes. Cancelar al guardar/cargar un perfil o al cambiar el modo de segunda pantalla vuelve a su formulario principal. La × cierra el formulario sin borrar asignaciones ni interrumpir una conexión activa.