Note: The links and information are provided on an "as-is" basis. I am not responsible if you try a modification and burn out your keyboard controller. For depot level service, I recommend Unicomp, who actually built them for IBM.
Keying On A Standard by Bob Smith
Model M parts from Unicomp - SDL cables, springs, matrix, key caps...
Buckling Switch (The REAL clicky keyboard)
PS/2 Model M PCBs
Pinout for J8 (LED Tape Socket)
RS/6000 Model M PCBs
Terminal Model M PCBs
AT Keyboard and SDL Pinouts
PS/2 Keyboard and SDL Pinouts
RS/6000 Keyboard and SDL Pinouts
Keyboard Keyclicks Without Keyboard Speaker? Model M Without Speaker on RS6000
Optional Keyboard Cable with Speaker
M$ Elite Keyboard (Don't use it!)
Dr. Jim Wayne Bobbitt Style Hack
Running Without a Keyboard (or mouse!)
Belkin OmniView SE Incompatible
Cleaning the Keyboard (How to Open the KB)
Socket Sizes Needed
Fixing the detached plastic base (no need for screw and nut mod)
Keyboard Error Codes
Scan Code Followed by 301 Error
Present Model M Manufacturer
General Keyboard Maintenance
Location of Keyboard Connector
On PS/2s, the keyboard port is the one closest to the power supply.
Buckling Spring illustrations are from Wikipedia Model M keyboard, Design
Buckling Key Switch
Buckling spring key on key press and release.
Graph of key force over key travel for a buckling spring key. Visible in graph position 1C the fast force drop when the spring buckles. Capacitive Switches
A capacitive switch works when two plates
(usually made of plastic) are connected in a switch
matrix designed to detect changes in the capacitance of
When the key is pressed, the plunger moves
the top plate relative to the fixed bottom plate.
Usually a mechanism provides for a distinct over-center
tactile feedback with a resounding “click.” As the top
plate moves, the capacitance between the two plates
changes and is detected by the comparator circuitry in
This type of switch is nearly immune to
corrosion and dirt. These switches are very resistant to
key bounce problems that result in multiple characters
appearing from a single strike. They are also the most
durable in the industry—rated for 25 million or more
keystrokes, as opposed to 10 to 20 million for other
designs. The tactile feedback is unsurpassed because a
relatively loud click and strong over-center feel
normally are provided. The only drawback to this design
is the cost.
Capacitive switch keyboards are among
the most expensive designs, but the quality of the feel
and their durability are worth it.
Keyboard EvolutionPeter Wendt wrote:
The "M"-keyboard "as we know it" with the 101/102 keys design and the LEDs for NumLock, CapsLock and ScrollLock has been introduced along with the PS/2 in 1987.
The "MF-II Text/Data Keyboard" was available earlier as "MF-1" for XT, XT-286 and AT and seemed to have a dual-mode interface, since it had no LEDs and worked along with the slower PC/XT keyboard interface (non-bidirectional).
The MF-1 keyboard had been introduced in 1985 for the PC/XT/AT line to allow people to use F-keys, cursor control and separate number pad - particularly for use with a 3270 / 5250 host emulation (introduced the separate Print / SysReq, Scroll and Pause/Break keys along with the sixtett of keys between cursor and Print / SysReq used mainly for the IBM Assistant software series). Therefore you will find a line with "(C) 1985 IBM Corp." on the decal underside of the M-keyboard. This is the year where the original (non-LED) design had been patented.
The oldest "MF-II" keyboards (with LEDs) you may find will be those produced by IBM for the launch of the PS/2 in early 1987. They presented the family as a whole new product line - new designs, new keyboard, new monitors, new formats and new expansion bus. Before that the old "clickety-click" keyboard with 10 F-Keys to the left ruled. And before that the PC and XT 88-key with no F-Keys at all.
The "new" design of the MF-II was primarily made by moving the F-Keys above the text- /datakeys like the PF-Keys (programmable function keys) on the3270 Terminals of that time - however only 12 of them, not 24. "No one ever needs 24 function keys ..." (No one ever needs more than 640KB RAM ...)
This keyboard made it over the whole world. Even most nowadays keyboards copy the same basic layout. No matter if they split the keyboard into halves or half-round layout - the basic arrangement is the same as on the keyboard IBM *designed* in around 1980 for the 3278 / 79 graphic terminal and later altered the same design for the PS/2 family.
Also a very unique feature of the "M" keyboard -not copied by the cloners- is the two-parts keycap. The most intriguing version is the "transparent keycaps" version sold for host programmers. The "letter" keycaps can be taken off and were replaced by transparent keycaps - with small pieces of paper between key body and cap.
This allows programmers to define own keyboard "Symbols" and have appropriate lettering on them during the development phase. I must have a set of these caps around anywhere - along with a "letter mat" for ALGOL or APL-2 programming language symbols.
IBM PS/2 A Reference Guide, TJ Byers, Intertext Publications, McGraw-Hill Book Company, 1221 Avenue of the Americas, NY, NY 10020, 1989 ISBN: 0-07-009527-2
Keyboard Mechanics (Page
162 - 164)
The microprocessor detects depressed keys
by scanning the keyboard in logical order and analyzing
each key’s status. All keys are classified as being in
one of two states: make or break. When a key is pressed,
the 6805 microprocessor recognizes the condition and
reports it to the PS/2 computer as a key make. It does
this by generating an interrupt signal and displaying
the scan line number of the key detected. When the key
is released, it’s break code is sent to the PS/2.
The keyboard processor also contains a
16-byte character buffer that allows the keyboard to
store up to 16 keystrokes. Should the PS/2 be busy and
unable to acknowledge an interrupt, the keyboard buffer
safely s remembers the keystroke until the PS/2 has time
to assimilate the input. Should you exceed the
16-character limit, the seventeenth keystroke is simply
Whenever a keyboard interrupt is generated,
the BIOS program queries the keyboard computer for the
keystroke number. In order to successfully execute the
exchange, bi-directional communications must exist
between the two units. Communications between the PS/2
and keyboard are carried out through I/O ports 60h and
64h, input and output, respectively. For every keyboard
interrupt, the PS/2 responds with a keyboard query. Data
transmissions to and from the keyboard consist of an
11-bit word that is sent asynchronously over the serial
The keyboard and computer communicate over
a pair of clock and data lines. At the end of these
lines is an open collector transistor that allows either
the keyboard or computer to force the line low. When a
keystroke is detected, the keyboard checks the status of
the clock line. If the line is low, the keystroke is
stored in the buffer and transmission is deferred until
a later time. If, on the other hand, it finds the clock
line high, the keyboard does a similar check on the
status of the data line. When both lines are high, it
means the computer is ready to accept data from the
keyboard, and the keyboard proceeds to send out it’s
11-bit code. The code begins with a 0 start bit,
followed by 8 data bits, a parity bit, and a stop bit.
For each bit transmitted over the data line, a
coincidence bit is transmitted on the clock line. This
clock bit is used by the computer to decode the data
bits. Please note that the decoding process can only
take place when the keylock on the front panel is on.
Keystrokes entered while the keylock is off (keyboard
receiver inhibited) will be lost.
During transmission, the keyboard checks
the clock line for a high level at least every 60mS. If
the computer lowers the clock line after the keyboard
starts sending data, it signifies that the computer is
unable to accept any more data from the keyboard.
Consequently, the keystroke is returned to the buffer
and communications halted until the clock line goes high
Instructions can also be sent from the
computer to the keyboard. When the computer wishes to
communicate with the keyboard, the PS/2 forces the clock
line low for more than 60mS while it prepares it’s
message. This action alerts the keyboard that an
incoming message is pending. When the computer is ready,
it allows the clock line to go high while pulling the
data line low. The data is then sent over the data line,
which by now has assumed a high-impedance value.
While all this is going on, the keyboard
constantly checks the status of the clock. As soon as
the clock line goes high, it begins counting the
computer input bits. After the tenth bit, the keyboard
forces the data line low. This action signals the
computer that the data was received. Each system command
or data transmission to the keyboard requires a response
from the keyboard before the system send it’s next
output. Typically, the keyboard responds within 20mS. If
the keyboard response is invalid or has a parity error,
the computer sends the command or data again.
By knowing the timing sequence, it is
possible to make modifications to the keyboard through
software. This two-way link is vital to the PS/2’s
performance. The two-way communications channel is also
used to evaluate the well-being of the keyboard’s
microprocessor when the computer is first turned on and
after each reset operation. (Ed. This is the BAT - Basic
When passing data from the keyboard to the PS/2, though, you must be aware that the keyboard’s microprocessor has no idea as to the significance of the keys it is reporting. As far as it’s concerned, the keys have no meaning whatsoever. Each key is assigned a unique 8-bit code which is transmitted to the computer following a make. It is up to the BIOS program inside the PS/2 to decide how the keystroke should be interpreted. The 8042 translates the scan codes it receives from the 6805 to those recognized by the BIOS. The translation table is stored in ROM on the 8042 chip and is not accessible to programs. However, the PS/2 keyboard has the capability of switching scan code sets. In fact, the keyboard offers a choice of three scan code sets.
(Pages 167 - 168)
The reason the PS/2 can support two
different types of keyboards is the way the BIOS handles
keyboard inputs. As you recall, the keyboard is unaware
of the keystrokes it inputs to the system. It simply
cites the number of downed key when queried by the 8042
controller chip. It is the responsibility of the BIOS
chip to convert the key depressions into ASCII codes and
symbols. In the normal default mode, this translates
into the US English set of ASCII alphanumeric
characters. In the international PS/2 models, another
set of scan codes is used to interpret keyboard input.
PS/2 Model M PCBsDOB is 01SEP88 PN 1393291 PCB is 170mm x 50mm
DOB is 19NOV91 PN 1395601 PCB is 150mm x 38mm
PCB is 91-ish PCB is PN 1395604
U2 Motorola 1394079 (possibly IBM house #)
DOB 31JAN92 PN 1397553 PCB is 150mm x 38mm
This is a simper design. J3 and J8 have been combined into a 12 pin header, J3.
DOB 20MAR93 PN is 1398012 PCB is 162mm x 50mm
CP1 and CP2 (B9HC0114 102MX8) are now back. See the outline for J2 ( four pin header) right below the SDL port?
The Ground trace is almost twice as wide as the other three. The ground trace is always towards Pin 1.
RS/6000 Model M PCBs
DOB of 05-31-91 PCB is 1394596, whole KB is 1394540 (ID# 4023580)
2392161 (IBM part number for a standard 7406 TTL chip)
Rick Ekblaw sent me the original image and said-
PCB is 1394596
From Gereon Wenzel
Terminal Model M PCBs
From Gereon Wenzel
J7 (three pin header, upper left) KB cable connector (?).
Programming Considerations (Pages 173 - 176)
Since the introduction of the IBM Personal Computer line in 1980, IBM has changed the keyboard twice. The first change came with the release of the IBM AT. The 84-key keyboard that accompanied the first model of the AT has a different key layout and produces scan codes distinct from those of the original 83-key PC keyboard. The scan code sets on the two keyboards are different because, for reasons of physical circuit design, it is most efficient to assign scan codes by key location. To maintain software application compatibility with the two keyboards, IBM added a scan code translator to the 8042 controller. After translation, the controller’s output for a given key is the same as that key’s output for the PC keyboard controller.
The 101-key enhanced keyboard used for the PS/2 introduced yet another keyboard layout. However, instead of coming up with a new set of scan codes for the new layout, IBM devised three. The Select Scan Code command (followed by an option byte of 1, 2, or 3) activates the scan code set of that number. An option byte of zero causes the keyboard to respond with the number of the currently active scan code set. The code sets differ in the values generated for the press and release of each key.
By default, the PS/2 keyboard boots to the 84-key set (set 2) used by the original AT keyboard and does not recognize the presence of the new keys. For most keys, it sends a single-byte press code and a two-byte release code consisting of F0H followed by the press code. These codes need to be translated by the BIOS interrupt 09H routine. For example, the “B” key sends scan code 32H to the BIOS, which interprets it as an “M”. However, with code translation enabled, the 8042 controller translates the scan code to 30H, which is properly interpreted by the BIOS as a “B”. The translation process also converts each two-byte release code to a one-byte code that is the same as the press code with the high bit turned on.
When scan code set 1 is activated, the keyboard produces codes that match the result of translating scan code 2. For the keys common to the enhanced and original PC keyboards, this code set produces the same press and release codes as the original keyboard. In effect, this code set moves the translation from the 8042 to the 6805, thus disabling scan code translation at the 8042 level. Support for the 17 enhanced keys is available through the second scan code set. However, only DOS 4.0 (Ed. and above) can access these extended keys from the keyboard without special programming practices. When using DOS 3.3, you must use the extended interrupt 16H BIOS functions, AH=10H and AH=11H.
Scan code set 3 is similar to scan code set 1 in that it produces the same scan codes for the majority of the ASCII keys and uses the same press/release coding convention. However, some keys are curiously reassigned. For example, with the scan code set 3 activated and 8042 translation enabled, the CapsLock key behaves like the left Ctrl key, and the NumLock key acts like Esc. In fact, if the keyboard were to be relabeled, it would look exactly like the 84-key layout of the original AT keyboard. The support for this scan code set is not yet complete, and using it’s features may result in programming errors.
I've encountered 3 different quality levels of the IBM 101's so far.
1) Removable cable, heavy, clicky feel (the best)
2) Fixed cable, but same weight and click feel (OK) <-- Lexmark built
3) Fixed cable, non-click squishy feel (horrible) <-- Lexmark built
All of the Win95 style 104's I've seen sucked.
The keyboard and auxiliary device signals are driven by open-collector drivers pulled to 5Vdc through a pull-up resistor.
AT Style Pinout for Keyboard Connector and SDL
SDL = Shielded Data Link, a type of shielded connector created by AMP and used by IBM and others for keyboard cables
PS/2 Style Pinout for Keyboard Connector and SDL
RS/6000 Style Pinout for Keyboard Connector and SDL
Note that the RS/6000 Keyboard port has the speaker signal and speaker ground signals that the PS/2 keyboard port lacks.
Keyclicks Without Keyboard Speaker?
M$ Elite Keyboard
Hi John !
>I bought a micro soft elite keyboard plugged it into the keyboard port , fired up the ole 9577 Lacuna and the screen locks at the IBM screen.
From Peter Wendt
Most likely the 77 Lacuna keyboard
controller gets a bit confused by all of that - and
hangs the system. Had that with several Cherry
"space saving" keyboards with integrated trackball as
Keyboard emulatorThe Guardian for PS/2 -- APKME (thanks for the link, Brian Sammon)
From Jim Shorney
Get a cheap keyboard, take the
microcontroller circuit board out, whack the cable to 6
inches or so, and reconnect the microcontroller board.
Do the same with a cheap mouse. Wrap in tape or
put it in a small plastic 'project box' to insulate
The extent of my idea was to provide a
small widget that will allow a turnkey system to come up
and perform its designated task without needing to have
a real keyboard connected, or requiring any operator
intervention. No provision is provided, or needed,
to connect a real keyboard in this scenario.
You might investigate Radio Shack's free cuecat. It has a keyboard passthrough, and although the barcode reader puts out garbage on a model 95, the hardware may prove useful for your need.
Fools Rush in Where Angels
Fear to Tread
Holy BAT, Batman!
A keyboard *always* sends in a BAT message
after power-up, provided that it can control the clock
and data lines to it's satisfaction.
Both the Keyboard and Mouse can be
disconnected and reconnected to an IBM PS/2 *after* POST
and O/S boot has completed. The (A)BIOS "sees" the BAT
message from whichever device and re-establishes current
state (as kept in the (A)BIOS data area(s)).
This is effectively what happens when using
a manual KVM. The biggest bugaboo is that there mustn't
be a mouse message "in-flight" at the exact instant of
disconnection as the PS/2 mouse protocol doesn't have
the "start bit" in the first byte of the message,
allowing resync if a message is partially incomplete and
a new BAT message comes in. Also, the way in which the
physical contacts are broken can cause problems whereby
spurious message bytes are "seen"/sent. This is mainly a
problem with the mouse, due to the multi-byte messages
without sync-bit and usually causes the mouse to freeze
or, worse yet, leap about the place and cause the
buttons to operate incorrectly.
The above is the situation with direct physical connection (or via a "dumb" manual switch) *and* with O/Ss which correctly use the (A)BIOS to drive the devices at the physical level. WinBlowsHard drivers *don't* do this. Nor do Linux ones, it would seem, although I have no direct experience of this. So the above doesn't apply to Win 3.x, Win9x and possibly Win2K and NT.
Impact of Cutting Data and
Traffic on data and clock lines is
asynchronous - no keyboard pressing or mouse moving, no
traffic. Both lines are high when no traffic, and are
standard TTL type open collector at each end. So you can
break and reconnect the clock and data lines without
problems. Just maintain power to the keyboard and mouse
at all times- a weakness of manual switch-boxes,
especially if you switch slowly or an intermediate
position is not used or has a powered-down system on it.
If you're building a smart switch box, design it to not
switch until the clock and data lines have been idle for
half a second or so to make sure you don't switch in the
middle of a transmission.
(*)The IBM PS/2 Hardware Interface Technical Reference Manual.
Hold That Thought!
One thought: grab some 4066 CMOS quad analog switch
chips and wire them to tri-state one keyboard while the
other is switched through, and vice versa.
Keyboard Emulator Hack (Dr. Jim Wayne Bobbitt style)
Wild Bill clears leather with:
Well, it wasn't hard. The first thing I needed was a busted keyboard. My dad found one alongside the highway that had blown off of a truck. It was all broken, so I opened it up and pulled the controller board inside...after disconnecting all the connections on the board that went to the keys. I left the keyboard cable attached to the controller. To make it look cleaner, I also desoldered the Num, Caps, and Scroll lock LEDs.
I went to RadioShack and got the casing, as well as a 5 volt blue LED. Forget exactly which one it was--but it is black plastic and the package said something about an RS232 port space.
To mount the keyboard controller inside the casing, I
ran a screw through part of the casing and a hole in the
controller circuit board.
Running without a Keyboard (or mouse)
Is there a way to get a 95A to boot without a keyboard attached ? I want it to boot to NT4 as a file and printer server with no keyboard, mouse, or monitor attached.
Helmut P. Einfalt wins for the simplest suggestion:
Ed. Not sure what
systems have "Bypass System Programs on Error" or
similar. I do know some systems have a "Network Server
Belkin OmniView SE Incompatible
From Tim Clarke
Just suffered a severe disappointment with these (F1D104u - UK PSU). They *Do Not* work with PS/2 BIOSes, as PS/2s run the keyboard in Scan Code Set 2. The only "workaround" is to disconnect and reconnect the keyboard from/to the KVM after switching to another port. Similarly, when the keyboard is correctly in Scan Code Set 2 the "hot-key" sequence is not recognised. Lastly, although the mouse does continue to work, the "sensitivity" is set to default after a switch.
Al Savage Responds
Tim Clarke salvos back
Cleaning the Keyboard
> Can I safely open the keyboard or will all the springs, keys, etc. jump out and land on the floor?
From Bob Eager
From Helmut P. Einfalt
Socket Sizes Needed
I was delving deeply into the azure realm, when I
noticed my Industrial Model M keys were "flexing" before
they would do a left Shift-(letter). This was odd, at
the time I swapped out the keyboard and thought nothing
of it. I finally opened up the case, only to find a
goodly number of the melted plastic studs had snapped
off, hence the flexing when the key forced the plastic
frame down close enough to the curved metal base to
create a closed switch...
Searching the web brought up many mods using either
wood screws, metal screws, or the omega device, nut and
bolt. Being the lazy kind, I asked on the PS/2 Hardware
forum for advice. As usual, it came from a man used to
the glare of camera strobes and the sighs of starlets
that can't catch his attention...
Dr. Jim Shorney takes time from filming infomercials
and gives us a prescription:
"Diamond Jim" to his clique, otherwise known as "The
Solder God to the Stars" let slip his new Hollywood
method of re-attaching the plastic base to the curved
"The guys that write these nice tutorials don't know
about plastite screws. I found a size that works well
from McMaster-Carr. Worship me some more and I may
"From the Holy Coffee Can of M-bits...
"Material locks against the triangular (tri-lobular) shank to ensure a vibration-resistant connection. Also known as Plastite screws, they have coarse, sharply angled threads and a blunt tip. They provide maximum holding strength with minimal stress in formable plastics such as polypropylene and polycarbonate. Length is measured from under the head for pan head screws and from the top of the head for flat head screws."
Incompatible IBM Keyboard
From Charles Lasitter
Part 84G2524 / FRU 84G2529, mfg date 09/28/99, vendor: Unicomp; IBM has managed to do the unthinkable. It now makes PS/2 input devices that can't stand the sight of real PS/2 equipment.
Specifically, keyboards made by this vendor for IBM work great in crAptivas, but don't like Model 77s, 95s, and so on. Generates the "301" keyboard error right away in the Model 95 computers, and generates nonsense keyboard output attached to a Model 77.
I had several TrackPoint keyboards with sticky / weak left mouse button bars, and I submitted them for service. The failure was really one of annoyance / hindrance, as opposed to just plain broken keyboards.
Well, these keyboards were returned in their place, and the manufacturer was a new one. I can't remember the first manufacturer, but I'd advise you to try FIND OUT before you go buying or giving up any currently working trackpoint keyboard of this type.
This error is from a problem with a specific key, in this case the Left-Alt key, scancode 11.
The error list above is correct, but confusing.
301 KB reset or stuck-key failure (XX 301 XX = scan code in hex) would result in "Scan Code" "301" or in this case "11" "301"
If E0 or E1 is displayed, one of the "special keys" is sending the first half of their 2-byte code to the system.
Just try it out on a running system - reboot and hold one key
until the system restarts.
Error code 305 at power-up means "+5 VDC on keyboard missing".
This might indicate a broken cable, but also a blown keyboard/auxiliary device-fuse. On many boards this fuse is not replaceable!
Or at least will require a lot work to a) locate and b) replace it.
Speaker Grille>Well I know this has nothing to do with cleaning but... what is that hole on the bottom of PS/2 keyboard. It looks like a mounting place for some kind of a speaker or what?!
The first series of the MF-keyboard called
MF-1 which lacked the 3 status LEDs had in fact a
speaker. It was designed for the XT family of IBM PCs
and was intended to be used for "professional typists",
which prefered to have a "click" in addition to the
mechanical "keyclick" itself. There was a software
available, which enables / disables the speaker click
... standard was "On" AFAIK. Worked with that thing for
some time back in 1987 ...
Model M Parts
If you have a desktop, the 5' cable might work for you. But for myself, I prefer the 10' cable. If you have a 80/85/95, you have to go to the floor and behind the system. If you have a desktop, you usually have to run the cable behind the system. This way you can sit away from the monitor.
Looks grim to find the long PS/2 to SDL cable, you will probably have to get a male/female PS/2 cable...
Model M Cables (Looks like they are 5' long)
1398094 Detachable Y Cable
1379947 Detachable Y Cable - Black
1395110 Detachable PS2 Cable - Pearl
Model M Parts
PVPLASM Pivot Plate & Spring Assembly
INSERT Stabilizer Insert (Enter key, Black - Vertical Keys, White - Horizontal Keys)
MEM Membrane assembly (Enter membrane assembly P/N you wish to purchase)
49G2224 Replacement Pointing Stick Caps
LED LED Overlay - Num / Caps / Scroll Lock (Model Ms used "Pebble - LEDs on bottom")
BUTTONS Buttons, printed, unprinted, sets, singles...
Present Model M ManufacturerUnicomp bought the buckling spring technology from Lexmark.
Ian Warford wrote:
Note the manufacture date on my Model M. (Ed. Image edited for size)
42H1292 IBM 101 key buckling-spring KB. Reg $79 Sale $49.00
1393278 IBM "SpaceSaver", heavy-duty 84 key KB Reg $79 Sale $69.
71G5794 IBM PS/2 Enhanced Quiet Touch KB with 2 Button Mouse
General Keyboard MaintenanceFrom Peter:
Most of the original IBM-keyboards have separate keycaps, which can be removed very easy. Under this cap sits the key-'corpus' and underneath a small spring. This spring is fixed with a contact-plate inside the keyboard.
Attention: It is very easy to bend, deform or pull out this spring... but very hard to get one back onto the contact-plate to make the key work properly again. Take care!
In case you accidently removed the key-button entirely from the
You will have to remove the keytop in case some dirt
(mainly coffee or Coca-Cola) sits between keybutton and the
collar. Keys then tend to stick, the feeling while pressing
the key is somewhat soft and sticky and the 'click' after
releasing the key is somewhat delayed. Cleaning inside of
the button (...not the cap !) and the key-collar with alcohol
will mostly solve these problems.
It is a good idea to maintain the keyboard frequently.
Remove all keycaps except the space-bar and probably the two
larger keys on the right side ([+] and [ENTER] from the
numeric keypad). These keys have additional metal guides
at the underside and are hard to re-assemble.
Use a longhaired, harder brush to clean the areas around
the keys from dirt. In most cases this is just dust, but
sometimes there are hair-needles, nails, screws, clamps and
other stuff. Turn the keyboard upside down and shake it...!
Cleaning the dirty, sticky keycaps is easy if you have
a washing-machine or a dishwasher. I prefer dish-washers.
I use the same procedure on the entire keyboard housing by the way. It is quite easy to disassemble. 3 hex-screws from the underside, remove keyboard assembly and internal circuit board and put the two housing halves in the dish-washer too.
Now: this is much harder if you have only a washing-machine. It is Not recommended to treat the keyboard housings this way - they will break in pieces. The keycaps can be washed as well. But not too hot. I had good results in pre-washing with 30° C and put them inside of one old nylon stocking. Basically the same procedure as with the dish-washer ...