Como remapear uma tecla pressionada no botão play de um fone de ouvido Bluetooth no OS X?

13

Eu tenho um fone de ouvido estéreo Bluetooth LG Tone (HBS 700) e estou usando-o com o OS X Lion.

O fone de ouvido possui um botão de alternância de reprodução / pausa, mas, diferentemente do botão de reprodução do meu teclado, que alterna entre reproduzir / pausar para, por exemplo, o VLC media player se estiver em execução, o botão de reprodução do fone de ouvido iniciará o iTunes se ainda não estiver aberto ou alterne a reprodução / pausa no iTunes, se já estiver aberto. Não alterna a reprodução / pausa em qualquer outro media player.

Alguém pode explicar qual evento do sistema provavelmente está sendo acionado quando eu pressiono play? É claro que algum daemon do sistema está ouvindo alguma coisa, já que o iTunes é iniciado e pode interpretar os controles play / pause / next / prev muito bem ... Existe uma maneira de interceptar o evento de pressionamento de tecla e remapear sua função? Gostaria que ele tivesse o mesmo comportamento que o botão de reprodução do teclado.

Obrigado pela ajuda!

Ensopado
fonte

Respostas:

7

Você está procurando o Daemon de controle remoto localizado em:

/System/Library/CoreServices/rcd.app

Pode ser desativado com o comando

sudo chmod a-x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd
killall -9 rcd

(Se você simplesmente matá-lo, launchdirá reiniciá-lo novamente). Para reativá-lo,

sudo chmod a+x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd

Em seguida, efetue logout e logon novamente para launchdiniciar.

Se você tiver ambições suficientes, tente editá-lo com um editor hexadecimal. Isso está fora do meu domínio de conhecimento, mas tenho duas sugestões.

  1. A abertura do quicktime (apenas em branco, nada nele) em segundo plano pode impedir o daemon de usar o iTunes. Depende se o seu dispositivo usa o mesmo evento do sistema.

  2. Como alternativa, existe um utilitário gratuito localizado no link a seguir que corrige o daemon para você. Após executá-lo, o daemon usará o programa ativo, em vez do iTunes. No entanto, isso não remapeará o VLC como o programa a ser aberto quando você pressionar play. Ele foi projetado para as teclas de mídia do teclado, mas acredito que o sistema operacional veja o botão do seu LG Tone como o mesmo evento do sistema. Esse link: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

Por fim, posso dizer que a Apple ainda não forneceu uma maneira simples de alterar as configurações do controle remoto. Isso é lamentável, pois é uma pergunta comum sobre as teclas de mídia nos teclados e outros controles em dispositivos como o seu. Em vez de fornecer uma solução, parece que eles fizeram alterações no sistema operacional no passado para garantir que o iTunes é o programa usado por este daemon. Infelizmente, é improvável que haja uma solução melhor do que essas em breve.

Blackjack00
fonte
3
Na minha experiência, os dispositivos bluetooth que enviam sinais de reprodução / pausa não são interpretados da mesma maneira que as teclas de mídia do teclado são interpretadas. Usando o patch mencionado, meu teclado se comporta conforme o esperado, mas meu fone de ouvido bluetooth continua a lançar o iTunes. Apenas pensei que não faria isso por causa da posteridade.
Wilco
Algum conselho sobre como fazer essa alteração no OS X Sierra? Eles têm sistema de proteção de SO, e é muito difícil fazer essas alterações.
AB
3

Primeiro, você precisará de um aplicativo de remapeamento de teclado de terceiros chamado Karabiner (anteriormente KeyRemap4MacBook). O aplicativo é um pouco hostil, mas em teoria você só precisa fazer isso uma vez. Além disso, atualmente não funciona no MacOS Sierra ... portanto, lembre-se disso.

Aqui vamos nós...

Instalar o Karabiner

https://pqrs.org/osx/karabiner/index.html.en

Run Karabiner

Você deve conceder algumas permissões de acessibilidade se desejar todos os recursos.

Use o aplicativo auxiliar "EventViewer" para obter códigos de chave

Abra o EventViewer para obter códigos-chave / IDs de aplicativos / dispositivos:

insira a descrição da imagem aqui

Vá para a guia Principal e pressione a (s) tecla (s) no teclado, no controle remoto bluetooth etc. que deseja mapear novamente. Nesse caso, você pode ver códigos de tecla para Media-Forward e Media-Back no meu controle remoto Satechi bluetooth (que eu quero mapear novamente para as teclas de seta esquerda / direita).

