Maneira genérica de remapear todos os botões de mídia

13

Hoje tentei remapear algumas teclas de mídia do teclado para funções mais úteis e não consegui fazer isso.

insira a descrição da imagem aqui

O problema

  • O fabricante não fornece um utilitário para ligar e executar comandos personalizados.
    Meu teclado anterior da Logitech tinha essas opções no software SetPoint
  • Os códigos de chave (ou scancode) não foram reconhecidos pela maioria dos programas que usei para capturar os códigos de chave subjacentes.

    Por exemplo, a excelente ferramenta SharpKeys possui um modo de captura, onde informa qual tecla você acabou de pressionar. Levei algum tempo para perceber que ele me informava um código de tecla errado. Durante meus testes, pressionei o "botão estrela" no canto superior direito e as Teclas SharpKeys me dizem que essa é a tecla "D" do código de teclas 00_20. Mas o código chave correto seria00_181

    Outra tentativa foi o script AutoHotKey, que também não reconheceu minhas chaves de mídia incomuns

A tarefa

  • Encontre os códigos de chave corretos mesmo para botões de mídia incomuns
  • Remapeie todas as chaves de mídia sem precisar instalar uma ferramenta ou programa adicional. Um ajuste no registro, o uso de um driver já instalado ou de um aplicativo portátil pequeno é aceitável
nixda
fonte

Respostas:

10

Essa é uma maneira genérica de remapear qualquer botão do teclado. Mesmo os esquisitos


  1. Use KeyCodes (portátil, 415 KB) para capturar o código da chave. Baixe, extraia e inicie o KeyCodes3.exe. Pressione o botão misterioso e você verá o código da chave como número decimal

    insira a descrição da imagem aqui

    Uma maneira alternativa era esse script AHK que usa um gancho de teclado e "KeyHistory"

    #Persistent
    #InstallMouseHook
    #InstallKeybdHook
    while !(getKeyState("F1", "T"))
          KeyHistory
    return
    esc::exitapp
    

    insira a descrição da imagem aqui

  2. Converta o número de decimal em hexadecimal: 171»AB

  3. Use a versão portátil do AutoHotKey para remapear o botão.
    Faça o download e extraia a versão .zip de sua escolha em algum lugar. Nenhuma instalação é necessária.
    Crie um novo arquivo de texto e cole

    #NoEnv, #Persistent, #SingleInstance
    vkB5::return                ;music node button  181 » B5   do nothing
    vkAC::return                ;home button        172 » AC   do nothing
    vkAA::return                ;search button      170 » AA   do nothing
    vkAB::Run, c:\myapp.exe     ;star button        171 » AB   execute tool
    vkB4::Send {Volume_Mute}    ;mail button        180 » B4   mute/unmute
    
    • vk significa código da chave virtual seguido pelo código da chave hexadezimal que você deseja remapear
    • ::é o operador remapear. Esquerda é o gatilho, à direita é o seu novo botão ou ação
    • Send {<my_new_key>}pode ser qualquer chave dessa lista .
      Como alternativa, você pode executar um caminho personalizado com o comando Executar .
      Ou, se você deseja executar um botão de mídia novamente, use {vkAB}como ação
  4. Crie um novo atalho na pasta de inicialização automática para iniciar o script AHK em cada inicialização. Por exemplo

    "D:\Tools\AutoHotKey\AutoHotkey.exe" "D:\Tools\AutoHotKey\RemapKeys.ahk"
    

Após a reinicialização ou o script manual do AHK, todos os botões são remapeados

nixda
fonte
Tudo funcionou exceto mapear uma tecla mute para executar um comando (por exemplo, vkAD::Run, c:\myapp.exenão funcionou para mim), eu tive que remapear-lo duas vezes para fazê-lo funcionar, algo como vkAD::F21e, em seguida, outro mapeamento:F21::Run, c:\myapp.exe
BornToCode
Meu antivírus (ESET EndpointAntivirus) sinalizou o download do executável como uma ameaça.
PhilMacKay
5

Em resumo: você pode encontrar o mapeamento de chaves multimídia na seguinte chave do Registro: "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ AppKey"

Por exemplo, a chave de email normalmente inicia o aplicativo de email padrão.

HKLM \ SOFTWARE \ Microsoft \ Windows \ Versão Atual \ Explorer \ AppKey \ 15 \ RegisteredApp = "Mail"

Se você deseja substituir isso para abrir o Bloco de notas,

HKCU \ SOFTWARE \ Microsoft \ Windows \ Versão Atual \ Explorer \ AppKey \ 15 \ ShellExecute = "notepad.exe"

(Ou mude o HKLM se desejar modificar para todos os usuários, etc.)

RegisteredApp significa que o aplicativo registrado para essa função será chamado. (Como o correio acima)

Associação Significa que o aplicativo associado a um tipo de arquivo específico será aberto. Por exemplo, a tecla Mídia é registrada por padrão em .cda, o que significa que o aplicativo padrão usado para reproduzir CDs de música será aberto ao pressionar essa tecla.

ShellExecute abre um programa específico para ser executado.

Para mais detalhes leia este artigo

Denis Maslov
fonte
2
Cite as partes essenciais da resposta nos links de referência, pois a resposta pode se tornar inválida se as páginas vinculadas forem alteradas.
DavidPostill
Consegui remapear a "Calculadora", mas não a "Reprodução / Pausa da mídia".
22416 PhilMacKay