... are frustrating.
Here a few things I learned today at work:
- IntelliJ IDEA has a built in refactoring for creating a new constant from an expression mapped to Ctrl+Alt+C by default.
- At some point prior to me using my current PC, another user installed Lotus Sametime Client and mapped its shortcut to Ctrl+Alt+C
- When I try to run the refactoring in IntelliJ IDEA, Sametime starts instead.
- Since I never user Sametime, I went to Add/Remove Programs and attempted to uninstall it. Despite acting like it uninstalled the program, it remains, shortcut key and all.
- After some searching I finally found the renegade program on the disk and found that there was a custom program shortcut hidden away in Programs>Accessories>Communication which had the offending shortcut-key set.
- After deleting the program files and the shortcut, I still couldn't call the refactor.
- It turns out that if you delete a shortcut file (with a shortcut-key set), the binding doesn't get removed right away (presumably this happens at some other point, like when you restart or log-in)
- The only way I have found to truly remove the binding is to create another shortcut with the same binding, change the binding to another key (or better yet, nothing), apply this change, and then delete the shortcut. This seems to effectively unbind the key.
- Finally now I can use the shortcuts in the program I care about.
Despite a decent amount of searching I was unable to find anything on Google that helped the situation. I found plenty of sites showing me default Windows shortcut-key bindings, and several more posts from people frustrated with similar problems, but nothing to help. As far as I can tell, Windows doesn't have the ability to show you what key bindings are currently used and for what (this would be immensely helpful).
To be honest, I don't know how Mac OS X handles these situations but in my 1+ years of working on it I have never had the problem. I don't have this problem often in Windows, but have had it several times now.
I guess the real problem is one of scopes. There needs to be a clearly defined logic for how key-bindings get set/reset and how they cascade down scopes. If bindings are going to cascade into more specialized scopes, they need to have rules about what they can start with or something (e.g. have all Windows level ones start with the Windows key) and if something is allowed to be reset at a more specialized level, have only the closest scope take effect. It looks like Visual Studio does this along with other programs ... why not between programs and the OS.
Anyone run into similar problems? Or know of a way to see all of the bindings currently set?
No comments:
Post a Comment