Mechanical Keyboard Sound Isn't That Simple
Figure 1: I couldn't think of a more literal way to represent this article if I tried... Looking back just a few years ago, there’s no doubt that the huge influx of people that joined the hobby at the peak of the COVID pandemic were drawn to keyboards by way of YouTube, TikTok, and other audio-visual content platforms. Even as the output from these content creators has waned in recent months, their collective impact and legacy on the keyboard hobby is rather firmly etched in the history books. As a result of all of their sound tests, build logs, and opinion videos, the message is clear to any new person joining the hobby: mechanical keyboards are all about the sound. Thock this, clack that. Whether it’s keyboards, keycaps, or even singular switches, seemingly everyone new to the hobby meticulously pores over each component of their keyboard not in an attempt to figure out how it will feel in hand, but how it will sound as they’re furiously grinding their way out from...
Mar 27, 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