ZedneWeb
It’s dangerous to go alone

Unexpected keyboard layout prevents password entry

By Dave Menendez
Monday, April 3, 2006, at 11:45 PM

Summary: Why I suddenly wasn’t able to enter my password, and what I did to resolve it.

Earlier this evening, I opted to download the latest iPod software update (this turned out to be pointless, as the software for my particular iPod was not updated). As usual, Software Update brought up a password prompt so I could authorize it to install software. This time, however, my password was rejected.

I retyped my password and made sure that caps lock was off. Still rejected. I used sudo at the command line to make sure my password still worked. It did.

Eventually, I noticed that icon in the Input Menu was different in the password dialog box. Instead of my custom keyboard layout, it was set to Dvorak. When I tried to select my custom layout, nothing happened, so I switched to the standard U.S. keyboard layout and successfully entered my password.

This left two questions. First, why had the password dialog box switched keyboard layouts? Second, why wasn’t I able to select my custom layout? The most likely answer to both questions was that the access control software couldn’t use my custom layout, but why not?

The answer is that I had installed my custom layout in my user-specific library instead of the global library. Evidently, the password service will only use globally-available input methods when asking your password.

This makes sense: the same service gets your password when you log in, but until you’ve entered your password, you don’t have permission to use anything in your user library.

So I moved my keyboard layout from /Users/dave/Library/Keyboard Layouts to /Library/Keyboard Layouts and now everything works as it should.

One question remains: In the login window, what input method does the system use when it asks for your password? If a computer has two users, one who uses the U.S. layout and the other who uses Dvorak, does the system pick a layout based on who is trying to log in?