insira a descrição da imagem aqui

Vá em frente e "copie para a área de transferência" e cole-a em um documento de texto para mais tarde. Agora, dependendo do seu caso de uso, você pode ir para a guia App ou Dispositivos.

Se você deseja limitar o remapeamento da chave para aplicativos específicos, crie uma regra de mapeamento que seja para um ID de aplicativo específico (por exemplo, google chrome). Então, você iria para a guia do aplicativo e obteria o ID do aplicativo de seu interesse (a ser usado posteriormente quando criarmos a regra).

insira a descrição da imagem aqui

No meu caso, SÓ quero remapear essas teclas no meu controle remoto Satechi bluetooth e não quero estragar o funcionamento de minhas teclas de teclado existentes ... então, quero criar uma regra específica para o dispositivo. Então, eu vou para a guia Dispositivos.

insira a descrição da imagem aqui

Nota!!! Para aplicativos e dispositivos, você também deve copiar e colar em um arquivo de texto para ter as sequências completas de ID de dispositivo / aplicativo para uso em nossa regra.

Construindo as regras

Agora que você tem códigos-chave, IDs de aplicativos e / ou dispositivos copiados e colados em um arquivo de texto para referência posterior, você pode fechar o EventViewer e voltar ao aplicativo principal.

As regras padrão não são muito interessantes para nós, portanto, precisamos criar uma regra personalizada, mas editando private.xml

insira a descrição da imagem aqui

Isso apenas iniciará uma janela do localizador mostrando private.xml. Vá em frente e abra private.xml no seu editor de texto favorito.

Agora você está pronto para criar regras ...

A documentação sobre o formato deste arquivo está aqui: https://pqrs.org/osx/karabiner/xml.html.en

Para cada um <item>você precisa de mínimo <name> <identifier> e <autogen>. Nome é apenas um nome para você. O identificador também é composto por você, mas deve ser exclusivo. autogen é onde você especifica a regra / mapeamento (ou seja, a chave de interesse deve enviar as chaves para a barra).

De interesse adicional, você pode especificar que a regra é executada apenas para aplicativos ativos específicos (acho que é aqui que as permissões de acessibilidade do MacOS entram em jogo ... para que o Karabiner possa determinar a janela ativa). Isso é feito com <only>.

Também é interessante (para mim) o <device_only>que me permite fazer uma regra apenas para um teclado específico (ou seja, meu controle remoto via satélite bluetooth). Veja o link acima para mais detalhes.

De qualquer forma. Use os IDs de código-chave, de dispositivo e de aplicativo que você obteve do EventViewer para construir suas regras personalizadas.

O meu fica assim:

<?xml version="1.0"?>
<root>
    <item>
        <name>Satechi Right</name>
        <identifier>private.satechi.right</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_NEXT_17, KeyCode::CURSOR_RIGHT</autogen>
    </item>
    <item>
        <name>Satechi Left</name>
        <identifier>private.satechi.left</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_PREV_18, KeyCode::CURSOR_LEFT</autogen>
    </item>
</root>

Resumo: 2 regras. Apenas dispositivo remoto Bluetooth Satechi. o botão "próximo" da mídia é mapeado para a seta direita, o botão "anterior" para a seta esquerda. Aplica-se a todos os aplicativos.

Carregar as regras

Salve seu arquivo XML. Volte para o aplicativo Karabiner. Vá para a guia "Alterar chave". Clique em "Recarregar XML" no canto superior esquerdo. Suas novas regras devem aparecer agora. Marque as caixas para ativar as regras. Teste se seus novos mapeamentos de teclas funcionam como esperado.

insira a descrição da imagem aqui

O aplicativo definitivamente não é fácil de usar, mas me permitiu configurar exatamente o que eu queria com bastante facilidade, depois que entendi as opções. O Karabiner é um pouco problemático ... Alguns eventos pararam de aparecer no visualizador de eventos, embora as regras de remapeamento ainda estivessem funcionando ... reiniciar ajuda.

mattpr
fonte
1
Parece que o sucessor do Karabiner, o Karabiner-Elements, que é uma atualização necessária para versões mais recentes do MacOS, não vê os controles do dispositivo de mídia Bluetooth. O novo EventViewer não registra tais pressionamentos de botão, mas o iTunes ainda é iniciado de qualquer maneira. :(
wfaulk 5/09