Технические вопросы и ответы QA1810

Сторонние изменения управления методом ввода в индивидуалистах OS X

Q: Почему мой Метод ввода Палитры не обнаруживается в Установках системы, будучи скопированным в папку установки Метода ввода в Индивидуалистах OS X?

A: В Индивидуалистах OS X область Input Sources была перемещена в предпочтения Клавиатуры. Область теперь только показывает методы ввода с клавиатуры и больше не перечисляет методов ввода палитры. В результате при установке метода ввода палитры путем копирования пакета в ~/Library/Input Методы / или/Library/Input Методы / в Индивидуалистах это не появилось бы в области Input Sources. Кроме того, нет никакого предоставленного системой UI, который позволит Вам включать или отключать его в меню Text Input панели Меню Apple.

Для создания метода ввода палитры видимым пользователям необходимо обеспечить собственную реализацию, такую как предпочтительная область, для включения палитры после установки. Одним примером является Средство просмотра Символа и Клавиатуры. Можно включить и заставить его появиться в меню Text Input путем установки флажка в области Keyboard предпочтений Клавиатуры. См. Перечисление 1, показывающее пример о том, как включить или отключить метод ввода палитры.

Перечисление 1  Включает или отключает метод ввода В меню Text Input

- (void)enablePaletteInputMethod:(BOOL)enable {
    const void *key = (const void *)kTISPropertyInputSourceID;
    const void *value = (const void *)CFSTR("<Input Source ID>");
    CFDictionaryRef propertiesDictionary = CFDictionaryCreate(
                                                     kCFAllocatorDefault,
                                                     &key, &value, 1,
                                                     &kCFTypeDictionaryKeyCallBacks,
                                                     &kCFTypeDictionaryValueCallBacks
                                                    );
    if (propertiesDictionary != NULL) {
        CFArrayRef inputSources = TISCreateInputSourceList(propertiesDictionary, TRUE);
        if (inputSources != NULL && CFArrayGetCount(inputSources) > 0) {
            TISInputSourceRef inputSourceRef;
            inputSourceRef = (TISInputSourceRef)CFArrayGetValueAtIndex(inputSources, 0);
            if (inputSourceRef != NULL) {
                if (enable)
                    TISEnableInputSource(inputSourceRef);
                else
                    TISDisableInputSource(inputSourceRef);
            }
            CFRelease(inputSources);
        }
        CFRelease(propertiesDictionary);
    }
}

В дополнение к вышеупомянутым изменениям режимы ввода методов ввода с клавиатуры теперь действуют как отдельные входные источники в Индивидуалистах. Они больше не группируются под их связанными методами ввода, но перечислены в области Input Sources.



История версии документа


ДатаПримечания
28.01.2014

Новый документ, описывающий стороннюю палитру и изменения управления методом ввода с клавиатуры в Индивидуалистах OS X.