my new keyboard layout has “caps word” functionality (think caps lock but just for a single word) and my god traditional keyboard manufacturers need to get with the times
where has this been all my life
my new keyboard layout has “caps word” functionality (think caps lock but just for a single word) and my god traditional keyboard manufacturers need to get with the times
where has this been all my life
@molly0xfff That's how i've come to look at the kinesis. i felt it was expensive at the time. But it's 6 years in and still working like new. Plus i can pull it apart for maintenance and cleaning. Cherry keys that im pretty sure are replaceable (haven't had to find out). So i expect it to last a long time.
Some of us spend a LOT of time at a keyboard. a good one is almost priceless.
@Meyerweb @molly0xfff @gangrif
I use it via that QMK feature on my own Keychron V4, mapped to double-tapping shift.
Looks like you can use the QK_CAPS_WORD_TOGGLE keycope or CW_TOGG for short to toggle it with any key/combo you like, so shift+caps should be possible.
Funny that our phones now use a virtual shift key that locks only until the next key is pressed.
Your classmate may have anticipated this development... or caused it.
Apparently typing this way is not that uncommon?? I ran across a question on superuser that was someone typing this way and having trouble because caps lock doesn't release fast enough and they keep getting the second letter of a word capitalized too. 🤯
(Also a whole section in the xkbdcmp docs targeted at the caps lock release behavior for such typists!)
@molly0xfff that's...really darn clever.
Is that a specific key, or do you have that on a layer or chord or something? Like how does it know to go into "caps until I hit space" mode?
I keep forgetting I set this up when I designed my layout in QMK! I set it to double-tapping shift. It would be particularly useful if I wrote C code frequently, I suppose, since it also converts hyphens to underscores for writing long uppercase variables.
Oh, I just realized—environment variables in the shell! I use those all the time and am not taking full advantage of the caps word available to me!
On my Mac I have CAPS set to generate the Fn/Globe action.
I modified the FreeBSD keyboard driver to do typewriter-style capslock, so you had to hit shift-caps to enable caps-lock and either shift or caps would turn it off. Unfortunately this was post-1.1.5 but before they completely re-rebased on 4.4BSD in 2.0 so I never released it.
On mechanical keyboards I used to put a "louder" switch under capslock so I notice if I've hit it.
@luc0x61 i’m not sure it does. the firmware modifies the keyboard behavior and the HID keycodes it sends to the OS. the OS still has the opportunity to interpret the HID keycodes.
for example i change some behavior on the keyboard (caps word, other macros) and some on my OS (remapping ctrl <-> cmd on OSX). this means i can swap the keyboard between operating systems and enjoy the same functionality
https://github.com/zmkfirmware/zmk/blob/main/app/src/behaviors/behavior_caps_word.c
Looks like it sends caps-lock on caps lock and sends it again when you hit the end of the word, and depends on the capslock state on the computer behaving predictably (eg, you haven't mapped CAPS to GLOBE on Mac and don't have any other HID devices that could mess with it).
The USB HID protocols (there are two common ones, one that sends an array of up to 6 keys plus a bitmap for mods, and one that sends a bitmap for the whole keyboard) still just send keycodes. QMK has a hack to send Unicode by doing some OS recognition at boot and effectively defining macros that (for example) send ALT-KEYPAD-N-N-N on Windows. It's awful and I don't recommend it. I don't know what if anything ZMK does.
When I refer to capslock I mean the keycode.
@molly0xfff As in, releases on space... and some punctuation? (Useful to at least have underscore as a WORD-character for tech stuff)
I don't use caps-lock – I have it mapped to backspace, and use that _all_ the time – but I'd definitely try a caps-word binding!