Beginner Builder series 75% done! will probably never be finished. :(

Saturday, December 12, 2009

Skeys: Specialize your Special Keys!

A while ago, I bought a keyboard to use with my netbook, and when it came it had many function keys that I was not used to ("Special" keys, if you will), because I had not used a keyboard with special keys for several years (certainly not since learning Autohotkey.) As I tested them out, I found that some of them opened a web browser that I would rather not use, or that brought up an e-mail client instead of Gmail (which I use), or even that the volume + and - seemed to be swapped. So I decided to do a little coding and rebind it to what I wanted. That was easy enough, but then I thought, "What if I wrote a program for this?"

Skeys (pronounced like "skiis") is the result of me itching to code and getting a new piece of hardware. It's actually been in the works for quite some time, even "Stable", per se, but I haven't written about it or posted it on FreewareWire Software for several reasons which I will not name. Anyway, I think it should be ready now.

Before you can jump in to using your special keys, you have to figure out which ones you want Skeys to use and which key is which. When I was thinking about how to do this best, I was a tad befuddled at first. Of course I could name them things like "E-mail" or "Web browser", but where's the fun in that? (Plus, I wasn't sure if every single keyboard had all those keys do the same thing.) So instead, I took a different approach for identifying the keys you want. On the "Setup Screen", there are 18 buttons that all have "Use This Key" on them. When you press one of the special keys, the button for that key will change to "!!!Use This Key!!!" letting you know that that is the button for that key.

In addition, I also threw in an "Autocheck" feature; if "autocheck" is on, when you press one of the special keys, it will automatically press down the button too, meaning that you can configure which keys you want in under 20 seconds, easily.

The last feature for setup is Nicknaming. Again, naming keys "E-mail" or "Play/pause" is so droll, so I thought "Why not let the user be able to name them?" So when you find which button is for the key you want to use, right click it, and you assign that key its "Nickname", which will make it 100 times easier to identify.

The Heart of Skeys.
Finally we've come to the heart of Skeys. I wanted to make Skeys straightforward for the less computer-savy, but functional enough to be customizable to the fullest potential. The reason that you check buttons and whatnot is because I was writing Skeys and I got to its "heart", and I thought "Why should the user be worried about 18 different keys when they maybe just want to use one?" So using the Setup screen, you can handpick which keys you want to use, and then from then point on, those are the only keys you have to worry about.

So anyway, you can select the keys that you picked in the setup from a drop down list, and every key will either have the Nickname that you gave it (aha! See? Isn't it handy already?) or it's "reference code". [Every "Special key" has a reference code that is "SC" followed by three letters/numbers.] When you pick one of the keys from the list, you can then add actions that will be performed when the key is pressed. And
There are a ton I threw in. I wanted it to be completely feature filled, so here they are:
  • Open File/Program
  • Power Function
    • Logoff
    • Switch User
    • Standby
    • Hibernate
    • Hibernate/Standby [uses Standby as a backup if Hibernation is turned off]
    • Shutdown
    • Restart
  • Send keystrokes
    • Send
    • Paste
  •  Volume Function
    • Mute
    • Unmute
    • Toggle mute
    • Up
    • Down
  • Popup
    • Center
    • Bottom right
    • Bottom left
    • Top right
    • Top left
  • Skeys
    • Show Skeys
    • Show Skeys setup
    • Disable Skeys
    • Disable this hotkey
    • Exit Skeys
  • Wait
 Most of those are self-explanatory and don't have any configurable options, but others also do, which I will talk about now.
-OPEN FILE/PROGRAM: Choose whatever file/program you want to open/run. You can either manually type in the path to the file, or click the ellipses button and navigate there. Please note that in the "Select File" dialog, you may choose either "Programs (*.exe)" or "All Files (*.*)" from the drop down list below the filename field.
-"SEND"/"PASTE" KEYSTROKES: Under the submenu of "Send keystrokes", "Send" will "type" whatever you want. The only difference between "Send" and "Paste" is that "Paste" types whatever you have specified instantly, like pasting from the clipboard, while "Send" types one character at a time. I'll talk more about this later, because it's so massive!
-"WAIT": Simply waits, doing nothing, forever however long you specify. The time is in seconds, but is accurate to milliseconds (0.001 seconds). Don't go below that accuracy, though (ie "1.000000000001"), because that is just beyond the limitations of Autohotkey (and it's just plain ridiculous).

