Do you have an IBM 600X (and possibly other Thinkpads) which you cannot boot or access the BIOS because of the "301"
keyboard error? If your keyboard has a key that is stuck "down", then the power-on self-test (POST) will indicate the
"301" error code, along with a code which tells you exactly which key is causing the problem. For example, in the
picture to the left there is a "15" in front of the 301 error code. This means that one of the keys is stuck down. How
do I know which one? Each key sends out a byte or a series of bytes when pressed down or released. These are called
scancodes. If you search around the net you can find tables and charts which lists the various standards for key
scancodes. This information is not in the Hardware Maintenance Manual. So to answer a question I saw posed at the
Thinkpads.com 600X forum, I decided to document all of
the possible error codes you may see when encountering a stuck key. The most useful table is presented first; a
listing in numerical order of all of the error codes with the associated key(s):
Code | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 0A | 0B | 0C | 0D | 0E |
Key | F9 | F5 | F3 | F1 | F2 | F12 | F10 | F8 | F6 | F4 | Tab | ` |
Code | 11 | 12 | 14 | 15 | 16 | 1A | 1B | 1C | 1D | 1E | 21 | 22 |
Key | L Alt | L Shift | L Ctrl | q | 1 | z | s | a | w | 2 | c | x |
Code | 23 | 24 | 25 | 26 | 29 | 2A | 2B | 2C | 2D | 2E | 31 | 32 |
Key | d | e | 4 | 3 | Space | v | f | t | r | 5 | n | b |
Code | 33 | 34 | 35 | 36 | 3A | 3B | 3C | 3D | 3E | 41 | 42 | 43 |
Key | h | g | y | 6 | m | j | u | 7 | 8 | , | k | i |
Code | 44 | 45 | 45 | 49 | 4A | 4B | 4C | 4D | 4E | 52 | 54 | 55 |
Key | o | 0 (zero) | 9 | . | / | l (el) | ; | p | - | ' | [ | = |
Code | 58 | 59 | 5A | 5B | 5D | 66 | 76 | 77 | 7E | 83 | E0 | E0 |
Key | Caps Lock | R Shift | Enter | ] | \ | Backspace | Esc | F11 | ScrLk | F7 | R Alt | PrtSc |
Code | E0 | E0 | E0 | E0 | E0 | E0 | E0 | E0 | E0 | E0 | E0 | E1 |
Key | R Ctrl | End | L Arrow | Home | Insert | Delete | Down Arrow | R Arrow | Up Arrow | PgDn | PgUp | Pause |
Here's a different table arranged in the physical layout of the 600X keyboard:
Key | Esc | PrtSc | ScrLk | Pause | Insert | Home | PgUp |
Code | 76 | E0* | 7E | E1 | E0* | E0* | E0* |
Key | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | End | PgDn |
Code | 05+ | 06 | 04 | 0C | 03 | 0B | 83 | 0A | 01 | 09 | 78# | 07$ | E0* | E0* | E0* |
Key | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
Code | 0E | 16 | 1E | 26 | 25 | 2E | 36 | 3D | 3E | 46 | 45 | 4E | 55 | 66 |
Key | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ |
Code | 0D | 15 | 1D | 24 | 2D | 2C | 35 | 3C | 43 | 44 | 4D | 54 | 5B | 5D |
Key | CapsLock | a | s | d | f | g | h | j | k | l | ; | ' | Enter |
Code | 58 | 1C | 1B | 23 | 2B | 34 | 33 | 3B | 42 | 4B | 4C | 52 | 5A |
Key | L Shift | z | x | c | v | b | n | m | , | . | / | R Shift |
Code | 12 | 1A | 22 | 21 | 2A | 32 | 31 | 3A | 41 | 49 | 4A | 59 |
Key | Fn | L Ctrl | L Alt | Space | R Alt | R Ctrl | Up Arrow | Left Arrow | Down Arrow | Right Arrow |
Code | % | 14 | 11 | 29 | E0* | E0* | E0* | E0* | E0* | E0* |
* (multiple) - this error code occurs with multiple keys
+ (F1) - will not cause error code; allows access to Easy Setup (BIOS)
# (F11) - may not cause error code; possible access to recovery partition
$ (F12) - will not cause error code; allows access to boot device menu
% (Fn) - does not cause any error code to be generated