¿Cómo eliminar o deshabilitar un diseño de teclado predeterminado?

¿Es posible eliminar o deshabilitar uno de los diseños de teclado predeterminados de OS X Lion?

Estoy usando un diseño de teclado personalizado, y ahora que logré configurarlo como el diseño de teclado predeterminado en todo el sistema , me gustaría poder desmarcar o eliminar el diseño de teclado "EE. UU." incorporado que viene con el sistema operativo. X. Aquí hay una captura de pantalla: tenga en cuenta que la casilla de verificación está deshabilitada:

Captura de pantalla

En OS X 10.9, este panel de preferencias se ha rediseñado, pero aún no hay forma de "eliminar" el diseño de teclado "EE. UU." incorporado:

Captura de pantalla

Dado que nunca uso el diseño de teclado de EE. UU., me encantaría deshacerme de él, es decir, eliminarlo del menú Entrada en la barra de menú. ¿Cómo puedo hacer esto?


Actualización: la respuesta de Daniel realmente no responde a esta pregunta, pero ofrece información valiosa sobre este problema:

Mac OS X parece requerir al menos un diseño de teclado que el sistema reconozca como un diseño de "caracteres latinos" para ser seleccionado.

Suponiendo que esta sea información precisa (¡gracias, Daniel!), la pregunta podría reformularse de la siguiente manera:

¿Cómo hacer que OS X considere un teclado personalizado como un diseño de caracteres latinos?


Actualización: Acabo de encontrar algo que podría ayudar.

No creo que "latín" sea suficiente. Eso se logra fácilmente en Ukelele configurando la ID del teclado en Roman. Sospecho que su diseño también tiene que ser parte de AppleKeyboardLayouts.bundle en diseños de sistema/biblioteca/teclado.

Respuestas (11)

Para macOS 10.8 y posteriores :

  1. Cambie la fuente de entrada actual a su diseño de teclado personalizado.
  2. Abierto ~/Library/Preferences/com.apple.HIToolbox.plist(en 10.9) o ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(en 10.8 y anteriores). Puede convertir la plist a XML con plutil -convert xml1.
  3. Elimine la fuente de entrada o las fuentes de entrada que desea deshabilitar del AppleEnabledInputSourcesdiccionario. Si hay una AppleDefaultAsciiInputSourcellave, quítela.
  4. Reanudar.

Para macOS 10.7 y anteriores :

  1. Habilite una fuente de entrada que no sea como el diseño de su teclado físico desde Preferencias del sistema (utilicé Afghan Dari).
  2. corre f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e_
  3. Elimine otras fuentes de entrada, excepto el diseño de teclado habilitado temporalmente y su diseño de teclado personalizado.
  4. Cerrar sesión y volver a iniciar sesión.
  5. Elimine el diseño de teclado habilitado temporalmente de la lista de propiedades.
  6. Cerrar sesión y volver a iniciar sesión.

