If SHIFTLOCK doesn't work for you, it's probably YOUR fault...

by Michael S. Kaplan, published on 2012/06/08 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2012/06/08/10317145.aspx

The SHIFTLOCK attribute of MSKLC is an interesting feature.

You can see it in the UI right here, second CheckBox from the bottom:

ShiftLock for everyone!

In MSKLC's help file, it is documented on the Properties Dialog information page whatsetting it does:

CapsLock turned off when Shift is depressed - Selecting this option imitates traditional typewriter behavior where depressing the SHIFT key turns off CAPS LOCK if it is active, something many users are accustomed to.

Now I remember an old typewriter when I was growing up that used to do this.

And on my Osborne 1, as I mentioned here.

Even the Osborne 1 had it!

So I understood the idea, even though I hadn't seen such a keyboard in years and years.

I even thought I knew of a couple of keyboard layouts that used this feature:

Thai me up!   Thai me up!

Thai me up!  Thai me up!

I mean, say what you want about the Thai Kedmanee and Thai Pattachote keyboards.

But the ones that have the names with (non-Shiftlock) appended to their names clearly imply that the first two are of the ShiftLock variety, right? :-)

Anyway, from time to time I have gotten complaints that the attribute doesn't work for them.

In looking into the matter, I discovered a couple of things.

First of all, the Thai Kedmanee and Thai Pattachote keyboards do not enable ShiftLock.

Not a lie technically, though probably kind of a bug of sort since calling one (non-Shiftlock) implies that the other is....

The actual difference between them is slightly different -- the CAPSLOCK relationship is defined between the BASE state and the SHIFT state, so that CAPS LOCK actually does something! The SHIFT key undoes the CAPSLOCK while it is pressed, but it does not unset the CAPSLOCK key press. Just like kbdus and other keyboards.

So, close but not the same, exactly.

Because of this fact, I'm not tempted to add the SHIFTLOCK attribute to the first two keyboards, but maybe the name should be changed for the other two.

Any thoughts on what a better suffix might be? :-)

Okay, in any case, that's our bug. It's been there for a while, and the difference between what ShiftLock does and what those two keyboards do is sufficiently abstruse that I wouldn't be surprised if no one else ever noticed it.

Second of all, people who click that ShiftLock CheckBox who complain it doesn't work haven't actually clicked the caps = shift CheckBox  on any key.


How can you expect CAPSLOCK to do anything that might involve ShiftLock functionality if you never asked CAPS LOCK to do anything?!?

Now in retrospect, this would have made a great validation rule in MSKLC, to detect when you ask for a feature that you never bother to use.

But the fact that it doesn't do that can't keep this from being caused by the keyboard author; most validation rules are just as "obvious" and any rule we missed is not MSKLC's fault.

The whole ShiftLock feature falls in that list of things like dead keys and SGCAPS and ALTGR that if you (a) don't expect it, and (b) don't understand it, you are sure to be unhappy with the results....

John Cowan on 8 Jun 2012 10:32 AM:

Well, on *real* typewriters, Shift Lock is a persistent Shift, so if you leave it on and type digits you get symbols.  AFAIK no computer keyboard does this, though it's easy to see how to do it if you want it.

Azarien on 9 Jun 2012 11:21 AM:

I don't understand this post.

What do Shift and Caps Lock do on Thai non-non-Shiftlock keyboards, and how does it differ from Thai non-Shiftlock and from kbdus?

Michael S. Kaplan on 9 Jun 2012 8:16 PM:

All four keyboards use SHIFT the same way even the US English keyboard does. The two that don't say "non-shiftlock" se the CAPS key to give shift privileges, also like the US keyboard (even though Thai has no case).

None of the four use shiftlock, so in truth all four are technically non-shiftlock.

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