The Romanian keyboard layout on XP is the brokenest layout of all

by Michael S. Kaplan, published on 2006/12/11 10:55 -05:00, original URI:

Technically, the word broken represents an absolute; this means the terms brokener and brokenest are really not words.

But they say that it is the exception that proves the rule, and the Romanian keyboard on Windows NT represents the surefire god awful damnedest exception in the history of keyboards!

First we'll start with the layout as it was in Windows 95, as shown in the first edition of Developing International Software for Windows 95 and Windows  NT, in appendix Q here, specifically the AltGr shift state:

Now you can how the top row contains a bunch of dead keys, right?

Well, when this keyboard was ported from Win9x to WinNT, the person doing the porting made a small set of errors. basically not defining any of those dead keys.

Since this small omission keeps the keyboard from creating 77 different characters, a not entirely insignificant amount of which are needed for the Romanian language, it is fair to say that the keyboard is broken.

Cristi had been trying to tell people about this for a while but was having problems getting the message sent to the core team that owns the keyboard layouts, so it really wasn't until just a few years ago that he bumped into me online and after looking into it I put in the bug entitled "Romanian keyboard is wrong, Wrong, WRONG!", which we finally managed to fix in Vista by restoring those dead keys (and those 77 characters) to their former glory....

Which of course left us with one additional problem.

You see, we added two new keyboard layouts for Romanian to Vista, one following the Romanian national standard and the other a commonly used phonetic layout.

And the two new layouts use the characters with comma below rather than cedilla below (the characters we updated fonts for, mentioned here and here).

(Another post coming up soon will talk about the larger issues surrounding these letters in national standards and in software!)

But there was this huge question of whether to update the old layout we fixed to use the new characters or to instead keep the ones that were originally there.

The particular commitment to never change a layout really speaks more to the intent of the layout (what a person would expect to be typed) rather than the literal characters. So it was a non-trivial question.

But in the end, the decision was made to have the older keyboard keep typing the older, non-preferred letters, which have at least one real advantage -- they are on the relevant default Windows, OEM, and ISO code pages -- an important consideration in legacy applications.

Like I mentioned before, the history of these letters, which makes for a fascinating story, is coming up soon and will discuss this issue further. :-)


This post brought to you by ț (U+021b, a.k.a. LATIN SMALL LETTER T WITH COMMA BELOW)

# Mihai on 11 Dec 2006 12:21 PM:

The interesting part though is that the characters created using the dead keys are not used in Romanian. Also not used are the d and l with stroke, and sharp s.

The only accented characters used are t and s with comma below,

a and i with circumflex, a with breve (and all those are accessible without dead keys).

The rest is a nice bonus to work with foreign languages (like the United States- International layout).

So it is not that broken, after all :-)

# Michael S. Kaplan on 11 Dec 2006 3:28 PM:

Well, broken in the sense that it used to work and now it no longer does? :-)

# Cristian Secară on 11 Dec 2006 6:22 PM:

Generally speaking, the accented characters generated with the help of the dead keys are required by the minority languages used over the Romanian territory, but I agree that not all 77 characters.

Some points here:

- the most required language support here is for Hungarian, German (political/cultural) and French (cultural)

- in my understanding, "cultural" support means writing some general purpose text in a particular language, whereas "political" support means to be able to write at least the names of a person, street and/or place in a particular language

- the Legacy layout does not provide complete support for French; this issue has been addressed in the Standard layout, assuming the user handles an Unicode encoded document (or at least an ISO-8859-16 encoded document)

- đ/Đ and ł/Ł characters are provided as part of support for Croatian and respectively Polish languages; it was explicitly requested to keep them also in the standardized layout (don't ask me how many users will actually use them ...)

- ß character is provided as part of support for German language; this character is present also in the standardized layout, in spite of the "legacy" nature of it usage (I assume entirely this decision, which is the result of many discussions, carried also with the dean of the German university in Bucharest)

- the presence and position of the dead keys for Romanian keyboard are the same as for Croatian, Hungarian and Slovenian if I remember well ...


Groan on 30 Dec 2009 11:22 AM:

Is there any way to get the new style keyboard layout in Windows XP ? (The qwertY one that also has the proper şţ characters, not the ones I typed here)

Or is this Vista only?

Michael S. Kaplan on 30 Dec 2009 6:24 PM:

If you are on >= Vista you can use MSKLC to create a layout based on one of the new ones, then use the setup it creates on XP.

Or you can build your own layout with them using MSKLC on XP (if you have no access to a later version of Windows).

Please consider a donation to keep this archive running, maintained and free of advertising.
Donate €20 or more to receive an offline copy of the whole archive including all images.

referenced by

2011/08/15 If you change the behavior of typing sequences you should never type, is it a bug?

2008/09/29 The difference between Six Sigma and Sigma Diaresis is one must never fail; the other seems to do so by default

2007/11/27 How many versions does a bug have to exist before backporting the fix can't be successfully argued?

go to newer or older post, or back to index or month or day