Uso de mosquetón para abordar el problema de la doble presión

Tengo este problema (nuevamente): presionar una tecla (b para mí) a veces hace que se registre dos veces. https://discusiones.apple.com/thread/7840547

¿Hay alguna manera de usar elementos de mosquetón para modificar de manera que cuando se presiona una tecla dos veces en poco tiempo, la segunda tecla no se registra? https://pqrs.org/osx/karabiner/complex_modifications/

Karabiner reasigna , no modifica el comportamiento de las teclas . En otras palabras, si reasigna una tecla y la presiona dos veces, ejecutará la reasignación dos veces. Tiene un problema de hardware y necesita reparar el teclado. Apple tiene un programa de reparación específico para esto.
Gracias por el enlace. Creo que también descubrí Karabiner por ese enlace. Sin embargo, esta pregunta es específicamente sobre Karabiner. Dado el mismo comportamiento de tecla (se detecta que una tecla se presiona en una sucesión rápida), ¿cómo pueden mis aplicaciones reconocer que la tecla se presiona una sola vez?
no puedes Ver mi comentario anterior.
Sí tu puedes. Vea mi respuesta a continuación.
Solo una nota: su computadora puede ser elegible para support.apple.com/keyboard-service-program-for-mac-notebooks

Respuestas (2)

Para su caso especial, le sugiero que use Karabiner Elements. y edítelo ~/.config/karabiner/karabiner.jsonde esta manera (agregado a/después de "reglas"):

EDITAR / versión a prueba de fallas:
– Copie/pegue el código a continuación en TextEdit y "Guardar como..." WhateverNameYouLike.json
– Luego mueva manualmente una copia a ~/.config/karabiner/assets/complex_modifications/
– Finalmente importe desde KE: pestaña "Modificaciones complejas", botones [+ Agregar regla] & [+ Habilitar]

{ "title": "Keep solitary letter/key ''b'' from multiple press!",
  "rules": [
     { "description": "Keep 'b' from being pressed twice",
       "manipulators": [
        { "from": { "key_code": "b" },
          "parameters": {"basic.to_if_held_down_threshold_milliseconds": 10},
          "to_if_held_down":[
                 { "key_code": "b",
                   "repeat": false }],
          "type": "basic"
                }  
            ]
        }
    ]    
}

Como puede ver, la letra "b" NO se vuelve a asignar, pero en "to_if_held_down" no se repite "repeat": false; obviamente, la letra 'b' puede ser sustituida por cualquier otra letra que falle.
(El umbral se define en un mínimo de 1/100 de segundo, por lo que no notará ninguna diferencia...)

Informe si este código hace por usted lo que se supone que debe hacer.
[EDITAR:] Esta solución funciona para el usuario en (ex-) problemas.
(Tuve que simular la situación probando en una aplicación que repite las teclas si se mantienen presionadas, pero en realidad el tuyo puede ser un problema mecánico sin solución...)

Nota:
Sin embargo, este método puede no ser recomendable/aplicable si al mantener presionada una tecla (p. ej.: "a") en una aplicación se abre una pequeña ventana encima que ofrece (p. ej.:) "ä" / "å" / "ậ" o opciones similares, SI necesita esos caracteres especiales .
Este comportamiento se evitaría con "repeat": false.
Pero entonces:
puede activar "Mostrar visores de teclado y caracteres en la barra de menú" en Preferencias del sistema y obtenerlos desde la barra de menú...

Gracias por entender mi pregunta y validar que mi pregunta es válida. Sin embargo, mi problema no está resuelto, nada parece haber cambiado. Este es mi karabiner.jsonactualmente: gist.github.com/tonghuikang/a7d65b98e30f6f37765e696f8e8dd4da
Hola, acabo de revisar su archivo json y vi que en realidad tiene TRES instancias de "Modificaciones complejas" donde UNO es absolutamente suficiente. Luego, no pegaste toda la "función" anterior como UNA PIEZA. … Entonces. Pegué una versión en tu gist.github.com/tonghuikang/a7d65b98e30f6f37765e696f8e8dd4da. ¡Prueba ese!
¡Esto funciona, gracias! Cambié de "10" a "1", parece que también funciona de manera más confiable.

Una secuencia de comandos auxiliar de Python3 para la respuesta anterior, que asigna todas las claves:

import json
import string
letters = list(string.ascii_lowercase)

for x in letters:
    output = {'title': f'Double Type {x}',
          'rules': [
             {
                'description': f'Keep `{x}` from a double keypress',
                'manipulators': [
                    {
                        'from': {'key_code': f'{x}'},
                        'parameters': {"basic.to_if_held_down_threshold_milliseconds": 10},
                        'to_if_held_down': [
                             {
                                'key_code': f'{x}',
                                'repeat': 'false'
                            }
                        ],
                        'type': 'basic'
                        }  
                ]
            } 
          ]
    }
    with open(f'doubletype_{x}.json', 'w')as outfile:
        json.dump(output, outfile)
        
# Copying files to directory
import glob
import shutil
from os.path import expanduser

home = expanduser("~")

print('Copying files...')
for file in glob.glob('doubletype_*'):
    shutil.copyfile(file, f'{home}/.config/karabiner/assets/complex_modifications/{file}')
print('Copying files complete!')

Esto generará 26 archivos (uno para cada letra) y los copiará en el directorio apropiado.