- O bug no editor web do Medium, em que apenas a letra maiúscula polonesa Ś não podia ser digitada, surgiu da sobreposição entre hábitos de entrada, o contexto de importação de PCs, costumes de atalho para salvar e a forma como o Windows trata o Right Alt
- O polonês usa o alfabeto latino com 9 letras diacríticas adicionais, e, nos primeiros ambientes de PC, em vez de um teclado dedicado, a combinação Alt+letra latina no “programmer’s layout” acabou se tornando o padrão de fato
- Como o Windows mapeia internamente o Right Alt como Ctrl+Alt, o Right Alt+S usado para digitar Ś parecia, do ponto de vista do sistema, um Ctrl+Alt+S
- O Medium interceptava Ctrl+S para bloquear a caixa de diálogo de salvar do navegador e chamava
preventDefault(), mas, como não verificava a presença de Alt, acabava bloqueando a própria entrada do caractere
- A correção foi uma pequena mudança, adicionando
!e.altKey à condição que bloqueava Ctrl+S, mostrando como convenções de computação centradas nas 26 letras do inglês podem criar exceções e atritos para usuários de outros idiomas
O Ś que sumiu no Medium
- Um usuário relatou que, ao começar a escrever em polonês no Medium, conseguia digitar as outras letras, mas não a Ś
- O Medium não tratava nenhum idioma de forma especial e, entre as 32 letras do polonês, parecia estranho que justamente essa única letra causasse problema
- A causa não era uma falha de uma única função, mas o resultado da sobreposição de métodos de entrada e formas de tratamento do sistema operacional ao longo de décadas
O polonês e as letras adicionais
- O polonês é a língua eslava mais falada depois do russo, à frente do ucraniano
- Ao contrário do russo e do ucraniano, o polonês se baseia no alfabeto inglês/latino, mas adiciona algumas letras
- As palavras originalmente polonesas não têm Q, V e X, mas essas letras são mantidas por causa do latim e de empréstimos linguísticos
- Em vez disso, o idioma usa 9 letras diacríticas adicionais baseadas em letras latinas
- No início do século XX, as máquinas de escrever precisaram acomodar essas letras extras; algumas ganharam teclas próprias, enquanto outras passaram a compartilhar espaço com as teclas numéricas
- Às vezes, as maiúsculas eram “simuladas” digitando primeiro a letra latina, voltando com backspace e então aplicando o acento por cima
- Para abrir espaço para essas letras extras, sinais de pontuação como ponto e vírgula e parênteses às vezes eram sacrificados
O ambiente de PCs na Polônia comunista e o programmer’s layout
- Nos anos 1980, o ambiente inicial de computadores pessoais na Polônia enfrentava restrições como baixa renda disponível e a proibição da importação comercial de computadores ocidentais
- Os computadores vindos do Ocidente muitas vezes chegavam com os manuais originais, software não traduzido e teclados no padrão americano
- Países como França e Alemanha recebiam teclados adaptados aos layouts das máquinas de escrever, mas a Polônia precisou encontrar uma forma de digitar 9 letras adicionais em um teclado americano
- Como o Ctrl já era amplamente usado em atalhos e o Alt era relativamente menos usado, as combinações com Alt acabaram se firmando como padrão de fato
- 8 letras diacríticas foram atribuídas às letras latinas correspondentes
- A letra restante foi atribuída a uma tecla próxima
- O layout antigo era chamado de “typist’s layout”, e o novo de “programmer’s layout”
- Talvez porque os primeiros usuários de PC fossem majoritariamente programadores
- Ou talvez porque ele preservasse os sinais de pontuação usados com frequência em programação
- O programmer’s layout era ergonomicamente desconfortável, porque exigia pressionar o Alt esquerdo e uma tecla próxima com a mesma mão, mas se consolidou por ser fácil de entender sem modificações de hardware nem adesivos
- Mais tarde surgiram teclados dedicados no estilo typist’s, mas quase ninguém migrou, num processo parecido com a ampla adoção do QWERTY, mesmo sendo menos ideal
O hábito do Ctrl+S e o conflito com editores web
- Antes de o salvamento automático se tornar comum, o hábito de salvar manualmente documentos era importante
- Nas décadas de 1980 e 1990, salvar era lento, desgastava aos poucos mídias como discos e às vezes ocupava bastante a CPU, dificultando fazer outras coisas ao mesmo tempo
- Os usuários desenvolveram o hábito de pressionar Command+S ou Ctrl+S sempre que faziam uma pausa ao escrever
- Alguns apertavam a cada parágrafo
- Outros a cada frase e, depois, a cada poucas palavras
- Em editores baseados na web, esse hábito levava à abertura da caixa de diálogo do navegador para salvar o HTML da página atual
- O Medium também passou, no passado, a bloquear isso detectando Ctrl+S ou Command+S no código do editor, chamando o salvamento e impedindo a ação padrão
if ((e.metaKey || e.ctrlKey) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Esse código executava o salvamento do editor e bloqueava a caixa de diálogo de salvar do navegador quando
metaKey no Mac ou ctrlKey no Windows/Linux eram pressionados junto com S
- O problema era que, em alguns ambientes, a digitação do Ś polonês não parecia ser apenas Alt+S
A forma como o Windows trata o Right Alt
- O Windows 3.x e o Windows 95 permitiam acessar rapidamente itens de menu e controles de caixas de diálogo com Alt+letra sublinhada
- Na Polônia, o Alt já era usado para digitar letras diacríticas, então isso entrava em conflito com os atalhos do Windows
- Com a evolução dos teclados, surgiu uma tecla Alt adicional à direita da barra de espaço, permitindo usar o Alt esquerdo para atalhos do Windows e o Alt direito para entrada em polonês
- Mas, como a funcionalidade do Right Alt também precisava funcionar em teclados antigos com apenas uma tecla Alt, a Microsoft mapeou internamente o Right Alt no Windows como a combinação pouco usada de Ctrl+Alt
- Por causa dessa decisão, o Right Alt+S usado para digitar Ś passou a parecer, do ponto de vista do sistema, um Ctrl+Alt+S
- O código do Medium que bloqueava Ctrl+S não verificava se Alt também estava pressionado e, como resultado, interceptava a digitação de Ś como se fosse um bloqueio do atalho de salvar
A correção: não tratar como Ctrl+S quando Alt estiver pressionado
- Depois que a causa foi identificada, a correção foi simples
- Em vez de bloquear Ctrl+S incondicionalmente, a condição passou a bloquear apenas quando Ctrl estivesse pressionado e Alt não estivesse
if ((e.metaKey || (e.ctrlKey && !e.altKey)) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Após a mudança, a entrada com Right Alt+S não atendia mais à condição que bloqueava o Ctrl+S
- O Medium corrigiu esse bug e, depois disso, essa condição passou a receber muitos comentários para que outras pessoas pudessem entendê-la
Um problema maior por trás de uma pequena condição
- Na Polônia, o comunismo caiu em 1989, e agora computadores podem ser importados legalmente tanto por pessoas quanto por empresas
- Hoje, Windows e Mac comprados na Polônia oferecem suporte completo ao polonês e os sistemas operacionais também são localizados
- Ainda assim, o programmer’s layout continua presente nas configurações do sistema e segue como o mais usado entre os dois layouts
- Esse pequeno bug se conecta à realidade de que as convenções da computação no estilo americano se desenvolveram em torno das 26 letras sem acento do inglês
- O polonês precisou negociar compromissos entre layouts derivados do QWERTY, e idiomas que usam sistemas de escrita mais distantes do inglês podem acabar em condições ainda mais desfavoráveis
1 comentários
Opiniões do Hacker News
Acho que o fato de o polonês usar o alfabeto latino e representar apenas os fonemas adicionais com pequenas variações eslavas tornou muito mais fácil para a Polônia se alinhar com uma orientação ocidental.
O polonês médio é culturalmente muito mais próximo dos vizinhos ocidentais do que um ucraniano ou russo, talvez com a culinária como única exceção.
Fico curioso se, em um futuro distante, a Ucrânia seguirá o mesmo caminho.
Os estudiosos consideram que, em período parecido, o polonês começou a se desenvolver como uma língua separada, e até o século XIII era possível se comunicar sem grandes problemas com os vizinhos do sul.
Nos séculos XV e XVI, a ortografia polonesa tomou forma, e Stanisław Zaborowski e Jan Kochanowski tentaram introduzir letras para refletir com mais precisão a fonologia do polonês da época, mas o alfabeto que propuseram era bem longo.
Durante o período das partições, houve uma forte russificação para eliminar a língua e a cultura polonesas, e também tentativas de introduzir o alfabeto cirílico, mas elas acabaram fracassando; a literatura da época tinha muitas obras sobre patriotismo e amor à pátria.
Com a reforma linguística de 1936, o idioma chegou a uma forma próxima da que conhecemos hoje; no período comunista, foi introduzido no idioma oficial o plural de segunda pessoa, como o vykání do tcheco e do eslovaco, mas ele soava artificial e tinha forte conotação política, por isso não durou muito.
O polonês tem dialetos, mas, após a Segunda Guerra Mundial, as migrações diluíram as diferenças, e o polonês padrão também se consolidou nessa época; hoje há muitos empréstimos do inglês, a ponto de hater ser naturalizado como hejter.
Dizer isso vai deixar muitos poloneses bem irritados.
O verdadeiro problema é que os navegadores não expõem uma forma simples de verificar combinações de teclas, e os desenvolvedores também não a implementam por conta própria.
Em muitos sites, a combinação de teclas pretendida também é executada quando vem acompanhada de modificadores adicionais como alt ou shift.
O código citado aqui só corrige o problema maior no Windows; alt+cmd+s continua bloqueado.
Seria preciso uma proposta para que o navegador exponha, nos eventos keydown/up/press, uma propriedade contendo códigos de combinação como "CTRL+S" ou "CTRL+ALT+S".
Assim, o desenvolvedor poderia ramificar com base nessa propriedade em vez de verificar manualmente o código da tecla e os modificadores.
Também seria bom que desenvolvedores web criassem uma propriedade dessas dentro do próprio código e comparassem com ela, em vez de inspecionar os modificadores manualmente. Isso evitaria bugs como o do post original e seria muito mais fácil de usar.
Imagine o tamanho do estrago se os desenvolvedores tiverem ainda mais opções para intervir com facilidade.
Se for preciso interceptar teclas, já existe uma API de baixo nível, e é melhor parar por aí.
Por outro lado, o HTML tem o atributo accesskey para definir teclas de atalho: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/...
O novo Copilot 365 é exatamente assim também. Toda vez que tento digitar "Ć", o Copilot aparece e tenho que ficar fechando o app.
Depois que migrei, nunca mais olhei para trás.
Escrito no SteamOS.
Obrigado, Microsoft. É bom ver que a garantia de qualidade está funcionando bem.
Curiosidade: ao aplicar a normalização por decomposição canônica do Unicode, 8 das 9 letras polonesas (ż, ó, ć, ę, ś, ą, ź, ń) se decompõem em letra base + sinal diacrítico combinante, mas ł permanece como está.
Por isso, com o tokenizer unicode61 remove_diacritics do sqlite, não dá para normalizar texto em polonês para busca de texto completo.
Não tenho certeza, mas imagino que o remove_diacritics do sqlite funcione como a implementação que eu mesmo fiz: converte para NCD e depois remove da string os caracteres combinantes.
Espero que outros casos especiais que não se decompõem, como ħ ou ø, se comportem de forma parecida.
Lviv = 2,5 milhões
Vinnytsia = 1,5 milhão
Ivano-Frankivsk = 1,3 milhão
Khmelnytskyi = 1,2 milhão
Rivne = 1,1 milhão
Ternopil = 1 milhão
Volyn = 1 milhão
Chernivtsi = 800 mil
Zakarpattia = 800 mil (excluindo os húngaros étnicos)
Com isso, são 11,2 milhões de habitantes da Ucrânia Ocidental em que o uso do ucraniano é predominante, e mesmo ignorando completamente o restante das regiões, já é mais do que o número de falantes de tcheco. Além disso, o restante das regiões também não era totalmente russofono, e hoje é menos ainda.
Infelizmente, não é só o Medium; vários apps do Windows também são assim. Por exemplo, no Active Presenter, ao digitar uma única letra, talvez Ó, a gravação da tela para, então muitas vezes fica impossível gravar cenas de digitação em polonês.
Outros apps parecem fazer algo parecido, atribuindo combinações como Alt + Ctrl + letra a atalhos e de alguma forma sobrepondo o driver de layout do teclado.
Mesmo em 2026, de repente ficou impossível digitar Ś maiúsculo no Edge para Mac. Parece que voltamos uns 25 anos no tempo.
O nvidia overlay tem um atalho Alt+Z que funciona tanto com o Alt esquerdo quanto com o Alt direito, então, para usuários de polonês, é bem irritante: eles não conseguem digitar “ż” a menos que abram o overlay ou remapeiem a tecla.
Nvidia, por favor, corrija isso.
Em resumo, é isto:
No Windows, como combinações com Alt já estavam em uso, virou Alt direito+s; e embora o Alt direito não fosse usado pelo próprio Windows, em vez de um código separado para o Alt direito, o Windows reescreveu essa tecla como uma combinação ctrl+alt.
Se for resumir, pelo menos acerte o detalhe mais importante. As pessoas só pressionavam Alt, mas o Windows transformava isso em “agora você está pressionando ctrl+alt”, de modo que alt+s parecia ctrl+s e vinha junto com um Alt que ninguém verificava ao interceptar e matar o evento.