Next Previous Contents

5. Special keyboards - MF II keyboards

Next the modern keyboards. (MF stands for MultiFunctional.) The layout has changed: the function keys now form a top row. Function keys F11 and F12 were added. The ten keypad digit keys that served dual purposes (depending on NumLock and Shift) were duplicated so that digits and cursor movements could be produced without help from the Shift or Numlock keys. Also the Alt and Ctrl keys were duplicated. Prefixes e0 and e1 were introduced to distinguish old and new versions of the same old key. All modern keyboards follow this scheme, but many add a messy collection of "internet buttons" and "CD keys".

Let us group keyboards according to manufacturer.

5.1 Compaq keyboards

Compaq Armada laptop keyboard

Christian Gennerat <christian.gennerat@vz.cit.alcatel.fr> writes: There are 4 extra keys on the Compaq Armada laptops. The four keys are located over the Esc-F1..F12, and are labelled *1-*4. Scancodes: 65, 67, 69, 6b.

Compaq Easy Accesss Internet Keyboard

Petr Slansky <slansky@usa.net> writes:

Internet buttons: e0 13 online community button (people icon), e0 14 online Compaq button (Q icon), e0 15 online services button (bulb icon), e0 1e online e-mail button (envelope icon), e0 21 online Search button (magnifier icon), e0 23 online start button (i icon), e0 32 online commerce button (shopping basket icon),

e0 68 Quick Print button (printer icon), e0 1f Favorite Application Launch button (racket icon),

e0 5f Sleep button,

CD/DVD player buttons: e0 22 Play/Pause, e0 24 Stop, e0 19 Next Track, e0 10 Previous Track, e0 2c Eject,

Volume Control buttons: e0 30 Volume increase (+), e0 2e Volume decrease (-), e0 20 Mute.

Compaq Eight-Button Easy Access Keyboard

A Compaq keyboard that I have here, has the usual setup (with Windows keys) plus a top row of eight buttons, that produce scancodes e0 23, e0 1f, e0 1a, e0 1e, e0 13, e0 14, e0 15, e0 1b. These keys do not produce any codes in scan code Set 3.

5.2 IBM keyboards

IBM Rapid Access keyboard

(Information from Dennis Bjorklund <dennisb@cs.chalmers.se> and others.)

The IBM Rapid Access keyboard has 14 extra buttons and two more leds than a normal PC keyboard. By default, these buttons do not generate any scancodes. To activate them one has to send the sequence ea 71 to the keyboard. Once that is done the extra keys generate normal e0xx sequences. To turn off the extra keys you send ea 70.

These 14 keys send the following scancodes (when activated):

e0 25 (Suspend), e0 26 (Help), e0 32 (Prg 1), e0 17 (Prg 2), e0 30 (Prg 3), e0 2e (Prg 4), e0 19 (Play CD), e0 24 (CD Stop), e0 22 (CD Pause), e0 1e (Vol -), e0 20 (Vol +), e0 23 (Prev song), e0 21 (Next song), e0 12 (Mute).

The Suspend and Mute buttons have extra LEDs on them. Sending the sequence eb 00 ff to the keyboard makes all five LEDs lit up for a moment. The sequence eb 00 04 lights the Suspend LED (behind a waning moon). The sequence eb 00 20 makes the Mute LED blink. The sequence eb 00 80 locks the keyboard; if the Mute LED was blinking it now is lit permanently. Sending eb 00 ff unlocks the keyboard again.

The command ec returns 0c 01 (untranslated) which becomes 3e 43 in translated scancode Set 2. (Possibly an ID?)

Dennis Bjorklund writes: Here is the hack I use to send commands to the keyboard. After you have compiled it you can do things like send_to_keyboard ea 71, but don't run two of these at the exact same moment, and don't send strange codes because the keyboard might lock up.

My computer runs this at every startup. After that the extra buttons on the rapid access work just fine in XFree86.

/* gcc -O2 -s -Wall -osend_to_keyboard main.c */
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

int main(int argc, char *argv[]) {
  int i;

  ioperm(0x60, 3, 1);

  for (i = 1; i < argc; i++) {
    int x = strtol(argv[i], 0, 16);

    usleep(300);
    outb(x, 0x60);
  }

  return 0;
}

IBM Rapid Access II keyboard

This keyboard has a top row of seven color-coded buttons. On the upper right a "wheel" composite button with six parts. Below it a blue button ("mute"). Finally, the usual block with four arrow keys has been enlarged by two more keys ("page left" and "page right").

Keys:

e0 25 (Green, "Internet"), e0 26 (Blue, "Internet shopping"), e0 32 (Yellow, "IBM Web support"), e0 17 (Purple), e0 30 (Red), e0 2e (Cyan, "Help"), e0 5f (White, "Standby" - has a LED), e0 20 (CD stop), e0 22 (CD play), e0 21 (Volume D), e0 23 (Volume U), e0 24 (CD back), e0 12 (CD fwd), e0 1e (Mute - no LED).

(In translated scancode Set 3, these become 41, 3f, 3d, 3b, 3c, 66, --, 69, 6a, 6b, 6c, 6d, 44, 68, respectively.)

The "back" ("page left") and "forward" ("page right") keys generate ALT+left and ALT+right respectively: 38 e0 4b (release sequence b8 e0 cb) and 38 e0 4d.

The commands ea 70 and ea 71 serve to switch off (resp. on) the special keys. (These are on by default, but can be switched off.) However, the white Standby key is always on.

The white Standby button has a LED (that is flashed during a reset). It is set by the command eb 71 and cleared by the command eb 70.

