Bug 506164

Summary: Alt + key keyboard shortcuts don't work, captured by qt menus probably.
Product: [Applications] krita Reporter: Kaspars V <kaspars.vandans>
Component: GeneralAssignee: Krita Bugs <krita-bugs-null>
Status: REOPENED ---    
Severity: wishlist CC: halla
Priority: NOR    
Version First Reported In: 5.0.0   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Kaspars V 2025-06-25 13:15:15 UTC
SUMMARY
Alt + key keyboard shortcuts are extremely valuable for a fast workflow with low fingerstrain coefficients. Settign them in the settings is possible, however, many of them are overriden by, I suspect, Qt integrated shortcuts, and so ignored. There is no method to disable them without the code being changed, most likely, see https://forum.qt.io/topic/126482/disable-alt-menu-shortcuts-systemwide/6 .


STEPS TO REPRODUCE
1. Settings -> Configure Krita -> Keyboard shortcuts
2. Set some action to work by pressing left alt + v (many other simple alt+char combinations work)
3. Press OK
4. Try to use the action - instead, 

OBSERVED RESULT
The View top-bar menu will open (with LAlt + V) (or nothing will happen, or some other top-bar menu)
The terminal prints out: QAction::event: Ambiguous shortcut overload: Alt+V
EXPECTED RESULT
The shortcut that was set in the "Keyboard Shortcuts" settings should execute.

SOFTWARE/OS VERSIONS
Void linux, kernel 6.12.28_1
Krita 5.0.0 , appimage I believe
Krita 5.2.9
^^ tried both of them, same issue.
Comment 1 Halla Rempt 2025-06-25 14:09:01 UTC
This is actually a standard for gui programs that's been in place since the eighties, I don't think we should change that. We have to make do with what our platform provides, though we could provide an option since Qt makes it possible to disable the menu accelerators. It definitely shouldn't be the default.
Comment 2 Halla Rempt 2025-07-08 09:46:13 UTC
Git commit c80164e76464a4fe00cce59ad57f4e65a4ca83e2 by Halla Rempt.
Committed on 08/07/2025 at 09:45.
Pushed by rempt into branch 'master'.

Add a hidden option to hide alt- accelerators

This is off by default and hidden because we shouldn't expose
options that break user interface conventions in our user
interface. People who do want to break menu's can edit the kritarc
file.

Add

HideAccelerators=true

To the kritarc file to hide this.

M  +5    -0    libs/ui/KisMainWindow.cpp

https://invent.kde.org/graphics/krita/-/commit/c80164e76464a4fe00cce59ad57f4e65a4ca83e2
Comment 3 Halla Rempt 2025-07-08 10:01:10 UTC
Sorry, that simply didn't work. Calling qt_set_sequence_auto_mnemonic didn't do anything
Comment 4 Kaspars V 2025-07-09 16:03:50 UTC
(In reply to Halla Rempt from comment #3)
> Sorry, that simply didn't work. Calling qt_set_sequence_auto_mnemonic didn't
> do anything

Thanks for your attention.

Just to clarify, the commit is ineffective?

I agree it should not be a default, if it is a convention. 
I do, however, think that having the option in the default menu would reduce a lot of confusion - for a very long time (months), I just thought it's a bug in Krita and some actions are wrong.

But as long as there is some potential way to do it, it'd be amazing.

For anyone else with this problem, I have found a somewhat tedious temporary workaround. Based on this thread:
https://github.com/lxqt/qterminal/issues/485
just disabling the menu-bar should be enough. Unfortunately, it seems disabling the menu-bar without canvas-only-mode can only be done by scripting, but at least there are some ways:
https://krita-artists.org/t/hide-top-menu-bar/11720/2

It's worth mentioning that, in the qterminal thread mentioned above:
"
@agaida

Very nice finding! I didn't know about it. qt_set_sequence_auto_mnemonic works (I tested it with FeatherPad).

But it can't be toggled on the fly; the app should be restarted.
"
So it works for someone.
Comment 5 Kaspars V 2025-07-09 16:20:59 UTC
Full workaround for someone else like me:

Tools > Scripts > Scripter

from krita import *

if Krita.instance().activeWindow().qwindow().menuBar().isVisible():
    Krita.instance().activeWindow().qwindow().menuBar().setVisible(False)
else:
    Krita.instance().activeWindow().qwindow().menuBar().setVisible(True)

^ Write this and save it somewhere. Then
Tools > Scripts > Ten Scripts
Assign the script to one of them, and ta-da. Easy way to toggle the top menu.
Comment 6 Halla Rempt 2025-07-10 08:07:57 UTC
Yes, I restarted Krita, but no matter what I set the config to, it didn't work. It's possible I called the function in the wrong place, but even moving it to main.cc didn't work.