Detectar fn y tecla de función presionadas simultáneamente

0

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

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

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

NohepodidoencontrarunamaneraenAppleScriptparadetectarlaclavefn.Lainvestigaciónmellevóaposiblessoluciones,como

doshellscript"/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 tratando de resolver esto por mi cuenta, te pregunto; ¿hay una manera de detectar en ControllerMate un fn y una tecla de función simultáneas?

    
pregunta theonlygusti 20.08.2017 - 23:40

1 respuesta

0

Encontré una forma de hacer esto que usa the awesome Karabiner-Elements . Esto me ha sido muy útil en muchas situaciones y también funciona aquí.

Karabiner puede detectar las teclas de función que se presionan, y saber si está con o sin el modificador de tecla fn .

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

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

    vim ~/.config/karabiner/assets/complex_modifications/detect_fn.json
    
  2. Debes completar el archivo con tus propias reglas, así es como se ve 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 claves con las que quieras, y también puedes reemplazar el comando de shell con cualquier comando de shell.

  4. Agregue la regla a los elementos karabiner mediante

    1. Iniciándolo

    2. Elegir "Modificaciones complejas" desde la parte superior

    3. Al hacer clic en "(+) Agregar regla"

    4. Habilitando la regla que acaba de definir

respondido por el theonlygusti 29.08.2017 - 02:13

Lea otras preguntas en las etiquetas