Switch Hitter Keyboard Diagnostic Software

Switch Hitter is a keyboard diagnostic program for Windows 2000, XP, 7, and 8 and works with USB and PS/2 keyboards. Oh yeah, and it's free:) **

Current Release: EK Switch Hitter (ver. 1.0)

Alternate D/L mirrors available at Majorgeeks.com and Softwarebee.com.


  • Keyswitch actuation testing
  • Keyswitch chatter detection
  • Configurable Layouts (via simple text file syntax)
  • Logging, and automatic sequential logging
  • USB and PS/2 keyboard support
  • Configurable color schemes and layout file storage

Found a bug? Think a feature is missing? We want your feedback!

Let us know at switchhitter@elitekeyboards.com

** Switch Hitter is free for non-commercial use only.

Basic Features

Switch Hitter allows for key actuation testing and aims to alleviate difficulty in switch bounce/chatter diagnosis.

Different keyboard layouts can be selected from a simple drop-down list. Layout files are customizable and any number of layout files can be added and easily selected.

Detecting Key Switch Chatter

Key switch "chattering" aka "contact bouncing" is a natural occurrence in mechanical switches that can cause one switch press to be detected as multiple presses. Digital electronics in a keyboard normally filter out chatter and can handle a small deviation in chatter in a properly performing key switch, however, in the case that a switch is damaged or defective, the amount of chatter can become too large to be filtered. The result is a repetition of key input seen on your computer screen for only one intended key press.

For a typical Cherry MX based keyboard, the chatter filtering is set to 5-10 milliseconds, but this is not a value that is typically disclosed by keyboard manufacturers. Since input speed capability is a marketable specification, many manufacturers understandably push their luck in this regard. This means that switches must be of excellent performing condition in order to avoid chattering. Unfortunately, environmental contaminants and keyboard build quality can affect how quickly a key switch departs from an acceptable chattering range, and most Cherry MX keyboard owners will see some chattering at some time in their keyboard's lifetime. Fortunately, the amount of chattering is often not frequent enough to cause noticeable issues for most users. However, if you think you may have a chattering issue, Switch Hitter can help diagnose just how bad it is and whether a repair is justifiable.

The Setup tab of the Switch Hitter program has a field under the "Layout and Display" section named "Chatter Threshold" that can be adjusted in units of milliseconds, and with immediate effect, to see just how much any particular switch is chattering.

We use a three-step approach for finding the worst chattering switches on a board. By gradually decreasing the Chatter Threshold, one can eliminate a lot of random variances in keyboard, USB, and computer delays to arrive at average performance level for each switch. To do so, we test the whole keyboard with:

  • 30 millisecond threshold
  • 20 millisecond threshold
  • 10 millisecond threshold

During each test every switch on the keyboard must be pressed multiple times, with both light and heavy force. Switches that show an error (red by default) under all three threshold settings, most definitely have an issue. Switches that have a fault under only one condition, may or may not have an issue, and might need more testing.

How to make your own keyboard layouts

Basic rules:

  • Layout files are ASCII or UTF-8 text named with a ".kbl" extension
  • By default, layout files are stored in


    Where $USERPROFILE is the path to your user directory under Windows. The layout path is configurable under the settings tab.
  • In-file comments follow C++ convention; i.e. “//” for line comments, “/*” and “*/” for block comments
  • First line of the file is the in-program layout display name in the drop-down list (truncated to 35 characters)
  • Max line length is 128 characters.
  • Max layout file length is 1000 lines

Layout Elements:

  • Each element of a layout (a key or a space) is described with one line of text.
  • Elements are described in CSV format as follows:


  • Element values are defined as:

    ROW ID = "R" + row number; e.g. “R1” for row # 1, “R1-2” for a key that spans row#1 and #2
    SCANCODE = hexadecimal scancode that must be preceded by “0x”; e.g. “0x24”, with the exception of blank space, which is specified with "BL"
    DISPLAY TEXT = text for the key; max = 32 bytes (“” for blank, use "\n" for new lines)
    LOG TEXT = text for the log; max = 32 bytes (“” for blank)
    WIDTH = key width; e.g. 1.25 for an Alt key; or 1.5-1.25 for an ISO Enter key
    HEIGHT = needs to be specified ONLY if not 1; accepted values are 0.5 and 1
    2ND_WIDTH = key width for row below; only for keys that span more than one row

  • The number of elements in the first row (R1) will define the maximum width of the layout. Max keys per a row is 24, but formatable space between keys allows for 4 more single key widths (28 elements total).
  • The number of rows defined determines the height of the layout in single key widths. The maximum number of key-containing rows is seven and an additional one row of space allotment between keys for a total of eight rows.

EXAMPLE #1: Esc through F5

R1, 0x01, ”Esc”, ”Esc”, 1
R1, BL, ””, ””, 1
R1, 0x01, ”F1”, ”F1”, 1
R1, 0x01, ”F2”, ”F2”, 1
R1, 0x01, ”F3”, ”F3”, 1
R1, 0x01, ”F4”, ”F4”, 1
R1, BL, ””, ””, 0.5
R1, 0x01, ”F5”,  ”F5”, 1

EXAMPLE #2: Blank space between F keys and Number Row

R2, BL, ””, ””, 18.5x0.5 // 18.5 width and 0.5 height

EXAMPLE #3: ISO Enter key

R4-5, 0x1C, ”Enter”, ”Enter”, 1.5-1.25 // Row 4 is 1.5 width, Row 5 is 1.25

EXAMPLE #4: Bottom 2 rows of 104-key layout

R6, 0x2A, "Shift", "Shift", 2.25
R6, 0x2C, "Z", "Z", 1
R6, 0x2D, "X", "X", 1
R6, 0x2E, "C", "C", 1
R6, 0x2F, "V", "V", 1
R6, 0x30, "B", "B", 1
R6, 0x31, "N", "N", 1
R6, 0x32, "M", "M", 1
R6, 0x33, ", <", ",", 1
R6, 0x34, ". >", ".", 1
R6, 0x35, "/ ?", "/",1
R6, 0x36, "Shift", "Shift", 2.75
R6, 0xE048, "Up", "Up", 1
R6, 0x4F, "1", "1", 1
R6, 0x50, "2", "2", 1
R6, 0x51, "3", "3", 1
R6-7,0xE01C,”Enter”,”Enter”,1-1 // Row 6 is 1 width, Row 7 is 1 width

R7,0x1D, "Ctrl", "Ctrl", 1.25
R7,0xE05B, "Win", "Win", 1.25
R7,0x38, "Alt", "Alt", 1.25
R7,0x39, "Space", "Space", 6.25
R7,0xE038, "Alt", "Alt", 1.25
R7,0xE05C, "Win", "Win", 1.25
R7,0xE05D, "Menu", "Menu", 1.25
R7,0xE01D, "Ctrl", "Ctrl", 1.25
R7,0xE04B, "Left", "Left", 1
R7,0xE050, "Down", "Down", 1
R7,0xE04D, "Right", "Right", 1
R7,0x52, "0", "0", 2
R7,0x53, ".", ".", 1

Download Additional Layouts


Subscribe to our newsletter for product updates and access to newsletter-only product giveaways. Privacy Notice

Support and Feedback

Most common support and ordering inquiries are answered in our FAQ.

Other sales and shipping questions: sales@elitekeyboards.com

The support e-mail below is for product support for existing customers. Please supply your EK order number when contacting support. Thank you:)

Product support: support@elitekeyboards.com

Further company information here.

About Us - Contact Information  |  Legal