Sending keystrokes.
I only make this a separate section because it is so completely massive, and I am quite proud of it. You can send just about anything in terms of keystrokes, every single key on the keyboard from "A" to "Z" and from "1" to "0". But wait, there's more! You can also pick the "Other" keys, ones that aren't as straightforward.
-COMMON: Basically standard keys that have one function, and the arrow keys. Examples: Enter, Escape, Tab, Delete, Space, etc.
-F KEYS: All F keys, up to 24. Even if you don't have a keyboard that has 1-24, you can still use 13-24.
-NUMPAD: All keys and variations on the numpad. Note that, in terms of textual output, a "Numpad 7" is the same as a regular "7". The difference is only if a game uses the Num keys, or such. Also note that these options are uneffected by Numlock.
-TOGGLE: Contains the "Locks" and the "Modifiers". Although it should be obvious "Shift down" will act as though Shift has been pressed down until "Shift up" is indicated. A regular "Shift" will stay down only until the immediate following character, such as "{Shift}rs" will produce "Rs" (if capslock is off.)  A regular "Shift" will act like the user pressed and release Shift before sending the next key. Essentially, sending something like "{Shift}rs" is the same as sending "{Shift Down}{Shift Up}rs". (Thanks to Tony for catching that for me!)
-BRACES: (or brackets....) Because braces/brackets are used for "other" keys, they also become "other" keys themselves. In order to use a brace, just put it inside braces! Example: {{}Hi there!{}}     will result in        {Hi There!}

The coolest part about the key sending function is that it's very well organized. There is a huge menu with sub-menus and options that you can press, but you can also just get the gist of most keys and be able to type them in yourself. For example,
Enter = {Enter}
F2 = {F2}
Numpad - = {Numpad -}
If that isn't simple, I don't know what is! But if you're ever confused about what a key should be, the menu is there.

While writing Skeys, I thought "You know what would be even cooler than Skeys being able to do one of those things? It being able to do more." Every single key in Skeys has not only one command it can execute, but a list of commands. For example, you can make one key (1) mute the volume, (2) send "I love FreewareWire!", and (3) send the computer to standby, in that order. You can add (theoretically) as many commands as you want, and Skeys will execute them from top to bottom.
But please let me make myself clear: Skeys is not meant to execute a long string of commands, and therefore is not supported in doing so. Please don't complain to me if you have a list of 20 commands that aren't being executed right.

Disabling Skeys.
If you want to temporarily disable a hotkey, go to the Skeys main window (NOT the Setup), and just uncheck the "Enabled" box for that key. The effect will be immediate, and the Special key will do its original intention outside of Skeys.

If you want to disable ALL of Skeys, Double click on the tray icon, or right click the tray and click "Enabled". If Skeys is disabled, the icon will be greyed out, and all of the Skeys will do their original purpose outside of Skeys. In other words, when Skeys is disabled, Special keys will act as if Skeys is not even running.

If you want to make a special key do nothing, mark in in Setup, then just check its "Enabled" box in the main window without adding any actions. This will make Skeys take over that key from its original purpose, but then give it 0 commands to do, meaning it will do nothing.

Icing on the cake.
On top of all that, there are options that I included to make Skeys as streamlined as possible.
-Start with Windows: If you get to the point where you love Skeys so terribly that you need it all the time, there's an easy menu option for that.
-Start Disabled: If for some reason you don't want Skeys to be active when it starts, you can make it start disabled.
-Skip Setup: This is where it really starts to make the experience great. Once you get the feel of Skeys and you routinely use the same special keys, you can make Skeys skip the "Setup" screen, meaning it will go straight to the "heart" window.
-Start in tray: Maybe you are so used to Skeys that you don't even need to see the configuration screen. That's ok, check this option, and it will will skip both the Setup screen and the Heart screen and will sit quietly in your tray.

Final notes.
Just a few things that I want to say.
-PORTABLE: Skeys is portable, in that it does not need any external files and it leaves nothing on your computer. However, certain things, like launching a program with a Skey, will not work because the path is not relative.
-Open Source: Yay for freedom!
-Untested/Unstable: I've tested Skeys to an extent, but not heavily. There's already things that I know that don't work amazingly well, like the popups.
-Messy code: To be honest, I am a messy code writer and it's been a while since I actually wrote Skeys, so the code is very messy. (Hopefully a few programming courses next semester will whip me into shape.)

