I have a stream deck and it's pretty cool as a macropad, but I'm hoping they're working on at least a 60% keyboard. The keys they use on the macropads would be pretty awful to type on, so it will take some work, but I hope they can do it.
I think basically what's happening here is that the font includes some SVG glyphs (for a bunch of emoji, no doubt). This causes us to render it via a "color font" codepath, and color fonts ignore the CSS color property as the glyphs are painted with their inherent colors instead.
But in this case many (most) of the glyphs do not actually have color versions, and so they simply paint as black. We need to be making the decision whether to paint "as a color font" (ignoring CSS color) on a per-glyph basis, not per-font-run, so that glyphs without inherent color don't just default to all-black all the time.
I'm amazed that a standard keyboard build still targets the Pro Micro. Here is a build tutorial from 2012. 1Up (used in the article) is certainly more cost effective ($9) than SparkFun ($18).
I have made a few custom keyboards with the stm32f103 ("bluepill"). You can get a 5 pack for $10. You get more IO pins and you don't need to suffer through anything Arduino-related. The starter kits often include an ST-LINK clone that makes flashing much easier than dealing with bootloaders and USB serial connections. (I use a j-link, but both are fine.) It is, of course, supported by QMK.
If you want to go even cheaper for a 4x4 macro pad, you can just hand-wire the thing and not buy a circuit board. I hand-wired a full keyboard and while it was not the quickest task in the world, it also wasn't that bad. Kind of relaxing. You also don't need to go overboard with mechanical supports for the keyswitches; I just 3D-printed a platform that the keyswitches slot into.
Basically, if you happen to have some magnet wire, a microcontroller, and some Cherry clones sitting around... you can make yourself a keyboard. (Diodes are nice, but you probably don't need n-key rollover on a macro pad.)
What are these used for exactly? They seem like they'd slow you down as opposed to just using a regular keyboard with software macros or a fancy keyboard with macro support.
Controlling scenes while live streaming (e.g. live / "AFK" / switch to "I'm dead" mode during multiplayer live stream / ...) is the most common use case for this type of keyboard I'm aware of. It's much less error prone than pressing a shortcut since it's a single button press. One of the most common commercial product for this particular use case is Elgato Stream Deck.
The biggest use I've seen is four-key and awkward three-key shortcuts in software where one hand is occupied with another device (generally a digitizer stylus, but it could be any controller or mouse). A macro keypad can be extremely handy when editing photos, for instance. Not everything one does with a computer can be done effectively with two hands on the keyboard.
I have one I built[1] out of a key switch tester and other spare parts. It saves me some awkward hand flexing and key stroke positions to reduce the chance of a repetitive stress injury.
I optimize my keyboard to programming. I already have a second layer for programming specific functions. I could add a third, but it's more mental load. It's not worth it.
Things that I'd put onto this:
* Mute/Unmute for Zoom
* Screenshot key
* Bind to a few key apps so I can switch between them quickly
* Media and volume keys (so I can use a smaller keyboard, but have these within react)
* A few emojis just for fun.
* I'd likely have a toggle so it could serve as a num pad
I removed caps lock and changed it to a layer modifier. Then I mapped symbols and arrows to the home row on the second layer (in fact, numbers too).
caps + a => !, caps + s => @, etc. Brackets and underscores are extremely convenient to have on the home row. I also have these mapped to convenient positions "=>" and "() => {}"
Finally, I have arrows mapped to u, i, o, and p. Really, really nice for hopping one or two characters without having to shift my hands too far.
Having your ten most important keystrokes right next to each other with a cute icon, especially useful if the actual hotkey involves a couple of meta keys, or if you have multi-key sequences you regularly need to hit.
Working in situations where a full keyboard doesn’t work, I did this with a remapped numpad when I was playing with using a Surface to let me get art done in Illustrator on the bus.
Any time you want some specific even with very high accuracy. Shortcut combos don't always work/trigger at the right time/in the right focus context. Or if you have a QMK with altogether too many virtual keys - I have like 60 x 7 layers = 420 possible two-thumb-one-finger events, I don't use them all but I still lose track. I'm thinking of building one of these for things like "jump focus to chat window and mute".
Also it saddens me we have a speaker mute keycode but no system-wide mute mic.
Not to dismiss someone's passion project, but every time I go into a thrift store or used electronics shop I see a couple of those usb numerical keypads for a few dollars (or buy one new for a $10 donation to the bezos fiefdom) - I assume there is software that could be used to re-route the number keypresses to run macros
Keyboard controllers are usually ROM (perhaps even fixed function, they certainly used to be) controllers, so these solutions are generally software macros, like the one you linked, which works for some things, but not others.
Right, but what's the difference? I.e. if the keyboard sends "9" but software captures that and sends out "cntrl-shift-3" it's the same outcome as if the keyboard sent "cntrl-shift-3" - is it not?
If we really want custom hardware involved, the most economical solution would probably be a USB repeater that did the re-interpreting in hardware.
Then keycode & keysym correspond to different characters (or whatever) and whether or not you get the desired outcome depends on the implementation of the software capturing it at any given time.
Took me a while to work out that the reason my pasted passwords would occasionally not work was the remapping of a couple of symbol keys. (I'm accustomed to a weird mashup of USA/UK layout, thanks mainly to Apple's non-standard 'UK' layout donating Americani?ms, but then useless prominent keys I swapped for something more helpful (backtick & pipe I think, off the top of my head, for things so useless that I literally never use them and don't know their names.))
This really only works in the most trivial of cases. There just isn't enough symbol-space information in a basic keyboard to be able to implement many QMK hallmarks like level shifting, chords, momentary hold effects, and taps.
I have thought about custom in-line hardware but that's honestly as complicated as QMK. Plus latency.
What I would love however is an inline monitor to see what keycodes I'm issuing. It gets...zany.
> What I would love however is an inline monitor to see what keycodes I'm issuing.
this is actually very simple to do with QMK if you have a board with an OLED display. it's also implemented in the default keymap for a bunch of the split ergo boards (Lily58 is one that has it)
Obvious problem: it depends on software. So this can't send privileged keystrokes, and doesn't work across operating systems. Some software intentionally ignores keyboard events sent by stuff like Autohotkey.
I went that route a while back and found a lot of weird little hitches. Keys that just wouldn’t remap and insisted on doing weird shit because of something set up in the factory ROM. Never mind the additional hassle of trying to get software to implement various layer swapping stuff if you want that - the QMK firmware has that built in.
Sure, you could just pull out the existing hardware and replace it. Sometimes it’s easier to just start from scratch though.
Another way of getting to similar results without hardware hacking is via using midi controllers combined with software to translate midi messages to keystrokes (and/or macros).
I was thinking of doing something like this, connected with a small screen, and UART send/receive (because it's simple) - so that I could use it just to keep ibuffer in Emacs up and help me move through buffers.
...still need to do that project. Just a small, single use device to make my Emacs life easier.
40 comments
[ 0.23 ms ] story [ 110 ms ] threadPS. Ye cannae be a 'bit unique' ;-)
Art Lebedev had the popularis keyboard which is basically what a stream deck keyboard would be like: https://www.artlebedev.com/optimus/popularis/
Also, Lebedev's Aux concept from 2008 is basically what the stream deck is.
I played with an Optimus Maximus once (Booz Allen Hamilton had one), and it was beautiful; however it wasn't particularly nice to type on.
[0] https://www.digikey.com/en/products/filter/programmable-disp...
It has something to do with the custom font. If I disable "font-family: AdobeSourceCodePro, monospace" the colors appear: https://imgur.com/a/mcUX5XD
I think basically what's happening here is that the font includes some SVG glyphs (for a bunch of emoji, no doubt). This causes us to render it via a "color font" codepath, and color fonts ignore the CSS color property as the glyphs are painted with their inherent colors instead.
But in this case many (most) of the glyphs do not actually have color versions, and so they simply paint as black. We need to be making the decision whether to paint "as a color font" (ignoring CSS color) on a per-glyph basis, not per-font-run, so that glyphs without inherent color don't just default to all-black all the time.
https://www.sparkfun.com/tutorials/337
[0] https://docs.splitkb.com/hc/en-us/articles/360011510839-Why-...
If you want to go even cheaper for a 4x4 macro pad, you can just hand-wire the thing and not buy a circuit board. I hand-wired a full keyboard and while it was not the quickest task in the world, it also wasn't that bad. Kind of relaxing. You also don't need to go overboard with mechanical supports for the keyswitches; I just 3D-printed a platform that the keyswitches slot into.
Basically, if you happen to have some magnet wire, a microcontroller, and some Cherry clones sitting around... you can make yourself a keyboard. (Diodes are nice, but you probably don't need n-key rollover on a macro pad.)
[1] https://twitter.com/Azxiana/status/1285402557846781952/photo...
I optimize my keyboard to programming. I already have a second layer for programming specific functions. I could add a third, but it's more mental load. It's not worth it.
Things that I'd put onto this:
* Mute/Unmute for Zoom * Screenshot key * Bind to a few key apps so I can switch between them quickly * Media and volume keys (so I can use a smaller keyboard, but have these within react) * A few emojis just for fun. * I'd likely have a toggle so it could serve as a num pad
caps + a => !, caps + s => @, etc. Brackets and underscores are extremely convenient to have on the home row. I also have these mapped to convenient positions "=>" and "() => {}"
Finally, I have arrows mapped to u, i, o, and p. Really, really nice for hopping one or two characters without having to shift my hands too far.
Working in situations where a full keyboard doesn’t work, I did this with a remapped numpad when I was playing with using a Surface to let me get art done in Illustrator on the bus.
Also it saddens me we have a speaker mute keycode but no system-wide mute mic.
edit - instructable for doing exactly that: https://www.instructables.com/Making-a-powerful-programmable...
If we really want custom hardware involved, the most economical solution would probably be a USB repeater that did the re-interpreting in hardware.
Took me a while to work out that the reason my pasted passwords would occasionally not work was the remapping of a couple of symbol keys. (I'm accustomed to a weird mashup of USA/UK layout, thanks mainly to Apple's non-standard 'UK' layout donating Americani?ms, but then useless prominent keys I swapped for something more helpful (backtick & pipe I think, off the top of my head, for things so useless that I literally never use them and don't know their names.))
I have thought about custom in-line hardware but that's honestly as complicated as QMK. Plus latency.
What I would love however is an inline monitor to see what keycodes I'm issuing. It gets...zany.
this is actually very simple to do with QMK if you have a board with an OLED display. it's also implemented in the default keymap for a bunch of the split ergo boards (Lily58 is one that has it)
Mac: Karabiner-Elements[3]
*nix: idk but should be plentiful ways
PC DOS: you’re probably out of luck
1: http://www.hidmacros.eu/
2: https://www.autohotkey.com/
3: https://karabiner-elements.pqrs.org/
Sure, you could just pull out the existing hardware and replace it. Sometimes it’s easier to just start from scratch though.
This lets you just say `SEND(MIC_MUTE, SS_LCTL(SS_LALT(SS_LSFT(SS_TAP(X_F10))));` or what have you.
I left off the final semicolon because it looks more natural to me.
Pro tip, as a professional C/C++ dev, for macros:
Wrap the body in a do-while loop, to force a semicolon after it’s called https://stackoverflow.com/questions/1067226/c-multi-line-mac...
In genereal, I think hiding control flow in macros is a bad idea.
Another way of getting to similar results without hardware hacking is via using midi controllers combined with software to translate midi messages to keystrokes (and/or macros).
...still need to do that project. Just a small, single use device to make my Emacs life easier.