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
By the way, the plate (and a different collection of switches) is availabe on eBay for $25.30 shipped (current price - when I bought it, it was $24). Transparent 1U keycaps are included, in different profiles (so the curve is correct). Note that this means the 0, + and ENTER keys do not have the 2U wide keys. It does not have the NPKC logo on the top - it's completely plain. The only (maybe) shady part about this auction is that the seller is using some photos from Massdrop. Maybe he has permission...
And yeah, I'm not gonna rail too much on NPKC, they got pushed into making a PCB, and it's not a great one, but on the other hand, they weren't even sure they'd have it ready for this drop. So we kinda forced this on ourselves by pushing them to build a PCB really quickly. You push people to put something out, they put something out. it's very much an unfinished product, but, it does everything they said (it's a numpad). fast, cheap, good, choose two :P
That being said. I'm very interested in wiring up my own tester now and getting moving ahead building something neat I can use.
Also, as a heads up for anyone who does decide to use the PCB. Unsoldering the switches is a giant pain. A much bigger pain than unsoldering normally is because the lip on the bottom edge makes getting to some places difficult.
I'd do your research and make sure your PCB works, and it's what you want before assembly.
Was going to look into it, since it seems the Infinity backers are getting these PCB's, but probably not worth it.
And all the other people with the board would need to pay to have the board shipped 2 ways, or buy a programmer for $50+, for a $9 board.
I think it'll be a great learning experience, but other than that it doesn't make sense. Unless someone works with these as their day job. Anyone?
Question.. is the pro micro easier to program than the teensy? The teensy's capabilities are not matched by online documentation. You already have to be familiar with programming in C to get full use of it.
[edit - I read the code... and I figured out that you're using pullups instead of a matrix]
Anyway, I've finished soldering my numpad in a matrix layout, wrote and tested the code. It's for a Pro Micro, so if you want to use it for a Teensy, you'll need to modify it.
https://github.com/theimmc/numeric-keypad
The soldering could have been neater. I should have planned it out first before starting to solder.
https://www.reddit.com/r/MechanicalKeyboards/comments/3q41gn/photos_npkc_numeric_keypad_build_instructions/
[edit2] - from what you showed me, I searched and found this: https://github.com/benblazak/ergodox-firmware/blob/master/src/lib-other/pjrc/usb_keyboard/usb_keyboard.h
NOTE: This was written for Teensyduino 1.25 with Arduino 1.6.3. I updated to Teensyduino 1.26 and Arduino 1.6.6, and it DID NOT WORK. However, Teensy's keyboard library was TESTED WORKING when I used Teensyduino 1.25 with Arduino 1.6.5-r5.
Something I found out abut the Teensy 3.x versions: The pins output 3.3 volts instead of 5v. Because of this, I had to buy some 100 ohm resisters for the led's (I know I needed less resistance, but I am overly protective of my LEDs. In 5v circuits I use 470 or 500 ohms).
The matrix:
Testing the four status LED's:
Layer 0 is numpad keys: This is useful for gaming because games can bind separate commands to numpad_1 and regular 1, for example. Layer 1 is regular keys: This is useful for using a number pad-like device on a laptop where you can't turn numlock on, as numlock on a laptop messes up the letters or other keys.
How to change layers: Hold top left button (button 0 in the code), then press slash (button 1) BOTH LAYERS HAVE BEEN TESTED IN WINDOWS AND LINUX
Tested using: http://www.keyboardtester.com/tester.html
I recommend using osk.exe (included with Windows) and "Onboard" for linux. These are virtual keyboards. You need these for pressing... or unpressing a key while you are debugging.
I also recommend looking at @theimmc's code which is linked on page 27. I learned half of what I know in arduino C from reading his code.
Question : where's the class Keypad defined? Is this in Arduino IDE 1.6.6?
FYI This is my first attempt at cutting away insulation on a wire in the middle. I saw it on reddit I think. Stranded wire is a pain. I have stuff I was needing to get from adafruit.com... I just made a purchase after making this keyboard, I also got some solid core wire to use in the future.
Yeah, stranded wire is a pain. The 6 pack of 22 AWG solid core from Adafruit looks useful. I used a roll of 22 AWG solid core black wire I had instead. To make life a little easier in the future, I picked up another roll of red.
I used a pair of flush cutters to notch the insulation and slide it to expose the conductor instead of using an Xacto to cut away the insulation. Seems like it might be easier this way if you get the measurements correct.