IBM ThinkPad

George Staikos <staikos@0wned.org> writes:

I have an IBM ThinkPad i1460. It has the IBM EasyLaunch<tm> keys. These are four multicoloured keys up at the top of the keyboard for "Home Page", "Search", "Shop", "Mail". They dont' seem to create any keyboard events at all. The keyboard interrupt doesn't trigger, showkeys doesn't see them do anything, and in DOS, a simple sequence of BIOS calls doesn't see them either. Also, being a laptop, it has an FN key. This key generates 55.

5.3 Logitech keyboards

Logitech Internet keyboard

Jonathan DeBoer <deboer@ugrad.cs.ualberta.ca> reports: This keyboard has 18 unusual keys.

e0 7a (WWW), e0 32 (History), e0 21 (Open URL), e0 23 (Home), 38 2a 0f 8f (key press) 8f b8 aa (key release) (Send To Back) - this sequence simulates Alt+Shift+Tab, but contains two Tab releases, e0 17 (Print), e0 10 (Back), e0 22 (Forward), e0 24 (Stop), e0 19 (Refresh), e0 1e (Search), e0 12 (Find), e0 26 (Add Favourite), e0 18 (Open Favourites), e0 20 (Hot Links), e0 30 (Scroll Up), e0 2e (Scroll Down), e0 25 (Logitech).

Ryan Lortie <desertangel@globalserve.net> writes: The "Logitech" key is used as a modifier. In windows, Logitech-Keypad+ increases volume, Logitech-Keypad- decreases. There is a conjoined dual-button key for "scroll". You press the top part to scroll up, the bottom to scroll down.

Graham Hay adds: The extra LED is an amber colour, placed above the www key with a recessed line linking them. Sending eb alone turns it on. It will flash on/off about once per second after that. A single ec will turn it off.

(enlarge)

Logitech Cordless Desktop Pro keyboard

Nick Rusnov <nick@grawk.net> reports:

The special buttons on a Logitech Cordless Desktop Pro keyboard produce the following scancodes:

e0 5f (Moon (sleep)), e0 32 (Homepage), e0 6c (Mail), e0 65 (Search), e0 66 (runningguuy), e0 20 (Mute), e0 2e (VolDown), e0 30 (VolUp), e0 22 (Play/Pause), e0 24 (Stop), e0 10 (Rewind), e0 19 (ff), e0 21 (Logitech).

Logitech Access keyboard

Denis Kosygin <kosygin@math.princeton.edu> reports:

In addition to usual 104 keys in the usual PC layout this keyboard has 11 extra keys. Ten of them produce the following escape scancodes: e0 5f (User (moon)), e0 6c (E-mail), e0 11 (Messenger/SMS), e0 12 (Webcam), e0 20 (Mute (crossed speaker)), e0 30 (VolUp (triangle up with + sign in it)), e0 2e (VolDown (triangle down with - sign in it)), e0 6d (Media), e0 32 (My Home), e0 65 (Search).

The eleventh key (with keycap "F lock") is a switch between two sets of scancodes for function keys F1-F12. When "F lock" is pressed, then F1-F12 act as function keys and produce usual keyscans for these keys. When "F lock" is depressed, F1-F12 generate the following keyscans:

e0 3b (new [F1]), e0 3c (reply [F2]), e0 3d (forward [F3]), e0 3e (send [F4]), e0 10 (rewind [F5]), e0 19 (fast forward [F6]), e0 22 (play/pause [F7]), e0 24 (stop [F8]), e0 43 (my com [F9]), e0 44 (my doc [F10]), e0 57 (my pic [F11]), e0 58 (my music [F12]).

Logitech Cordless Desktop Optical keyboard

Stefan reports:

The special buttons on a Logitech Cordless Desktop Optical keyboard produce the following scancodes:

e0 69 (Go), e0 6a (Back), e0 5f (Sleep), e0 66 (Favorites), e0 24 (SeekBack), e0 22 (SeekForward), e0 01 (Media), e0 1e (VolUp), e0 25 (VolDown), e0 26 (Mute), e0 1f (PlayPause), e0 17 (Stop), e0 6c (Email), e0 65 (Search), e0 02 (Homepage).

Some other keys behave differently.

5.4 Microsoft keyboards

Some common scancodes found on some Microsoft keyboards.

e0 05 Messenger or Files e0 07 Redo (on F3 or not) e0 08 Undo (on F2 or not) e0 09 Application Left
e0 0a Paste e0 0b/8b Scroll Up/Down Normal e0 10 Prev Track, |<< e0 11/91 Scroll Up/Down Fast
e0 12/92 Scroll Up/Down Faster e0 13 Word e0 14 Excel e0 15 Calendar
e0 16 Log Off e0 17 Cut e0 18 Copy e0 19 Next Track, >>|
e0 1e Application Right e0 1f/9f Scroll Up/Down Fastest e0 20 Mute e0 21 Calculator
e0 22 Play/Pause e0 23 Spell (on F10) e0 24 Stop (cf e0 68) e0 2e Volume -
e0 30 Volume + e0 32 Web/Home e0 3b Help (on F1) e0 3c My Music or Office Home (on F2)
e0 3d Task Pane (on F3) e0 3e New (on F4) e0 3f Open (on F5) e0 40 Close (on F6)
e0 41 Reply (on F7) e0 42 Fwd (on F8) e0 43 Send (on F9) e0 57 Save (on F11)
e0 58 Print (on F12) e0 5b LeftWindows e0 5c RightWindows e0 5d Application (Menu)
e0 5e Power e0 5f Sleep e0 63 Wake e0 64 My Pictures
e0 65 Search e0 66 Favorites e0 67 Refresh e0 68 Stop (cf e0 24)
e0 69 Forward e0 6a Back e0 6b My Computer e0 6c Mail
e0 6d Media

