One windows 11 pressing CTRL+SHIFT+ALT+ nn prints special characters, for example: § or Æ
When such keyboard combination used to bind a command in Rhino, it executes the command just fine, however it also prints the character in command prompt.
Hi Vano,
Had to google this one. Are you using a german keyboard layout by chance? or something similar..
On non-US keyboard layouts (German, French, Spanish, etc.), Windows treats Ctrl+Alt as AltGr. If a Rhino shortcut uses a Ctrl+Alt+<key> combo, Windows may intercept it before Rhino does, inserting a special character (e.g. @, €, {) into the command line instead of triggering the alias.
Potential Workarounds
- Avoid
Ctrl+Alt+<key>shortcuts in Rhino’s keyboard shortcuts/aliases. UseCtrl+Shift+<key>orAlt+Shift+<key>combos instead, which don’t conflict withAltGr. - Reassign the conflicting alias in Rhino Options > Aliases or Options > Keyboard to a non-conflicting key combination.
- Temporarily switch to a US keyboard layout in Windows if they need to use those specific shortcuts.
Indeed, I use custom based on US-International keyboard. However on another computer with the same keyboard layout, I have no such issue with another software that use CTR+ALT+SHIFT+<key> hotkeys (although it’s registered as global hotkey)
So, perhaps windows treat global hotkeys differently than in-application only.
The reason why I’m using these combinations is because they are available and easier to remember like L = line, S = spline, C = circle, etc. and in stupid razer synapsis which doesn’t allow adding labels to commands on buttons it easier to understand what button does what.
Even if windows is intercepting it before Rhino, it still should not capture character if shortcut key was pressed. In autoit script and in .NET plugin I have no issues suppress the default behavior.
The plugin installs WH_GETMESSAGE hook on Rhino’s main UI thread and checks If a key combination matched any of the set shortcuts, then it suppresses the translated character.
Windows interprets Ctrl+Alt as AltGr and may subsequently generate a WM_CHAR, WM_SYSCHAR, or dead-character message, but plugin replaces that character message with WM_NULL before Rhino’s command line receives it.
It is definitely “fixable”, it’s probably was overlooked and I hope devs will look into it.