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

15

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

Estoy usando una distribución de teclado personalizada, y ahora que logré establecerla como la distribución de teclado predeterminada de todo el sistema , me gustaría poder desmarcar o eliminar el diseño de teclado "US" incorporado que viene con OS X. Aquí hay una captura de pantalla: tenga en cuenta que la casilla de verificación está desactivada:

EnOSX10.9,estepaneldepreferenciasseharediseñado,peroaúnnohaymanerade"eliminar" la distribución del teclado "U.S." incorporado:

YaquenuncausoladistribucióndetecladodelosEE.UU.,meencantaríadeshacermedeella,esdecir,eliminarladelmenúEntradaenlabarrademenús.¿Cómopuedohaceresto?

Actualización: La respuesta de Daniel en realidad no responde a esta pregunta, pero ofrece alguna 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 información sea precisa (¡gracias, Daniel!), la pregunta podría reformularse de la siguiente manera:

  

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

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

    
pregunta Mathias Bynens 21.03.2012 - 14:00

10 respuestas

19
  1. Habilite una fuente de entrada que no sea como la distribución de su teclado físico desde Preferencias del sistema (usé Dari afgano).
  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 del teclado habilitada temporalmente y la distribución personalizada del teclado.
  4. Cerrar sesión y volver a iniciarla.
  5. Elimine la distribución de teclado habilitada temporalmente de la lista de propiedades.
  6. Cerrar sesión y volver a iniciarla.

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

  1. Cambie la fuente de entrada actual a su distribución de teclado personalizada.
  2. Abra ~/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 desactivar del diccionario AppleEnabledInputSources . Si hay una clave AppleDefaultAsciiInputSource , elimínela.
  4. Reiniciar.
respondido por el user495470 12.08.2012 - 22:09
7

Parece que no puedes hacer lo que quieres sin un 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 o canadiense u otra distribución de teclado que el sistema reconoce como caracteres latinos, puede deseleccionar la distribución de EE. UU.

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

Tenga en cuenta que una buena 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 este tipo de piratería 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.

    
respondido por el Daniel 21.03.2012 - 14:12
6

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

  

Nº de ID de error: 11137961
Título de error: Permitir la desactivación de las distribuciones de teclado predeterminadas (incorporadas) cuando se utiliza una personalizada

     

La ingeniería ha determinado que este problema se comporta según lo previsto.   en la siguiente información:

     

Si el problema es que el diseño de tu 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   Más adelante lo describe, como:

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

Necesito ver esto un poco más, pero parece que TIS escaneará   la salida de la distribución del teclado para producir un USet y producir una inicial   idea de la asicidad por 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 ejemplares para la configuración regional indicada anteriormente y requerirá una docena de caracteres más o menos en el rango [a-z] .

     

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

     

Si esto sigue siendo un problema, o si tiene preguntas sobre el   resolución de este problema, por favor actualice su informe de error con eso   información.

     

Ahora estamos cerrando este informe de error.

    
respondido por el Mathias Bynens 04.04.2013 - 23:29
2

Otra idea: hace unos años, los paquetes para los Diseños de teclado de Apple eran mucho más fáciles de editar, y este problema parece haberse solucionado:

enlace

Tal vez aún se pueda usar el paquete editable anterior, si pudiera obtener uno de un sistema antiguo, en el sistema operativo actual.

    
respondido por el Tom Gewecke 30.03.2012 - 01:37
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 la distribución de mi teclado personalizado (llamada "QWERTY") es la predeterminada. Tenga en cuenta que las propiedades KeyboardLayout Name y KeyboardLayout ID se refieren a la ID y al nombre al inicio del archivo .keylayout .

Como puede ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID sigue devolviendo la cadena "com.apple.keylayout.Dutch" . ¿Hay una lista en algún lugar de los valores com.apple.keylayout disponibles? ¿Es posible obtener tal valor para una distribución de teclado personalizada? ’Debido a que en ese caso, simplemente podríamos anular la propiedad.

Además, las propiedades AppleEnabledInputSources , AppleInputSourceHistory y AppleSelectedInputSources parecen ignorar la distribución personalizada del teclado, ya que sus valores corresponden a la distribución del teclado OS X original que seleccioné originalmente al ejecutar el Asistente de configuración.

Otra actualización: ¡Ajá! Parece que hay otro archivo plist desde el cual 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 ), aparentemente las distribuciones de teclado personalizadas obtienen valores como "org.unknown.keylayout.FOO" donde FOO es el nombre de la distribución del teclado (como se especifica en el archivo .keylayout ).

Por lo tanto, vamos a intentar configurar todos los valores en nuestra distribución de teclado personalizada, denominada QWERTY y con el ID 1337 (especificado en el archivo .keylayout ):

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; consulte su respuesta.

    
respondido por el Mathias Bynens 11.08.2012 - 17:14
1

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

  

La ingeniería ha determinado que esto no es un problema para Apple   dirección.

     

Suponiendo que este diseño de teclado personalizado está incluido ( .keylayout está dentro   un paquete como foo.bundle/Contents/Resources/foo.keylayout ), entonces esto   podría ser tan fácil como insertarlo en 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, incluida la entrada de contraseña)   podría instalarse en /Library/Keyboard Layouts/ , en lugar de   misma ubicación en ~/Library/ .

     

Por favor, actualice su informe de error para informarnos si esto sigue siendo un error.   problema para usted.

     

Si tiene preguntas sobre la resolución de este problema, por favor   actualiza tu informe de errores con ellos.

     

Por favor, asegúrese de revisar regularmente los nuevos productos Apple para cualquier actualización   Eso podría afectar este problema. Una vez más, gracias por tomarse el tiempo para   enviar errores. Apreciamos sinceramente su aporte.

    
respondido por el Mathias Bynens 14.11.2013 - 22:50
1

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

  1. Navegue a su carpeta Library/Preferences .
  2. Abra el archivo com.apple.HIToolbox.plist , ya sea haciendo doble clic en él o usando open en la línea de comandos. 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 nodo AppleEnabledInputSources y despliéguelo.
  5. Elimine la entrada para el diseño que desea eliminar.
  6. Guarde el archivo y salga de XCode.

Ahora es probable que necesites cerrar sesión o reiniciar para hacer esto final. Tuve que reiniciar de todas formas para alguna actualización, así que eso me sirvió. Ahora estoy felizmente escribiendo a lo largo de Neo a una velocidad glacial agonizante, ¡pero no hay un solo QWERTZ a la vista!

    
respondido por el Bombe 11.04.2018 - 09:32
0

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

    
respondido por el Tom Gewecke 28.03.2012 - 17:20
0

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

    
respondido por el Alexandre G 01.07.2017 - 10:27
-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 los Estados Unidos.

    
respondido por el shpokas 21.03.2012 - 14:14

Lea otras preguntas en las etiquetas