Microsoft Natural keyboard

This keyboard has three additional keys, with escaped scancodes e0 5b (LeftWindow), e0 5c (RightWindow), e0 5d (Menu). The untranslated Set 2 scancodes (see below) are e0 1f, e0 27 and e0 2f, respectively. The USB key codes are usage page 0x07, usage index 227, 231, 101 (decimal), respectively. Microsoft describes the intended use in detail. Both Windows keys are intended to be used as modifier keys, like both shift and control and alt keys. The Menu key may be modified by shift etc.

Microsoft Internet keyboard

In addition to the three extra keys on the Microsoft Natural keyboard, this keyboard has ten keys, with escaped scancodes e0 6a (Back), e0 69 (Forward), e0 68 (Stop), e0 6c (Mail), e0 65 (Search), e0 66 (Favorites), e0 32 (Web/Home), e0 6b (My Computer), e0 21 (Calculator), e0 5f (Sleep). The untranslated Set 1 codes are as expected (make codes identical to the above translated Set 2 ones). The translated Set 3 codes are 6a, 69, 68, 6c, 65, 66, 97, 6b, 99, 54, respectively.

Microsoft Natural keyboard pro

Marco Melgazzi <marco@techie.com> reports: The Microsoft Natural keyboard pro has 19 additional keys, with escaped scancodes e0 6a (Back), e0 69 (Forward), e0 68 (Stop), e0 67 (Refresh), e0 65 (Search), e0 66 (Favorites), e0 32 (Web/Home), e0 6c (Mail), e0 20 (Mute), e0 2e (Volume -), e0 30 (Volume +), e0 22 (Play/Pause), e0 24 (Stop), e0 10 (Prev Track), e0 19 (Next Track), e0 6d (Media), e0 6b (My Computer), e0 21 (Calculator), e0 5f (Sleep). (That is, we have the ten extra keys of the Microsoft Internet keyboard, with the same scancodes, and also Refresh, Mute, Volume -, Volume +, Play/Pause, Stop, Prev Track, Next Track, Media.)

Microsoft Natural Multimedia Keyboard

Jeremy Brand <jeremy@nirvani.net> reports: The Microsoft Natural Multimedia Keyboard has 17 additional keys. Scancodes are

? (My Documents), e0 64 (My Pictures), e0 3c (My Music), e0 20 (Mute), e0 22 (Play/Pause), e0 24 (Stop), e0 30 (Volume +), e0 2e (Volume -), e0 10 (|<<), e0 19 (>>|), e0 6d (Media), e0 6c (Mail), e0 32 (Web/Home), e0 05 (Messenger), e0 21 (Calculator), e0 16 (Log Off), e0 5f (Sleep).

Moreover, the function keys are dual purpose. There is a "function lock" key. By default the function keys are not function keys, they are "Help", "Undo", etc. You have to press the function lock key and then the function keys act like the usual function keys. In the default state the scancodes are

e0 3b (Help) on F1 key, e0 08 (Undo) on F2 key, e0 07 (Redo) on F3 key, ? (New) on F4 key, ? (Open) on F5 key, ? (Close) on F6 key, ? (Replay) on F7 key, e0 42 (Fwd) on F8 key, e0 43 (Send) on F9 key, e0 23 (Spell) on F10 key, e0 57 (Save) on F11 key, e0 58 (Print) on F12 key.

Microsoft Office keyboard

Christian Hammond reports about the keyboard Scroll Wheel: The following is my interpretation of the results of showkey -s. I had read that the wheel has 3 speeds, normal, fast, and faster. However, my results show 4.

Scroll Up: Normal e0 0b, Fast e0 11, Faster e0 12, Fastest e0 1f.

Scroll Down: Normal e0 8b, Fast e0 91, Faster e0 92, Fastest e0 9f.

Wouter van Wijk <woutervanwijk@netscape.net> reported the scancodes given below.

On the left touchpad above the scroll wheel: e0 6a (Back), e0 69 (Forward). On the left touchpad below the scroll wheel: e0 17 (Cut), e0 18 (Copy), e0 0a (Paste), e0 09 (Application Left), e0 1e (Application Right),

Buttons on the top row: No scancode (F Lock), e0 13 (Word), e0 14 (Excel), e0 32 (Web/Home), e0 6c (Mail), e0 15 (Calendar), e0 05 (Files), e0 21 (Calculator), e0 20 (Mute), e0 2e (Volume -), e0 30 (Volume +), e0 16 (Log Off), e0 5f (Sleep). This is the expected code for Sleep. However, there do not seem to be Power and WakeUp keys.

The twelve function keys can be in two states. In the default state they produce the (new) codes below. The FLock toggle switches them back to good old function key state. e0 3b (Help [F1]), e0 3c (Office Home [F2]), e0 3d (Task Pane [F3]), e0 3e (New [F4]), e0 3f (Open [F5]), e0 40 (Close [F6]), e0 41 (Reply [F7]), e0 42 (Fwd [F8]), e0 43 (Send [F9]), e0 23 (Spell [F10]), e0 57 (Save [F11]), e0 58 (Print [F12]). Note that each of these codes is just the e0 variation of the ordinary function key code, except for that for Spell [F10]. When the FLock light is off (default) the e0-version is activated.