Esto funcionó a la perfección: ni siquiera tuve que probar el plan de respaldo en su último párrafo. ¡Muchas gracias!
Acabo de encontrar su < osxnotes.net/keylayout-files-and-ukelele.html > que ofrece una solución para OS X 10.9. Sin embargo, no parece funcionar para mí. plistAsí es como se ve el archivo modificado : pastebin.com/raw.php?i=7kWVxXqx Después de cerrar sesión y volver a iniciarla, el diseño de teclado "EE. UU." predeterminado aún está habilitado. ¿Qué estoy haciendo mal?
Ajá, parece funcionar si reinicia la computadora en lugar de simplemente cerrar la sesión y volver a iniciarla (paso 4). ¡Gracias! ¿Le importaría publicar una nueva respuesta con un enlace a su recurso para que pueda obtener la recompensa?
@MathiasBynens Edité la respuesta y mi sitio web. Cuando probé el segundo método nuevamente, también tuve que reiniciar para aplicar los cambios.
Funciona bien en OS X 10.9 si reinicia su computadora. Sin embargo, también tuve que eliminar el diseño temporal del archivo plist y reiniciar usando 'reinicio sudo'; de lo contrario, el diseño temporal se volvió a agregar en el reinicio normal.
@Lri En 10.9 tuve que eliminar :AppleEnabledInputSources:0 (el antiguo elemento de diseño predeterminado) y el diccionario :AppleInputSourceHistory: (usando PlistBuddy). Sin reinicio, solo es necesario cerrar sesión.
El procedimiento OS X 10.9 también funciona en OS X 10.10 Yosemite.
No funciona en Yosemite para mí. Cada vez que cambio el archivo en Xcode, se restaura después de unos segundos. ¿Alguien puede explicar cómo lo hiciste exactamente?
Este método funcionó para mí (OS X 10.11 El Capitan) solo después de seguir estas instrucciones: superuser.com/a/869751/119669
¿Hasta qué punto podría eso romper la configuración del sistema operativo? Me pregunto si podría ayudar con este problema: github.com/ergosteur/cf-keylayout/issues/26#issue-890510914 (Big Sur v11.3.1)
Precaución: esto ha funcionado bien en mi Intel Mac, pero cuando lo hice en una Mac M1 con macOS 12, el teclado en la pantalla de bloqueo seguiría siendo el predeterminado en inglés ABC (que ni siquiera había usado).
Trabajó para mí en Monterey. Algunas acciones pueden sobrescribir el archivo recién modificado, por lo que el truco para mí fue cambiarlo desde la terminal (usando vim) y reiniciar de inmediato.

Parece que no puede hacer lo que quiere sin algún truco aún no descubierto en el sistema . Mac OS X parece requerir al menos un diseño de teclado que el sistema reconozca como un diseño de "caracteres latinos" para ser seleccionado. Esto evita que no pueda ingresar su contraseña en la pantalla de inicio de sesión, etc. Si seleccionó francés, canadiense u otra disposición de teclado que el sistema reconozca como caracteres latinos, puede anular la selección de la disposición estadounidense.

Su problema es que su diseño personalizado, aunque contiene caracteres latinos, no es reconocido por el sistema como un diseño de teclado latino y, por lo tanto, no puede ser el único diseño de teclado seleccionado. Consulte esta pregunta (lamentablemente sin una gran respuesta) para obtener más información.

Tenga en cuenta que una gran respuesta a esta pregunta también respondería a su pregunta. Por desgracia, mi respuesta aquí solo aclara cuál es el problema, pero no tengo una solución paso a paso para usted. Si bien tal truco puede ser posible, no veo evidencia de que alguien haya descubierto cómo convencer a Mac OS X de que un teclado personalizado en particular es seguro para usar como el único teclado seleccionable.

@Lri, sospecho que tiene razón, pero no tiene el hardware para probar eso. ¿Quizás hay un lector de este sitio que pueda?

En aras de la exhaustividad, presenté esto como ID de error n.º 11137961 con Apple, y esta es la respuesta que obtuve:

ID de error n.º: 11137961
Título del error: permitir la desactivación de diseños de teclado predeterminados (incorporados) cuando se usa uno personalizado


Ingeniería ha determinado que este problema se comporta según lo previsto en función de la siguiente información:

Si el problema es que el diseño de su teclado sea reconocido como compatible con ASCII, lo más fácil sería "agrupar" su .keylayout, luego su Info.plist puede contener un diccionario "KLInfo_" que lo describa mejor, como:

 <key>TISIntendedLanguage</key>
 <string>en</string>   # BCP 47 language string

Necesitaría investigar esto un poco más, pero parece que TIS escaneará la salida del diseño del teclado para producir un USet y producir una idea inicial de ascii-ness al pasar la siguiente prueba mínima:

 uset_containsRange(uSet, 0x0020, 0x0021) && uset_containsRange(uSet, 0x002C, 0x0039) &&
 uset_containsRange(uSet, 0x003F, 0x005A) && uset_containsRange(uSet, 0x0061, 0x007A);

TIS también examinará el conjunto de ejemplares para la configuración regional indicada anteriormente y requerirá una buena docena de caracteres en el rango [a-z].

Para obtener algunas sugerencias sobre cómo agrupar un .keylayout, consulte también TextInputSources.h.

