¿Cómo eliminar o deshabilitar una distribución de teclado predeterminada?

16

¿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é establecerlo como el diseño de teclado predeterminado en todo el sistema , me gustaría poder desmarcar o eliminar el diseño de teclado incorporado "EE. UU." Que vino con el sistema operativo X. Aquí hay una captura de pantalla: tenga en cuenta que la casilla de verificación está desactivada:

Captura de pantalla

En OS X 10.9, este panel de preferencias se ha rediseñado, pero todavía no hay forma de "eliminar" la distribución del teclado "EE. UU." Incorporado:

Captura de pantalla

Como 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 reconoce 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.

Mathias Bynens
fuente
1
No creo que "latín" sea suficiente. Eso se logra fácilmente en Ukelele configurando la ID del teclado en romano. Sospecho que su diseño también debe ser parte de AppleKeyboardLayouts.bundle en diseños de sistema / biblioteca / teclado.
Tom Gewecke

Respuestas:

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

Editar: el método anterior parece haber dejado de funcionar en 10.9. Sin embargo, esto funcionó tanto en 10.9 como en 10.8:

  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 el 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. Reiniciar.
Lri
fuente
1
Ajá, parece funcionar si reinicia la computadora en lugar de simplemente cerrar sesión y volver a iniciarla (paso 4). ¡Gracias! ¿Te importaría publicar una nueva respuesta con un enlace a tu recurso para que puedas obtener la recompensa?
Mathias Bynens
1
@MathiasBynens Edité la respuesta y mi sitio web. Cuando probé el segundo método nuevamente, también tuve que reiniciar para aplicar los cambios.
Lri
44
Funciona bien en OS X 10.9 si reinicia su computadora. Sin embargo, tuve que eliminar también el diseño temporal del archivo plist y reiniciar usando 'sudo reboot', de lo contrario, el diseño temporal se agregó nuevamente en el reinicio normal.
nombre_1
2
@Lri El 10.9 tuve que eliminar: AppleEnabledInputSources: 0 (el antiguo elemento de diseño predeterminado) y: AppleInputSourceHistory: diccionario (usando PlistBuddy). No es necesario reiniciar, pero solo es necesario cerrar sesión.
RolKau
1
No funciona en Yosemite para mí. Cada vez que cambio el archivo en Xcode, solo se restaura después de unos segundos. ¿Alguien puede explicar cómo lo hiciste exactamente?
Simon Perepelitsa
7

Parece que no puedes hacer lo que quieres 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 reconoce 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 otro diseño de teclado que el sistema reconoce como caracteres latinos, puede anular la selección del diseño de EE. UU.

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. Vea esta pregunta (lamentablemente sin una gran respuesta) para obtener más información.

Tenga en cuenta que una excelente 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 pirateo 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 de usar como el único teclado seleccionable.

Daniel
fuente
@ Lri Sospecho que tienes razón, pero no tengo el hardware para probar eso. Tal vez hay un lector de este sitio que puede?
Daniel
7

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

Número de identificación del error: 11137961
Título del error: Permitir deshabilitar diseños de teclado predeterminados (integrados) cuando se usa uno personalizado


La 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 solo hacer que la distribución de su teclado sea reconocida como compatible con ASCII, lo más fácil sería "agrupar" su .keylayout, entonces su Info.plist puede contener un diccionario "KLInfo_" que lo describe mejor, como:

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

Necesitaría analizar esto un poco más, pero parece que TIS escaneará la salida de diseño del teclado para producir un conjunto de US y producir una idea inicial de asciiness si pasa 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 ejemplos para la configuración regional indicada anteriormente y requerirá una buena docena de caracteres en el rango [a-z].

Para algunas sugerencias sobre .keylayoutcómo agrupar a , vea 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 error.

Mathias Bynens
fuente
1
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 dieron información incorrecta, parece.
nombre_1
1
@DmitryDulepov Es posible usarlo como el diseño predeterminado, pero el botón para eliminar el otro aún no se activará; tendrías que hacerlo manualmente (mira 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 la AppStore. Al menos no pude.
nombre_1
2

Aquí hay otra idea: hace unos años, el (los) paquete (s) para las distribuciones de teclado de Apple eran mucho más fáciles de editar, y este problema parece haber sido solucionado:

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

Quizás uno podría seguir usando el antiguo paquete editable, si pudiera obtener uno de un sistema antiguo, en el sistema operativo actual.

Tom Gewecke
fuente
1

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 se KeyboardLayout IDrefieren a la ID y el nombre al comienzo del .keylayoutarchivo.

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

Además, las AppleEnabledInputSources, AppleInputSourceHistoryy AppleSelectedInputSourcespropiedades de todos parecen ignorar la disposición de teclado personalizado, ya que sus valores se corresponden con la disposición de teclado OS X nativo que he seleccionado originalmente cuando se ejecuta el programa de instalación Asistente.


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 del teclado (como se especifica en el .keylayoutarchivo).

Entonces, intentemos configurar 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.

Mathias Bynens
fuente
1

La respuesta de Apple a mi informe de error, en el que pedía que fuera posible eliminar la distribución predeterminada del teclado del sistema si se selecciona otro a través de Preferencias del sistema:

Ingeniería ha determinado que esto no es un problema para que Apple lo resuelva.

Suponiendo que se incluye esta disposición del teclado personalizado ( .keylayoutes dentro de un paquete como foo.bundle/Contents/Resources/foo.keylayout), entonces esto podría ser tan fácil como la inserción en el Info.plist's KLInfo_ diccionario:

<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 en todo el sistema (es decir, incluyendo la entrada de contraseña), podría instalarse en /Library/Keyboard Layouts/lugar de en la misma ubicación ~/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 periódicamente los nuevos productos de Apple para ver si hay actualizaciones que puedan afectar este problema. Nuevamente, gracias por tomarse el tiempo para enviar errores. Agradecemos sinceramente su aporte.

Mathias Bynens
fuente
1

Acabo de tener éxito al eliminar el diseño predeterminado en High Sierra utilizando el siguiente método:

  1. Navega a tu Library/Preferencescarpeta.
  2. Abra el archivo com.apple.HIToolbox.plist, ya sea haciendo doble clic en él o usando openen la línea de comando. Esto hará que XCode aparezca 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 para el diseño que desea eliminar.
  6. Guarde el archivo y salga de XCode.

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

Bombe
fuente
0

He aquí una idea: después de asegurarse de que la identificación del teclado de su diseño personalizado esté establecida en romana, cree un AppleKeyboardLayouts.bundle personalizado que contenga solo ese diseño y sustitúyalo por el que viene con el sistema operativo. (No sé qué implica la creación de un paquete.)

Tom Gewecke
fuente
0

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

Alexandre G
fuente
-1

Se puede hacer fácilmente. Primero cambie a su diseño personalizado (use el menú de entrada de la barra de menú), luego deseleccione el diseño de EE. UU.

shpokas
fuente
Mi diseño personalizado es el que se usa actualmente. Como se menciona en la pregunta, ya no uso la distribución del teclado de EE. UU.
Mathias Bynens
Vivo sin la distribución del 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, no estadounidenses.
shpokas
¿Puedes anular la selección del diseño del teclado que elegiste al configurar la Mac inicialmente?
Mathias Bynens
Sí, puedo hacerlo si cambio de región también.
shpokas
Mira, ese es el problema. Siempre hay uno de los diseños de teclado integrados de OS X que no puede eliminar o deshabilitar.
Mathias Bynens