Customizable Keyboards

For all the funky key-combo ideas like keycombos, tap-dancing and so on I strongly suggest looking into keyboards that can be fully customized with say QMK firmware.

You’ll be able to do all these types of in pretty much exactly as you want it. Keys that function as one-shot keys, keys that do combos (LP), do tap-dancing (once L → Line, twice L → PolyLine), etc.

And it can be as close as to what you want without having to rely on the software doing it right (because it can’t - too many people with different ways to use that software).

(And as an added bonus programming that stuff into your keyboard meas you can bring the keyboard along and you’ll have all the customizations with you regardless of what computer you use Rhino on)

Anyway, just a thought after reading this topic from a keyboard nerd.

6 Likes

I agree that is an excellent solution for those willing to use an external keyboard. I personally never plug an extra keyboard into my laptop.

1 Like

Can’t wait to learn which customizable keyboard enables these tools:

:smiley::heart:

Hello @nathanletwory
I thought about it a lot, but I never understood how to do it and what to buy exactly.
Do you know a “tutorial for dummies”?
jmv

which is also partly the reason that I brought up configurable keyboards / input devices.

Some manufacturers such as ZSA, MoErgo or Dygma offer GUIs that make it so that you don’t really have to do any programming. Some are based on QMK/ZMK, others use proprietary stuff. But programming this all on your keyboard means switching layers, which can be cumbersome if you also use Grasshopper, where you need to type.

1 Like

It is all a matter of configuring the keyboard with that in mind - make the switching as easy as possible.

1 Like

You just have to keep in mind that you do need to switch or you may type gibberish. :wink:

Autohotkey also exists. Tap vs. hold could easily be wired up. I used that for everything before I found the Swiftpoint with mouse gestures.

It’s also easier to set up on multiple machines than needing the same hardware with the same configuration at each station.

1 Like

Another solution is GitHub - kmonad/kmonad: An advanced keyboard manager

1 Like

Heh, keyboard monad written in Haskell. I love it! And I will use it for general KB re-configs, like with capslock.

The downside is that it can’t detect the current application. They suggest some workarounds, but auto-switching keymaps based on the active application with AutoHotkey is quite seamless. I love it for getting around some of Rhino’s quirks:

; this is a comment
; Rhino won't pop up a toolbar if another toolbar has already popped up. I 
; use half a dozen 'instant alias' toolbars, and it was frustrating to open 
; the wrong one accidentally.  So, I overrode Rhino's default behavior with 
; one that suited me better.

; capture all middle mouse button presses
MButton::
	; put the current window ID into 'Active_ID'
	WinGet, Active_ID, ID, A
	; put the process name for 'Active_ID' into 'Active_Process'
    WinGet, Active_Process, ProcessName, ahk_id %Active_ID%
			
	if (Active_Process = "rhino.exe") 	
		{
			; check to see if the mouse is hovering over a pop-up toolbar
			MouseGetPos, , , , mouseClass
			StringLeft, mouseClassTrimmed, mouseClass, 14
			
			; the class name for a pop-up toolbar in Rhino5
			if (mouseClassTrimmed = "WindowsForms10") 
				; press the escape key to close the current pop-up
				Send {Esc}
			; pop-up my display toolbar by typing 'PopupToolbar',
			; followed by the toolbar name, 'emDisplay'
			Send PopupToolbar{Enter}emDisplay{Enter}
			; exit the command
			return
		}
	; Otherwise, passthrough the middle mouse button like normal 
	Send {MButton}
	return
	

I split this out from Rhino 9 Feature : Instant Aliases (hot keys) as it was getting lost in that post and there are good suggestions in here.

2 Likes

In that case, I’ll repost this link to the customizable keyboards syllabus/ guide, which contains all the lingo and all things ergonomics to consider: https://docs.google.com/document/d/1Ic-h8UxGe5-Q0bPuYNgE3NoWiI8ekeadvSQ5YysrwII/edit

1 Like