Above the 5-key block with Insert, Home, Delete, PgUp, PgDown: e0 08 (Undo), e0 07 (Redo).

Above the number pad: 59 (=), e0 4c (( [PrintScreen]), e0 64 () [ScrollLock]), 0e (Backspace), 0f (Tab). These are the usual codes for Backspace and Tab but new codes for (, ), =. PrintScreen and ScrollLock have the usual codes.

See the Microsoft ad.

5.5 Safeway keyboards

Safeway SW10 keyboard

The Safeway SW10 keyboard has the usual keys, including the three Windows keys, and including Power, Sleep, Wake keys (below Delete, End, PageDown) that do not produce scancodes unless the Fn key (above Keypad-Minus) is pressed simultaneously. This Fn key is used together with 11 keys: F1-F7, F11, Power, Sleep, Wake. Fn-F11 disables the keyboard and another Fn-F11 enables it again. Fn-F1/F2/F3/F4/F5/F6/F7 sets the repeat rate (on my keyboard I measured 2.0/4.0/6.7/12/26/32/32 chars/sec respectively).

Safeway SW23 keyboard

The Safeway SW23 keyboard has 132 keys: the usual 104 keys (101 plus three Windows keys), five more keys called Turbo (below Enter, right of RShift), and Power, Sleep, Wake (below Delete, End, PageDown), and Ez (above Keypad-Minus), and 23 buttons in two rows above the row of function keys. By default, the five extra keys do not produce scancodes. (The Ez is a mode toggle. The Turbo key is used to enable the Power, Sleep, Wake keys.)

First row of buttons: three Volume buttons: e0 58 (Mute), e0 5a (Vol -), e0 70 (Vol +), five CD Player buttons: e0 59 (Prev), e0 42 (Play), e0 69 (Next), e0 64 (Stop), e0 71 (Eject), two Recorder buttons: e0 40 (Rew/Play), e0 29 (Rec/Stop).

