Verwenden von Karabinern, um das Problem des doppelten Drückens anzugehen

Ich habe dieses Problem (wieder) - das Drücken einer Taste (b für mich) führt manchmal dazu, dass es zweimal registriert wird. https://discussions.apple.com/thread/7840547

Gibt es eine Möglichkeit, Karabiner-Elemente so zu modifizieren, dass beim zweimaligen Drücken einer Taste innerhalb kurzer Zeit die zweite Taste nicht registriert wird? https://pqrs.org/osx/karabiner/complex_modifications/

Karabiner ordnet neu zu , es ändert das Tastenverhalten nicht . Mit anderen Worten, wenn Sie eine Taste neu zuordnen und zweimal drücken, wird die Neuzuordnung zweimal ausgeführt. Sie haben ein Hardwareproblem und die Tastatur muss repariert werden. Apple hat speziell dafür ein Reparaturprogramm .
Danke für den Link. Ich glaube, ich habe Karabiner auch über diesen Link herausgefunden. Diese Frage bezieht sich jedoch speziell auf Karabiner. Wie können meine Anwendungen bei gleichem Tastenverhalten (es wird erkannt, dass eine Taste in schneller Folge gedrückt wird) erkennen, dass die Taste nur einmal gedrückt wird?
Du kannst nicht. Siehe meinen vorherigen Kommentar.
Ja, du kannst. Siehe meine Antwort unten.

Antworten (2)

Für Ihren speziellen Fall würde ich vorschlagen, dass Sie Karabinerelemente verwenden. und bearbeiten Sie es ~/.config/karabiner/karabiner.jsonso (hinzugefügt zu / nach "Regeln"):

BEARBEITEN / ausfallsichere Version:
– Kopieren/Einfügen des folgenden Codes in TextEdit und "Speichern unter..." WhateverNameYouLike.json
– Als nächstes manuell eine Kopie verschieben nach ~/.config/karabiner/assets/complex_modifications/
– Abschließend aus KE importieren: Registerkarte "Komplexe Änderungen", Schaltflächen [+ Regel hinzufügen] & [+ Aktivieren]

{ "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"
                }  
            ]
        }
    ]    
}

Wie Sie sehen können, wird der Buchstabe "b" NICHT neu zugeordnet, aber in "to_if_held_down" wird verhindert, dass er wiederholt wird durch "repeat": false; offensichtlich kann der Buchstabe „b“ durch jeden anderen fehlenden Buchstaben ersetzt werden.
(Der Schwellwert ist auf minimal 1/100 Sekunde definiert, Sie werden also keinen Unterschied bemerken ...)

Bitte melden Sie, ob dieser Code für Sie tut, was er tun soll.
[EDIT:] Diese Lösung funktioniert für den Benutzer in (Ex-) Schwierigkeiten.
(Ich musste die Situation simulieren, indem ich in einer App testete, die Tasten wiederholt, wenn sie gedrückt gehalten werden – aber tatsächlich könnte Ihr Problem ein nicht lösbares mechanisches Problem sein …)

Hinweis:
Diese Methode ist jedoch möglicherweise nicht ratsam/anwendbar, wenn das Gedrückthalten einer Taste (zB: "a") in einer App ein kleines Fenster darüber öffnet, das (zB:) "ä" / "å" anbietet. / "ậ" oder ähnliche Auswahlmöglichkeiten – WENN Sie diese Sonderzeichen benötigen .
Dieses Verhalten würde verhindert werden durch "repeat": false.
Aber dann: Sie können "Tastatur- und Zeichenanzeige in Menüleiste anzeigen"
in den Systemeinstellungen aktivieren und sie aus der Menüleiste abrufen ...

Vielen Dank, dass Sie meine Frage verstehen und bestätigen, dass meine Frage gültig ist. Mein Problem ist jedoch nicht gelöst, nichts scheint sich geändert zu haben. Dies ist meine karabiner.jsonaktuelle: gist.github.com/tonghuikang/a7d65b98e30f6f37765e696f8e8dd4da
Hallo, ich habe gerade in Ihre JSON-Datei geschaut – und gesehen, dass Sie tatsächlich DREI Instanzen von "Complex Modifications" haben, von denen EINE absolut ausreichend ist. Dann haben Sie nicht die gesamte "Funktion" oben als EIN STÜCK eingefügt. … So. Ich habe eine Version unter gist.github.com/tonghuikang/a7d65b98e30f6f37765e696f8e8dd4da eingefügt. Versuchen Sie das!
Das funktioniert, danke! Ich habe von "10" auf "1" geändert, es scheint auch zuverlässiger zu funktionieren.

Ein Python3-Hilfsskript für die obige Antwort, das alle Tasten abbildet:

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!')

Dadurch werden 26 Dateien (eine für jeden Buchstaben) generiert und in das entsprechende Verzeichnis kopiert.