1 puntos por GN⁺ 22 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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

    • Kazajistán también decidió cambiar del alfabeto cirílico al latino para alinearse más con Europa que con Rusia https://www.bbc.com/worklife/article/20180424-the-cost-of-ch...
      Me pregunto si Ucrania tomará el mismo camino en un futuro lejano
    • La adopción del alfabeto latino en sí fue una elección prooccidental para alinearse con los reinos de la esfera latina y no la bizantina, y también está relacionada con haber adoptado el catolicismo en vez de la ortodoxia
    • A grandes rasgos, así fue: en el siglo X, cuando Mieszko se casó con la princesa checa Doubravka/Dobrawa, el cristianismo llegó a Polonia, y junto con eso también se adoptó la escritura checa, surgida de los esfuerzos de Jan Hus por ordenar el checo, es decir, el alfabeto latino
      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ó mucho
      El 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 hater se naturaliza como hejter
    • El hecho de ser católico también ayuda
    • La cocina polaca es muy parecida a la cocina alemana
      Eso 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+s sigue bloqueándose
    Harí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

    • Este bug apareció porque un desarrollador que intentaba evitar que al presionar Control S se abriera el diálogo de guardar terminó tocando un comportamiento fundamental y propenso a errores
      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 accesskey para 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

    • Cada una de estas pequeñas cosas crea un nuevo usuario de Linux
      Desde que me cambié no he vuelto la vista atrás ni una sola vez
      Escrito desde SteamOS
    • Es normal que los idiotas de MSFT ni siquiera conozcan sus propias API https://devblogs.microsoft.com/oldnewthing/20040329-00/?p=40...
    • Me pasó lo mismo durante un examen en la escuela. Intentaba escribir & en un teclado húngaro, que por supuesto también era altgr+c
    • ¿Se acuerdan de cuando alt+c lanzaba ATI Catalyst Control Center en vez de escribir "ć"?
    • Lo mejor de todo es que se instala automáticamente sin preguntar
      Gracias, 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_diacritics de sqlite

    • Recuerdo haber descubierto eso mientras escribía código para una tarea de entrevista. La razón es simple: en muchos sistemas de entrada como ABC International en Mac, aunque la entrada de ł parezca una secuencia de dos caracteres, en realidad no existe un carácter combinante que corresponda a la barra que cruza la l
      No estoy totalmente seguro, pero imagino que remove_diacritics de 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
    • ¿Esperaría un usuario polaco que al buscar “ł” también aparezca “l”?
  • El polaco es la segunda lengua eslava más usada, justo después del ruso y justo antes del ucraniano
    Con respecto al ucraniano, eso no es del todo exacto. Será el idioma oficial de Ucrania, pero en la práctica no se puede decir que todos los ucranianos realmente hablen ucraniano.

    • Incluso si retrocedemos el reloj a 2019, había suficiente gente que usaba ucraniano
      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.
    • Ese “ajuste” no propuso ninguna otra lengua eslava con más hablantes que el ucraniano para ocupar el tercer lugar detrás del ruso y el polaco, así que el ranking no cambia en absoluto.
  • 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.

    • Yo vi lo mismo en Teams. ¿Será porque las dos son apps de MS?
  • 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 vez de bloquear Ctrl S de forma indiscriminada y agresiva, bastaba con bloquear Ctrl S solo cuando la tecla Alt no estuviera presionada
    El atajo de teclado para la S polaca era Ctrl alt s, y al bloquear Ctrl s para mejorar la acción de guardar, terminaron bloqueando también ctrl alt s.

    • No. El atajo era alt+s, y eso era lo que la gente realmente presionaba.
      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.