![Tecla de atalho automática Ctrl+Shift - Zbrush/Photoshop](https://rvso.com/image/1388784/Tecla%20de%20atalho%20autom%C3%A1tica%20Ctrl%2BShift%20-%20Zbrush%2FPhotoshop.png)
Eu uso o Autohotkey há muito tempo para remapear teclas dentro de softwares CG (principalmente Zbrush e Photoshop) para torná-los mais amigáveis para canhotos.
Essencialmente, eu remapeio as teclas do teclado numérico para teclas que você não pode alterar dentro dos programas (Ctrl, Alt, Shift, etc...). Dessa forma, posso usar minha caneta gráfica com a mão esquerda e acessar Ctrl, Alt, etc. usando o teclado numérico, o que é muito mais conveniente do que deslocar todo o teclado para a direita.
De qualquer forma, aqui está o meu script:
#IfWinActive, ahk_class ZBrush
#MaxHotkeysPerInterval 200
NumPad1::Alt
Numpad2::LControl
Right::Shift
up::Space
return
Muito simples, mas tive um bug desde que o criei, há vários anos. Essencialmente, quando pressiono e seguro Numpad2+Direita (Ctrl+Shift) e solto Numpad2, o programa se comporta como se eu ainda o estivesse pressionando. Reprimir o Numpad2 rapidamente o faz voltar ao normal, mas é muito chato. Aqui estão algumas imagens para ilustrar melhor o problema:
Você sabe por que isso acontece? Não sou programador, então definitivamente preciso de ajuda.
Responder1
O problema não parece acontecer quando eu libero logo antes do Numpad2. É como se pressionar Direita (Shift) impedisse que o Numpad2 (Ctrl) fosse liberado...
O problema que você está vendo é devido ao fato de o teclado numérico ser alterado por ⇧Shift. Pressionar ⇧Shifté semelhante a alternar a NumLocktecla, mas o efeito é mais complexo e não óbvio.
Por exemplo, pressionar Numpad-4produziria os seguintes resultados:
│ Num On │ Num Off
──────────┼────────┼───────────
Shift Off │ 4 │ ←
──────────┼────────┼───────────
Shift On │ ← │ Shift + ←
Como você está remapeando →para ser ⇧Shifte usando-o em combinação com uma tecla no teclado numérico, você está obtendo uma interação que complica o AutoHotkey e o confunde com seu resultado inesperado (pode muito bem ser ologicamente correto, mas certamente resultado inesperado e indesejado).
Tente alterar sua chave secundária Numpad-2para outra que sejanãomodificado por ⇧Shift, como K. Você notará que não obterá mais resultados inesperados.
Esse comportamento ocorre no controlador do teclado, não no software; portanto, infelizmente, se você precisar usar ⇧Shiftcomo modificador, não poderá usar uma tecla do teclado numérico para remapeamentos complexos como este.
Uma opção é usar o bloco de edição ou as teclas do teclado numérico que não são modificadas pelos ⇧Shift(operadores matemáticos, Numpad-5, e Numpad-Enter).
Outra opção é escrever um script mais complicado que crie um gancho de teclado para verificar as teclas em um nível inferior, para que possa verificar se a ⇧Shifttecla está pressionada e compensar conforme necessário.
(Encontrei esse mesmo problema há algum tempo, quando escrevi um programa de entrada de Unicode. Eu estava tentando fazer com que ele suportasse a mudança de teclas para determinados caracteres, mas a modificação estava bagunçando as coisas. Acabei recorrendo à última sugestão e escrevendo um roteiro complicado, mas era frustrante, estonteante e acabou sendo meio limitado de qualquer maneira.)
Responder2
Uau! Resposta incrível! Rápido e preciso. Muito obrigado. Não percebi que essas teclas foram modificadas pelo Shift, o que me causou esse comportamento irritante. O problema é que estou tão acostumado com esse remapeamento do Numpad2 que não posso me dar ao luxo de mudá-lo sem passar semanas de readaptação psicomotora ^^
Consegui contornar o problema apenas remapeando NumpadDown para Ctrl também ^^ Faço maravilhas agora!
NumPad1::Alt
Numpad2::Ctrl
NumpadDown::Ctrl
Right::Shift
up::Space
return
Muito obrigado por apontar a origem do problema. Isso estava me incomodando há anos.