¿Cómo puedo deshabilitar la tecla de expulsión en el teclado de mi mac?

3

Tengo un Das Keyboard para Mac que incluye una tecla de expulsión justo a la derecha de la tecla de retroceso y a la izquierda de la tecla de inicio. Nunca necesito usarlo, y accidentalmente lo presiona constantemente, lo que hace que se abra la bandeja de mi CD. Es realmente molesto.

¿Hay alguna forma de deshabilitar esta clave?

Si hay una manera de mantener la otra funcionalidad de la clave a la que se accede manteniendo varios modificadores (por ejemplo, control shift eject para colocar la pantalla dormir) eso sería genial. Sin embargo, si solo el método desactiva la clave por completo, estoy de acuerdo con eso.

Tenga en cuenta que estoy usando Sierra, por lo que usar Karabiner no es una opción.

    
pregunta GuyGizmo 08.06.2017 - 23:29

4 respuestas

0

Terminé escribiendo una aplicación personalizada para filtrar las pulsaciones de expulsión. Utiliza un toque de evento para hacerlo. Aquí hay un ejemplo que funciona mínimamente que demuestra cómo hacerlo:

#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);
}
    
respondido por el GuyGizmo 26.09.2017 - 00:14
3

En realidad, tenía Karabiner Elements funcionando muy bien con Sierra en mi Mac Pro anterior, hasta una actualización reciente del sistema operativo. Asigné la tecla F6 a "expulsar", y eso deshabilitó la tecla "expulsar" normal. Karabiner también tenía una actualización reciente (hace un par de días) que parecía que todos los mods de mi teclado volvían por defecto a Apple estándar. Volvió a una versión anterior en copia de seguridad y no solucionó el problema. Ahora, todavía asigno el F6 a "Expulsar" (y funciona bien allí), pero el botón "Expulsar" ya no está deshabilitado. Hice un montón de búsquedas en la red y parece que Apple nos tiene en esto por ahora. En este punto, podría intentar hacer una cubierta que se ajuste a esa esquina, así que cuando presiono accidentalmente la tecla, no funciona.

Esta es mi solución lo-tech.

    
respondido por el nert 13.09.2017 - 03:44
2

Creé una aplicación, PowerKey , que te permite volver a asignar las teclas de Encendido y Expulsión en los teclados de Mac.

Elija un reemplazo de clave como Forward Delete , o use No Action para deshabilitar la clave por completo.

También puede iniciar Apple Scripts o bash scripts a través de la tecla.

enlace

enlace

    
respondido por el pkamb 25.10.2017 - 08:18
0

Mientras dices "Ten en cuenta que estoy usando Sierra, por lo que usar Karabiner no es una opción". encontrará que Karabiner Elements , que se ejecuta en Sierra, hará lo que quiera.

    
respondido por el Tony Williams 09.06.2017 - 02:07

Lea otras preguntas en las etiquetas