4 votes

Comment désactiver la touche d'éjection sur le clavier de mon Mac ?

J'ai un clavier Das pour Mac qui comprend une touche d'éjection juste à droite de la touche de retour en arrière et à gauche de la touche d'accueil. Je n'ai jamais besoin de l'utiliser, et j'appuie constamment dessus par accident, ce qui provoque l'ouverture de mon tiroir à CD. C'est vraiment ennuyeux.

Existe-t-il un moyen de désactiver cette clé ?

S'il existe un moyen de conserver l'autre fonctionnalité de la touche à laquelle on accède en tenant divers modificateurs (par exemple controlshifteject pour mettre l'écran en veille), ce serait génial. Cependant, si la seule méthode permet de désactiver entièrement la touche, cela me convient.

Notez que j'utilise Sierra et que le mousqueton n'est pas une option.

4voto

pkamb Points 5369

J'ai créé une application, PowerKey qui vous permet de remapper les touches Power et Eject sur les claviers Mac.

Choisissez un remplacement de clé tel que Forward Delete ou utiliser No Action pour désactiver entièrement la clé.

Vous pouvez également lancer Apple scripts ou bash scripts via la touche.

PowerKey app icon

https://github.com/pkamb/PowerKey

remap options

https://github.com/pkamb/PowerKey

3voto

nert Points 39

En fait, Karabiner Elements fonctionnait très bien avec Sierra sur mon ancien Mac Pro - jusqu'à une récente mise à jour de l'OS. J'ai assigné la touche F6 à "éjection", ce qui a désactivé la touche "éjection" normale. Karabiner a également eu une mise à jour récente (il y a quelques jours) qui semblait remettre par défaut tous mes mods de clavier en standard Apple. Je suis retourné à une version antérieure dans la sauvegarde, et cela n'a pas réglé le problème. Maintenant, j'assigne toujours la F6 à "Ejecter" (et cela fonctionne bien), mais le bouton "Ejecter" n'est plus désactivé. J'ai fait beaucoup de recherches sur le net et il semble qu'Apple nous tienne pour l'instant. À ce stade, je pourrais essayer de fabriquer un couvercle qui s'adapte sur ce coin, de sorte que lorsque je frappe accidentellement la touche, elle ne fonctionne pas.

C'est ma solution lo-tech. enter image description here

1voto

Bri Bri Points 1991

J'ai fini par écrire une application personnalisée pour filtrer les pressions sur les touches d'éjection. Elle utilise un événement tap pour le faire. Voici un exemple minimalement fonctionnel qui démontre comment faire :

#include <stdio.h>
#include <ApplicationServices/ApplicationServices.h>

static CFMachPortRef machPortRef = NULL;

CGEventRef specialKeyEventTapCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
    if (type == kCGEventTapDisabledByTimeout) {
        CGEventTapEnable(machPortRef, true);
        return event;
    }

    uint64_t subtype = CGEventGetIntegerValueField(event, 99);

    if (subtype == 8) {
        static CGEventFlags allModifiers = (kCGEventFlagMaskShift | kCGEventFlagMaskControl | kCGEventFlagMaskAlternate | kCGEventFlagMaskCommand);
        int keycode = ((CGEventGetIntegerValueField(event, 149) & 0xFFFF0000) >> 16);
        CGEventFlags flags = CGEventGetFlags(event);

        if (keycode == NX_KEYTYPE_EJECT && (flags & allModifiers) == 0) {
            // filter eject key when no modifiers are pressed
            return NULL;
        }
    }

    return event;
}

int main()
{
    CFRunLoopSourceRef eventSrc = NULL;

    machPortRef =  CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, CGEventMaskBit(NX_SYSDEFINED), (CGEventTapCallBack)specialKeyEventTapCallback, NULL);

    if (machPortRef == NULL) {
        fprintf(stderr, "CGEventTapCreate failed!\n");
        return 1;
    }

    eventSrc = CFMachPortCreateRunLoopSource(NULL, machPortRef, 0);
    CFRunLoopAddSource(CFRunLoopGetCurrent(), eventSrc, kCFRunLoopDefaultMode);

    CFRunLoopRun();

    CFRelease(machPortRef);
    CFRelease(eventSrc);
}

1voto

chopstik Points 111

Karabiner-Elements a été mis à jour et me permet de désactiver la touche d'éjection sur MacOS 10.13.6 - High Sierra sans problème : https://pqrs.org/osx/karabiner/index.html

Screenshot of the simple modification

0voto

Tony Williams Points 11219

Si vous dites "Notez que j'utilise Sierra et que l'utilisation d'un mousqueton n'est pas une option", vous constaterez que Éléments du mousqueton qui fonctionne dans Sierra, fera ce que vous voulez.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X