Skip to content

Ignorar LCTRL cuando se usa ALT GR #46

@vii1

Description

@vii1

En plataformas Windows y al usar distribución de teclado española (que sepamos), Alt Gr produce en realidad dos eventos de teclado simultáneos: LCtrl + RAlt. Esto SDL y DOSBox lo transmiten a la máquina emulada sin filtrar. En ciertas partes del IDE (p.ej. el editor de programas), esto confunde a DIV ya que al detectar un Ctrl asume que se está intentando usar un atajo de teclado y no simplemente escribiendo un carácter.

Por ejemplo, si intentamos escribir un \, nosotros pulsamos Alt Gr+º. DIV lo que recibe es LCtrl+RAlt+º, que no asocia con ninguna combinación de teclas conocida así que lo ignora.

Esto no es técnicamente un problema de DIV, más bien un quirk ocasionado por Windows. Desconozco qué otros sistemas operativos y/o distribuciones de teclado pueden estar afectadas (@VisualStudioEX3 me comenta que con la distribución de UK, que también tiene Alt Gr, no pasa). Pero podemos hacer DIV más Windows-friendly si lo corregimos.

Workaround

Me he dado cuenta de que si, mientras tenemos pulsado Alt Gr, pulsamos y soltamos LCtrl, el keystroke de LCtrl desaparece y sólo se queda RAlt. Así que podemos escribir \ con la siguiente combinación:

  • Mantener Alt Gr.
  • Pulsar y soltar LCtrl.
  • Pulsar º (podemos escribir varios \ seguidos pulsando varias veces º mientras no soltemos Alt Gr).

Solución

La solución es ignorar el modificador LCtrl cuando DIV lea el teclado y:

  • Compruebe que no se ha pulsado ninguna combinación de teclas conocida
  • RAlt/Alt Gr está pulsado.

Esto no afectará al funcionamiento normal de DIV y lo hará más usable en Windows, y de todas formas es algo que deberíamos hacer igualmente si en un futuro queremos portar DIV a Windows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementplease reviewThis issue is theoretically solved, but some review and/or testing is wanted before closing it.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions