Wish: adding keyboard shortcuts in Grasshopper 2

Hi,

First, I’d like to thank David and the team for the stunning work on Grasshopper!

I’m wondering if it would be possibile to allow users to define keyboard shortcuts for common operations, which in my opinion could speed up and streamline the workflow significantly.

For example:

  • toggle the name/icon display mode for the selected component
  • Renaming the selected component
  • Applying operations such as a flattening, grafting, reparametrizing to the selected components (this would work well on single components without multiple inputs/outputs)
  • Disconnecting all inputs from a selected component
  • Aligning selected components

Ideally these could be customizable shortcuts, but I believe that just exposing these functions on the menu could be enough, as then it would be possibile to add custom shortcuts using some third party software.

This idea could also be expanded by adding functions like:

  • being able to define shortcuts in addition to aliases
  • automatically connect two selected components (by drawing a wire from the top free output of the component on the left to the top free input of the component on the right)

Right now I’m simulating a few of these functions with some scripts and macros but it would be great to have (some of) them natively.

Thank you and - again - congratulations!

Marco

2 Likes

You mean only shortcuts that start with Ctrl or Shift? Then yes, customisable short-cuts will at some point make an appearance.

However regular key-strokes (like, just a) would conflict with the Rhino command line. That’s not to say I can’t add that, but if you just start typing in Grasshopper, one very clear thing needs to happen, otherwise it would be incredibly confusing. This one thing could be:

  1. Send the key-stroke to the Rhino command line (like GH1 does)
  2. Send the key-stroke to the component search box.
  3. Run an action linked to that key.

The way I would expect this to work is to treat Grasshopper as a context on its own. So, if Grasshopper is active, it does not send inputs to Rhino’s command line. So you could, for instance use P to add a Point component, or map s to search for components as opposed/ in addition to Spacebar. Or maybe 1, 2, 3 to change display modes, etc.

So basically 3, which can enable 2 as well with an additional keystroke.

Many programs including Blender have this for all their editors and its actually rather intuitive. You click on the window you want to work on and send inputs to that context. This would also mean no more accidental Rhino command activations :innocent:

But also no more intentional command invokes. But yeah I get it, it can be a really efficient way to use the program. First I’ll need to add some sort of scripting language to G2 though, otherwise you can’t specify what a specific key should do. So… this will not happen any time soon.

In the mean time, logged under RH-68139.

I can imagine that if you want to send a command to Rhino, you could map a hotkey to that as well. Let’s say: R [arbitrary Rhino command] Enter. :wink:
Some may prefer Tab, others spacebar, it would be really flexible imo.

E: Maybe this could even be a preference for people who like the old behaviour.

1 Like

Thanks for the quick reply, David.

Great to hear!

Personally I’d like option 2 (and - optionally - 3).

Option 3 without option 2 would not be optimal in my opinion, as given the number of components used, I think it would be much better to use aliases rather than single-letter shortcuts.

This allows, in case of commands with the same initial, to have easy-to-remember aliases rather than different shortcuts and it’s one of the reason why I love Rhino command line: I have tons of custom aliases and with a couple of letters you can recall commands with similar names (for example E-Explode, EC-extrude curve, ES-Extrude Surface, etc.) which would be quite challenging with conventional shortcuts - you either run out of modifier keys or fail to remember which modifier combination is associated with which command…

If it would be possible for now to have an option for just typing in the search box that would be really awesome!

PS

By the way, recallling the search box with the spacebar is not working at the moment.

Another possibility to consider:

  1. In Revit, pressing a single key requires spacebar to activate
    But, you can chain multiple alpha numerical keys, so
    W + Spacebar = Move command
    W + A = Wall command
  2. In Krita, you can chain key sequences as well, but, if you assign a specific key to be a single key hotkey, then it has the following effect:
    W = Move command
    A = not assigned
    W + A = Move command + no-action
    A + W = Maximise view

I think that Krita’s approach is nice, because you can use single key shortcuts, however, it can become difficult to track which sequence does what. In that case, Grasshopper would need to check new hotkeys and in case they activate something else along the way, prompt an error message.

Sounds similar to Rhino’s command line, which seems to be more flexible because it also allows to have 3-letter aliases / or to type full commands.

This looks interesting but maybe a bit confusing, or at least more time consuming to learn. For me, typing directly in the search box would already be a big time saver.
A possible improvement could be the ability to accept the entry in the search box with another key in addition to the Enter key (like Rhino’s command line can accept the spacebar): in Grasshopper I often type just with my left end and reaching for the enter key each time is not very convenient.

Since the spacebar is actually used in the search box, the tab key could be used like an additional enter key.

(As a matter of fact I’m now testing this - I have remapped the tab key to enter with AutoHotKey)

This is why I also mentioned using any of the asdf keys for initiating a search.

If you use single hotkeys, you could do things like W for move, so you select with the mouse, press W to move the selection, click to confirm (so no click dragging). This may help people with RSI related issues.

And, single hotkeys could be used for group/ panel presets (e.g. change colour) or wiredisplay with the press of a button. So for people like me who like to colour their input parameters in a certain standard, the single button activation is really useful. You could also use them for duplicating objects, connecting/ severing wires (like Blender’s Node Wrangler). Enable// disable, show/ hide. There are just a lot of actions you undertake that would be much quicker with single button activation.

Also, you should be able to search by dragging the wire:

Yes, but without the spacebar for multiple key inputs, which sounds like a small feat, but actually saves a lot of inputs and going back and forth across the keyboard.

It’s not that difficult, you just have to remember/ know which keys you have already pre-assigned. The easiest is a group of adjacent keys, thereafter it’s just like an alias.

2 Likes

Yes, I use this on Blender and once you get used to it it’s very fast.

Again, I agree with you on this. I find Node Wrangler a very good example of what could be done to improve the UI - the quick connection between nodes is another very useful function.

I agree with you - the only “problem” that I see is that this would prevent from typing directly in the search box. So you’d have single-button activations but you’d need to press the spacebar each time you want to enter a new component (which in my case would probably be more common).

A possible solution would be the introduction of the search from wire drag that you showed - as a matter of fact there is a Grasshopper add-on that already does something similar (but the search is not that immediate): https://www.food4rhino.com/en/app/quick-connection

Overall, I just hope that some of these functionalities will be implemented soon in some form, because they could really be a time saver - and would make the whole process more streamlined and enjoyable.

1 Like

Yes I hope so too. GH2 is really exciting, now we can finally expect some advances in UI interaction!