microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.28k stars 29.31k forks source link

Cmd+Shift+] stops working quickly after opening VSCode #72088

Closed endreymarcell closed 5 years ago

endreymarcell commented 5 years ago

Issue Type: Bug

VSCode supports cycling through tabs on MacOS with Cmd+Shift+[ and ] since https://github.com/Microsoft/vscode/issues/12831 but I find that shortly after opening the application, Cmd+Shift+] stops working, so I can only step to the left but not to the right. The other shortcut keeps working though. Also, if I restart VSCode, Cmd+Shift+] works again, but only for a very short time - like a couple of seconds.

I have experienced this on two different devices.

VS Code version: Code 1.33.0 (0dd516dd412d42323fc3464531b1c715d51c4c1a, 2019-04-04T15:11:32.076Z) OS version: Darwin x64 17.7.0

System Info |Item|Value| |---|---| |CPUs|Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz (8 x 2800)| |GPU Status|2d_canvas: enabled
checker_imaging: disabled_off
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
native_gpu_memory_buffers: enabled
rasterization: enabled
surface_synchronization: enabled_on
video_decode: enabled
webgl: enabled
webgl2: enabled| |Load (avg)|4, 3, 3| |Memory (System)|16.00GB (0.12GB free)| |Process Argv|| |Screen Reader|no| |VM|0%|
Extensions (28) Extension|Author (truncated)|Version ---|---|--- Bookmarks|ale|10.4.2 cucumberautocomplete|ale|2.13.1 vscode-toggle-quotes|Bri|0.3.2 path-intellisense|chr|1.4.2 viml|dun|0.1.7 gitlens|eam|9.6.0 tslint|eg2|1.0.43 json-tools|eri|1.0.2 auto-close-tag|for|0.5.6 shell-format|fox|4.0.5 bats|jet|0.1.3 python|ms-|2019.3.6558 vscode-extension-auto-import|Nuc|1.4.3 vscode-docker|Pet|0.6.1 gotolastedit|plr|0.6.4 tsimporter|pmn|2.0.0 java|red|0.42.1 vscode-paste-and-indent|Rub|0.0.8 vscode-open-in-github|sys|1.12.0 ayu|tea|0.18.0 vscodeintellicode|Vis|1.1.5 vscode-java-debug|vsc|0.17.0 vscode-java-dependency|vsc|0.4.0 vscode-java-pack|vsc|0.6.0 vscode-java-test|vsc|0.16.0 vscode-maven|vsc|0.16.0 change-case|wma|1.0.0 vscode-jumpy|wma|0.3.1 (1 theme extensions excluded)
gjsjohnmurray commented 5 years ago

Maybe one of the 28 extensions you're loading is binding something else to that sequence. Try looking in the Keyboard Shortcuts list, which you get to from the gearwheel in the bottom left corner. There's a handy search feature, so type ] there and see what the list filters down to.

endreymarcell commented 5 years ago

That sounds plausible, but if I search for ] in the keyboard shortcuts, I see nothing else that would interfere: Screen Shot 2019-04-11 at 9 11 41 As far as I can tell, these are quite the same: Screen Shot 2019-04-11 at 9 12 27

And I'm experiencing the very same behaviour with the Insiders version that has 0 extensions enabled.

endreymarcell commented 5 years ago

But it is true that the issue seems to be with this keyboard shortcut in particular: I tried adding a new shortcut for the same action (Cmd+Shift+') and it's working properly.

alexdima commented 5 years ago

@endreymarcell Once the issue reproduces, can you please check if we receive the key combination?

keyboard-input

endreymarcell commented 5 years ago

Apparently not - the captured UI shows "shift+cmd+" and doesn't register ] at all. When hitting [, the correct value of "shift+cmd+[" shows up.

alexdima commented 5 years ago

I have to be honest and say that I have no idea why we would stop receiving this key combination after a few seconds... Needless to say, this does not reproduce for me...

If the key combination does not show up in the keybindings recording input (i.e. it stays as "shift+cmd+"), then it means the key combination is not reaching us at all.

vscodebot[bot] commented 5 years ago

This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details here. If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider.

If you wonder what we are up to, please see our roadmap and issue reporting guidelines.

Thanks for your understanding and happy coding!

endreymarcell commented 3 years ago

I finally figured this one out -the hotkey was registered as a shortcut in MacOS. Specifically, Keyboard Preferences > Shortcuts > Input Sources > Select next source in input menu. Once I disabled that shortcut and restarted my Mac, VS Code started receiving the key chord.

I brought this upon myself because it was me who set this OS-level shortcut in the first place. However, I was under the impression that this was fine because every other software I used handled this exact key combination properly. Code on the other hand did not even receive the ] key at all (see screenshot). I got the suspicion that this might be connected to Code being an Electron app so I tried Atom too and sure enough, I could reproduce the same issue. This might be of interest @alexdima.

Here's the twist in the story though. The physical keyboard of my MacBook is English (international QWERTY to be precise) but for the actual keyboard layout I switch back and forth between English and Hungarian. The physical ] key of the English keyboard types the letter Ú when using the Hungarian layout. I set up said shortcut with the aim of switching from Hungarian to English but not the other way around, so the shortcut is not actually Cmd+Shift+] but Cmd+Shift+Ú so that if I'm in Hungarian mode, it switches to English, but if it's already in English, it doesn't switch to Hungarian, it just moves to the next tab. I don't know what exactly is happening but I do suspect the culprit is somewhere around keys, key codes, layouts, and the such. Mind you, the issue I'm talking about was happening while I was using the English layout, so hitting the ] key should have sent the ] character (and therefore not get captured by MacOS) but on Electron, it seems like for some reason it still did.

image