0 votos

Detectar la tecla fn y la tecla de función pulsadas simultáneamente

Estoy usando ControllerMate para intentar cambiar lo que hacen mis botones de volumen.

Desafortunadamente, no he descubierto cómo puedo detectar que el F11 o F12 se presionan al mismo tiempo que las teclas fn clave.

Originalmente había planeado combinar un F11 detector de pulsación de teclas y un AppleScript que comprueba la fn clave.

enter image description here

No he sido capaz de encontrar una manera en AppleScript para detectar el fn clave. La investigación me llevó a posibles soluciones, como

do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags()'"

Pero esto no puede distinguir entre las diferentes teclas de función o fn .

Después de casi una semana intentando resolverlo yo mismo os pregunto; ¿hay alguna forma de detectar en ControllerMate un fn y la pulsación de teclas de función?

1voto

theonlygusti Puntos 184

He encontrado una forma de hacerlo que utiliza el impresionante Karabiner-Elements . Esto me ha sido muy útil en muchas situaciones, y también funciona aquí.

Mosquetón puede detectar las teclas de función que se presionan, y decir si es con o sin el fn modificador de teclas.

Podemos hacer nuestra propia "modificación compleja" que aproveche esto:

  1. Las modificaciones complejas se almacenan en ~/.config/karabiner/assets/complex_modifications como archivos json. Cree un archivo aquí con su editor de texto favorito:

    vim ~/.config/karabiner/assets/complex_modifications/detect_fn.json
  2. Tienes que llenar el archivo con tus propias reglas, así es como se ve el mío ahora:

    {
      "title": "The fn keys can control volume of built-in output even when a multi-output device is being used.",
      "rules": [
        {
          "description": "Map fn volume keys to execute applescript which changes volume of built-in output.",
          "manipulators": [
            {
              "type": "basic",
              "from": {
                "key_code": "f10",
                "modifiers": {
                  "mandatory": [
                    "fn"
                  ]
                }
              },
              "to": [
                {
                  "shell_command": "osascript -e 'set volume alert volume 0' && osascript -e 'set volume (alert volume of (get volume settings))*7/100'"
                }
              ]
            },
            {
              "type": "basic",
              "from": {
                "key_code": "f11",
                "modifiers": {
                  "mandatory": [
                    "fn"
                  ]
                }
              },
              "to": [
                {
                  "shell_command": "osascript -e 'set volume alert volume ((alert volume of (get volume settings)) - 100/16)' && osascript -e 'set volume (alert volume of (get volume settings))*7/100'"
                }
              ]
            },
            {
              "type": "basic",
              "from": {
                "key_code": "f12",
                "modifiers": {
                  "mandatory": [
                    "fn"
                  ]
                }
              },
              "to": [
                {
                  "shell_command": "osascript -e 'set volume alert volume ((alert volume of (get volume settings)) + 100/16)' && osascript -e 'set volume (alert volume of (get volume settings))*7/100'"
                }
              ]
            }
          ]
        }
      ]
    }
  3. Debería ser obvio cómo puedes reemplazar las teclas con las que quieras, y también puedes reemplazar el comando shell con cualquier comando shell.

  4. Añadir la regla en karabiner-elements por

    1. Puesta en marcha

    2. Elegir "Modificaciones complejas" en la parte superior

    3. Haciendo clic en "(+) Añadir regla"

    4. Habilitar la regla que acaba de definir

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