Just a few people I want to thank.
Xoxide - For making a freakin sweet, glowy keyboard to write Skeys.       
Titan - For his ABSO-FRIKKIN-LUTELY A-MAZING anchor script, whichout which my programs could never be resized.
Yook - For his AMAZING Balloontip script, letting you display a balloon any current control.

That's about it. I really love Skeys, possibly the most out of all the programs I've written just because of how limitless it is (and because, honestly, I'm really proud of the keystroke sending.) I hope if you decide to take a look at Skeys that you'll enjoy it. It's a fun little app that I believe has great potential.

[NOTE: Over the last two days, I've compiled and recompiled more times than I can count because I keep finding problems that I thought I had fixed a long time ago. So what that means to you is, Skeys is way less stable than I thought, so if you find an error (or errors), don't be surprised, but also let me know. PLEASE let me know. I really want to make it the most usable it can be, and I can only do that if I fix the bugs.]

Visit FreewareWire Software Downloads page for Skeys v1.1


  1. Are you aware that there is a Windows system file called skeys.exe? says, "skeys.exe is a process which belongs to the Microsoft Windows Operating System and provides the Serial Keys Utility."

  2. Vic,

    I learned about that after naming much as I hate the fact that Microsoft beat me to the punch, I think I'm going to keep the name, just because I think it rolls off the tongue nicely.


    PS - I took a brief look at your blog, and also noticed that you mentioned Skeys on there. I appreciate the mention. :)

  3. I'm in need of something, can you code it, please please ? =)
    I have this keyboard:

    All I want to do is to map some of the buttons at left (play/pause and stop, just below the green round button) to left and right mouse button (emulate mouse click with the keys).

    Can be done?

  4. I have an MSI computer with some special buttons on it. (the orange lights at the top of the keyboard.)
    Normally these are controlled by a little program called s-bar. (

    But it doesn't work with sKeys. Is there any way you could fix that?

  5. such a great and useful information about setup

  6. The last feature for setup is Nicknaming. Again, naming keys "E-mail" or "Play/pause" is so droll, so I thought "Why not let the user be able to name them?" So when you find which button is for the key you want to use, right click it, and you assign that key its "Nickname", which will make it 100 times easier to identify.

  7. If you have an assignment which you have yet to complete then you can simply let our experts do it. No matter how difficult your assignment is regarding the subject but we complete it with the perfection that you need. Our assignment helpers make sure that your assignment is handled with care. We have countless of experts who specialize in the writing of the assignments. They conduct in-depth research about the topic and come up with the content that can make your assignment be the best. With our cheap writing service, your assignment is handled with perfection.
    Academic Essay Writing

  8. Thanks for sharing this blog. Great information you shared through this blog.Thanks for sharing.
    Custom Packaging Boxes USA

  9. With our write my term paper online services, students are guaranteed quality services that are offered by professional writers are we are the best best custom writing service company.


  10. شكرا معلومات مفيدة يمكنك زيارة ايضا لمعلومات قيمة اخرى قم بزيارة :

    شركة غسيل خزانات بالمدينة المنورة
    افضل شركة تنظيف

  11. Amazing write up, never read such an informative blog and enjoyed it. Thankyou. Keep up the good work. Looking forward to read more.
    gta 5 apk

  12. Having trouble with your Matlab assignments? Matlab Assignment Help team got you covered. We work 24/7 to ensure that all your assignments are well-taken care of. We ensure time and quality delivery at all times. To get the best Matlab Homework Help, visit our website now.

  13. When I take Matlab assignment help online, I expect the solution not only to fetch me good grades but also to help me with my exam revisions. I was not impressed at all by the Matlab assignment helper who tackled my signal processing homework. Even if it secured me a good grade, I am still having trouble understanding anything in the solution so technically I still have to deal with voluminous books to understand this topic. I hope you guys can try and simplify the solutions in the future to make them easier to understand.

  14. Skipped your Matlab classes because of other commitments of a busy job schedule? You don’t have to worry. At Matlab Assignment Help we offer tuition to ensure that you catch up with your classmates or even understand the area you did not understand in class. We offer classes based on your topics of need and we work based on your schedule. Our Matlab Homework Help team is available to ensure that your grades are soaring high.

  15. In my statistics class, we are at the point where we are discussing the log-rank tests. That is the topic of survival analysis. I started well on the topic and understood the Kaplan-Meier test but had a problem with understanding the log-rank test. Perhaps as an experienced statistics homework help expert, you could help me with it. I am adding another assignment to it on SAS. The SAS one is not very urgent because it is due in one month, however, it is quite complex, and therefore I will need a highly experienced SAS assignment help expert.

  16. Have you centralized your work? I want a programming assignment help expert from Canada. If you have one from this side of the world, I am going to take your C++ assignment help today to have my C++ assignment completed. I do not have much time to do it and that is why I am seeking professional assistance in order to have high grades. Let me know whether you have one. If none then you can let me know whether there is one from a country close to Canada.

  17. Sometimes I feel like the prices these guys charge for Matlab assignment help are too high compared to other sites. But don’t get me wrong, their Matlab assignment helpers are great at what they do. They actually helped me score an A in my control systems assignments. I just feel they should try to bring the prices down a little bit.

  18. Which is the best software for statistics homework help? There is so much software that can be used for statistics. But I can't learn how to use all of them. I desire to be a master in statistical software that is considered the best. Which software should I learn for doing my statistics homework? More to that, where can I get SAS assignment help?

  19. After having three amazing years of taking programming assignment help from you, last week I had a bad experience when I came to you for C++ assignment help. I was given a different tutor from the ones I have been working with. I assumed all would be well since in the past all tutors I got had proved to be amazing. This new tutor was very poor in communication and in most cases he was even not available. Within 3 days I was already tired of him because he was not even sending work progress. I simply had to launch a complaint with the customer care team. After I launched the complaint it’s when he rushed to my inbox to tell me that my work was in progress. I refused to work with him and requested for a new tutor.

  20. Impressive work, you have shared useful information. Always love to read quality content. Also visit HND assignment help

  21. Thanks for sharing valuable information. You have discussed detail information about special keys. Visit Write my assignment UK for professional academic writing help.

  22. Students have to face a lot of hurdles throughout their journey to write different types of assignments throughout the high school or a 5-year degree program. Essay Help Zone is providing online essay help to all the students for all types of assignments. We are fully equipped with a team of professional writers who are experienced to produce top-quality essay writing for the students regardless of any nature or level.

  23. Amazing write up, never read such an informative blog and enjoyed it. Thankyou. Keep up the good work. Looking forward to read more.

  24. Quality content, I found it very informative and interesting. Similarly, Royal Assignment Help is helping students to learn more about academic writing and they assist with valuable academic services.

  25. Special keys play multiple functions also known as multimedia key. This blogpost has taught great information. Oftentimes I read Royal assignment help

  26. As an economics student, I like to visit this post and here I am referred by the professional writer-expert to read it for my sessional activity of the college. This post has been helped me a lot to complete my assignment essay

  27. "Our best dissertation writing help comes with result based dissertation project that drives you the desired grades by careful dissertation editing and proofreading by Oxbridge Dissertation Help."

  28. Strong team. A team player is someone who actively contributes to their group to complete tasks, meet goals or manage projects. Team players actively listen to their coworkers, respect ideas and aim to improve the product or process at hand

  29. This is a very skillful and technical topic and you make it seem so common and easy to understand. Your insight into the topic is amazing, and I want to encourage you to keep posting good content like this university of tennessee tuition

  30. This post is really helpful because i was searching that kind of post that you posted and i am really happy and suggest you to read Dissertation Writing Services uk as we are providing the best academic solution

  31. A music festival is fun and there is no harm in enjoying each bit of it. Sometimes you will meet people you used to hang out with, but that doesn’t mean that you’ll take a cab and head back home. Actor Hania Aamir spent her Monday night grooving to her ex-boyfriend Asim Azhar’s concert in Karachi – an act that didn’t go well with many of her fans. Read this complete news at The Pakistan.

  32. I really like your blog. Great article. You should also check out this article. Duolingo English Test sample questions

  33. What an interesting content we have here, I enjoy every bit of it. Thanks for posting it. Also checkout 7 Fully Funded Internships For International Students

  34. Great Article, it is really informative and innovative. astronomy degree