mapear o botão do headset no gnome3

1

Como posso mapear no gnome3 o botão do meu fone de ouvido bluetooth?

O Gnome vê um evento AcceleratorActivated quando eu o pressiono:

$ dbus-monitor --monitor
signal time=1525078944.868498 sender=:1.17 -> destination=:1.52 serial=2069 path=/org/gnome/Shell; interface=org.gnome.Shell; member=AcceleratorActivated
   uint32 152
   array [
      dict entry(
         string "device-id"
         variant             uint32 3
      )
      dict entry(
         string "timestamp"
         variant             uint32 61966125
      )
      dict entry(
         string "action-mode"
         variant             uint32 1
      )
   ]

Mas o gnome não faz nada, exceto mostrar um ícone "action-unavailable-symbolic" no OSD do gnome (eu uso um tema dark gnome):

OseguintedbusShowOSDevenévistoaomesmotempo:

$dbus-monitor--monitormethodcalltime=1525078944.869555sender=:1.52->destination=:1.17serial=246path=/org/gnome/Shell;interface=org.gnome.Shell;member=ShowOSDarray[dictentry(string"icon"
         variant             string "action-unavailable-symbolic"
      )
   ]

Os botões de headset não são reconhecidos pelo gnome nas configurações habituais de mapeamento de teclado disponíveis em: Settings > keyboard > Add Custom Shortcut : embora funcione muito bem com o mapeamento das teclas do teclado, os botões do headset não são detectados por essa ferramenta quando eu os pressiono, por isso não consigo usá-la para mapear o botão do headset.

O que eu quero fazer é acionar a reprodução / pausa quando eu pressionar o botão do fone de ouvido. Alguma ideia de como fazer isso?

    
por Eric 30.04.2018 / 11:20

1 resposta

1

Ver AcceleratorActivated significa que a chave já está mapeada para algo; possivelmente para o item "play / pause" embutido. Caso contrário, não teria sido submetido ao gnome-shell durante o registro do acelerador.

Se você reiniciar o gnome-shell enquanto assiste ao barramento, verá uma chamada de método para GrabAccelerators contendo todos os nomes das chaves e um método correspondente contendo as IDs de acesso. Com isso, você pode decifrar o ID do AcceleratorActivated, como 152 no seu caso, de volta à combinação de teclas. (É muito provável que o sistema já reconheça seu botão como XF86AudioPlay . E o GNOME já possui um mapeamento padrão para "XF86AudioPlay ⇒ play / pause via MPRIS".)

Nesse caso, o ∅ OSD é mostrado se não houver um player compatível com MPRISv2 para o qual o gnome-shell possa encaminhar o evento, nem um player usando as funções específicas do GNOME para receber chaves de mídia.

    
por 30.04.2018 / 12:46