Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

AltGr characters fire unmodified hotkeys on the same physical key

Cerrado Apto para principiantes
#169 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
84/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
frontend

Línea de trabajo

Empieza en _match.ts: lee modifiersMatch (líneas 86-87, que limpian Ctrl/Alt bajo altGraph), la guarda de letras latinas en la línea 53, el fallback de code en las líneas 60-64 y el camino directo por key en la línea 30, que ya maneja hotkeys con Ctrl/Alt. Decide en qué punto un carácter producido por AltGr debe omitir el fallback de la tecla física y después ejecuta la suite de tests del paquete más los tres casos de reproducción del issue (los tres deben devolver false). Listo significa que las pulsaciones de AltGr ya no coinciden mientras que los tests existentes de hotkey-matching siguen pasando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Describe the bug

On layouts with AltGr (German, Polish, …), typing an AltGr character fires an unmodified single-key hotkey on the same physical key.

  • German AltGr+M types µ and fires a M hotkey.
  • Polish AltGr+C types ć and fires a C hotkey.
  • German AltGr+Q types @ and fires a Q hotkey.

In _match.ts, modifiersMatch clears Ctrl and Alt when altGraph is set (lines 86–87). The code fallback (lines 60–64) then maps KeyM → M, which matches. For ć, the Latin-letter guard at line 53 is skipped because normalized.alt is true under AltGr. µ and @ aren't Latin letters, so the guard doesn't apply at all.

Reproduce
import { matchesKeyboardEvent } from '@tanstack/hotkeys'

// What Chrome on Windows reports for AltGr+<key>: Ctrl+Alt plus the AltGraph modifier state.
const altGr = (key: string, code: string) =>
  ({ type: 'keydown', key, code, ctrlKey: true, altKey: true, shiftKey: false, metaKey: false,
     isComposing: false, getModifierState: (k: string) => k === 'AltGraph' }) as unknown as KeyboardEvent

matchesKeyboardEvent(altGr('µ', 'KeyM'), 'M', 'windows') // true, expected false
matchesKeyboardEvent(altGr('ć', 'KeyC'), 'C', 'windows') // true, expected false
matchesKeyboardEvent(altGr('@', 'KeyQ'), 'Q', 'windows') // true, expected false
Expected

A key press that produced a character through AltGr is text input and should not fall back to the physical key. Only a direct key match should count, as line 30 already does for hotkeys with Ctrl/Alt.

Versions

@tanstack/hotkeys 0.11.0 and @tanstack/react-hotkeys 0.13.0. _match.ts on main still has the same code.

Lenguaje dominante
TypeScript
Estrellas
744
Forks
49
Merge medio
1 d 16 h
PR fusionados (30 d)
30

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TanStack/hotkeys

Todos los issues de TanStack/hotkeys

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.