telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.23k stars 5.2k forks source link

GUI: Ctrl+Shift+ hotkeys not working with non-English keymap #4977

Closed v0s closed 4 months ago

v0s commented 6 years ago

screen3

Steps to reproduce

  1. Type some text in the chat box.
  2. When EN keymap is active:
    • press Ctrl+Z — the text is undone;
    • press Ctrl+Shift+Z — the text is redone.
  3. Switch to RU keymap:
    • press Ctrl+Z — text is undone, works ok;
    • press Ctrl+Shift+Z — instead of a redo, capital Z gets entered (even despite keymap being RU).

Same applies to Ctrl+Shift+M hotkey for monospace formatting.

Expected behaviour

Even with RU keymap, Ctrl+Shift+Z should redo, and Ctrl+Shift+M should make text monospace.

Actual behaviour

With RU keymap, Ctrl+Shift+ hotkeys do not do the actions, instead they type corresponding capital English letter.

Configuration

Operating system: Windows 10 1709 Version of Telegram Desktop: 1.3.10 Used theme: default

stale[bot] commented 4 years ago

Hey there!

This issue will be automatically closed in 7 days if there would be no activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

v0s commented 4 years ago

Still there, still annoying

stale[bot] commented 3 years ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

v0s commented 3 years ago

Still there, still annoying.

The behavior changed a bit: now when pressing Ctrl+Shift+Z with RU keymap active, nothing happens (previously uppercase latin Z was typed). Less destructive since it doesn't overwrite undo/redo history, but still hotkey doesn't work as intended

ghost commented 3 years ago

Same applies to Ctrl+Shift+M hotkey for monospace formatting.

Maybe the "shortcuts-default.json" and "shortcuts-custom.json" could be parsed & mapped internally according to the "key position of M" in the EN layout, and not "M character key" itself?

Also, I can't find the commands for changing the formatting shortcuts in "shortcuts-custom.json". I checked here.

ilya-fedin commented 3 years ago

I'm mostly working on Linux code, but since no one looks into this and there's someone who doesn't allow stale-bot to close the issue, I tried to reproduce it and... I can't.

https://user-images.githubusercontent.com/17829319/135739183-dd24db01-186b-4a0f-9295-0c66ef07f188.mp4

This is a VM with Russian Windows 10 1809

grandsilence commented 2 years ago

Windows 10 1803, I have that issue on the latest Telegram Beta v3.5.1 (04.02.22).

Function Hot Key English Layout Russian Layout
Bold CTRL+B
Italic CTRL+I
Underline CTRL+U
Strikethrough CTRL+SHIFT+X
Monospaced CTRL+SHIFT+M
Hidden/Private CTRL+SHIFT+P
Add URL Link CTRL+K
Remove formatting CTRL+SHIFT+N

So all CTRL+SHIFT shortcuts is not working for me.

ilya-fedin commented 2 years ago

@grandsilence maybe it is a good reason to update to 1809?

grandsilence commented 2 years ago

@ilya-fedin unfortunately 1803 is the last Windows version with low latency. It's a lot faster on old hardware. 1809 has 10MHz timer, absolutely no reasons to use 1809, 21h1 faster but slower than 1803.

v0s commented 2 years ago

@grandsilence maybe it is a good reason to update to 1809?

I don't think it's relevant, i'm on 21H2 and Ctrl-Shift hotkeys are not working with Russian layout on the latest Telegram Desktop

ilya-fedin commented 2 years ago

@v0s what's relevant then? I can't reproduce the problem, Ctrl+Shift hotkeys work just fine on my machine with Russian layout

v0s commented 2 years ago

@ilya-fedin How can I help in reproducing? I can think of making you a Windows VM in which the hotkeys don't work :-)

grandsilence commented 2 years ago

@ilya-fedin I can make test environments on 1803, 1909, 2004, 21h1, 21h2 and provide VirtualBox image. Let me know if you need it.

ilya-fedin commented 2 years ago

@v0s yeah, such a VM would be great. I have VirtualBox and libvirt. Although, I would need to make free space somehow apparently 😅

v0s commented 2 years ago

