Teclas de atalho personalizadas confiáveis ​​do Windows?

9

Eu tenho teclas de atalho globais do Windows atribuídas a várias instâncias diferentes do cmd.exe. Eu faço isso criando atalhos para o cmd.exe na minha área de trabalho e atribuindo a cada um uma tecla de atalho exclusiva (por exemplo, CTRL + SHIFT + U). Coisas bem básicas. Estou usando o Win2K8 (R1 e R2).

Isso funciona muito bem ... na maioria das vezes. Mas com regularidade irritante, às vezes não. Ou funcionará com um longo atraso (muitos segundos). Não importa qual aplicativo atualmente tem foco (pode até ser um dos prompts de comando). Não importa quais teclas eu atribuo (tentei algumas variações de WIN, CTRL e SHIFT). Percebi que isso geralmente está correlacionado, mas nem sempre, com o explorer.exe, de alguma forma ou de outra (por exemplo, uma janela do explorer aberta para um compartilhamento de arquivos indisponível, ou um aplicativo que não responde, ou o que for). Em outras palavras, a manipulação de teclas de atalho parece ser muito sensível à atividade não relacionada do sistema. Observe que sempre que tenho esse problema, sempre consigo com êxito ALT + TAB na janela que desejo acessar, mas isso é tedioso.

Eu uso os atalhos para essas janelas de comando centenas de vezes por dia, para que mesmo uma taxa de falha de 1% se torne realmente irritante.

Existe uma maneira de corrigir isso ou existe algum utilitário de terceiros que interceptará CONFIABILMENTE combinações de teclas personalizadas para focar em qualquer aplicativo que eu queira, de maneira independente de outras atividades do sistema?

TERMO ADITIVO:

Há uma propriedade dos atalhos do Windows que eu não gostaria de perder se mudar para uma ferramenta de teclas de atalho de terceiros: os atalhos do Windows são idempotentes. Depois de iniciar um atalho para algum aplicativo, pressionar a combinação de teclas de atalho novamente leva ao processo já iniciado - ele não inicia um novo processo.

Peter Baer
fonte

Respostas:

7

Use a tecla Autohot. A linguagem de script não é padrão e pode ser difícil de aprender, mas se tudo o que você quer fazer é iniciar programas de maneira confiável, é simples. Além disso, você pode basear atalhos na tecla Windows! Use o seguinte exemplo de script e modifique-o de acordo com suas necessidades. (As linhas que começam com ;são comentários.)

;win + alt + e ... unload ipod
#!E::
   run d:\Downloads\Apps\deveject\eject ipod.bat
   return

;win + w ... launch winamp
#w::
    run c:\program files (x86)\winamp\winamp.exe
    return

;win + a ... launch AS400
#a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\1.ws
    return

;win + Shift a ... launch AS400 Printer
#+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\3.ws
    return

;win + ctrl + Shift a ... launch 2nd AS400 
#^+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\2.ws
    return

Salve isso como um arquivo .ahk na área de trabalho, instale a autohotkey e execute-o.

Toda vez que você pressiona qualquer combinação de teclas, o AutoHotkey verifica esse script. Se corresponder a qualquer uma das combinações de teclas anteriores a ::, ele executará o próximo comando. Se a declaração de retorno estiver ausente, o AHK continuará a verificar correspondências no script após a execução da declaração. As combinações de teclas são descritas abaixo.

# = Windows Key
+ = Shift
^ = Control
! = Alt

Você pode usá-los em qualquer combinação com as letras do seu teclado. Uma combinação que acho extremamente útil é a seguinte.

; ALT Backtick ... ctrl f4
!`::
    Loop, parse, RcvCtrlW, `,
    {
     IfWinActive %A_LoopField%
     {
        sendinput ^w
        Return
     }
    }
    sendinput ^{f4}
    return

; win Backtick ... alt f4
#`::
   sendinput !{f4}
   return   

Este é Alt + `e Win +`. Quando este script está sendo executado e pressiono alt + `, o script envia ctrl + F4. Win + `se torna alt + F4.

