Stuck keys

From OLPC
Jump to navigation Jump to search
This page is about keys sticking on an XO keyboard when you don't want them to. For the X accessibility feature, see stickykeys.

It has been reported that some XOs experience sticky or broken keys.

Apparently, the left ALT key is usually affected.

Why this happens

This is not a problem in increased "stickiness", it is a problem of ineffective insulation between the two conductive mebranes. There are several problems with the keyboard manufacture that can cause this problem. One is a mis-registration of the different membranes making up the keyboard. While there are several mechanical pins to maximize registration, a slight warping of the bottom layer (which is stuck to a metal plate) can still occur. Even if not mis-registered, the slight buckling of the bottom membrane which results can cause a sticky key. This problem was addressed in pre-production, and hasn't been seen on dissected failing production units.

Another likely hypothesis is the spacing/insulating compound which is placed between the keyboard membranes is not thick enough. In particular, the ALT and CTL keys have much smaller central dots of this spacer than other keys, small enough that the manufacturing process may have trouble controlling their size. In response, a new silkscreen mask for this compound has been prepared, which both decreases the available contact area and increases the size of the central spacing dot.

To test whether this is indeed the problem

  • Reboot and enter OpenFirmware (the Ok prompt) by pressing the 'ESC' key.
  • Run the keyboard test.
 ok test keyboard

Symptoms

  • Press the LEFT ALT key several times. The key is stuck on, but may turn off as the key is pressed, until it comes on again when fully depressed.

Temporary software workaround

As a (temporary?) workaround, the left ALT key can be disabled with the following commands (to be executed from the Terminal activity):

xmodmap -e "remove mod1 = Alt_L"
xmodmap -e "keycode 64 ="
xmodmap -e "keycode 133 = Alt_L Meta_L"
xmodmap -e "add mod1 = Alt_L"

In order to apply these settings on startup, the respective commands can be added to .xsession.

  • if /home/olpc/.xsession does not exist:
    • in the Terminal activity, execute the following command: cp /home/olpc/.xsession-example /home/olpc/.xsession
  • open .xsession with the following command: nano -w /home/olpc/.xsession
  • at the end, add the following lines
# remove broken Left ALT key from modifier map
xmodmap -e "remove mod1 = Alt_L"
# disable broken Left ALT key
xmodmap -e "keycode 64 ="
# replace Left ALT with Left Hand key
xmodmap -e "keycode 133 = Alt_L Meta_L"
# add the Left Hand (as Alt_L) to the modifier map
xmodmap -e "add mod1 = Alt_L"
  • save the file by hitting CTRL+X, then enter "y" to confirm

Fix: Disassembly and cleaning

This has been reported to make sticky keyboards "work flawlessly." OLPC does not recommend that you try this: it isn't likely to fix the problem, and involves taking the keyboard of your XO apart in a way that could also damage the keyboard even further.'

Some folks have fixed the issue by removing the keyboard and cleaning under the contacts where the sticky build-up is occurring. Use rubbing alcohol or an eraser. It's certainly worth a try although the keyboard does take some Disassembly to get to.

Key Codes

Other keys - such as left control key (LCTRL) - have been reported to be broken as well. Here is a list of commonly required key codes:

Key Key Code Key Designation
LCTRL 37 Control_L
LALT 64 Alt_L
ALT GR 108 [tbc]
LGRAB 133 [tbc]
RGRAB 134 [tbc]

See Also