Giter VIP home page Giter VIP logo

aahung / unshaky Goto Github PK

View Code? Open in Web Editor NEW
3.0K 38.0 117.0 17.69 MB

A software attempt to address the "double key press" issue on Apple's butterfly keyboard [not actively maintained]

Home Page: https://unshaky.nestederror.com

License: MIT License

Swift 59.43% Objective-C 40.01% Ruby 0.55%
butterfly-keyboard double-press macbook macbook-pro macbook12 macbookpro keyboard apple keyboard-issue debounce

unshaky's Introduction

Unshaky Unshaky

Donate Github All Releases Build Status

PROJECT STATUS: Unshaky is in maintenance mode, and I will only work on bug fixes.


It seems on macOS 10.15.6, Unshaky no longer works unless by default, workaround: issue #166

Menubar

Unshaky tries to address an issue on the butterfly keyboard (Macbook, Macbook Air 2018 & MacBook Pro 2016 and later): Double Key Press (See "User complaints" below).

Apple 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. The image below illustrates how Unshaky works.

How Unshaky works

[June 2018] Good news, Apple launched a Keyboard Service Program for MacBook and MacBook Pro, and go get your keyboard fixed, maybe temporarily.

[May 2019] Apple extends the service program to cover all MacBook (Air & Pro) with 3rd gen butterfly keyboards.

[May 2020] The Verge: The saga of Apple’s bad butterfly MacBook keyboards is finally over.

Complaints about this issue

How-To (Video Walkthrough)

Click the image below to watch it on YouTube

How to install and setup Unshaky

Can't watch by clicking the image above? Download mp4 (13MB) file here

How-To

Download Unshaky.app here

First, move the "Unshaky.app" to your "/Applications" folder.

Grant Accessibility Permission

Why "Input Monitoring" is not enough in Catalina?

Follow the instruction when you first open Unshaky. If the instruction does not work for you, go to System Preferences -> Security & Privacy -> Privacy (Tab) -> Accessibility (Left panel) and add "Unshaky.app." Make sure it is checked.

Since macOS 10.15.6, also add Unshaky to Privacy (Tab) -> Input Monitoring (Left panel), see issue #166

Grant Accessibility Permission

Launch at Startup (Optional)

Go to System Preferences -> Users & Groups -> Login Items (Tab) and add "Unshaky.app".

Grant Accessibility Permission

Configure delays for your defective keys

Click Unshaky icon in the menu bar and select "Configure" to configure delays for the defective keys.

How to pick an appropriate delay?

I 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.

For other FAQs, visit the Wiki

Community Contributors

  • Alexei Molinari (@al3xmill3r74) for v2 Unshaky icon Unshaky
  • Hazar (@hazarek) for v3 Unshaky icon Unshaky

Localization

If you can help translate Unshaky into more languages, open an issue here so I can prepare related files for translation.

Your contributions are valuable and make Unshaky accessible to more users.

Big Thank You to these community contributors who provide translations.

Language Contributors
Chinese _sam
Japanese forgazer, HackingGate
French xuesongTU
German Felix Grund
Russian Alexey Khromets
Ukrainian Alexey Khromets
Turkish Hazar Ekinci
Korean Woosuk Park
Portuguese (Portugal) Gonçalo Matos
Italian valepert, Domenico Corvasce, Daniele Torelli
Indonesian Elmo Tanu Miharja
Spanish (Latin America) jadraker
Dutch Siebrand Mazeland, Zandor Smith
Portuguese (Brazil) Délisson Junio
Norwegian Runar Skaare Tveiten
Czech Michal Zelinka
Slovak Michal Zelinka
Polish Blaze, Artur Kondas, xpctnc

unshaky's People

Contributors

aahung avatar blazeblazeblaze avatar danieletorelli avatar elmotan95 avatar goncalocdm avatar hackinggate avatar jadraker avatar lloople avatar mmathys avatar poteminr avatar readingsnail avatar runar avatar setanarut avatar siebrand avatar username0x0a avatar valepert avatar xpctnc avatar xuesongtu avatar zandor300 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unshaky's Issues

Unshaky with Punto Swithcer cause space bar deleting

I use Punto Switcher because I have 2 keyboard layouts. This application helps me by hotkey change keyboard layout of the latest word, like from en to ru and otherwise. Very convenient if you forgot to change the layout. I have 60ms in Unshaky for spacebar and it deletes spacebar after when I'm using Punto. Only spacebar, with others everything is fine. It's not a big deal, but I always have to add additional spacebar, that's so annoying.

To Reproduce

  1. Set ms in Unshaky for the space bar
  2. Install Punto Switcher
  3. Write the word with the spacebar after
  4. Hit the punto's hotkey
  • macOS version: 10.14.4
  • Unshaky version : 0.4.6

Add an option to select time limit for repeated stroke

I am using this app for a few days now, but the problem is that it saves me from double "b" hits only sometimes. It seems like the 40ms is not enough to cover the second stroke.

It often happens to me, that the second "b" only appears after the next letter,
eg. instead of "macbook" you get "macbobok".

A bigger timeout could fix this issue.