Autohotkey é basicamente sua própria linguagem de programação. Tenho scripts configurados que simulam o sistema "Rocker Gestures" em todo o sistema. Tenho o GMail como atalhos para o meu email. Se você gastar algum tempo aprendendo alguns truques, pode ficar louco com isso. O Lifehacker possui vários scripts úteis para a Autohotkey. Diverta-se!

Tim Coker
fonte
3
Hmm - um recurso importante da tecla de atalho do Windows em que confio é sua idempotência. A primeira vez que clico em CTRL + SHIFT + U para exibir um prompt específico, inicia o cmd.exe. Na próxima vez que eu clicar nesse combo, se o cmd.exe ainda estiver em execução, ele simplesmente o trará para a frente, em vez de iniciar outra instância (que é o que o comando de execução da Autohotkey faz). Existe uma maneira de fazer isso facilmente com o AHK?
Peter Baer
3

Veja como eu uso o AutoHotKey de uma maneira que atenda aos seus requisitos idempotentes .

Como exemplo, eu liguei Caps Lock+ aa uma janela do Firefox no Stack Overflow, Caps Lock+ sao Firefox no Superusuário e Caps Lock+ da um prompt de comando.

StartOrToggleMinimize(TheWindowTitle,TheAppPath)
{  
   SetTitleMatchMode, 2
   DetectHiddenWindows, Off
   IfWinActive, %TheWindowTitle%
   {
      WinMinimize, %TheWindowTitle%
   }
   else
   { 
      IfWinExist, %TheWindowTitle%
      {
         WinGet, winid, ID, %TheWindowTitle%
         DllCall("SwitchToThisWindow", "UInt", winid, "UInt", 1)
      }
      else
      {
         run %TheAppPath%
      }
   }
   return
}

; the actual hotkeys:
CapsLock & a::StartOrToggleMinimize("Stack Overflow", "c:\program files\mozilla firefox\firefox.exe -new-window stackoverflow.com")
CapsLock & s::StartOrToggleMinimize("Super User", "c:\program files\mozilla firefox\firefox.exe -new-window superuser.com")
CapsLock & d::StartOrToggleMinimize("cmd", "cmd")

Você pode alterar o modo de correspondência de título para ser tão restritivo quanto necessário. Se eu tivesse outra tecla de atalho que correspondesse ao "Mozilla Firefox" (em vez de "Superusuário", por exemplo), ela percorreria todas as minhas instâncias do Firefox, já que cada uma tem esse texto no título da janela e eu o defini para corresponder ao texto em qualquer lugar do título.

Este script é fortemente baseado neste artigo no LifeHacker.

yhw42
fonte
Como esse script pode ser modificado para NÃO ser idempotente? Especificamente, desejo várias instâncias de um programa se pressionar as teclas de atalho (estou executando o putty e preciso conectar-me a mais de 4 servidores a qualquer momento, e não preciso procurar o mouse )
Doktor J
Se houver texto específico e exclusivo no título da janela para cada instância, você poderá atribuir teclas de atalho para corresponder a esse texto. Veja acima Caps+ae veja Caps+sduas instâncias diferentes do firefox, @DoktorJ
yhw42
Mas e se eu nunca quiser combinar? Quando estou alternando entre eles, apenas ALT + TAB, portanto, não preciso de atalhos para cada instância do PuTTY - só preciso de um atalho que sempre abra uma nova instância do PuTTY, independentemente de quantas janelas PuTTY eu já possua. abrir. Apenas chamar "executar c: \ tools \ putty \ putty.exe" diretamente da tecla de atalho atribuída faz isso?
Doktor J
@DoktorJ: Oh! Sim. É exatamente assim que você faria. Embora eu ache que você também possa atribuir teclas de atalho nas propriedades de atalho do Windows. Supus que você pretendia Caps+1apontar para uma instância específica do PuTTY (que é melhor que o AltTab na minha opinião :)).
Yhw42
3

Outra alternativa para iniciar seus programas de maneira rápida e intuitiva:

Launchy

O Launchy é um utilitário gratuito para Windows e Linux, projetado para ajudá-lo a esquecer o menu Iniciar, os ícones na área de trabalho e até o gerenciador de arquivos.