Second row of buttons: e0 23 (Sleep), e0 7d (Cut), e0 7e (Copy), e0 7f (Paste), e0 20 (Rotate), e0 43 (Close), e0 30 (My Doc), e0 44 (DOS), e0 79 (Game), e0 77 (WWW), e0 6e (Calc), e0 3e (X'fer), e0 6a (Menu/?).

The Ez key does not produce scancodes, but toggles a M/Mode LED, the fourth next to the Num, Caps, Scroll LEDs. When that LED is set, the 17 keypad keys give different scancodes: e0 3c (N/Lock), e0 7b (/), e0 22 (*), e0 61 (-), e0 0f (7), e0 21 (8), e0 6b (9), e0 3d (+), e0 04 (4), e0 62 (5), e0 39 (6), e0 10 (1), e0 24 (2), e0 05 (3), e0 02 (0), e0 41 (.), e0 3f (Enter).

The Turbo key does not produce scancodes, and neither do Power, Sleep, Wake. However, when Turbo is pressed simultaneously, the Power, Sleep, Wake keys yield e0 5e, e0 5f, e0 63 as they should.

In untranslated scancode mode 3, the multimedia and power keys do not yield any code. In untranslated scancode mode 1 they yield the same code as in untranslated scancode mode 2. (This is a design bug: untranslated scancode mode 1 should be the same as translated scancode mode 2 (see below), and this is true for the ordinary keys, but fails here for the "multimedia" keys. For example, the keys End and Keypad-Minus (in M/Mode) yield the same e0 4f in untranslated scancode mode 1.)

Note that some "protocol keycodes" occur here with e0 prefix. Indeed, we see e1, ee, f1, fe, ff in the key up sequence for the multimedia keys Keypad-Minus (e0 e1), Calc (e0 ee), Eject (e0 f1), Copy (e0 fe), Paste (e0 ff).

5.6 Internet Wireless Keyboard

This keyboard (nameless, made in China) has 9+1+9 buttons, nine on each side of the Sleep button. Buttons: e0 6a (Web Backward), e0 69 (Web Forward), e0 68 (Web Stop), e0 67 (Web Refresh), e0 65 (Web Search), e0 66 (Web Favorites), e0 32 (Web Home), e0 6c (E-mail), e0 20 (Mute), e0 5f (Sleep), e0 2e (Volume Down), e0 30 (Volume Up), e0 22 (Play/Pause), e0 24 (Stop), e0 10 (Fast Backward), e0 19 (Fast Forward), e0 6d (Media Player), e0 6b (My Computer), e0 21 (Calculator).

This keyboard reports keyboard ID ab 83 (translated ab c1). Scancode sets 1 and 2 are reported as 01 and 02 (translated c3 and c1). These translations are bugs, but otherwise all seems to function as expected, except that this keyboard does not recognize scancode set 3 and returns fe for an attempt to set Set 3. Every command ed xx is accepted, but there are no LEDs, there is only a battery indicator.

The mouse that accompanies the keyboard shows no reactions. It may need a special driver.

5.7 Nokia keyboard

This 121-key Nokia keyboard has ten function keys on the left and twenty-four on the two top rows. On the right a block with cursor keys and a block with numeric keys. There are three LEDs. The keys have brown markings, and sometimes also blue ones. Where both occur, the blue markings describe the usual PC keytops.

Roughly speaking, the scancodes are as expected. The function keys F1-F10,F11,F12 have scan codes 3b-44, 57, 58 as usual. The keys on the upper row, labeled F13-F24, yield the same codes as shifted F1-F12. E.g., F13 gives 2a 3b on press, and bb aa on release. The function keys F4,F11,F13-F19,F21,F24 have front labels CrSel, AltCr, Red, Pink, Green, Yellow, Blue, Turq, White, Col, USM.

The ten keys on the left have the following scancodes. First column of five: 01 (Attn/Esc/NxtTsk), as expected for Esc; 1d 3b (Quit/Reset), as expected for Ctrl F1; 1d 3c (ExSel), as expected for Ctrl F2; 1d 3d (Ident/Print), as expected for Ctrl F3; 1d 3e (Help/EnlW), as expected for Ctrl F4. For these last four keys (and the ChgSc/WSCtrl below) the code becomes 3b-3e (and 3f) when left or right Ctrl is pressed already. Second column of five: e1 1d 45 ((Break)/Clear/Pause/Test), and e0 46 with Ctrl, as expected for Pause/Break; 46 (ScrLock), as expected for ScrLock; e0 2a e0 37 (PrtSc/SysRq), and e0 37 with left or right Ctrl or left or right Shift, and 54 with left or right Alt, as expected for PrtSc; 1d 3f (ChgSc/WSCtrl), as expected for Ctrl F5; 38 e0 49 (Jump), as expected for Alt PgUp.

On the right a cursor key section and a number pad. The cursor key section has the expected block of six: e0 52 (Dup/Insert/PA1); e0 47 (Field Mark/Home/PA2); e0 49 (PA3/PgUp); e0 53 (Delete/DelWd); e0 4f (ErEOF/End/ErInp); e0 51 (PgDn). Next four arrow keys: e0 48 (Up); e0 4b (Left); e0 4d (Right); e0 50 (Down). And in the middle 1d 40 (Home), with code as expected for Ctrl F6.

Finally the numeric keypad, with the usual keys that generate the usual codes, and a single additional key, a Tab, with 0f like the ordinary tab.

5.8 Focus KeyPro FK-9000 keyboard

Raul D. Miller <rockwell@nova.umd.edu> and Timothy C. Hagman <hagmanti@cps.msu.edu> report:

The keyboard is a KeyPro FK-9000. The FCC label says it's made in Taiwan by Focus Electronic Co, Ltd. It has a built-in calculator.

This keyboard has twelve additional keys, with scancodes 55 (PF1), 6d (PF11), 6f (PF12), 73 (PF2), 74 (PF9), 77 (PF3), 78 (PF4), 79 (PF5), 7a* (PF6), 7b (PF7), 7c (PF8), 7e* (PF10).

The break codes equal the make codes ORed with 0x80, as always, but the Linux kernel eats fa and fe as protocol bytes.

The behavior of these keys is different from that of normal keys-- they generate nothing when pressed; then generate the above scancodes at the normal repeat time and rate, and then generate (except for the starred ones) their scancode ORed with 0x80 when released...

These PF keys are reprogrammable -- and programming occurs as a sequence of keyboard actions. Therefore, the PF keys duplicate whatever keyboard actions occurred during their programming. You hit the "Prog" key, then the PF key you want to program; type the string you want to store in the key (it's limited to 14 keypresses), and then hit the PF key again. After that, when you hit the PF key, it sends the string, and generates its own abnormal scancode upon release. When the key is held down, it generates the scancode repeatedly, but does not generate the string stored in it repeatedly.

When you go to program a key, the scancodes for "PF##-" are sent to the computer, then the scancodes for each key you hit as you hit it (the shift, etc. keys are an exception-- they send "s-" and such :), and then, when you hit the PF## key again to end the programming, it sends a sequence of (at least) 18 "0e 8e"s -- Backspaces...

The program key itself doesn't generate a scancode at any time. The same applies to the CE and AC/ON keys (part of the calculator). There is a switch to change between calculator and keyboard mode which generates no scancodes.

When the keyboard is in calculator mode, the entire numeric keypad (and everything else on the right side) generates no scancodes.

When the keyboard is not in caluclator mode, the %, MC, MR, M-, M+, and Square Root keys all generate ff when pressed, ff to repeat, and ff on release.

The little unlabeled key between the right Ctrl and right Alt generates 56 when hit, repeats that, and then d6 when released, just like a normal key.

5.9 BTC keyboard

This keyboard has one additional key, with escaped scancode e0 6f (Macro). (Funny enough it does this in all modes, each of the three scancode sets, translated or not. In particular, this Macro key is the only key that generates two bytes in scancode mode 3.)

5.10 LK411 and LK450 keyboards

These keyboards have seven additional keys, with escaped scancodes e0 0f (LeftCompose), e0 3d (F13), e0 3e (F14), e0 3f (Help), e0 40 (Do), e0 41 (F17), e0 4e (Keypad-minplus). (LK411 has all seven. LK450 has the last six - the report did not mention a Compose key.) There are only two LEDs. The keycaps are unusual.

In (translated) scancode Set 3 these keys give codes 68, 44, 42, 40, 3e, 65, 70. In untranslated Set 2, the F17 key gives e0 83.

An LK411 keyboard, with left and right hand side enlarged.

The keys labeled F18, F19, F20 produce the codes expected for PrtSc, ScrollLock, Pause. The keys labelled PF1, PF2, PF3, PF4 produce the codes expected for NumLock, Keypad-/, Keypad-*, Keypad--. The Keypad-, key produces the code 4e expected for Keypad-+. The Right ComposeCharacter key produces the code expected for RCtrl. The key labelled </> produces the code 29 expected for `/~. The key labelled with `/~/(Esc) produces the code expected for Esc.

5.11 An OmniKey keyboard

This keyboard has one additional key, with escaped scancode e0 4c (Omni).

For the Northgate OmniKey 101 keyboard it is said that the command e8 reads a 2-byte ID.

5.12 GRiD 2260 keyboard

The GRiD 2260 notebook has a key producing the 6c scancode; I do not know the keycap.

5.13 An old Olivetti keyboard

Kasper Dupont <kasperd@daimi.au.dk> writes: My 10 year old 102-key keyboard that came with an "Olivetti PCS 286" actually has connectors for three additional keys just bellow Delete, End, and PgDn. There is no keys on the connectors, I only found them because I opened the keyboard for cleaning. The scancodes are from left to right 65, 66, 67.

5.14 Cherry G81-3000

According to Delorie the "Cherry G81-3000 SAx/04" keyboard has four additional keys, which can be made available by a user modification; the three new keys located directly below the cursor pad's Delete, End, and PgDn keys send make codes 66-68 (F19-F21); the fourth new key, labeled (delta), sends make code 73.

5.15 Accord keyboard

According to Delorie the "Accord" ergonomic keyboard with optional touchpad has an additional key above the Grey-Minus key marked with a left-pointing triangle and labeled "Fn" in the owner's booklet which sends make code e0 68.

5.16 Trust Ergonomic keyboard

Frank v Waveren <fvw@var.cx> reports: The Trust Ergo Track keyboard has one additional key (`application key'), with escaped scancode e0 68. The keycap is a triangle pointing left.

5.17 Brazilian keyboards

ABNT (Associação Brasileira de Normas Tecnicas) and ABNT2 are Brazilian keyboard layout standards. The plain Brazilian keyboard has 103 keys.

The Brazilian ABNT keyboard has two unusual keys, with scancodes 73 (/?) and 7e (Keypad-.). The former is located to the left of the RShift (which key therefore is less wide than usually), the latter below the Keypad-Plus (reducing the Keypad-Plus to single height).

Under Linux, the corresponding key codes are 89 and 121, respectively. These keys do not function with Windows NT 4.0.

Antonio Dias <accdias@sst.com.br> provided the keypad layout and writes: Brazilian ABNT2 keyboards come with two layouts. In MSDOS they call them ID 274 and ID 275.

5.18 RC930 keyboard

Torben Fjerdingstad <tfj@olivia.ping.dk> reports:

It's an rc930 keyboard, from Regnecentralen/RC International, Now ICL. This keyboard has four additional keys, with scancodes 59 (A1), 5a (A2), 5b (A3), 5c (A4).

The rc930/rc931 keyboards are not made anymore, because they had a problem with fast typists, writing over 400 chars/minute. Writing 'af<space>', very, very fast, did a PgUp.

5.19 Tandberg Data keyboard

Kjetil Torgrim Homme <kjetilho@ifi.uio.no> reports:

My Tandberg Data keyboard uses the prefix 80 for its numerous (20) extra keys. The 80 scancodes are:

11, 12, 13, 14, 16, 17, 18, 19, 1e, 1f, 20, 21, 22, 23, 25, 26, 2f, 30, 32, 56.

For completeness, the e0 scancodes:

1c, 2a, 35, 37, 47, 48, 49, 4b, 4d, 4f, 50, 51, 52, 53.

The e1 scancode: 1d. As you can see, there is no overlap on this keyboard.

Harald Arnesen <gurre@start.no> gives the keycaps for these for the Tandberg TDV5020 keyboard. All use prefix 80 on both press and release.

Thirteen keys have (Norwegian) text: 11 HJELP (help), 14 STRYK (cut), 16 KOPI (copy), 17 FLYTT (move), 19 JUST (justify), 21 MERK (mark), 22 ANGRE (undo), 23 SKRIV (print), 25 SLUTT (exit), 26 FELT (field), 2f AVSN (paragraph), 30 SETN (sentence), and 32 ORD (word).

Seven keys have symbols: 12 /\/\/\ (insert soft hyphen), 13 [Crossed down-arrow] (move down five lines), 18 >> << (justify left/right), 1e <> >< (justify full/center), 1f |<- (backtab), 20 ->| (tab), and 56 [Back/down arrow] (start new paragraph).

Other keycaps also occur. Those given above were meant for use with the Notis WP word processor.

5.20 Host Connected keyboard

IBM makes the "Host Connected Keyboard" for PS/2 machines used as 3270 emulators. Delorie reports on the 122-key "Host Connected" keyboard. It may have 5b (F13), 5c (F14), 5d (F15), 63 (F16), 64 (F17), 65 (F18), 66 (F19), 67 (F20), 68 (F21), 69 (F22), 6a (F23), 6b (F24).

5.21 A nameless USB keyboard

This keyboard has four additional keys: Power (rose), Sleep (blue), WakeUp (green) and FN (yellow). In legacy mode these keys give the expected keycodes (e0 5e, e0 5f, e0 63, and none, respectively), but the interaction is funny. The four keys act as radiobuttons. Pressing one yields its key down code, but releasing it does not produce any scancodes. Now pressing another yields the down code for the other followed by the up code for the previous one. The FN key follows this pattern, only its scancode sequence is empty. Thus, pressing it causes the release code for a previous key to be emitted. Pressing a key a second time gives no reaction: the radiobutton was down already.

5.22 Omnibook keyboard

The HP Omnibook XE3 laptop has special multimedia keys (aka OneTouch buttons) disabled by default. It is enabled by writing 0x59 to port 0x64 and then 0x90 to port 0x60 (as was found by Pavel Mihaylov). Various kernel patches can be found on the net. See, for example, this one.

Keys (on a GF model):

e0 32 (WWW), e0 6c (Mail), e0 74 (Demo), e0 73 (Help), e0 10 (Previous Track), e0 22 (Play / Pause), e0 24 (Stop / Eject), e0 19 (Next Track), e0 2e (Volume Down), e0 30 (Volume Up), e0 20 (Mute / Unmute).

5.23 EZ Button keyboard

Eric Schott <eric@morningjoy.com> writes:

I have an IBM EZ Button keyboard (US layout), which seems to generate codes that are similar - but not identical - to the Rapid Access keycodes listed above.

There are 14 additional keys:

e0 25 ("Power" moon - has an LED), e0 26 ("Help"), e0 32 ("Internet"), e0 17 ("Lotus Word Pro"), e0 30 ("Lotus Organizer"), e0 2e ("Aptiva Installer"), e0 19 ("Delete Message"), e0 24 (Stop), e0 22 (Pause), e0 1e ("Msg" - has an LED), e0 20 ("CD" - has an LED), e0 23 (Rewind), e0 21 (Fast Forward), and e0 12 ("Talk" - has an LED).

The LEDs in the buttons are controlled by the sequence eb 00 xx where the xx controls the LEDs. Bit 0 controls the "Msg" LED, 1 the CD LED, 2 the Power LED, 4 the Talk LED, and 5 the Message Waiting LED.

5.24 Chicony KBP-8993 keyboard

Matthijs Melchior <mmelchio@xs4all.nl> reports:

The Chicony KBP-8993 keyboard is similar. It has 14 additional keys, enabled by sending ea 71 and disabled by sending ea 70.

These keys generate the following scan codes:

e0 25 (Moon), e0 32 (WWW), e0 30 (DOS), e0 17 (MyDoc), e0 26 (Menu), e0 1e (zzZ), e0 2e (Close), e0 24 (Stop), e0 23 (Back), e0 22 (Play), e0 21 (Forward), e0 20 (Mute), e0 12 (VolDown), e0 19 (VolUp).

The two extra LEDs, above the Moon key, and next to the zzZ key are manipulated by sending: eb 00 0x, where bit 0 is the Moon LED and bit 1 is the zzZ LED.

5.25 Keyboards for HP Kayak and Vectra

Fons Rademakers <Fons.Rademakers@cern.ch> writes:

The electronics for this keyboard was first developed by HP's Home Products Division (HPD). They now make improved versions, which I don't know much about. We (HP Corporate PC Divisions, in Grenoble) reused the electronics, and changed the serigraphy printed on the keys.

MsgTTlWWW ? Lck MsgPhnWWWxxxSlp 133134135136137
PhnS3 S4 S5 i <<>||[] >> HP 138139140141142
Mut Mut 143
Vl+ Vl+ 144
VL- VL- 145
Grenoble keyboard ------- Old HPD keyboard -------- key numbers

Key# Scancode Gren. Name HPD name ASCII
133 e0 1e Message/SC1 Message a
134 e0 12 Top Tools Phone e
135 e0 32 Web Browser Internet m
136 e0 17 Reminder Shortcut i
137 e0 25 Lock Suspend k
138 e0 23 Phone/SC2 << h
139 e0 22 ShortCut 3 >|| g
140 e0 24 ShortCut 4 [] j
141 e0 21 ShortCut 5 >> f
142 e0 26 Information Information l
143 e0 20 Mute Mute d
144 e0 30 Volume + Volume + b
145 e0 2e Volume - Volume - c

Note the scancodes above are those read by x86 software in port 0x60. This is also called Scancode Set 1. Break codes are the same, with bit 7 of the second scancode set. Example: e0 9e for the Message key.

<spikboll@gmx.net> adds: These keyboards have a "mail LED" (it's positioned above the Message button) that kan be controlled by the Rapid Access hack: 'send_to_keyboard eb' makes the led blink and 'send_to_keyboard ec' turns the led off. 'send_to_keyboard ed' makes the led light steadily and locks up the keys.

5.26 A keyboard

Jon Masters <jonathan@easypenguin.co.uk> writes:

My new 121 key keyboard has 105 keys + 16 multimedia keys (including cool stuff like a volume jog dial that sends one scancode when turned one way and anther when turned the opposite way).

e0 5e (Power Off), e0 5f (Sleep), e0 63 (Resume), e0 2e (Help), e0 20 (My Favourite), e0 30 (Browser), e0 32 (WWW Search), e0 26 (Shortcut), e0 25 (Volume Down), e0 1e (Volume Up), e0 12 (Mute), e0 22 (Previous), e0 10 (Stop), e0 24 (Next), e0 21 (Eject), e0 19 (Play).

5.27 Yahoo! keyboard

Bernhard Polzin <B.Polzin@web.de> writes:

I have a transparent violet colored "Yahoo!" Keyboard with extra keys for Internet and Audio. Unusual scancodes (untranslated/translated):

e0 37 / e0 5e (Power), e0 3f / e0 5f (Sleep), e0 5e / e0 63 (Wake), e0 21 / e0 2e (Y!), e0 4b / e0 26 (Short Cut), e0 3a / e0 32 (E-Mail), e0 23 / e0 20 (My Doc), e0 32 / e0 30 (WWW), e0 1c / e0 1e (Volume +), e0 42 / e0 25 (Volume -), e0 24 / e0 12 (Mute), e0 15 / e0 10 (Stop), e0 4e / e0 0c (Play/Pause), e0 34 / e0 22 (Prev Track), e0 3d / e0 08 (Next Track), e0 4d / e0 19 (Eject). (Volume +), (Volume -), (Prev Track) and (Next Track) are typematic.

Note that this is very similar to the previous one.

5.28 Honeywell Multimedia Keyboard

Eric Yeo reports that his Honeywell Multimedia Keyboard has the following additional keys: e0 25 (Screen saver), e0 24 (Mail), e0 32 (WWW), e0 10 (Game), e0 26 (Calc), e0 1e (Shortcut 1), e0 18 (Shortcut 2), e0 12 (Prev), e0 22 (Next), e0 19 (Play), e0 23 (Stop), e0 30 (Vol up), e0 2e (Vol down), e0 17 (Eject), e0 20 (Mute).

5.29 Samsung Ergonomics Keyboard

Miguel Costa reports that his Samsung Ergonomics Keyboard has the following additional keys: e0 2e (Vol down), e0 30 (Vol up), e0 20 (Mute), e0 18 (Eject), e0 22 (PlayPause), e0 24 (Stop), e0 10 (Rewind), e0 19 (Forward), e0 26 (Help), e0 59 (Favorites), e0 09 (Exit), e0 0a (Address book), e0 02 (Action 1), e0 03 (Action 2), e0 04 (Action 3), e0 05 (Action 4), e0 06 (Action 5), e0 32 (Internet), e0 6c (Email), e0 5f (Standby), e0 5b (Windows left), e0 5c (Windows right), e0 5d (Windows task).

5.30 The "LiteOn MediaTouch Keyboard" type SK-2500

Serge van den Boom reports that his LiteOn MediaTouch Keyboard (a Trust "Direct Access Keyboard"), has 18 additional keys: e0 25 (Suspend), e0 7a (Coffee), e0 32 (WWW), e0 21 (Calculator), e0 23 (Xfer), 38 2a 0f 8f / 8f b8 aa (Switch window), e0 17 (Close), e0 10 (|<<), e0 22 (>| / []), e0 24 ([]), e0 19 (>>|), e0 1e (Record), e0 12 (Rewind), e0 26 (Menu/?), e0 18 (Eject), e0 20 (Mute), e0 30 (Volume +), e0 2e (Volume -). Of these, the keys (|<<), (>>|), (Volume +), (Volume -) repeat. The others do not, except for the rather special (Switch window) key. Upon press it produces the LAlt-down, LShift-down, Tab-down, Tab-up sequence; it repeats 0f, that is, Tab-down; and upon release it produces the Tab-up, LAlt-up, LShift-up sequence.

5.31 The Acer Aspire 1310LC laptop

Pau Aliagas reports that his Acer Aspire 1310LC laptop has 4 additional keys: e0 6c (Mail), e0 32 (WWW), e0 74 (P1), e0 73 (P2).

5.32 The Emachines eKB-5190(A) keyboard

This keyboard has 18 additional keys, with translated Set 2 scancodes: e0 1e (Banking), e0 25 (Brokerage), e0 26 (Pay Bills), e0 24 (News), e0 21 (Sports), e0 22 (Travel), e0 32 (Shopping), e0 23 (Tickets), e0 31 (Music), e0 18 (Health), e0 30 (Greetings), e0 1f (Games), e0 13 (Auctions), e0 2e (MySite), e0 20 (Telephone), e0 12 (Surf), e0 19 (Search), e0 10 (Vol -), e0 17 (Vol +). The respective untranslated Set 3 codes are 95, 9d, 9c, 94, 99, 93, 97, 9a, 9e, 9f, 91, a3, a2, 92, 9b, 96, a0, a1, 98 (equal to the translated Set 3 codes).

Unusual commands are e4 0b, which returns bc 1c (untranslated 06 f0 5a), and e4 0c, which returns ff (untranslated 00), and ec 0c, which returns 06 regardless of translation. I do not know the meaning or function of these.

5.33 Keyboards with many keys

The current mechanism is unable to handle keyboards with more than 127 keys. But such keyboards seem to exist. Indeed, I now have a Safeway SW23 that has 132 keys.

Mark Hatle <fray@kernel.crashing.org> wrote:

On some ADB keyboards there are actually 128 distinct keys. They use scancodes 0-127.

ADB is Apple Desktop Bus. The way that ADB works is similar to SCSI but on a much slower level. Specifically there is a communications chip in the computer, ADB controller, and the same chip in the keyboard. The keyboard sends the scancode to its internal ADB controller, the internal ADB controller then does any key mapping needed (not used under linux from my understanding) and passes the data to the computer.

The ADB controller is capable of sending 256 distinct keys, but to my knowledge only 128 are sent. The key 0 is the 'a' and key 127 is the "power button".

Also some of the Apple ADB keyboards have special "sound" and "function" keys. These keys (used in MacOS for volume up and down, screen contrast changing, etc) also show up on the ADB scancodes.

ADB is used for both m68k and PPC Linux. The m68k Macintosh port, and the PPC - Power Macintosh and CHRP ports.

and later:

Basically the scancode sequences for ADB are 16 bit. so there can actually be 65536 scancodes, currently though only 128 are defined.

5.34 A keyboard treating PrtSc/SysRq like Pause/Break

Mike A. Harris <mharris@meteng.on.ca> reports a keyboard (an "Mtek" keyboard, model "K208") where PrtSc/SysRq behaves like Pause/Break and also sends both make and break sequences when pressed and nothing when released. It does not repeat. (Thus, he gets e0 2a e0 37 e0 b7 e0 aa for PrtSc press, and 54 d4 for SysRq (i.e., Alt+PrtSc).) Others have reported the same (for an unspecified type of keyboard).


Next Previous Contents