Shawn McClelland

Experience Designer

Shortcut Manager

Product Design Lead 2018
Shortcut Manager

During our 2018 Hackweek event, a project was proposed to re-architect how hotkeys were handled in the Unity editor. The addition of new tools and platforms often led to hotkey conflicts, frustrating users and creating inconsistencies, especially when downloading tools from the Asset Store. I participated in the project as the sole designer, collaborating with four engineers.


Opportunity

While resolving hotkey conflicts was our primary focus, Hackweek provided a chance to innovate. We explored various solutions, such as implementing a new API to check availability, surfacing system-reserved hotkeys, and creating contexts for tool-specific keys. We also saw an opportunity to enhance the user experience with a more visual and interactive interface.


Solution

I proposed solving the conflict issue with a visually-oriented interface, dubbed the Shortcut Manager. This new interface would resemble a keyboard layout, visualizing assigned, unassigned, system-reserved, and global hotkeys. It would be interactive, responding to modifier keys and supporting drag-and-drop, exposing the new architecture and API through it.

Layout

Initial sketch of what would become Shortcut Manager

I began by sketching ideas in a notebook, then progressed to Balsamiq for initial wireframes to understand different states, interaction designs, and interface structures. Balsamiq’s rapid iteration capabilities were invaluable.

Initial concepts and callouts in Balsamiq

With the information architecture and main concepts mapped out, I transitioned to Sketch for visual design. Unity has Professional (dark) and Personal (light) themes, so I designed a palette to balance both, ensuring accessibility, and alignment with the Unity brand colours1.

The Shortcut Manager interface

Interactions

A major focus was the interaction design. I aimed to design an interface that felt like a real keyboard, where pressing a modifier key like Shift or Control would change the interface to visualize the keyboard’s state with those modifiers. The design allowed users to either press the modifier keys on their keyboard or click them to make them ‘sticky’ and assign or unassign keys. This approach mitigated the issue of complex modifier combinations requiring cumbersome finger gymnastics, making the process more user-friendly.

Additionally, users can drag and drop commands from the command list onto the keyboard. This feature saves clicks and provides clear, actionable feedback when a binding is assigned to a key

Shortcut Manager interaction designs

To further enhance usability, I designed a context menu system. Instead of searching through menus, users can right-click on a key in the interface to reset it to default or remove the shortcut. This action can also be performed from the command list, accommodating users who prefer working that way.

Right-click context menu in Unity Shortcut Manager

Error Handling

Conflict Detection:

When a user creates a binding, if the engine detects that the binding is already taken, a dialog appears informing users of the conflict. The primary option is to reassign the binding, aiming to prevent users from creating conflicts. A secondary option allows users to create the conflict if no better hotkey combinations are available or if the context is specific to a particular tool.

Conflict dialog when creating a binding

Multiple Conflict Management:

When users work within the editor and press a key combination that results in multiple conflicts, a dialog appears to inform them and guide the editor’s response. This dialog lists all known conflicts, providing a primary action for users to perform the intended action with the binding. Alternatively, users can resolve the conflict by opening the Shortcut Manager to remove conflicting bindings or change the binding of the desired command. Users can also enable ‘Rebind to selected command’, ensuring the selected command is always executed by the binding, which removes the binding from other commands when the ‘Rebind to selected’ option is checked.

Multiple conflicts detected


Impact

The Shortcut Manager launched with Unity 2019.1, coinciding with a comprehensive editor redesign. Users responded positively to the new visual interface and the revamped hotkey API, praising the intuitive and accessible design. Asset Store developers found it significantly easier to create, query, and assign shortcuts, which led to a notable reduction in support tickets related to hotkey clashes.

While the launch was largely successful, it did reveal certain limitations. Users expressed the need for the ability to bind to mouse buttons2 and map hotkeys for devices such as Wacom tablets. These insights were invaluable in guiding the future direction and additional architectural decisions needed to enhance the Shortcut Manager’s functionality. Additionally, a potential design enhancement worth exploring is representing different keyboard layouts based on user preferences or languages.


  1. Late in the development process we decided to change the global key from the red-pink to a more muted salmon colour. There were concerns that the red may drift too close to the error colour in Unity. The salmon version is what we shipped and is visible in the interaction gifs. ↩︎

  2. William Reynish and Will Goldstone tackled this in a subsequent Unity release. It seems both visual iterations were removed in the latest version of Unity though ¯\_(ツ)_/¯↩︎