O Launchy indexa os programas no menu Iniciar e pode iniciar seus documentos, arquivos de projeto, pastas e favoritos com apenas algumas teclas!

texto alternativo

Gauthier
fonte
Parece com a pesquisa no menu Iniciar do Win7.
Theo Belaire
@ Tir: ele faz. Comecei a usá-lo no Windows XP, mas continuo fazendo isso no Win7. Não usei muito a pesquisa do menu Iniciar, mas minha impressão é que o Launchy ainda é mais rápido. Eu posso estar errado nisso.
precisa
2

Infelizmente, 6 anos depois com o Windows 10, existem os mesmos problemas e, com uma atualização recente do Windows 10, descobri que alguns atalhos / programas não são mais idempotentes ! Especialmente Putty, onde tenho vários atalhos para a mesma sessão.

Então, eu uso o AutoHotKey e modifiquei a função compartilhada neste segmento (com base neste artigo no LifeHacker ) para que ele use um arquivo INI para acompanhar cada atalho. Isso não usa o título do Windows de cada programa, pois isso pode mudar no Putty se você usar a tela ou o SSH em outro servidor, um recurso que eu pessoalmente quero manter!

Também está incluída uma função "DeleteINIEntry ()", na qual você pode criar um atalho para remover uma entrada UniqueName do arquivo INI. Ou você pode apenas editar e alterar manualmente o arquivo.

INIFilePath := "C:\Temp\AHK.ini"

RunOrSwitchWin( UniqueName, AppPath )
{  
    global INIFilePath
    IniRead, TargetID, %INIFilePath%, windowids, %UniqueName%
    ActiveID := WinExist("A")

    ; cannot use '=' here as comparing an integar to string doesn't work well
    IfEqual TargetID, %ActiveID%
    {
        WinMinimize 
        return
    }

    WinGet, AllIDs, list

    Loop, %AllIDs%
    {
        this_id := AllIDs%A_Index%

        ifEqual TargetID, %this_id%
        {
            DllCall("SwitchToThisWindow", "UInt", this_id, "UInt", 1)
            return
        }
    }

    run, %AppPath%,,, CurrentPID
    WinWait ahk_pid %CurrentPID%
    IniWrite, % WinExist("A"), %INIFilePath%, windowids, %UniqueName%

   return
}

DeleteINIEntry()
{
    global INIFilePath
    InputBox, UniqueName, Delete INI Entry, Enter UniqueName

    If ErrorLevel = 0
        IniDelete, %INIFilePath%, windowids, %UniqueName%

    return
}

^!3::DeleteINIEntry()

; Putty shortcuts. 
; ^!1 is NOT idempotent and will run it over and over again.
^!1::run "C:\Program Files\PuTTY\putty.exe"
^!2::RunOrSwitchWin( "session1", "C:\Program Files\PuTTY\putty.exe -load session1" )

Se você não deseja que a janela Minimize, basta comentar (acrescente um;) à linha WinMinimize e ela permanecerá focada na janela ativa.

agalest
fonte
1

Não é uma atividade não relacionada, o explorer é o processo que lida com esses atalhos.

Existem utilitários (por exemplo, http://www.vsisystems.com/keyboardshortcuts.htm ) que pretendem ter essa funcionalidade, mas não sei se algum deles resolveria o problema de velocidade.

Ofir
fonte
1

Se o Explorer estiver ocupado, ele não poderá lidar com os atalhos, portanto, outro programa é necessário.

Um iniciador simples e eficiente é o PS Hot Launch VVL :

Este é um utilitário gratuito que permite definir suas próprias teclas de atalho para que um único pressionamento de tecla possa iniciar um aplicativo, inserir texto comumente usado, alterar seu volume de áudio ou qualquer outra coisa. O programa requer Win95 / 98 / ME ou WinNT / 2000 / XP e é um excelente desempenho, mesmo em máquinas lentas. O PS Hot Launch é a alternativa perfeita ao menu Iniciar e ao painel Quick Launch.

imagem

harrymc
fonte