technomancy / atreus-firmware

Firmware for the Atreus keyboard
GNU General Public License v3.0
92 stars 63 forks source link

Double-duty keys #2

Closed technomancy closed 4 years ago

technomancy commented 10 years ago

Should be able to bind a key to a modifier when held but an insertion when pressed/released on its own.

dbordak commented 9 years ago

Excuse me for posting on a closed issue like this, but does this mean you can emulate the behavior of xcape on the firmware level? If so, this is really something you should 'advertise' a bit more, it very much interests me (I don't think I'd have as much of an issue with the limited number of thumb keys if I could bind, say, Ctrl/Esc and Shift/Enter).

technomancy commented 9 years ago

I implemented this for the fn key, and it turned out to be a pretty terrible idea there, but I think it could work better for the other modifiers. The way I had it, if you tapped fn then it would change to layer 2, but if you held it down it would switch to layer 1, and the problem is that you can't tell by looking at the board which state it's currently it. But the more typical "ctrl acts as enter when tapped" could be quite useful; I will reopen this and see if I can get that implemented.

dougcole commented 9 years ago

Is anyone actively working on this? If not I'll take a stab at it...

technomancy commented 9 years ago

I don't have plans to do this any time soon.

I did have another idea to help free up some space; that's to hold down fn+shift together to let you hit L2 keys only while they're held down. This would make it a bit easier to use arrow keys since you don't have to worry about the state of the board at all. Just a thought.

dougcole commented 9 years ago

@technomancy that'd be cool too!

dougcole commented 9 years ago

I just finished up a very non-general hack to support dual use keys here: https://github.com/dougcole/atreus-firmware/blob/dual_use_keys/atreus.c#L190-L222

I'm going to use it for a while and see how I like it and if it works well I'll clean it up and submit it here as a pull request.

technomancy commented 9 years ago

Sounds great; let us know how it goes!

dougcole commented 9 years ago

just as an update, my code above is stuck hitting weird timing issues trying to get the keyboard to never return the secondary value after using a key as a modifier. It works perfectly unless you hold down the modifier too long after finishing a key combo at which point it also returns the secondary value.

I switched to using the tmk firmware, so probably won't be investing more time in this. I'll leave my code up if someone else is interested and wants to try and fix my bugs :smile:.

technomancy commented 9 years ago

Yeah, I'm starting to think focusing on TMK is a better use of time. Right now it's pretty gnarly, but I'm working to make it a bit nicer to work with.

dougcole commented 9 years ago

yeah, the code is a little crazy, but the documentation is good and it does everything I want!

technomancy commented 4 years ago

Closing this as other firmwares are clear improvements over this one.