Passos para reproduzir:
M4
e segure. Pressione a tecla s
(veja a imagem)Na versão anterior do VSCode (1.10.2 8076a19fdcab7e1fc1707952d652f0bb6c6db331) isso funcionou bem.
O mesmo problema para mim. Emita palavras-chave porque não encontrei esse problema no início: teclas de seta da camada 4 neo2 layout do teclado alemão.
Funcionou bem no 1.10, não funciona no 1.11.
O editor de atalhos no VSCode parece identificar a combinação destacada no teclado acima como [IntlBackslash] i
Não está quebrado no Windows e VSCode 1.11.0.
No entanto, o mapeamento de teclas é feito por autohotkey, que intercepta as teclas pressionadas e emite as suas próprias - AFAIK, isso é tratado de forma diferente no Linux.
Acabei de executar git bisect
. A primeira confirmação incorreta parece ser https://github.com/Microsoft/vscode/commit/d10239639bf9beaa6ea34125319103de3dce43cd ( @alexandrudima )
# bad: [9122ec4b1068bd391e41974f46a4b54c1b9c90f9] Fix styling of release notes (fixes #23948)
# good: [8076a19fdcab7e1fc1707952d652f0bb6c6db331] debug: save all untitled non dirty files before debug start
git bisect start '1.11.0' '1.10.2'
# good: [40fecfaa77f01672e8a147be71f6f7ccb9cf8a12] fix mixin
git bisect good 40fecfaa77f01672e8a147be71f6f7ccb9cf8a12
# good: [9d2e0611f7f7750f02ec72c4d18a20b69c5bf8cf] #18095 :lipstick:
git bisect good 9d2e0611f7f7750f02ec72c4d18a20b69c5bf8cf
# bad: [7c223972367b8ade5362d738606f3b910d0fbb42] Fixes #19235: Wording in tasks warning message
git bisect bad 7c223972367b8ade5362d738606f3b910d0fbb42
# good: [378231183e815c8e8e6a73ad04fc40ec5058fdc5] Promise cancellation is slow. Use a timer instead since this may run many times.
git bisect good 378231183e815c8e8e6a73ad04fc40ec5058fdc5
# good: [f70b0b3ecb7f276c811b0f18c7a0bec3b03c11a6] Fixes #22069: Define extension story for tasks
git bisect good f70b0b3ecb7f276c811b0f18c7a0bec3b03c11a6
# bad: [4ad4bd0d8011a5db5e2bea4543b7efb03d482aad] :bug: add commit box message
git bisect bad 4ad4bd0d8011a5db5e2bea4543b7efb03d482aad
# bad: [9003dbc3f5f2b87cb3cc4a3418030dbdc45ac0a3] Add IKeybindingService.resolveUserBinding
git bisect bad 9003dbc3f5f2b87cb3cc4a3418030dbdc45ac0a3
# bad: [968da131589845b43c0d00141b41b2bb366a84e8] Improve the ScanCode -> KeyCode guessing strategy
git bisect bad 968da131589845b43c0d00141b41b2bb366a84e8
# bad: [969cbdfea05beda1a38d4082698b87f239fc2384] Renames
git bisect bad 969cbdfea05beda1a38d4082698b87f239fc2384
# bad: [8a33db65efdd3ed4c76d01cb76c3ef658caf16db] Add Inspect Key Mapppings action
git bisect bad 8a33db65efdd3ed4c76d01cb76c3ef658caf16db
# bad: [0ebecd5ca915ed33ea747cafe2c99572c52904b5] Merge branch 'master' into alex/keybinding
git bisect bad 0ebecd5ca915ed33ea747cafe2c99572c52904b5
# bad: [d10239639bf9beaa6ea34125319103de3dce43cd] First cut at integrating keyboard mappers
git bisect bad d10239639bf9beaa6ea34125319103de3dce43cd
# first bad commit: [d10239639bf9beaa6ea34125319103de3dce43cd] First cut at integrating keyboard mappers
Preciso de algum tempo para entender esse layout de teclado. Entrarei em contato com você nos próximos dias, se tiver a gentileza de me ajudar. É diferente de tudo que já vi.
Solução alternativa para alternar o Código VS para despacho com base no código-chave novamente. Adicione a seguinte configuração:
"keyboard.dispatch": "keyCode"
e reinicie o código VS
Eu tenho o mesmo problema no Debian / Jessie.
https://github.com/Microsoft/vscode/issues/25797
Tenho problemas com o retrocesso.
Oi eu tenho o mesmo problema. Ontem, a solução alternativa funcionou para mim, mas hoje não está mais funcionando. Funciona por cerca de 2 segundos após a inicialização do editor, então minhas teclas básicas (letras) não funcionam mais. :pensando:
Não tenho certeza se fiz algo estúpido desde ontem, mas tem alguma ideia do por que pode ser?
@zommerfelds A primeira coisa que eu verificaria são os settings.json
. O "keyboard.dispatch"
duplicado lá, a configuração foi substituída por uma configuração de espaço de trabalho ao abrir uma pasta, etc.
A próxima coisa a se olhar é abrir um editor e executar F1 > Developer: Inspect key mappings
. Ele imprime "FallbackKeyboardMapper despachando em keyCode" (um indicador de que a configuração foi aplicada).
Se isso não for um problema com as configurações, ou seja, a confirmação de que o despacho é feito em keyCode
está lá, eu tentaria ver o que Electron / Chromium / o SO envia para nós quando você pressiona uma tecla específica : Passe o mouse sobre a caixa de entrada e faça uma captura de tela:
Olá @alexandrudima , obrigado pela resposta detalhada.
cat ~/.config/Code/User/settings.json
:
// Place your settings in this file to overwrite the default settings
{
"keyboard.dispatch": "keyCode"
}
Se eu abrir o editor e for para _File => Preferences => Settings_, vejo o mesmo conteúdo para _USER SETTINGS_ como acima, e {}
para _WORKSPACE SETTINGS_, então não tem problema.
_F1> Desenvolvedor: inspecionar mapeamentos de teclas_ fornece:
Layout info:
{
"model": "pc105",
"layout": "de,ch",
"variant": "neo,",
"options": "grp:menu_toggle",
"rules": "evdev"
}
FallbackKeyboardMapper dispatching on keyCode
Raw mapping:
...
Para os atalhos de teclado, recebo:
Se eu quiser digitar "a":
Se eu quiser digitar "(":
O a foi impresso bem naquele pop-up, mas não no editor principal.
Em Neo, A
é onde a chave D
estaria em QWERTY, e (
é CapsLock+J
em QUERTY.
Posso usar as teclas de seta na 4ª camada do Neo muito bem, mas não, por exemplo, os dígitos. Backspace funciona. Enter não funciona. Ctrl+Z
funciona para desfazer (em Neo).
Além disso, como eu disse antes, tudo funciona nos primeiros segundos enquanto o Vscode está inicializando e depois para de funcionar.
Avise-me se puder ajudar de alguma outra forma. Seria ótimo se eu pudesse começar a usar o Vscode novamente :)
EDIT: para esclarecimento, acho que posso não ter o mesmo problema que o OP. Minhas teclas de setas na 4ª camada funcionam, mas não as teclas de letras simples e claras.
EDIT2: _Help => Sobre_:
Version 1.12.2
Commit 19222cdc84ce72202478ba1cec5cb557b71163de
Date 2017-05-10T13:16:25.899Z
Shell 1.6.6
Renderer 56.0.2924.87
Node 7.4.0
Obrigado @alexandrudima ! Alterar "keyboard.dispatch": "code"
para "keyboard.dispatch": "keyCode"
em File->Preferences->Settings
me ajudou a fazer as teclas da camada m4 (tecla de escape, teclas de navegação, backspace, deletar, números) funcionarem.
Ainda não funciona para mim em 1.19.0
.
Também notei que a configuração keyboard.dispatch
não faz diferença. Em qualquer configuração, as teclas de navegação e backspace, por exemplo, funcionam, mas não os dígitos e letras normais.
Existe uma maneira de verificar se o vscode está realmente carregando-o como keyCode
e não voltando para code
alguma forma?
Na verdade, acabei de fazer funcionar! A extensão NeoX estava bagunçando minhas configurações. Desativá-lo corrigiu o problema. Não tenho mais ideia de por que instalei essa extensão nem o que ela faz. Eu ainda tenho que definir keyboard.dispatch
para keyCode
para que funcione.
Desculpe por isso e obrigado pelo apoio. Sim, posso usar o vscode agora! :)
Acho que podemos encerrar esse problema então?
O problema ainda está presente no código VS atual:
Também tive problemas ao usar o Neo-Layout com VS Code 1.201 no Ubuntu 17.10 (Linux 4.13.0-36-genérico). Sem o switch "keyboad.dispatch": keyCode
- eu era capaz de digitar com Neo2, mas não conseguia nem usar CTRL + C e CTRL + V, pois mapearia de volta para o layout padrão (acionando CTRL + R e CTRL + W, respectivamente )
bem, eu apenas tentei o "keyboard.dispatch" e ele me diz "definição de configuração desconhecida". Mas meus problemas são um pouco diferentes.
As teclas de seta funcionam bem, mas, por exemplo, a tecla desfazer não funciona. Quando pressiono M4+z
o código do Visual Studio reconhece apenas z
. E quando eu quero vincular algo a teclas como äöü, vscode traduz essas teclas se fosse um teclado americano. Portanto, Ctrl+ü
é reconhecido como Ctrl+z
. Isto é horrível.
Eu mapeio meu teclado com o programa XKB para usar o teclado dvorak modificado.
Eu uso a opção ralt_switch, que costumava mudar a tecla alt direita para funcionar como tecla meta ou modificador extra.
Eu habilito a configuração de keyCode no VSCode Insider.
Abaixo está o meu exemplo de configuração XKB
A RAlt (aka Meta key) + s
reconhecida pelo VS como End
chave. + Bom
mas quando eu deveria fazer ctrl+End
key com Ctrl+RAlt (Meta)+s
ele reconheceu como Ctrl+s
que salvará o documento. -Ruim
Adivinhe o que aconteceu quando tentei pular algumas palavras pressionando Ctrl+Right
aka Ctrl+RAlt (Meta)+n
várias vezes.
Suponho que o modificador Ctrl não funciona bem com modificador extra (ou modificador keyCode-ed) como meta key ou Mod4.
Mesmo Ctrl+Shift+RAlt (Meta)+s
também salva.
Mas Shift+Ralt (Meta)+s
gosta de Shift+End
que é +Good
Você pode simplesmente fazer ctrl se comportar como shift, em termos de combinação de modificadores?
Acho que é questão relacionada, mas com caso diferente.
_o título menciona o layout neo, este é custom_
isso está relacionado a este comentário resolvido?
usando o 'código' keyboard.dispatch, mas apenas para OSX. E eu apenas tentei, não funcionou no Linux Mint / Ubuntu
https://github.com/Microsoft/vscode/issues/12393#issuecomment -288994081
Estou no Linux.
Versão 1.21.1
Commit 79b44aa704ce542d8ca4a3cc44cfca566e7720f1
Datum 14/03/2018T14: 46: 30.761Z
Shell 1.7.9
Renderer 58.0.3029.110
Nó 7.9.0
Architektur x64
Infelizmente, a solução alternativa keyboard.dispatch
parece não funcionar para mim também - pelo menos não é boa o suficiente. Posso usar o CapsLock
(Mod3) reaproveitado para inserir símbolos de programadores como /,\,[,]
e assim por diante dentro do editor, mas não em atalhos como shift+/
que se traduz em pressionar o botões físicos de shift+capslock+s
Tentar reatribuir atalhos com Mod3 mostra unknown
Parece que @sakasistem foi mencionado, parece haver problemas com uma certa sequência de teclas modificadoras.
Atalhos como shift+/
são totalmente BS e não deveriam existir.
Deve ser ?
e deixar o layout decidir quais modificadores são necessários para digitar aquele caractere, ou um layout independente shift + scancode_slash
. Na primeira opção, eu simplesmente digitaria? (não importa onde eu coloquei isso em meu layout e quais modificadores eu preciso pressionar), e no segundo eu apenas digitaria J
maiúscula em meu layout, porque eu tenho um J na posição do teclado onde US qwerty tem um /
.
Muito parecido com krux02, eu tive que digitar 'Ctrl + ü' e 'Ctrl + k' para desfazer e refazer, respectivamente, mas fui capaz de encontrar a configuração "keyboard.dispatch" apropriada e isso parece ter resolvido o problema.
SO: Ubuntu 18.04 LTS
VSCode:
Versão 1.23.1
Commit d0182c3417d225529c6d5ad24b7572815d0de9ac
Data 10-05-2018T16: 04: 33.747Z
Shell 1.7.12
Renderer 58.0.3029.110
Nó 7.9.0
Arquitetura x64
Nossa, estou usando o vscode insider apenas para esperar que esse problema seja corrigido.
Assim como @sakasistem
Eu uso thinkpad com teclado qwerty físico, modifico meu mapa de teclado para dvorak personalizado com arquivo xkb no linux mint sonya
Aqui está o arquivo de mapa de teclado https://pastebin.com/cUAxDtAM
É para o sistema operacional baseado em debian, Linux Mint para ser exato.
Coloque-o em /usr/share/X11/xkb/symbols/us
imediatamente antes da definição dvorak-intl
partial alphanumeric_keys
xkb_symbols "dvorak-intl" {
Ele adiciona magia de navegação ao layout de dvorak, ele se comportará up
, left
, down
, right
com RAlt+c,RAlt+h,RAlt+t,RAlt+n
(deveria ser i, j, k, l
em qwerty em vez de c, h, t, n
), ele realmente funciona na maioria dos aplicativos com modificador ctrl
, shift
e alt
, mas vscode. Ctrl+RAlt+n
deve pular a próxima palavra, mas em vez disso se comporta como Ctrl + n e abre uma nova guia.
O modificador Shift funciona, o que faz com que Shift+RAlt+s
selecione até o final da linha, apenas o modificador Ctrl que aciona o atalho para o primeiro lugar.
Bem, aqui está o conteúdo do pastebin:
partial alphanumeric_keys
xkb_symbols "dvorak-shy" {
name[Group1]= "English (Dvorak) by Shy";
key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft, dead_grave] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright, dead_tilde] };
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
key <AD04> { [ p, P ] };
key <AD05> { [ y, Y ] };
key <AD06> { [ f, F ] };
key <AD07> { [ g, G, Page_Up, Page_Up ] };
key <AD08> { [ c, C, Up, Up ] };
key <AD09> { [ r, R, dead_tilde, dead_tilde ] };
key <AD10> { [ l, L ] };
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> { [ a, A ] };
key <AC02> { [ o, O ] };
key <AC03> { [ e, E ] };
key <AC04> { [ u, U ] };
key <AC05> { [ i, I ] };
key <AC06> { [ d, D, Home, Home ] };
key <AC07> { [ h, H, Left, Left ] };
key <AC08> { [ t, T, Down, Down ] };
key <AC09> { [ n, N, Right, Right ] };
key <AC10> { [ s, S, End, End ] };
key <AC11> { [ minus, underscore ] };
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
key <AB02> { [ q, Q ] };
key <AB03> { [ j, J ] };
key <AB04> { [ k, K ] };
key <AB05> { [ x, X ] };
key <AB06> { [ b, B ] };
key <AB07> { [ m, M, Page_Down, Page_Down ] };
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
key <BKSL> { [ backslash, bar ] };
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
include "level3(ralt_switch)"
};
preste atenção ao código mágico include "level3(ralt_switch)"
que faz RAlt como mod3, mas faz vscode reconhecê-lo como unknown
.
Linux aqui, não usando um layout de teclado incomum, eu apenas remapeei Caps Lock para Backspace via XkbOptions
, e isso também não funcionou. Mudar para keyCode
fez com que funcionasse. Acho que isso afeta qualquer tipo de mapeamento de teclas.
Para mim, os dois pontos :
pararam de funcionar espontaneamente no Visual Studio Code 1.32.3 no macOS 10.14.3. A combinação de teclas em Neo2 é caps lock + ;
(em qwerty). Definir keyboard.dispatch
para keyCode
ajudou.
Outro usuário neo2 aqui;) Encontrou o problema de backspace-not-working nos primeiros minutos de uso do VSCode. Felizmente, a solução alternativa funciona perfeitamente até agora!
No entanto, seria ótimo se esse bug fosse corrigido algum dia;)
A solução alternativa de https://github.com/microsoft/vscode/issues/24043#issuecomment -292334048 funciona para a funcionalidade backspace (: +1:), mas movendo uma palavra para frente / para trás e excluindo uma palavra na frente ou atrás do cursor ainda não funciona: confused :, ou seja, Ctrl
+ Alt Gr
+ w
(no layout qwerty / teclas do teclado) deve excluir uma palavra à esquerda do cursor, mas apenas colar a área de transferência, que seria Ctrl
+ w
(em layout / teclas qwerty no teclado) que é Ctrl
+ v
.
Parece que o pressionamento da tecla Alt Gr
é simplesmente ignorado ao pressionar a tecla Ctrl
.
Estou usando o Arch Linux com as atualizações mais recentes.
Como posso fornecer mais informações para ajudar a resolver esse problema?
Eu sou novo no VS Code e uso o layout KOY (com algumas adaptações) no Linux ( setxkbmap de koy
). O mesmo problema do Neo2: posso digitar um hífen pressionando CapsLock+L
no editor. Mas os atalhos contendo CapsLock não funcionam (como diminuir o zoom com Ctrl+-
= Ctrl-CapsLock-L
).
A página de problemas de atalhos de teclado recomenda executar F1 > Developer: Inspect key mappings
se nada mais ajudar.
Com o layout alemão padrão ( setxkbmap de
), eu consigo isso para a tecla L :
"KeyL": {
"value": "l",
"withShift": "L",
"withAltGr": "ł",
"withShiftAltGr": "Ł"
}
Com KOY ( setxkbmap de koy
), eu obtenho:
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "n",
"withShiftAltGr": "N"
},
Aparentemente, o VS Code não acerta os níveis mais altos do layout!
Algumas informações técnicas adicionais sobre esta família de layout de teclado (neo, adnw, koy, bone):
No layout padrão alemão, AltGr é mapeado para ISO_Level3_Shift
(no Linux). No Neo2 (e semelhantes), AltGr é mapeado para ISO_Level5_Shift
e CapsLock é mapeado para ISO_Level3_Shift
.
Então eu acho que devemos ver na saída de > Developer: Inspect key mappings
também
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "-",
(porque CapsLock substitui AltGr em Neo2 em termos de ser a nova tecla ISO_Level3_Shift
)
ou
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "6",
(porque você obtém um "6" quando pressiona a tecla física L, como você pode ver na captura de tela do OP).
Espero que isso ajude os desenvolvedores do VS Code a entender melhor nosso problema.
Estou ciente de que eu (e outros) estamos misturando algumas questões relativas a Neo aqui. Mas eles podem estar relacionados.
Testado no Ubuntu 18.04 com esta versão do VS Code / Codium:
Version: 1.44.0
Commit: 2aae1f26c72891c399f860409176fe435a154b13
Date: 2020-04-09T10:44:46.342Z
Electron: 7.1.11
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Linux x64 4.15.0-96-generic
Parece que o pressionamento da tecla
Alt Gr
é simplesmente ignorado ao pressionar a teclaCtrl
.Estou tendo o mesmo problema. Marcar letras simples por meio de
Shift + RightArrow
funciona quando eu entro emRightArrow
por meio deAltGr + E
, mas usarCtrl + Shift + RightArrow
com o Neo-layout despachaCtrl + Shift + E
vez disso .
Usei a funcionalidade de gravação de chave e obtive com o método de despachocode
:
- Pressionar
Shift + AltGr + E
primeiro exibiriashift + alt
, depois se transforma emshift + right
.- Pressionar
Ctrl + Shift + AltGr + E
primeiro exibectrl + shift + alt
, depois se transforma emctrl + shift + e
e com o método keyCode
:
Shift + AltGr + E
mostraria primeiro shift + oem_8
, depois se transforma em shift + right
.Ctrl + Shift + AltGr + E
exibe ctrl + shift + oem_8 ctrl+shift+e
O mesmo acontece quando se usa apenas Ctrl + AltGr +E
que se torna ctrl + e
vez de ctrl + right
.
Para este problema específico, seria uma solução alternativa viável apenas marcar uma determinada chave como morta? Layouts como o Neo não precisam do VSCode para ouvir AltGr
, ele só deve processar o código-chave que é despachado quando pressionado em combinação. Além disso, quando essa camada está “bloqueada” usando ambas as teclas Mod4, pressionar Ctrl + Shift + e
é corretamente reconhecido como ctrl + shift + right
.
Minhas informações de layout:
"layout": {
"model": "pc105",
"layout": "de,de,gb",
"variant": "neo,,",
"options": "grp_led:scroll,altwin:alt_super_win",
"rules": "evdev"
}
Eu tive o mesmo problema descrito aqui várias vezes, onde segurar control
ou teclas semelhantes torna certas teclas no nível 4 do layout neo inutilizáveis e executa atalhos indesejados.
O que funcionou para mim em Ubuntu 18.04
e corrigiu todos esses problemas, foi executar setxkbmap -layout de -variant neo
após a inicialização e a cada despertar. Parece funcionar com qualquer configuração para keyboard.dispatch
( keyCode
ou code
).
Em "Startup Application Preferences"->Add
insira setxkbmap -layout de -variant neo
assim e salve
Com sudoedit /lib/systemd/system-sleep/setxkbmap
add
#!/bin/bash
case $1 in
post)
DISPLAY=:1 ; export DISPLAY
su $USER -c "sleep 1; setxkbmap -layout de -variant neo"
;;
esac
e conceda permissões executáveis com sudo chmod 755 /lib/systemd/system-sleep/setxkbmap
.
$USER
adicione seu usuário.DISPLAY=:0
sugeridos, mas não funcionou comigo. Então tentei o valor que obtive de echo $DISPLAY
( :1
), que funcionou.sleep 1;
, use sleep 3;
)Espero que isso ajude outros!
Comentários muito úteis
Preciso de algum tempo para entender esse layout de teclado. Entrarei em contato com você nos próximos dias, se tiver a gentileza de me ajudar. É diferente de tudo que já vi.
Solução alternativa para alternar o Código VS para despacho com base no código-chave novamente. Adicione a seguinte configuração:
"keyboard.dispatch": "keyCode"
e reinicie o código VS