What is SpaceFN and why you should give it a try
The SpaceFN concept - setting up your space key as a layer switch when held - is probably one of the most useful tweaks in the keyboard hobby. Let me explain how it works. My SpaceFN article on kbd.news made some rounds recently - quite surprisingly given the age of this concept. This piece you're reading is a condensed version of the full post. If you're left with unanswered questions, you'll most likely find the info you're looking for in the original write-up. On my imaginary top list of the most useful keyboard features, tweaks and hacks, SpaceFN would deserve a podium finish for sure. But what makes it so special? In short: SpaceFN is easy to implement, easy to learn, costs nothing, can be used with any keyboard, and can improve your productivity instantly. I will list its benefits below, but can state right at this point that the SpaceFN concept, setting up your space key as a layer switch when held, is clearly one of the most useful tweaks in the keyboard hobby....
Apr 30, 2024
FYI, if you program the F13-F20 keys into the Falcon8 and then reopen the firmware using the MAX Falcon8 programming software, here is how it looks. You will notice the keystroke isn't interpreted in the text box. It just says 0x68 (F13)
Standard disclaimer applies please. Please use this at your own risk. It might make your Falcon-8 spontaneously combust, then burn your house down, then give you 7 bad years of luck. I still recommend a binary file compare with your own image before using.
Also, some talk below about profiles. They are very easy with AutoHotkey. And its not so much AHK itself but that you move the heavy lifting to the PC instead of trying to do it on the device. I have profiles running (denoted by different colour) except I am not using it yet for the Falcon-8. I am only using it for my Logitech keyboard with M1-M3 profile keys. Here is how it looks when you switch profiles:
http://s000.tinyupload.com/?file_id=79739660894271855006
Tiny Upload File Description: Max Falcon-8 Mini firmware (NXP LPC1343F Arm Cortex-M3) Description: Progs 1-8 set to 0x68-0x6F (F13-F20) MD5: 2ace680dc8d327e65b3983db55f23aab https://www.massdrop.com/buy/max-falcon-8-programmable-macropad-kit/talk
0x7c vs 0x68 - It's because the part of the firmware that we are patching is not the bit that sends the VK_Code to the PC. It's something else, for example an internal lookup table of which PC Gui config button was pressed to configure the button. So it's possibly used as an index (and tied together with the rest of the programming parameters like pauses and other keystrokes etc) to eventually lookup the VK Code. I **WISH** I could find the part of the code that sends the VK code to the PC. I've been looking on and off for weeks as a slow background project (with tools like IDA, qemuarm and looking at soldering down a connector to attach a JTAG debugger). I've noticed that when you use the custom macros, you can only have fixed time keypresses (you actually set the fixed keypress time), but when you program it as a set key from the pulldown menu (eg F1-F12), you can use indefinite presses (ie the release code isn't sent until you let go of the button). That's just so much better that it's frustrating it doesn't work with user macros. If the F13-F20 keypresses were indefinite, then the whole Falcon-8 could be used as modifier keys for the entire rest of your main keyboard (eg macros such as F13 + A, F14 + Enter, etc). I want to find a patch where you set the buttons to single keys from the pulldown menu as described above, then patch the VK Code to F13 ... F20
I also found the binary offset location for the keys you can program from their drop down list. Indeed they are the same exact scan codes, just in a different location (0x517a is one). So you could try to put your scan code 68 in there and see if it works?
Meanwhile, I've been searching online a bit, and now understand there is a difference between VK and scan codes. I have found a list of the scan codes, which seem to correspond with the falcon 8 ones, here: http://www.quadibloc.com/comp/scan.htm In the fourth column, under "USB". I've tested a few keys, and all are like the list says (so ESC is scan code 29 etc.). No mouse button scan codes though, I doubt they exist. I guess this controller does not support mouse key codes. The "ducky pocket rgb" numpad seems to, from what I've seen in their manual.
Any other info or ideas on this topic are welcome!
You know the sad part is that my 4 year old Logitech G510s does EVERYTHING straight out of the box. I can put F13-F20 on the GKeys by just changing an xml file, the keypress times are infinite, and I can easily put any mouse button (again infinite keypress time, I just tested it in about 60 seconds). I am currently looking to upgrade to a high end keyboard (K95, M800 or maybe even an ErgoDox), but, without knowing any of their software, I'm thinking of kicking back to a Logitech G910 even though its Romer G switches only get underwhelming mentions in the mech keyboard circles (no gamer here just a programmer that likes his macros) . The Logitech Gaming Software even let me write a profile script which responds to a keyboard press, sending further keystroke presses (AHK macro style) to trigger my AHK script so that when I change layers by pressing the Logitech M1-M3 keys on the keyboard, my AHK script triggers and changes colours in the AHK Gui. So my little AHK gui app background colour follows the keyboard LCD and key colours. It just works. I'm half tempted to dig out my old Logitech G keyboards (I've got G105 and G110 around the place somewhere) just to see how much of this already works. Lots of these high end keyboards say they're "the most customisable" keyboard. If they were $50 each I'd try them all but they aren't!!!
Thanks