Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignorar LCTRL cuando se usa ALT GR #46

Open
vii1 opened this issue Oct 14, 2020 · 1 comment
Open

Ignorar LCTRL cuando se usa ALT GR #46

vii1 opened this issue Oct 14, 2020 · 1 comment
Labels
enhancement please review This issue is theoretically solved, but some review and/or testing is wanted before closing it.
Milestone

Comments

@vii1
Copy link
Owner

vii1 commented Oct 14, 2020

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.

@vii1 vii1 added this to the Versión 2.02 milestone Oct 14, 2020
@vii1
Copy link
Owner Author

vii1 commented Mar 5, 2022

En teoría arreglado en f4fa772. Siempre que se lee el teclado, se borra el bit de LCtrl cuando Alt Gr está pulsado.

@vii1 vii1 added the please review This issue is theoretically solved, but some review and/or testing is wanted before closing it. label Mar 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement please review This issue is theoretically solved, but some review and/or testing is wanted before closing it.
Projects
None yet
Development

No branches or pull requests

1 participant