thanks.

Randomly starts blocking dashboard key

Unshaky randomly starts blocking the dashboard key (at least the only key I could detect by now).

Don't know hot to reproduce it, it happens randomly but never stops. If you close the app and re open it works as expected.

screen shot 2019-02-14 at 21 22 00

macOS version: 10.14.3

Interferes with Dash snippet expansion

This is related to #54, feel free to close it and handle it as a duplicate.

Dash sometimes relies on sending keystroke events repeatedly when expanding snippets. These events are only backspaces and arrow keys.

When these events happen, the pasteboard has the "org.nspasteboard.TransientType" maker (see http://nspasteboard.org). Could you maybe check the pasteboard for this marker and disable Unshaky temporarily while that marker is present?

Alternatively, could you think of any way I could prevent Unshaky from dropping my events? Or maybe just check if Dash is installed and show a warning that Dash snippet expansion might not work when the user enables Unshaky for the arrow and/or backspace keys.

Alfred auto expansion doesn't work as smoothly as it used to

Describe the bug
Auto expanding snippets in Alfred replay a bunch of key strokes at a blazing rate, however this conflicts with unshaky. So I guess it's more of a feature request maybe?

To Reproduce
Steps to reproduce the behavior:

  1. Make an auto expandable snippet in Alfred
  2. Set the expansion speed to the slowest
  3. Expand the snippet and see that only part of it is removed again afterwards.

Expected behavior
Snippet is expanded and keyword is removed.

Desktop (please complete the following information):

  • macOS version: 10.14.3
  • Unshaky version 0.4.6

Running Unshaky for a long time can disable some keys

Describe the bug
When Unshaky runs for more than (usually) 12 hours, it is possible that (in my case) keys "2" and "3" will stop working completely. I don't really know why those two keys exactly and I am not sure that this only happens after 12 hours, but it's the average running time after which I usually find myself restarting the app because of the issue. Restarting the application completely solves the issue, which I believe means that the problem lies within Unshaky.

To Reproduce
Steps to reproduce the behavior:

  1. Start Unshaky.
  2. Type a lot for a long time.
  3. Issue can possibly happen here.

Expected behavior
I did not expect keys "2" and "3" to stop working 🤷‍♀️🤷‍♀️🤷‍♀️

Desktop (please complete the following information):

  • macOS version: 10.14.2

Additional context
I am a programmer, I type at a decent speed (~110 WPM), and I usually type a lot of text per day, so it might be an issue of keypresses and not the application running time.

About & Settings tab (launch on startup)

Can you have an about tab to the app? Which will show the current version & any other such info?

Also, can you add settings to it which will allow it to automatically run on startup?

Butterfly Keyboard Issue Survey

@apophenist had an idea to do an open survey with Unshaky to find out how severe this issue is at the current stage. We have been thinking collecting statistics such as "fail rate" of problematic keys.

If user chooses to opt-in the survey, Unshaky will record some statistics in the background and send out provided user's consent.

It is working in progress and I open this issue for discussion.

Cannot find build

Do I need to build this by importing the project into Xcode? I cannot seem to find Shaky.app in the repo.

Enable only for built-in keyboard

I switch to external keyboard at the office. Can Unshaky determine external keyboard and disable key blocking when one is connected?

"power" becomes "powoer", seemingly delayed second press

Hi, I have progressively increased the delay time starting from 40ms and I cannot go further than 60ms because I almost cannot type "google".

The problem I am having right now is that, for example, I am typing "power", so I press "p" "o" "w" and an additional "o" appears leaving a "powoer" in the screen when I end up typing.

Anything I can try? sadly in my country there is no official Apple stores, and partners can take your laptop for months before telling you that replacements are not arriving because of import problems

Ignore external keyboard ignores internal keyboard on 2018 MacBook Pro 15

Describe the bug
I've set all keys to 40ms. I'm typing in a text editor with the debug window open. Only modifiers produce output in the debug window. Shift, caps lock, fn, control, option, command. The rest of the keys produce no output, and no settings applied to them seem to have any effect. (I've tried setting keys to 500ms, no effect).

Desktop (please complete the following information):

  • macOS version: 10.14.2
  • Unshaky 0.4.3

Additional context
I haven't tried restarting the computer since I installed Unshaky. I have restarted Unshaky multiple times, no change. Happy to follow debugging steps if anyone can suggest them.

Configure window not opening after closing

As @nabtron reported: "And one more issue is that once we configure it, and close configure window, then try to reopen it, it doesn't (on mojave)."

Such issue also occurs in high Sierra. it should be OS version independent.

THANK YOU

Just a note to say THANK YOU for making this! I've been so disappointed with my MBP for a ton of reasons, but your app solves one of my biggest issues. Super happy that I don't have to ship my computer off again. Cheers!

Add a donation URL

My Mac keyboard is usable again thanks to this project. How can I support this project monetarily?

Doesn't entirely work for my e key

Is your feature request related to a problem? Please describe.
This software really solves most of my problems. Thanks so much! However the double key press problem with my e key seems much more severe than other keys. I have already set the time delay to 80 ms and it still doesn't entirely work. Maybe there is a distribution of delay times with a long tail? Sometimes the second key press doesn't appear immediately, but it shows up after some other key press. For instance, if I type "set", it will probably become "sete".

Describe the solution you'd like
Perhaps the distribution of delay times can be taken into account, if there really is such a distribution... I'm not sure if there is another explanation for what I experienced with my e key.

Describe alternatives you've considered
I think I should just get my keyboard temporarily repaired...

Additional context

'Unshaky' for Windows??

I read about your Mac program in a Wall Street Journal article. I think that is a very clever idea.

I use Windows7 PRO on my desktop. I use a very old KeyPro keyboard, which is great--much better than newer ones and with lots of customizable features. But a few of the keys have begun to double print, even though the key itself returns to the up position normally. There are no parts available for this keyboard. Your incorporation of killing any second signal within a specific time is great.

Do you perhaps make a version for Windows, or do you know of anyone who does? I am not a programmer, so I do not have the capability of modifying the open source code that you have posted.

Harry

Update checking broken

Describe the bug
When checking for updates, it says it's up-to-date while it isn't:
image

To Reproduce
Steps to reproduce the behavior:

  1. Click Check for updates from the menubar menu.

Expected behavior
It should say there is an update available. 0.4.8 is available.

Desktop:

  • macOS version: 10.14.4
  • Unshaky version: 0.4.6

Space key not being delayed.

I can add delay for other keys and it's working fine but not for the space key. Even if I added a long delay say 5000 and press the space many times, it won't block it.

support different keys

It would be nice if unshaky could be configured to remove OTHER characters other than double strokes. When a mac keyboard starts acting up, sometimes it types other keys that are in the same row, not just the one you are pressing. For example, if you press J, sometimes it double presses J, but it may also type JAK because A and K are in the same row.

Application quits.

Describe the bug
The app quits when set button is clicked with empty value.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'configure'
  2. Click on 'set' with out giving value
  3. App quits!

Expected behavior
Message like 'please provide value in millisecs '.
Desktop (please complete the following information):

  • macOS version: 10.14.1

Add ability to import/export configs

Thanks for your work. I live in country where I have no ability to fix my MBP keyboard with Apple Keyboard Service program, and Unshaky is the only thing that allows me to use my MBP normally.

It would be great to have an ability to import/export keys delay configuration. It took some time for me to configure delays for every broken key I have.

Can you add a counter?

Can you add a counter on the key which has been double clicked? We want to know how serious it is, so that we can repair it in the genius bar.

Thank you.

Setting custom value

Hello, first of all thanks a lot for developing this, its amazing. However I still get sometimes double press. Could you please possibly implement option to change time from 40ms to something little more aggressive? Thanks!

Thank you!

Just a quick thank you note for developing this software! I've been having these issues with my keyboard from time to time with different keys. They usually last for a few days or weeks and then disappear again for some time. This also means that it doesn't really makes sense to pass by the Apple Store..

A few days ago, I had this issue again with the o key of my keyboard which decides to put a double 'o' in 1 out of 6 times. I stumbled upon this software today and it really relieves most of the pain! Thank you so much for releasing and maintaining this! Keep up the good work!

Several of my keys still double type

Hi,

Thanks so much for creating this app! It has definintely helped a lot on my keyboard (and given all they typos here, that's saying somtehing about how bad my keyboard has gotten). Already since installing it two days ago (and using a secondary keyboard most of the time) I have had >50 double key presses rejected.

However, I am still having some keys double type (I'm leaving in typos in this message so you can see the rate at which it happens). Most cmomonley with the "n" key,although 'o' is also common.

Sometims, maybe at an equal rate of double typing, I get the keyboard ignoring pressse, and delayed keypresses (you can see them in this message as well!). I am not sure if this is something Unshaky can fix (although it could probably cause keys not to be pressed if the delay is too high?). Maybe I should just get the keyboard replaced...

I'm a pretty fast typer, so I tried to set everything pretty low (right now, 'n', my most finicky key, is set to 15ms). Any ideas?

Thanks!
Alane

Add Shift keys to Unshaky

In the configuration window there is no option to add Shift keys.
On my MacBook Pro the left shift is "broken".
It would be nice to have this listed along with the other keys as well.

Does not work on lock screen

I have an issue with one key and Unshaky works okayish most of the time. But it does not seem to work at all on the lock screen (e.g. after waking from sleep, or after explicit locking)

To Reproduce
Steps to reproduce the behavior:

  1. active the lock screen
  2. type in my password containing the "problematic key"
  3. key press is registered twice.

Expected behavior
I expect the key not to be repeated.

  • macOS version: 10.14.2 (18C54)
  • Unshaky 0.3.1

Additional context
I have configured the key with a 40ms delay. It does not seem to matter if I type the password in normal speed or extra slowly. It does not seem to be caught.

b key still repeats

I have tried setting the ms delay to all values I could think of and the B key still repeats 1/3 times I press B. Is the program a software "debounce" system that will prevent double-keys within a time? If so, what does the msec delay mean? TIA

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.