{"id":15711653,"url":"https://github.com/aahung/unshaky","last_synced_at":"2025-05-15T01:07:29.927Z","repository":{"id":37405936,"uuid":"138166374","full_name":"aahung/Unshaky","owner":"aahung","description":"A software attempt to address the \"double key press\" issue on Apple's butterfly keyboard [not actively maintained]","archived":false,"fork":false,"pushed_at":"2023-11-20T04:45:14.000Z","size":18115,"stargazers_count":3050,"open_issues_count":19,"forks_count":121,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-04-13T22:39:38.413Z","etag":null,"topics":["apple","butterfly-keyboard","debounce","double-press","keyboard","keyboard-issue","macbook","macbook-air","macbook-pro","macbook12","macbookpro"],"latest_commit_sha":null,"homepage":"https://unshaky.nestederror.com","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aahung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-06-21T12:18:57.000Z","updated_at":"2025-04-10T16:29:41.000Z","dependencies_parsed_at":"2023-11-20T05:31:36.288Z","dependency_job_id":"eca80647-aa47-4de5-a33b-9e627d850d11","html_url":"https://github.com/aahung/Unshaky","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aahung%2FUnshaky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aahung%2FUnshaky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aahung%2FUnshaky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aahung%2FUnshaky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aahung","download_url":"https://codeload.github.com/aahung/Unshaky/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254041,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple","butterfly-keyboard","debounce","double-press","keyboard","keyboard-issue","macbook","macbook-air","macbook-pro","macbook12","macbookpro"],"created_at":"2024-10-03T21:13:36.558Z","updated_at":"2025-05-15T01:07:24.893Z","avatar_url":"https://github.com/aahung.png","language":"Swift","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=JLLGBFQKTTX9W\u0026source=url"],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"README/logo.web.png\" alt=\"Unshaky\" height=\"40\"\u003e Unshaky\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=JLLGBFQKTTX9W\u0026source=url) [![Github All Releases](https://img.shields.io/github/downloads/aahung/Unshaky/total.svg)](https://github.com/aahung/Unshaky/releases) [![Build Status](https://travis-ci.org/aahung/Unshaky.svg?branch=master)](https://travis-ci.org/aahung/Unshaky)\n\n**PROJECT STATUS: Unshaky is in maintenance mode, and I will only work on bug fixes.**\n\n----\n\n**It seems on macOS 10.15.6, Unshaky no longer works unless by default, workaround: [issue #166](https://github.com/aahung/Unshaky/issues/166)**\n\n\u003cimg src=\"README/menubar.png\" alt=\"Menubar\" width=\"331\"\u003e\n\n**Unshaky** tries to address an issue on the butterfly keyboard (Macbook, Macbook Air 2018 \u0026 MacBook Pro 2016 and later): Double Key Press (See \"[User complaints](#complaints-about-this-issue)\" below). \n\nApple made it difficult to replace only the keyboard and it costs hundreds of dollars. **Unshaky** might save your keyboard by dismissing such \"second key hits\" (any key presses that occur no later than x milliseconds after the previous effective one). I fixed my \"w\" key with **Unshaky**, and if it does not work for you, open an issue [here](https://github.com/aahung/Unshaky/issues). The image below illustrates how Unshaky works.\n\n![How Unshaky works](README/how-unshaky-works.png)\n\n[June 2018] Good news, Apple launched a [Keyboard Service Program for MacBook and MacBook Pro](https://www.apple.com/ca/support/keyboard-service-program-for-macbook-and-macbook-pro/), and go get your keyboard fixed, maybe temporarily.\n\n[May 2019] Apple extends [the service program](https://www.apple.com/ca/support/keyboard-service-program-for-macbook-and-macbook-pro/) to cover all MacBook (Air \u0026 Pro) with 3rd gen butterfly keyboards.\n\n[May 2020] [The Verge: The saga of Apple’s bad butterfly MacBook keyboards is finally over](https://www.theverge.com/2020/5/4/21246223/macbook-keyboard-butterfly-magic-pro-apple-design).\n\n## Complaints about this issue\n\n- [Keyboard 'B' key double hit problem](https://www.ifixit.com/Answers/View/402016/Keyboard+%27B%27+key+double+hit+problem)\n- [MacBook Pro 2016 Random Key Repeat Keyboard Issue](https://discussions.apple.com/thread/7840547)\n- [MacBook Pro 13\" 2016 Double Key Press](https://forums.macrumors.com/threads/macbook-pro-13-2016-double-key-press.2025843/)\n- [1 key - 2 letters macbook pro 2016 and 2017](https://apple.stackexchange.com/questions/293523/1-key-2-letters-macbook-pro-2016-and-2017)\n- [The new and improved MacBook keyboards have the same old problems](https://theoutline.com/post/6409/the-new-and-improved-macbook-keyboards-have-the-same-old-problems?zd=1\u0026zi=4qyu5ngi)\n- [Reddit: MBP 2018 15\" Sticky Key Problem!](https://www.reddit.com/r/macbook/comments/9n8qkg/mbp_2018_15_sticky_key_problem/)\n- [Reddit: My Experience with Macbook Pro 2018 Keyboard](https://www.reddit.com/r/macbook/comments/9n8hgi/my_experience_with_macbook_pro_2018_keyboard/)\n- [Reddit: Anyone. with heir MBP 2018. keyboard. that. had. problems but is getting worse? Does a keyboard cover fix this?](https://www.reddit.com/r/macbookpro/comments/a1yul8/anyone_with_heir_mbp_2018_keyboard_that_had/)\n- [Reddit: 2018 Known Keyboard Issue - repeating/sticky keys, silicone covers, compressed air](https://www.reddit.com/r/macbookpro/comments/a5jzyu/2018_known_keyboard_issue_repeatingsticky_keys/)\n- [Apple Discussion: MacBook Pro 15\" (2018) Keyboard \"t\" key repeating issue?](https://discussions.apple.com/thread/8536157) (55K have this question too on Feb 22, 2019)\n- [Reddit: MacBook Air 2018 keyboard problem](https://www.reddit.com/r/macbookair/comments/ak9ptt/macbook_air_2018_keyboard_problem/)\n\n## How-To (Video Walkthrough)\n\nClick the image below to watch it on YouTube\n\n[![How to install and setup Unshaky](https://img.youtube.com/vi/ppaeCBLCfu0/0.jpg)](http://www.youtube.com/watch?v=ppaeCBLCfu0 \"How to install and setup Unshaky\")\n\nCan't watch by clicking the image above? [Download mp4 (13MB) file here](https://files.nestederror.cf/file/-public-/How%20to%20install%20and%20setup%20Unshaky.mp4)\n\n## How-To\n\n[Download Unshaky.app here](https://github.com/aahung/Unshaky/releases)\n\nFirst, move the \"Unshaky.app\" to your \"/Applications\" folder.\n\n### Grant Accessibility Permission\n\n[**Why \"Input Monitoring\" is not enough in Catalina?**](https://github.com/aahung/Unshaky/issues/157#issuecomment-669409152)\n\nFollow the instruction when you first open Unshaky. If the instruction does not work for you, go to System Preferences -\u003e Security \u0026 Privacy -\u003e Privacy (Tab) -\u003e Accessibility (Left panel) and add \"Unshaky.app.\" Make sure it is checked.\n\n**Since macOS 10.15.6, also add Unshaky to Privacy (Tab) -\u003e Input Monitoring (Left panel), see [issue #166](https://github.com/aahung/Unshaky/issues/166)**\n\n![Grant Accessibility Permission](README/how-to-1.png)\n\n### Launch at Startup (Optional)\n\nGo to System Preferences -\u003e Users \u0026 Groups -\u003e Login Items (Tab) and add \"Unshaky.app\".\n\n![Grant Accessibility Permission](README/how-to-2.png)\n\n### Configure delays for your defective keys\n\nClick Unshaky icon in the menu bar and select \"Configure\" to configure delays for the defective keys.\n\n#### How to pick an appropriate delay?\n\nI don't think there is a universal delay value for all people. If you type very fast, you might want to have a shorter delay. I use 40 ms since I am a fast typer. With a long delay, I cannot type \"apple\" because the second \"p\" is likely to be blocked. Some users found 60 ms a sweet spot and some have no issue with 80 ms. My suggestion is to start with a short delay (like 40 ms) and gradually increase it.\n\n### For other FAQs, visit [the Wiki](https://github.com/aahung/Unshaky/wiki)\n\n## Community Contributors\n\n- Alexei Molinari (@al3xmill3r74) for v2 Unshaky icon \u003cimg src=\"README/logo.v2.png\" alt=\"Unshaky\" height=\"20\"\u003e \n- Hazar ([@hazarek](https://github.com/hazarek)) for v3 Unshaky icon \u003cimg src=\"README/logo.v3.png\" alt=\"Unshaky\" height=\"20\"\u003e \n\n### Localization\n\nIf you can help translate Unshaky into more languages, [open an issue here](https://github.com/aahung/Unshaky/issues/new/choose) so I can prepare related files for translation.\n\nYour contributions are valuable and make Unshaky accessible to more users.\n\n**Big _Thank You_ to these community contributors who provide translations.**\n\n| Language | Contributors |\n| -------- | ------------ |\n| Chinese  | [_sam](https://nestederror.com) |\n| Japanese | forgazer, [HackingGate](https://github.com/HackingGate) |\n| French | [xuesongTU](https://github.com/xuesongTU) |\n| German | [Felix Grund](https://github.com/ataraxie) |\n| Russian | [Alexey Khromets](https://github.com/akhromets) |\n| Ukrainian | [Alexey Khromets](https://github.com/akhromets) |\n| Turkish | [Hazar Ekinci](https://github.com/hazarek) |\n| Korean | [Woosuk Park](https://github.com/readingsnail) |\n| Portuguese (Portugal) | [Gonçalo Matos](https://github.com/GoncaloCdM) |\n| Italian | [valepert](https://github.com/valepert), [Domenico Corvasce](https://github.com/domcorvasce), [Daniele Torelli](https://github.com/danieletorelli)\n| Indonesian | [Elmo Tanu Miharja](https://github.com/elmotan95)\n| Spanish (Latin America) | [jadraker](https://github.com/jadraker) |\n| Dutch | [Siebrand Mazeland](https://github.com/siebrand), [Zandor Smith](https://github.com/Zandor300)\n| Portuguese (Brazil) | [Délisson Junio](https://github.com/delissonjunio) |\n| Norwegian | [Runar Skaare Tveiten](https://github.com/runar) |\n| Czech | [Michal Zelinka](https://github.com/username0x0a) |\n| Slovak | [Michal Zelinka](https://github.com/username0x0a) |\n| Polish | [Blaze](https://github.com/blazeblazeblaze), [Artur Kondas](https://github.com/youshy), [xpctnc](https://github.com/xpctnc) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faahung%2Funshaky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faahung%2Funshaky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faahung%2Funshaky/lists"}