Keyboard chatter blocker is a quick handy tool to block mechanical keyboard chatter on Windows PCs.
Click here for the steps to get it running.
Talk to us on Discord @ https://discord.gg/eggWVJt
Mechanical keyboards sometimes have a problem known as "chatter", wherein certain keys will seem to repeat keystrokes two or more times very rapidly when only pressed once.
So solution number one is obvious: just replace the broken key switch (or the entire keyboard).
Solution number two is: Well, there are existing software solutions, that block very rapidly repeated keystrokes to fix the chatter problem. I've been using "Keyboard Chattering Fix v 0.0.1", Copyright in 2014 to the "Keyboard Chattering Fix Project"... I can't find an appropriate source link for this project, likely it was just a one-off creation in 2014 without updates and there's not much more to it. I've also come across "Keyboard Unchatter" by ZoserLock here on GitHub at ZoserLock/keyboard-unchatter.
Replacing keyboard switches or entire keyboards, of course, can be difficult to do and tends to cost money. A software solution may be preferrable to many people.
Both of the mentioned software projects projects seem quite... decent, but they lack some critical functionality. In my case, the "h" key has a chatter problem (when I type "the", it types "theh"). The chatter is in the 100ms range... and I really don't want to block all keystrokes under 100ms (I'm a fast typer). Unfortunately, these existing options don't have a solution for me... so, instead, I've made a solution that fits my case and present it here to the public. (Also, with all due respect to the authors of the mentioned projects: I can't find source code to one, and the source code for the other isn't particularly clean or well written.)
I've taken a similar approach to the software solutions mentioned above, but with the notable extra feature of: you can configure the chatter threshold on a per-key basis. So I can have a high threshold for my 'h' key, and a lower threshold for the rest of my keyboard. Fixes the chatter without getting in the way! Anyone who uses this project will be treated to a rather straightforward set of GUIs to control this (or you can edit a config file, if that's your preference). (Also: I've made a point of making very clean clear code for this project, and have it under the MIT license, as I want it to be something anyone can fork and feel they've made a good decision forking instead of remaking.)

choco install keyboard-chatter-blocker and launch it via KeyboardChatterBlocker.exe[X] for it under "Remove".While the default global threshold covers most cases out of the box, the best strategy for getting your blocker settings just right is easy:
Global Chatter Threshold to 0.Configure Keys tab, click Add Key, add your specific keyG 100 [X] -- double-click the 100 under Chatter Threshold to edit the value. For now, set it to 300Chatter Log tab so we can monitor the keyboard chatter, leave this window open52, 73, 64, 42, the highest value is 73 but with that variance range we'll want to round up to 100 to be safe.Configure Keys, double click the value under Chatter Threshold, and set it to our selected value (100 in this example). We want this value to be more than your chatter will ever be, but still low enough that you can't accidentally just type so fast it gets blocked.After following the above step by step, your blocking will exactly only cover your chatter and nothing more.
Enabled box to regain control and fix that, or, if needed, use Task Manager to kill the blocker program, and then edit the config file (see config notes below).wheel_change key detector: under Configure Keys -> Add Key -> special keys dropdown -> select Mouse Wheel Change, if you have a counter-scroll/wheel bounce issue similar to what's described in issue #17.Packet and Back as keys with zero chatter to prevent conflict. Other software may need the same or a similar trick.If you're the type of person to care about the config file and want to edit it manually, The config file is literally just a config.txt file in the same folder as the executable (unless you installed into Program Files, in which case the config file is at %localappdata%/KeyboardChatterBlocker). Each line is one setting to apply. Prefix a line with # to make it a comment. All uncommented (and non-blank) lines are settings, of the form name: value. The following settings are available:
is_enabled: Set to true to be activated as normal, or false to turn the chatter protection off.global_chatter: Set to the time (in ms) for the default global keyboard chatter threshold.minimum_chatter_time: Set to the time (in ms) for the minimum allowable chatter. This is a workaround option for bugged inputs that "chatter" with a 0ms hit or similar, to exclude them from chatter detection. If set to 0, this setting does nothing.hide_in_system_tray: Set to true to make the program hide in the system tray at start, or false to load as a visible GUI app.key.<KEY>: (for example, key.H) set to the time (in ms) for that specific key's keyboard chatter threshold.auto_disable_programs: Set to a list of executable names (case insensitive, without the .exe) separated by slashes (like some_video_game/other_game) that will cause the chatter block to automatically disable whenever that program is open.auto_disable_on_fullscreen: set to true to auto-disable the chatter block when any application is open in fullscreen - see also #26. This prevents interrupting controls in games, but won't be perfect for preventing online game bans (eg if you alt-tab it will hook the keyboard again and some game anticheats may detect that).hotkey_toggle, hotkey_enable, hotkey_disable, hotkey_tempenable, hotkey_tempdisable, hotkey_showform: set to a key combo.
control, alt, win, shift, and any valid key separated by +.control + a, win + alt + b, shift + d1.control often won't work as they often get reserved by other applications (or Windows itself).hotkey_disable: win + shift + pause will allow you to hold those three keys together at any time to immediately disable the chatter blocker).toggle, enable, and disable of course will change the enabled state of the key blocker.tempdisable and tempenable pair allow for disabling in a temporary way (ie, don't affect or override the main application setting, useful for things like AutoHotKey scripts).showform will directly hide the form to system tray or bring it back up.hotkey_tempblock: set to a key combo (any list of keys separated by +). Refer to Microsoft Keys Enum for a list of valid key IDs. Note that you need to use precise key IDs, such as LShiftKey (for left shift) rather than generic ones like Shift. If you have hotkey_tempblock set, any time hold this combination down, all key inputs (down or up) will be discarded. If you have mouse buttons listed as blockable, mouse inputs will be blocked too. For example, hotkey_tempblock: pause will allow you to hold the Pause key at any time to pause all input recognition. This is useful for example to block press a key down, and then hold your Pause input to block the release, allowing an app to see it as still being held down (for example: press down on Shift, press down on Pause, release Shift, release Pause, then type - all your input text will then be capitalized).measure_from set to Press or Release (defaults to Press) to choose when to measure chatter delay from - the last key press, or last key release.disable_tray_icon: set to true to prevent the tray icon from appearing, even when "hidden to tray". The only way to bring the form up will be enabling hotkey_showform and pressing that key.save_stats: set to true to save a persistent stats file to retain stat data over longer periods.chatter.wav file next to the .exe, and it will be automatically played when chatter is detected. This feature was requested by #32. You can download sound files for example here. The only requirement is that it be in .wav format. (If you do not place such a file, no audio player capabilities will be loaded at all. This is detected at startup, if you want to add one while you have the program open you must close it and reopen it).This is an open source project, provided entirely freely, for everyone to use and contribute to.
If you make any changes that could benefit the community as a whole, please contribute upstream.
You can do basically whatever you want (as long as you give credit), except you may not hold any developer liable for what you do with the software.
The MIT License (MIT)
Copyright (c) 2019-2024 Alex "mcmonkey" Goodwin Copyright (c) 2024-2025 Frenetic LLC
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.