Can't assign hotkey when using non english keyboard layout

I am using Croatian keyboard layout (HR) and noticed the Ctrl+/ shortcut (Track Corner Mode) doesn’t work. Then I tried to define some hotkeys and when I enter Ctrl+I the error is:

'Ctrl+Tab' is a reserved hotkey in KiCad and cannot be assigned.

Seems as the only way to make hotkeys that use Ctrl key working is by changing the keyboard layout from HR to ENG.

Application: KiCad PCB Editor (64-bit)

Version: (6.0.11), release build

Libraries:
	wxWidgets 3.2.1
	libcurl/7.83.1-DEV Schannel zlib/1.2.13

Platform: Windows 10 (build 19045), 64-bit edition, 64 bit, Little endian, wxMSW

Build Info:
	Date: Jan 26 2023 07:02:30
	wxWidgets: 3.2.1 (wchar_t,wx containers)
	Boost: 1.80.0
	OCC: 7.6.2
	Curl: 7.83.1-DEV
	ngspice: 38
	Compiler: Visual C++ 1934 without C++ ABI

Build settings:
	KICAD_USE_OCC=ON
	KICAD_SPICE=ON

You could try different “CTRL”-combinations, some work (CTRL+K works on german keyboard). Hotkey assignment seems to be a harder task than one thinks.
There are already some gitlab-issues open, for instance Kicad5.99-> some HotKeys not allowed on international keyboards (#6645) · Issues · KiCad / KiCad Source Code / kicad · GitLab. Or use the gitlab-search with string “hotkey”. So no need to file a new bugreport, but you could regularly look if something improves.

additional unwanted info: If you ever update to v7/v8 make sure to inspect the Preferences–>hotkey section → there where some new useful ones added.

1 Like

So the situation is “as expected” :slight_smile: I though there is something that could be done to make the shortcuts work even when using non ENG keyboard.

I could enable “per application window” keyboard layout in Windows and then change the keyboard layout from HR to ENG for KiCad only but I usually want to change the keyboard layout for all windows in use.

I know it is not easy to make shortcuts working with different keyboard layouts but I wouldn’t expect there would be a problem with key combination such as Ctrl+i because I is just a normal key accessed without key modifiers. I understand why / (which is Shift+7 on my keyboard) or similar shortcut might not work but I have no idea why Ctrl+i would be interpreted as Ctrl+TAB.

Visual Studio Code has shortcuts which does not depend on keyboard layout in use, it would be nice if something similar could be added to KiCad:

Keyboard layout-independent bindings

Using scan codes, it is possible to define keybindings which do not change with the change of the keyboard layout. For example:

{ “key”: “cmd+[Slash]”, “command”: “editor.action.commentLine”, “when”: “editorTextFocus” }

https://code.visualstudio.com/docs/getstarted/keybindings#_keyboard-layoutindependent-bindings

Thanks for the tip, I’ll sure examine the new shortcuts after updating to newer version.

Ctrl-I is tab (character 9).

Yes indeed but all Ctrl+[A to M] key combinations are some control characters too and we still can, in most of the programs, use them as shortucts.

I cetainly can assign tab as a hotkey. In the PCB editor this is assigned to skip. Normally one doesn’t type Ctrl-I (tab), just as one normally doesn’t type Ctrl-M (return) since they are already one key characters. However you are right that Ctrl-M can be assigned so why not Ctrl-I?

Ctrl+H and Backspace are the same codes too but Backspace key and Ctrl+H could in KiCad still be used as two different hotkeys. Ctrl+I works as a shortcut for Italic in many editors (and even here in this very form) but it doesn’t work in KiCad.

:person_shrugging: Let us know what you find out.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.