4 votos

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

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 usarla, y accidentalmente la pulso constantemente, lo que hace que mi bandeja de CD se abra. Es realmente molesto.

¿Hay alguna forma de desactivar esta tecla?

Si hay una forma de mantener la otra funcionalidad de la tecla a la que se accede manteniendo varios modificadores (por ejemplo controlshifteject para poner la pantalla en reposo) sería genial. Sin embargo, si el único método que hay es desactivar la tecla por completo, me parece bien.

Tenga en cuenta que estoy usando Sierra por lo que el uso de Karabiner no es una opción.

2 votos

¿Estás usando un Mac Pro? No se me ocurre otro Mac con bandeja de CD que soporte Sierra.

0 votos

@JMY1000 De hecho lo soy

0 votos

¿Sacar la llave?

4voto

Goro Puntos 264

He creado una aplicación, PowerKey que permite reasignar las teclas de encendido y expulsión de los teclados Mac.

Escoge un reemplazo de llave como Forward Delete o utilizar No Action para desactivar la llave por completo.

También puede lanzar Apple scripts o bash scripts a través de la llave.

PowerKey app icon

https://github.com/pkamb/PowerKey

remap options

https://github.com/pkamb/PowerKey

1 votos

Esto funciona muy bien, y me permitió ejecutar un script cuando el Eject que ahora bloquea mi salvapantallas en lugar de desactivar todos mis monitores.

3voto

nert Puntos 39

De hecho, Karabiner Elements funcionaba muy bien con Sierra en mi antiguo Mac Pro, hasta una reciente actualización del sistema operativo. Asigné la tecla F6 a "expulsar", y eso deshabilitó la tecla normal de "expulsión". Karabiner también ha tenido una actualización reciente (hace un par de días) que parece que ha devuelto todas mis modificaciones de teclado al estándar de Apple. Volví a una versión anterior en la copia de seguridad, y no solucionó el problema. Ahora, todavía asigno la F6 a "Expulsar" (y funciona bien allí), pero el botón "Expulsar" ya no está desactivado. Hice un montón de búsqueda en la red y parece que Apple nos tiene en esta por ahora. En este punto, puede que intente hacer una tapa que se ajuste a esa esquina, para que cuando accidentalmente pulse la tecla, no funcione.

Esta es mi solución de baja tecnología. enter image description here

1voto

GuyGizmo Puntos 243

Terminé escribiendo una aplicación personalizada para filtrar las pulsaciones de las teclas de expulsión. Utiliza un evento de toque para hacerlo. Aquí hay un ejemplo mínimamente funcional 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);
}

1voto

David Sergey Puntos 148

Karabiner-Elements se ha actualizado y me permite desactivar la tecla de expulsión en MacOS 10.13.6 - High Sierra sin problemas: https://pqrs.org/osx/karabiner/index.html

Screenshot of the simple modification

0voto

Tony Williams Puntos 4903

Mientras que usted dice "Tenga en cuenta que estoy usando Sierra por lo que el uso de Karabiner no es una opción". Elementos del mosquetón que sí se ejecuta en Sierra, hará lo que quieres.

3 votos

Por desgracia, su página de GitHub tiene la siguiente nota: "Karabiner-Elements no puede modificar la clave de expulsión debido a la limitación de la API de MacOS". Así que parece que no puede hacer lo que quiero :-(

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X