- Ein Bug im Medium-Webeditor, bei dem sich ausgerechnet das polnische große Ś nicht eingeben ließ, entstand durch das Zusammenspiel von Eingabegewohnheiten, dem PC-Importumfeld, Speicher-Shortcut-Gewohnheiten und der Art, wie Windows Right Alt verarbeitet
- Im Polnischen wird das lateinische Alphabet um 9 diakritische Zeichen ergänzt; in frühen PC-Umgebungen wurde statt einer speziellen Tastatur die Kombination Alt+lateinischer Buchstabe verwendet, das sogenannte „programmer’s layout“, das de facto zum Standard wurde
- Da Windows Right Alt intern wie Ctrl+Alt abbildet, erschien Right Alt+S, das zur Eingabe von Ś verwendet wird, aus Systemsicht wie Ctrl+Alt+S
- Medium fing Ctrl+S ab und rief
preventDefault() auf, um den Speicher-Dialog des Browsers zu blockieren, prüfte dabei aber nicht, ob Alt gedrückt war, und blockierte dadurch die Zeicheneingabe selbst
- Die Korrektur war eine kleine Änderung, bei der zur Bedingung für das Abfangen von Ctrl+S
!e.altKey hinzugefügt wurde; das zeigt, wie stark auf die 26 englischen Buchstaben zugeschnittene Computing-Gewohnheiten für Nutzer anderer Sprachen Ausnahmen und Reibungen erzeugen können
Das verschwundene Ś bei Medium
- Ein Nutzer meldete, dass beim Schreiben eines polnischen Texts auf Medium zwar andere Buchstaben eingegeben werden konnten, aber ausgerechnet Ś nicht
- Medium behandelte keine bestimmte Sprache gesondert, und bei 32 polnischen Buchstaben wirkte es zunächst seltsam, dass nur dieses eine Zeichen Probleme machte
- Die Ursache war kein Defekt einer einzelnen Funktion, sondern das Ergebnis davon, dass sich Eingabemethoden und Verarbeitungsweisen des Betriebssystems über Jahrzehnte überlagert hatten
Polnisch und zusätzliche Zeichen
- Polnisch ist nach Russisch die am zweithäufigsten gesprochene slawische Sprache und liegt vor Ukrainisch
- Anders als Russisch und Ukrainisch basiert Polnisch auf dem englischen/lateinischen Alphabet, ergänzt aber einige Zeichen
- Ursprünglich gab es in polnischen Wörtern kein Q, V oder X, sie wurden aber für Latein und Lehnwörter beibehalten
- Stattdessen werden zusätzlich 9 diakritische Zeichen auf Basis lateinischer Buchstaben verwendet
- Schreibmaschinen zu Beginn des 20. Jahrhunderts mussten diese zusätzlichen Zeichen aufnehmen; einige bekamen eigene Tasten, die übrigen mussten sich Tasten mit den Ziffern teilen
- Großbuchstaben wurden teils „simuliert“, indem nach der Eingabe des lateinischen Buchstabens per Backspace zurückgesprungen und dann der Akzent darüber gesetzt wurde
- Um Platz für zusätzliche Buchstaben zu schaffen, wurden teils Satzzeichen wie Semikolon und Klammern geopfert
Die PC-Umgebung im kommunistischen Polen und das programmer’s layout
- Die frühe PC-Umgebung im Polen der 1980er-Jahre war durch geringes verfügbares Einkommen und das Verbot des kommerziellen Imports westlicher Computer geprägt
- Computer aus dem Westen kamen oft mit den ursprünglichen Handbüchern, nicht übersetzter Software und US-Tastaturen ins Land
- Länder wie Frankreich und Deutschland erhielten angepasste Tastaturen nach dem Muster ihrer Schreibmaschinen, Polen musste dagegen einen Weg finden, auf US-Tastaturen 9 zusätzliche Zeichen einzugeben
- Da Ctrl bereits breit für Shortcuts genutzt wurde und Alt vergleichsweise selten, setzten sich Alt-Kombinationen de facto als Standard durch
- 8 diakritische Zeichen wurden den entsprechenden lateinischen Buchstaben zugeordnet
- Das verbleibende Zeichen wurde einer nahegelegenen Taste zugewiesen
- Das bestehende Layout wurde „typist’s layout“, die neue Methode „programmer’s layout“ genannt
- Vielleicht, weil frühe PC-Nutzer überwiegend Programmierer waren
- Vielleicht auch, weil die in der Programmierung häufig benötigten Satzzeichen vollständig erhalten blieben
- Das programmer’s layout war ergonomisch unpraktisch, weil bei nur einer linken Alt-Taste benachbarte Tasten mit derselben Hand gedrückt werden mussten, setzte sich aber durch, weil es ohne Hardware-Umbauten oder Aufkleber leicht verständlich war
- Später erschienen spezielle typist’s keyboards, aber fast niemand wechselte, ähnlich wie sich auch das weniger ideale QWERTY weit verbreitet etablieren konnte
Die Ctrl+S-Gewohnheit und der Konflikt mit Webeditoren
- Bevor automatisches Speichern verbreitet war, war die Gewohnheit, Dokumente selbst zu speichern, wichtig
- In den 1980er- und 1990er-Jahren war das Speichern langsam, nutzte Medien wie Disketten Stück für Stück ab und band mitunter die CPU so stark, dass anderes Arbeiten schwierig wurde
- Nutzer gewöhnten sich deshalb an, beim Schreiben jedes Mal beim kurzen Innehalten Command+S oder Ctrl+S zu drücken
- Manche drückten es nach jedem Absatz
- Andere nach jedem Satz, später sogar nach jeweils ein paar Wörtern
- In webbasierten Editoren führte diese Gewohnheit dazu, dass der Browser den Dialog zum Speichern des aktuellen HTML der Webseite öffnete
- Auch Medium erkannte deshalb früher in seinem Editorcode Ctrl+S oder Command+S, löste ein Speichern aus und verhinderte das Standardverhalten
if ((e.metaKey || e.ctrlKey) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Dieser Code führt das Speichern im Editor aus und blockiert den Browser-Speicherdialog, wenn auf dem Mac
metaKey oder unter Windows/Linux ctrlKey zusammen mit S gedrückt wird
- Das Problem war, dass die Eingabe des polnischen Ś in manchen Umgebungen nicht einfach wie Alt+S aussah
Wie Windows Right Alt verarbeitet
- Windows 3.x und Windows 95 ermöglichten den schnellen Zugriff auf Menüpunkte und Dialogfeld-Steuerelemente mit Alt+unterstrichenem Buchstaben
- In Polen wurde Alt aber bereits für die Eingabe diakritischer Zeichen genutzt, was mit Windows-Shortcuts kollidierte
- Mit der Weiterentwicklung von Tastaturen kam rechts neben der Leertaste eine zweite Alt-Taste hinzu; dadurch konnte die linke Alt-Taste für Windows-Shortcuts und die rechte Alt-Taste für polnische Eingaben verwendet werden
- Da die Right-Alt-Funktion aber auch auf älteren Tastaturen mit nur einer Alt-Taste funktionieren musste, bildete Microsoft Right Alt innerhalb von Windows auf die selten genutzte Kombination Ctrl+Alt gleichzeitig ab
- Deshalb erscheint Right Alt+S, das für die Eingabe des polnischen Ś verwendet wird, aus Sicht des Systems wie Ctrl+Alt+S
- Mediums Code zum Abfangen von Ctrl+S prüfte nicht, ob Alt ebenfalls gedrückt war, und blockierte dadurch die Eingabe von Ś so, als wäre sie ein Speicher-Shortcut
Die Korrektur: Ctrl+S nicht erkennen, wenn Alt gedrückt ist
- Nachdem die Ursache verstanden war, war die Korrektur einfach
- Statt Ctrl+S pauschal zu blockieren, wurde die Bedingung so geändert, dass nur dann abgefangen wird, wenn zwar Ctrl gedrückt ist, aber nicht Alt
if ((e.metaKey || (e.ctrlKey && !e.altKey)) && e.keyCode === goog.events.KeyCodes.S) {
this._editors.save()
e.preventDefault()
}
- Nach der Änderung fällt die Eingabe von Right Alt+S nicht mehr unter die Bedingung zum Blockieren von Ctrl+S
- Medium behob diesen Bug, und die betreffende Bedingung wurde später mit vielen Kommentaren versehen, damit Menschen sie verstehen konnten
Das größere Problem hinter einer kleinen Bedingung
- In Polen brach der Kommunismus 1989 zusammen, und Computer können heute sowohl von Privatpersonen als auch von Unternehmen legal importiert werden
- Windows- und Mac-Systeme, die heute in Polen gekauft werden, unterstützen Polnisch vollständig, und auch die Betriebssysteme sind lokalisiert
- Trotzdem gibt es in den Systemeinstellungen weiterhin das programmer’s layout, und es ist von den beiden Layouts noch immer das am häufigsten verwendete
- Dieser kleine Bug hängt mit der Realität zusammen, dass sich US-amerikanische Computing-Gewohnheiten rund um die 26 unakzentuierten Buchstaben des Englischen entwickelt haben
- Polnisch musste sich kompromisshaft zwischen von QWERTY abgeleiteten Layouts bewegen, und Sprachen mit Schriftsystemen, die noch weiter vom Englischen entfernt sind, können unter noch ungünstigeren Bedingungen stehen
1 Kommentare
Meinungen auf Hacker News
Ich denke, dass es für Polen viel einfacher war, sich westlich zu orientieren, weil Polnisch das lateinische Alphabet verwendet und zusätzliche Lautwerte nur mit kleinen slawischen Varianten ausdrückt.
Der durchschnittliche Pole ist seinen westlichen Nachbarn kulturell deutlich näher als ein Ukrainer oder Russe; vielleicht ist die Küche die einzige Ausnahme.
Ich frage mich, ob die Ukraine in ferner Zukunft denselben Weg gehen wird.
Gelehrte gehen davon aus, dass sich Polnisch etwa zur selben Zeit als eigene Sprache zu entwickeln begann, und bis ins 13. Jahrhundert konnte man sich mit den südlichen Nachbarn ohne größere Probleme verständigen.
Im 15. und 16. Jahrhundert bildete sich die polnische Orthografie heraus, und Stanisław Zaborowski sowie Jan Kochanowski versuchten, Buchstaben einzuführen, um die damalige polnische Phonologie genauer abzubilden; das von ihnen vorgeschlagene Alphabet war allerdings ziemlich lang.
Während der Teilungszeit gab es eine starke Russifizierung, die polnische Sprache und Kultur auslöschen sollte, sowie Versuche, das kyrillische Alphabet einzuführen; letztlich scheiterten sie jedoch, und die damalige Literatur behandelte häufig Patriotismus und Vaterlandsliebe.
Durch die Sprachreform von 1936 näherte sich die Sprache der Form an, die wir heute kennen. In der kommunistischen Zeit wurde in der Amtssprache die zweite Person Plural eingeführt, ähnlich dem vykání im Tschechischen und Slowakischen, doch sie wirkte unnatürlich und war stark politisch gefärbt, sodass sie sich nicht lange hielt.
Im Polnischen gibt es Dialekte, aber nach dem Zweiten Weltkrieg verwischten Migrationen die Unterschiede, und auch das Standardpolnisch verfestigte sich in dieser Zeit. Heute gibt es viele englische Lehnwörter, sodass etwa hater als hejter eingebürgert wird.
Diese Aussage wird viele Polen ziemlich wütend machen.
Das eigentliche Problem ist, dass Browser keine einfache Möglichkeit bereitstellen, Tastenkombinationen zu prüfen, und Entwickler sie auch nicht selbst bauen.
Auf vielen Websites wird die beabsichtigte Tastenkombination auch dann ausgelöst, wenn zusätzliche Modifikatortasten wie Alt oder Shift gedrückt sind.
Auch der hier gezeigte Code behebt unter Windows nur das größere Problem; alt+cmd+s bleibt weiterhin blockiert.
Es bräuchte einen Vorschlag, dass Browser in keydown/up/press-Events eine Eigenschaft mit einem Tastenkombinationscode wie „CTRL+S“ oder „CTRL+ALT+S“ bereitstellen.
Dann könnten Entwickler anhand dieser Eigenschaft verzweigen, statt Tastencodes und Modifikatortasten selbst zu prüfen.
Webentwickler sollten so eine Eigenschaft auch in ihrem eigenen Code selbst erzeugen und vergleichen, statt Modifikatortasten manuell zu prüfen. Das würde Bugs wie im Originalbeitrag verhindern und wäre viel bequemer zu verwenden.
Stell dir vor, wie viel Schaden Entwickler anrichten könnten, wenn sie noch mehr Optionen bekämen, leichter einzugreifen.
Wenn man Tasten abfangen muss, gibt es bereits Low-Level-APIs; dabei sollte man es belassen.
HTML hat übrigens das accesskey-Attribut, mit dem man Tastenkürzel festlegen kann: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/...
Der neue Copilot 365 macht genau das. Jedes Mal, wenn ich „Ć“ eingeben will, springt Copilot auf, und ich muss die App ständig schließen.
Seit dem Umstieg habe ich kein einziges Mal zurückgeblickt.
Geschrieben auf SteamOS.
Danke, Microsoft. Schön zu sehen, dass die Qualitätssicherung gut funktioniert.
Interessante Tatsache: Wenn man die kanonische Unicode-Dekompositionsnormalisierung anwendet, werden 8 der 9 polnischen Buchstaben (ż, ó, ć, ę, ś, ą, ź, ń) in Grundbuchstabe + kombinierendes diakritisches Zeichen zerlegt, aber ł bleibt unverändert.
Deshalb kann man mit dem unicode61-remove_diacritics-Tokenizer von sqlite polnischen Text nicht für die Volltextsuche normalisieren.
Ich bin mir nicht sicher, aber sqlite remove_diacritics funktioniert vermutlich so, dass es wie meine eigene Implementierung erst nach NCD konvertiert und dann die kombinierenden Zeichen aus dem String entfernt.
Ich würde erwarten, dass andere Spezialfälle, die nicht zerlegt werden, wie ħ oder ø, ähnlich funktionieren.
Lviv = 2,5 Mio.
Vinnytsia = 1,5 Mio.
Ivano-Frankivsk = 1,3 Mio.
Khmelnytskyi = 1,2 Mio.
Rivne = 1,1 Mio.
Ternopil = 1,0 Mio.
Volyn = 1,0 Mio.
Chernivtsi = 0,8 Mio.
Zakarpattia = 0,8 Mio. (Ungarnstämmige nicht mitgezählt)
Damit kommt man allein auf 11,2 Millionen Westukrainer, bei denen Ukrainisch klar dominiert, und selbst wenn man den Rest des Landes völlig ignoriert, sind das mehr als die Zahl der Tschechischsprecher. Außerdem waren die übrigen Regionen auch nicht vollständig russischsprachig, und heute erst recht nicht.
Leider betrifft das nicht nur Medium, sondern auch mehrere Windows-Apps. In Active Presenter zum Beispiel stoppt die Bildschirmaufnahme, wenn man ein bestimmtes Zeichen eingibt, vermutlich Ó, wodurch es oft unmöglich wird, eine Szene aufzunehmen, in der man auf Polnisch tippt.
Andere Apps scheinen ähnlich Kombinationen wie Alt + Ctrl + Buchstabe als Shortcuts zu belegen und damit irgendwie den Tastaturlayout-Treiber zu übergehen.
Selbst im Jahr 2026 kann ich plötzlich in Edge für Mac kein großes Ś mehr eingeben. Es fühlt sich an, als wäre man etwa 25 Jahre in die Vergangenheit zurückversetzt.
nvidia overlay hat den Shortcut Alt+Z, der sowohl mit der linken als auch mit der rechten Alt-Taste funktioniert. Für polnische Nutzer ist das ziemlich nervig, weil sie kein „ż“ eingeben können, ohne das Overlay zu öffnen oder die Taste neu zu belegen.
Nvidia, bitte behebt das.
Zusammengefasst ist es so:
Unter Windows wurde bereits eine Alt-Kombination verwendet, also wurde daraus rechtes Alt+s; die rechte Alt-Taste wurde von Windows selbst zwar nicht genutzt, aber statt eines separaten rechten-Alt-Codes schrieb Windows diese Taste als ctrl+alt-Kombination um.
Wenn man es zusammenfasst, sollte zumindest das wichtigste Detail stimmen. Die Leute haben nur Alt gedrückt, aber Windows machte daraus „jetzt wird ctrl+alt gedrückt“, sodass alt+s wie ctrl+s aussah und beim Abfangen und Unterdrücken des Events ein angehängtes Alt vorhanden war, nach dem niemand prüfte.