- El bug en el editor web de Medium, donde solo no se podía ingresar la Ś mayúscula polaca, surgió por la combinación de convenciones de entrada, el entorno de importación de PC, el hábito de usar atajos para guardar y la forma en que Windows procesa Right Alt
- El polaco usa el alfabeto latino con 9 caracteres diacríticos adicionales y, en los primeros entornos de PC, en lugar de teclados dedicados, se volvió estándar de facto el “programmer’s layout”, que usa combinaciones Alt+letra latina
- Como Windows mapea internamente Right Alt como Ctrl+Alt, Right Alt+S, usado para ingresar Ś, desde el punto de vista del sistema parecía Ctrl+Alt+S
- Medium interceptaba Ctrl+S y llamaba a
preventDefault() para impedir el cuadro de diálogo de guardado del navegador, pero al no verificar si Alt estaba presionado, terminó bloqueando la entrada del carácter en sí
- La corrección fue un pequeño cambio que agregaba
!e.altKey a la condición que bloqueaba Ctrl+S, y muestra cómo las convenciones informáticas centradas en las 26 letras del inglés pueden crear excepciones y fricciones para usuarios de otros idiomas
La Ś que desapareció en Medium
- Un usuario reportó que, al empezar a escribir un texto en polaco en Medium, podía ingresar otras letras, pero no la Ś
- Medium no trataba de forma especial a ningún idioma, y al principio parecía extraño que, de las 32 letras del polaco, solo ese carácter tuviera problemas
- La causa no era un defecto de una sola función, sino el resultado de décadas de superposición entre métodos de entrada y formas de procesamiento del sistema operativo
El polaco y los caracteres adicionales
- El polaco es la lengua eslava más usada después del ruso, por delante del ucraniano
- A diferencia del ruso y el ucraniano, el polaco se basa en el alfabeto inglés/latino, pero agrega algunos caracteres
- Originalmente, las palabras polacas no tienen Q, V ni X, pero se conservan para el latín y los préstamos lingüísticos
- En cambio, usa 9 caracteres diacríticos adicionales basados en letras latinas
- A principios del siglo XX, las máquinas de escribir tuvieron que admitir estos caracteres adicionales; algunos obtuvieron teclas separadas, pero otros compartían teclas numéricas
- Las mayúsculas a veces se “simulaban” escribiendo primero la letra latina, retrocediendo con backspace y superponiendo el acento
- Para hacer espacio para letras adicionales, a veces se sacrificaban signos de puntuación como el punto y coma y los paréntesis
El entorno de PC en la Polonia comunista y el programmer’s layout
- El entorno temprano de computadoras personales en la Polonia de los años 80 estaba limitado por la falta de ingresos disponibles y la prohibición de importar comercialmente computadoras occidentales
- Las computadoras que llegaban de Occidente muchas veces conservaban sus manuales originales, software sin traducir y teclados estadounidenses
- Países como Francia y Alemania recibieron teclados personalizados que reflejaban sus disposiciones de máquina de escribir, pero Polonia tuvo que encontrar una forma de ingresar 9 caracteres adicionales en un teclado estadounidense
- Como Ctrl ya se usaba ampliamente para atajos y Alt se usaba relativamente menos, las combinaciones con Alt se convirtieron en el estándar de facto
- 8 caracteres diacríticos se asignaron a sus letras latinas correspondientes
- El restante se asignó a una tecla cercana
- La disposición existente se llamó “typist’s layout”, y el nuevo método, “programmer’s layout”
- Tal vez porque los primeros usuarios de PC eran principalmente programadores
- O tal vez porque conservaba intactos los signos de puntuación usados con frecuencia en programación
- El programmer’s layout era ergonómicamente incómodo porque, con un solo Alt del lado izquierdo, había que presionar teclas cercanas con la misma mano, pero se consolidó porque era fácil de entender sin modificar hardware ni poner calcomanías
- Más adelante aparecieron teclados dedicados de tipo typist’s keyboard, pero casi nadie cambió, en una evolución parecida a cómo el menos ideal QWERTY terminó ampliamente establecido
El hábito de Ctrl+S y el choque con los editores web
- Antes de que el autoguardado se generalizara, era importante tener el hábito de guardar documentos manualmente
- En los años 80 y 90, guardar era una operación lenta, desgastaba poco a poco medios como los discos y, a veces, ocupaba tanto la CPU que dificultaba hacer otras tareas
- Los usuarios adquirieron la costumbre de presionar Command+S o Ctrl+S cada vez que hacían una pausa al escribir
- Algunos lo hacían en cada párrafo
- Otros en cada oración y, más tarde, cada pocas palabras
- En editores basados en la web, este hábito causaba el problema de abrir el cuadro de diálogo del navegador para guardar el HTML de la página actual
- En el pasado, Medium también lo evitaba detectando Ctrl+S o Command+S en el código del editor, llamando al guardado y bloqueando la acción predeterminada
if ((e.metaKey || e.ctrlKey) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Este código ejecuta el guardado del editor cuando se presionan S junto con
metaKey en Mac o ctrlKey en Windows/Linux, e impide el cuadro de diálogo de guardado del navegador
- El problema era que, en algunos entornos, ingresar la Ś polaca no se veía simplemente como Alt+S
Cómo Windows procesa Right Alt
- Windows 3.x y Windows 95 permitían acceder rápidamente a elementos de menú y controles de cuadros de diálogo con Alt+carácter subrayado
- En Polonia, Alt ya se usaba para ingresar caracteres diacríticos, así que chocaba con los atajos de Windows
- A medida que evolucionaron los teclados, apareció una tecla Alt auxiliar a la derecha de la barra espaciadora, lo que hizo posible usar Alt izquierdo para atajos de Windows y Alt derecho para ingresar polaco
- Pero como la función de Right Alt también debía ser posible en teclados antiguos con una sola tecla Alt, Microsoft mapeó internamente Right Alt en Windows como la combinación poco usada de Ctrl+Alt presionados al mismo tiempo
- Por esta decisión, Right Alt+S, usado para ingresar la Ś polaca, desde el punto de vista del sistema aparecía como Ctrl+Alt+S
- El código de Medium que bloqueaba Ctrl+S no verificaba si Alt también estaba presionado y, como resultado, bloqueaba la entrada de Ś como si fuera el procesamiento de bloqueo del atajo de guardado
La corrección: no tratarlo como Ctrl+S cuando Alt está presionado
- Una vez identificada la causa, la corrección fue simple
- En lugar de bloquear Ctrl+S incondicionalmente, se cambió la condición para bloquearlo solo cuando Ctrl estaba presionado pero Alt no lo estaba
if ((e.metaKey || (e.ctrlKey && !e.altKey)) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Después del cambio, la entrada Right Alt+S ya no cae en la condición de bloqueo de guardado con Ctrl+S
- Medium corrigió este bug, y esa condición recibió muchos comentarios para que las personas pudieran entenderla más adelante
El problema más grande detrás de una pequeña condición
- En Polonia, el comunismo cayó en 1989, y ahora tanto personas como empresas pueden importar computadoras legalmente
- Hoy, Windows y Mac comprados en Polonia tienen soporte completo para polaco y sus sistemas operativos están localizados
- Aun así, en la configuración del sistema todavía existe el programmer’s layout y sigue siendo la opción más usada de las dos disposiciones
- Este pequeño bug está relacionado con la realidad de que las convenciones informáticas estadounidenses se desarrollaron alrededor de las 26 letras sin acento del inglés
- El polaco tuvo que moverse entre variantes derivadas de QWERTY y hacer concesiones, y los idiomas que usan sistemas de escritura más alejados del inglés pueden quedar en condiciones todavía más desfavorables
1 comentarios
Comentarios en Hacker News
Creo que el hecho de que el polaco use el alfabeto latino y represente solo los sonidos adicionales con pequeñas modificaciones de estilo eslavo hizo que para Polonia fuera mucho más fácil alinearse con la orientación occidental
El polaco promedio está culturalmente mucho más cerca de sus vecinos del oeste que de los ucranianos o rusos, y quizá la única excepción sea la comida
Me pregunto si Ucrania tomará el mismo camino en un futuro lejano
Los académicos consideran que por esa misma época el polaco empezó a desarrollarse como lengua separada, y hasta el siglo XIII podía comunicarse con sus vecinos del sur sin grandes problemas
En los siglos XV y XVI se formó la ortografía polaca, y Stanisław Zaborowski y Jan Kochanowski intentaron introducir letras para reflejar con mayor precisión la fonología del polaco de entonces, aunque el alfabeto que propusieron era bastante largo
Durante el periodo de las particiones hubo una fuerte rusificación destinada a eliminar la lengua y la cultura polacas, e incluso se intentó introducir el cirílico, pero al final fracasó; la literatura de la época trataba mucho temas de patriotismo y amor por la patria
La reforma lingüística de 1936 la acercó a la forma que conocemos hoy, y durante el periodo comunista se introdujo en el lenguaje formal la segunda persona del plural, como el
vykánídel checo y el eslovaco, pero sonaba artificial y estaba muy cargada políticamente, así que no duró muchoEl polaco tiene dialectos, pero después de la Segunda Guerra Mundial sus diferencias se difuminaron por las migraciones, y también fue en esa época cuando se consolidó el polaco estándar; hoy además hay muchos préstamos del inglés, al punto de que
haterse naturaliza comohejterEso probablemente hará enojar bastante a muchos polacos
El verdadero problema es que los navegadores no exponen una forma simple de verificar combinaciones de teclas, y los desarrolladores tampoco la implementan por su cuenta
En muchos sitios, la combinación de teclas prevista también se activa si se agregan teclas modificadoras extra como alt o shift
El código que aparece aquí solo corrige un problema mayor en Windows, pero
alt+cmd+ssigue bloqueándoseHaría falta una propuesta para que el navegador exponga en los eventos keydown/up/press una propiedad con códigos de combinación como "CTRL+S" o "CTRL+ALT+S"
Entonces los desarrolladores podrían ramificar usando esa propiedad en lugar de revisar manualmente el código de la tecla y las modificadoras
También estaría bueno que los desarrolladores web generaran una propiedad así dentro de su propio código y compararan contra ella, en vez de revisar directamente las modificadoras. Eso evitaría bugs como el del artículo original y además sería mucho más cómodo de usar
Imagínate el daño que podrían causar los desarrolladores si tuvieran todavía más opciones para intervenir con mayor facilidad
Si hay que interceptar teclas, ya existe una API de bajo nivel, así que es mejor dejarlo ahí
Por otro lado, HTML tiene un atributo
accesskeypara asignar teclas de acceso rápido: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/...El nuevo Copilot 365 también hace exactamente esto. Cada vez que intento escribir "Ć", aparece Copilot y tengo que seguir cerrando la app
Desde que me cambié no he vuelto la vista atrás ni una sola vez
Escrito desde SteamOS
&en un teclado húngaro, que por supuesto también era altgr+cGracias, Microsoft. Qué bueno ver que el control de calidad funciona tan bien
Dato curioso: si aplicas la normalización canónica por descomposición de Unicode, 8 de las 9 letras polacas (ż, ó, ć, ę, ś, ą, ź, ń) se descomponen en letra base + signo diacrítico combinante, pero ł se queda tal cual
Por eso no se puede normalizar texto en polaco para búsqueda de texto completo usando el tokenizador unicode61
remove_diacriticsde sqliteNo estoy totalmente seguro, pero imagino que
remove_diacriticsde sqlite funciona convirtiendo a NCD y luego eliminando del string los caracteres combinantes, igual que la forma en que yo mismo lo implementéSupongo que otros casos especiales que tampoco se descomponen, como ħ o ø, se comportarán de manera parecida
Lviv = 2.5 millones
Vinnytsia = 1.5 millones
Ivano-Frankivsk = 1.3 millones
Khmelnytskyi = 1.2 millones
Rivne = 1.1 millones
Ternopil = 1 millón
Volyn = 1 millón
Chernivtsi = 800 mil
Zakarpattia = 800 mil (sin contar a los húngaros)
Con eso ya tienes 11.2 millones de ucranianos occidentales con un uso abrumador del ucraniano, y aun ignorando por completo el resto de las regiones, ya son más que los hablantes de checo. Además, el resto del país tampoco era completamente rusohablante, y ahora mucho menos.
Lamentablemente no pasa solo con Medium, sino también con varias apps de Windows. Por ejemplo, en Active Presenter, si escribes una sola letra, probablemente Ó, la grabación de pantalla se detiene, así que muchas veces no se puede grabar una sesión escribiendo en polaco.
Parece que otras apps hacen algo parecido, asignando combinaciones de Alt + Ctrl + letra como atajos y de algún modo sobrescribiendo el controlador de distribución del teclado.
Ya es 2026, y de repente en Edge para Mac ya no se puede escribir la Ś mayúscula. Se siente como haber retrocedido unos 25 años en el tiempo.
nvidia overlay tiene el atajo Alt+Z, pero funciona tanto con Alt izquierdo como con Alt derecho, así que para los usuarios polacos es bastante molesto no poder escribir “ż” a menos que abran el overlay o reasignen la tecla.
Nvidia, por favor arréglalo.
En resumen, es esto:
En Windows ya se usaban combinaciones con Alt, así que se convirtió en Alt derecho+s, y aunque Windows en sí no usaba Alt derecho, en vez de tener un código separado para Alt derecho, Windows volvió a representar esa tecla como la combinación ctrl+alt.
Si lo vas a resumir, por lo menos acierta en el detalle más importante. La gente solo presionaba Alt, pero Windows lo convertía en “ahora estás presionando ctrl+alt”, así que alt+s pasaba a verse como ctrl+s y, cuando interceptaban y mataban ese evento, nadie comprobaba el Alt que venía adjunto.