Si esto sigue siendo un problema, o si tiene preguntas sobre la resolución de este problema, actualice su informe de errores con esa información.

Ahora estamos cerrando este informe de errores.

Marcado: mi diseño cumple con esos criterios, pero no se reconoce como un posible diseño predeterminado. Entonces, sus ingenieros no dieron la información completa o al parecer dieron información incorrecta.
@DmitryDulepov Es posible usarlo como diseño predeterminado, pero el botón para eliminar el otro aún no se activará; tendrías que hacerlo manualmente (ver mi comentario a la respuesta de Lri
@RolKau, sí, pero hay otros problemas más adelante. Si tiene más de un diseño, el nuevo diseño personalizado no estará disponible en algunas aplicaciones. Por ejemplo, no podrá cambiar a él en la barra de búsqueda de AppStore. Al menos, yo no pude.

Aquí hay otra idea: hace unos años, los paquetes para Apple Keyboard Layouts eran mucho más fáciles de editar, y este problema parece haberse solucionado:

http://hintsforums.macworld.com/archive/index.php/t-71629.html

Tal vez todavía se podría usar el antiguo paquete editable, si pudiera obtener uno de un sistema antiguo, en el sistema operativo actual.

Acabo de encontrar algo que podría ayudar. Aquí va:

$ defaults read /Library/Preferences/com.apple.HIToolbox.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "com.apple.keylayout.Dutch";
    AppleDefaultAsciiInputSource =     {
        InputSourceKind = "Keyboard Layout";
        "KeyboardLayout ID" = 1337;
        "KeyboardLayout Name" = QWERTY;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
}

Esto está en mi sistema, donde mi diseño de teclado personalizado (llamado "QWERTY") es el predeterminado. Tenga en cuenta que las propiedades KeyboardLayout Namey KeyboardLayout IDse refieren al ID y al nombre al comienzo del .keylayoutarchivo.

Como puede ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDtodavía devuelve la cadena "com.apple.keylayout.Dutch". ¿Hay una lista en alguna parte de los com.apple.keylayoutvalores disponibles? ¿Es posible obtener tal valor para un diseño de teclado personalizado? Porque en ese caso, simplemente podríamos anular la propiedad.

Además, las propiedades AppleEnabledInputSources, AppleInputSourceHistoryy AppleSelectedInputSourcesparecen ignorar la distribución de teclado personalizada, ya que sus valores corresponden a la distribución de teclado nativa de OS X que seleccioné originalmente cuando ejecuté el Asistente de configuración.


Otra actualización: ¡Ajá! Parece que hay otro plistarchivo del que podríamos copiar la configuración.

$ defaults read ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "org.unknown.keylayout.QWERTY";
    AppleDateResID =     {
        smRoman = 2;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.CharacterPaletteIM";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.KeyboardViewer";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleGlobalTextInputProperties =     {
        TextInputGlobalPropertyPerContextInput = 0;
    };
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleNumberResID =     {
        smRoman = 2;
    };
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleTimeResID =     {
        smRoman = 2;
    };
}

Como puede ver ( AppleCurrentKeyboardLayoutInputSourceID), los diseños de teclado aparentemente personalizados obtienen valores como "org.unknown.keylayout.FOO"dónde FOOestá el nombre del diseño de teclado (como se especifica en el .keylayoutarchivo).

Entonces, intentemos establecer todos los valores en nuestro diseño de teclado personalizado, con nombre QWERTYy con ID 1337(especificado en el .keylayoutarchivo):

sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"

Lamentablemente, esto no parece funcionar.

Actualización: @Lri descubrió un método confiable: vea su respuesta.

La respuesta de Apple a mi informe de error, en el que pedí que fuera posible eliminar el diseño de teclado predeterminado del sistema si se selecciona otro a través de Preferencias del sistema:

Ingeniería ha determinado que este no es un problema que Apple deba abordar.

Suponiendo que este diseño de teclado personalizado esté incluido ( .keylayoutestá dentro de un paquete similar foo.bundle/Contents/Resources/foo.keylayout), entonces esto podría ser tan fácil como insertarlo en el Info.plistdiccionario de KLInfo_:

<key>KLInfo_Qwerty</key>
<dict>
  <key>TISInputSourceID</key>
  <string>com.imgur.stack.keyboardlayout.Qwerty</string>
  <key>TISIntendedLanguage</key>  
  <string>en</string> 
</dict>

Si este diseño es necesario para todo el sistema (es decir, incluida la entrada de contraseña), podría instalarse en /Library/Keyboard Layouts/, en lugar de en la misma ubicación en ~/Library/.

Actualice su informe de errores para informarnos si esto sigue siendo un problema para usted.

Si tiene preguntas sobre la resolución de este problema, actualice su informe de errores con ellos.

Asegúrese de revisar regularmente los nuevos productos de Apple para ver si hay actualizaciones que puedan afectar este problema. Una vez más, gracias por tomarse el tiempo para enviar errores. Apreciamos sinceramente su entrada.

Acabo de eliminar con éxito el diseño predeterminado en High Sierra usando el siguiente método:

  1. Navega a tu Library/Preferencescarpeta.
  2. Abra el archivo com.apple.HIToolbox.plistfile, ya sea haciendo doble clic en él o usando openla línea de comando. Esto hará que aparezca XCode y es posible que desee instalar componentes adicionales.
  3. Repita el paso 2 hasta que XCode finalmente muestre la estructura del archivo.
  4. Localice el AppleEnabledInputSourcesnodo y despliéguelo.
  5. Elimine la entrada del diseño que desea eliminar.
  6. Guarde el archivo y salga de XCode.

Ahora probablemente necesite cerrar sesión o reiniciar para que esto sea definitivo. Tuve que reiniciar de todos modos para alguna actualización, así que eso funcionó para mí. Ahora estoy escribiendo felizmente en Neo a una velocidad glacial agonizante, ¡pero no hay ni un solo QWERTZ a la vista!

Después de mover mi diseño de teclado personalizado a /Library/Keyboard Layoutsen lugar de ~/Library/Keyboard Layouts, pude eliminar repentinamente el diseño de EE. UU.

Esto también solucionó el problema que tenía cuando el diseño del teclado volvía a cambiar al diseño de EE. UU. cada vez que activaba aplicaciones como Mail o App Store.

Supuestamente, esto se debe a que si el diseño se instala como el usuario actual en lugar de en todo el sistema, las aplicaciones del sistema no pueden usarlo, lo que explicaría por qué no es posible eliminar el diseño de EE. UU. de las Preferencias.

Esta es la única respuesta que me ayudó en Monterey 12.2.1

Aquí hay una idea: después de asegurarse de que la identificación del teclado de su diseño personalizado esté configurada en Roman, cree un AppleKeyboardLayouts.bundle personalizado que contenga solo ese diseño y sustitúyalo por el que viene con el sistema operativo. (No sé lo que implica crear un .bundle)

Puede usar Ukelele para marcar su diseño usado como uno que usa escritura latina. Exporte como un paquete, instálelo y luego podrá eliminar el de EE. UU.

Se puede hacer fácilmente. Primero cambie a su diseño personalizado (utilice el menú de entrada de la barra de menú), luego anule la selección del diseño de EE. UU.

Mi diseño personalizado es el que está actualmente en uso. Como se menciona en la pregunta, ya no uso el diseño de teclado de EE. UU.
Vivo sin el diseño de teclado de EE. UU. y no tuve ningún problema para anular la selección. Las otras personalizaciones que tengo son regiones e idiomas no predeterminados que no son de EE. UU.
¿Puede anular la selección de la distribución del teclado que eligió al configurar la Mac inicialmente?
Sí, puedo si también cambio de región.
Mira, ese es el problema. Siempre hay uno de los diseños de teclado incorporados de OS X que no puede eliminar o desactivar.
¿Cuál es exactamente su "diseño de teclado personalizado"? ¿Uno recién creado o uno de los integrados de OS X? ¿Podría simplemente modificar el diseño de EE. UU. en lugar de usar otro?
Mi diseño de teclado personalizado es una versión modificada del diseño estadounidense incorporado.