@ilya-fedin what's the best way to provide a functional instance without giving you access to my Telegram account? :-) E.g. is there a way to maybe register an account on test server, not tied to a phone number? 🤔

grandsilence commented 2 years ago

@ilya-fedin About 8Gb will be enough actually. 1803 is a tiny OS (especially without Metro Apps).

grandsilence commented 2 years ago

@v0s I have an empty account and I can give access to it. Or just use any SMS activation service.

v0s commented 2 years ago

@grandsilence yes please! you can pm me at t.me/mrvos

ilya-fedin commented 2 years ago

@v0s you can remove %APPDATA%\Telegram Desktop after ensuring the bug is reproducible

ilya-fedin commented 2 years ago

I will download a new copy of tdesktop anyway most likely. So you can test with a portable copy and then remove it.

Aokromes commented 2 years ago

@ilya-fedin I can make test environments on 1803, 1909, 2004, 21h1, 21h2 and provide VirtualBox image. Let me know if you need it.

well, i don't think we need to care about windows under 1909 (all of them unsuported) (and on 3 months under 20h2)

v0s commented 2 years ago

@ilya-fedin @Aokromes so, i've dug a little further, and got the following:

  1. On the default Russian layout, Ctrl+Shift+ hotkeys actually do work. Sorry for confusion
  2. I use the Typography layout (https://ilyabirman.ru/typography-layout/) that allows typing symbols like ±—↑↓ easily, and the hotkey work on its English variant, but do not work on Russian
  3. I have also found a standard layout that also breaks Ctrl+Shift+ hotkeys: "Ukrainian (Enhanced)" / Украинская (Расширенная)
  4. At the same time, regular Ukrainian layout does have them working, despite having AltGr hotkeys like the Typography one.

So, it looks like the reason is somewhere deeper, here is the VirtualBox VM with Windows 21H2 (most default settings) and Telegram Desktop with Typography layout and @grandsilence's account (thanks!). https://big.vos.uz/win10vm.7z (3.7 GB)

apt -y install aria2; aria2c -x5 https://big.vos.uz/win10vm.7z for fast multi-threaded download

Will you be able to take a look and trace it down?

ilya-fedin commented 2 years ago

I can reproduce with Ukrainian (Enhanced) even with my Windows. This seem to be a Qt bug as it's Qt who handles the keyboard :(

v0s commented 2 years ago

@ilya-fedin got it, can you maybe specify a little bit what exactly seems to be the bug in Qt? So that it can be reported to them instead

ilya-fedin commented 2 years ago

can you maybe specify a little bit what exactly seems to be the bug in Qt?

This is handled with such a check in a QTextEdit::keyPressEvent override:

    const auto matches = [&](const QKeySequence &sequence) {
        const auto searchKey = (e->modifiers() | e->key())
            & ~(Qt::KeypadModifier | Qt::GroupSwitchModifier);
        const auto events = QKeySequence(searchKey);
        return sequence.matches(events) == QKeySequence::ExactMatch;
    };
    if (matches(QKeySequence("ctrl+shift+m")) {
        ...
    }

And it doesn't work with these layouts for some reason

github-actions[bot] commented 2 years ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

v0s commented 2 years ago

Still there, still annoying

ilya-fedin commented 2 years ago

This issue is now a part of #25126

github-actions[bot] commented 1 year ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

v0s commented 1 year ago

Still there, still annoying

grandsilence commented 1 year ago

I hope this problem will be fixed someday…

dragonfrugal commented 1 year ago

screen3

Steps to reproduce

  1. Type some text in the chat box.
  2. When EN keymap is active:
  • press Ctrl+Z — the text is undone;
  • press Ctrl+Shift+Z — the text is redone.
  1. Switch to RU keymap:
  • press Ctrl+Z — text is undone, works ok;
  • press Ctrl+Shift+Z — instead of a redo, capital Z gets entered (even despite keymap being RU).

Same applies to Ctrl+Shift+M hotkey for monospace formatting.

Expected behaviour

Even with RU keymap, Ctrl+Shift+Z should redo, and Ctrl+Shift+M should make text monospace.

Actual behaviour

With RU keymap, Ctrl+Shift+ hotkeys do not do the actions, instead they type corresponding capital English letter.

Configuration

Operating system: Windows 10 1709 Version of Telegram Desktop: 1.3.10 Used theme: default

grandsilence commented 1 year ago

any news?

Habetdin commented 1 year ago

Telegram Desktop 4.10.2 (Windows 10) has somewhat related problem:

Update: Telegram Desktop 4.11.1 still has the issue with CTRL+SHIFT+M.

megaproes commented 12 months ago

We are here... CTRL+SHIFT+M doesn't work . . .

0x8008 commented 7 months ago

CTRL+SHIFT+M still broken on pl keymap under Win10/11

grandsilence commented 7 months ago

Yeah, CTRL+SHIFT+M still not working under Windows 10, RU keyboard.

Telegram Desktop: v4.15.2 x64 Windows 10: 21H2 19044.1288

Working keystrokes for both keyboard layouts:

Not working keystrokes on RU keyboard layout, EN works as expected:

0x8008 commented 7 months ago

Every keystroke aside from CTRL+SHIFT+M and CTRL+SHIFT+P seems to work fine for me.

Starmania commented 6 months ago

Still here

mitay2 commented 5 months ago

Still here. Ubuntu LTS 20.04, TG Desktop 4.16.8. Ctrl+Shift+M behavior is like Ctrl+M - minimize window.

ilya-fedin commented 5 months ago

any news?

Well, I mentioned I added this issue to #25126 which means it needs help with reporting upstream. If someone would make a Qt bugreport complying with Qt's reporting rules, that would likely move the issue forward way faster.

v0s commented 4 months ago

@john-preston @ilya-fedin fixed partially: markdown hotkeys now work with the custom keymap, but e.g. Ctrl-Shift-Z for redo does not

(thanks for figuring it out and fixing as well!)

ilya-fedin commented 4 months ago

While those shortcuts were partially under tdesktop control and it was possible to switch them from one Qt API to the other, Ctrl+Shift+Z is completely implemented by Qt, here: https://github.com/qt/qtbase/blob/v5.15.14-lts-lgpl/src/widgets/widgets/qwidgettextcontrol.cpp#L1326

So I don't see a way to fix it.

The already made fix is considered for revert, though, because it broke those shortcuts on macOS completely.

v0s commented 4 months ago

Ooh i see...

The arleady made fix is considered for revert, though, because it broke those shortcuts on macOS completely.

Can it be perhaps put into a block conditional on target OS? Currently it does solve a problem on Windows

ilya-fedin commented 4 months ago

Can it be perhaps put into a block conditional on target OS?

Not sure. Will see.

ilya-fedin commented 4 months ago

If you can reproduce the redo thing with other Qt applications like qBittorrent, I guess you should be able to report this to Qt? qBittorrent will also show whether this is still an issue with modern Qt (tdesktop still uses 5.15 on Windows while qBittorrent has Qt 6 builds) or is already fixed.

I would recommend reporting it as an issue with standard layouts such as the ukranian enhanced one, rather than a custom one.

v0s commented 4 months ago

Yep, it does reproduce on beta qBittorrent as well. I know nothing about Qt APIs though to be able to correctly submit a bug report to Qt :(

ilya-fedin commented 4 months ago

I'm sorry but no one else seem to be interested in reporting and if you won't do that, the bug will remain unfixed for another decade. Just report as you can. Mention that the issue happens with both tdesktop and qbittorrent, provide reproduction steps. Specify the Qt versions used by tdesktop and qbittorrent (the tdesktop one is 5.15.13). The components are QPA: Windows and GUI: Basic input system. You can mention that it's likely reproducible with any Qt example using QTextEdit/QLineEdit.

kekekeks commented 4 months ago

I believe that this recent change has broken markdown shortcuts for all layouts on my machine. Were working perfectly fine before.

john-preston commented 4 months ago

@kekekeks Can you share some details? One version completely broke markdown shortcuts on macOS and on Linux systems with global menu, but after that there was deployed a fix version. Maybe you need to update in Settings > Advanced > Check for updates?