1 votos

Karabiner no repite el comando de shell en el bloque "to_if_held_down"

Quiero mapear mi botón del mouse 5 de manera que option + botón 5 vaya a la siguiente pista si se presiona una vez, y si se mantiene presionado avance continuamente 10 segundos.

He añadido la siguiente regla a Karabiner:

{
  "title": "Remapeo de botón de mouse",
  "rules": [
    {
      "description": "Mapea opción + botón 5 a próxima pista",
      "manipuladores": [
        {
          "tipo": "básico",
          "from": {
            "pointing_button": "botón5",
            "modifiers": {
              "obligatorio": [
                "option"
              ]
            }
          },
          "to_if_alone": [
            {
              "key_code": "rewind"
            }
          ],
          "to_if_held_down": [
            {
              "shell_command": "osascript -e 'tell application \"Spotify\" to player position' | awk '{ print $1 - 10 }' | xargs -I {} osascript -e 'tell application \"Spotify\" to set player position to {}'",
              "repetir": true
            }
          ]
        }
      ]
    }
  ]
}

Por alguna razón, cuando mantengo presionado option + botón 5, la pista avanza 10 segundos solo una vez.

Lo extraño es que, si reemplazo el shell_command en el bloque to_if_held_down por simplemente "key_code" : "rewind", entonces se envían un montón de eventos de rebobinado a Spotify.

¿Hay alguna opción de configuración que me esté faltando?

Por si acaso, también estoy ejecutando Bearded Spice de manera que todos los eventos de teclas multimedia se envían únicamente a Spotify.

1voto

zonble Puntos 2925

La documentación de Karabiner-Elements para "to.repeat" explica:

El valor predeterminado es true.
La repetición de teclas se suprimirá si to.repeat es false.

Obviamente una línea "repeat: true" es inútil - no puedes "forzar" una repetición; de todos modos es el valor predeterminado.

Pero más importante para tu script:
"shell_command" desafortunadamente NO es una "tecla" - "rewind" SÍ es una tecla.
Por lo tanto, "shell_command" no puede ser repetido manteniendo presionada la tecla original "from-key".
Y: en cualquier secuencia de "key_code"s, solo el último sería repetido (ver enlace anterior).

Me señalaron la razón de este comportamiento por little-big-h (github.com):

Encontré el código que hace que karabiner envíe un evento de liberación de tecla antes de enviar
el próximo evento de presionar tecla en una secuencia. Se puede desactivar usando este parche.

Su parche requiere que compiles Karabiner-Elements a partir del código fuente; eso es demasiado para mí ... lo siento.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X