Текстовые системные значения по умолчанию и привязки клавиш

Этот документ показывает некоторые подсказки и приемы о различных значениях по умолчанию, которые можно использовать для настройки поведения текстовой системы Какао. Это также описывает, как настроить привязки клавиш, поддерживаемые текстовой системой.

Брутальные подклассификаторы могут изменить некоторых или всю текстовую функциональность системы, представив некоторых или все эти неактивные функции.

Привязки клавиш

Текстовая система использует обобщенный механизм привязки клавиш, который является абсолютно переотображаемым пользователем, несмотря на то, что определяя пользовательские привязки клавиш динамично (т.е. в то время как приложение работает), не поддерживается. Привязки клавиш указаны в файле словаря, который должен иметь расширение .dict; формат этого файла должен быть списком свойств XML, но текстовая система может также понять старого стиля (эра NeXT) списки свойств. Стандартные привязки клавиш указаны в /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict. Эта стандартная привязка включает большое количество Emacs-совместимой привязки клавиши CTRL, всей различной привязки клавиши со стрелкой, привязки для того, чтобы сделать полевых редакторов и некоторую клавиатуру работой UI, и оказывает привязке поддержку для многих функциональных клавиш.

Для настройки привязки Вы создаете названный файл DefaultKeyBinding.dict в ~/Library/KeyBindings/ и укажите привязку, чтобы увеличить или заменить стандартную привязку. Можно использовать стандартный файл привязки в качестве шаблона. Рекомендуется использовать Редактора Списка свойств приложение для редактирования словаря привязки. Можно использовать другое приложение, такое как TextEdit или XCode, но если Вы делаете необходимо гарантировать, что кодирование сохраненного файла является UTF8.

Привязки клавиш являются парами ключ/значение с ключом, являющимся строкой, указывающей физический ключ и значение, идентифицирующее метод действия, который будет вызван, когда нажата клавиша. (Многие из этих методов действия объявляются NSResponder.) Можно составить физические строки ключа с помощью следующих элементов:

Текстовая система поддерживает спецификацию многократной привязки нажатия клавиши через вложенные обязательные словари. Например, Escape мог быть связан с cancel: или это могло быть связано с целым словарем, который будет тогда содержать привязку для следующего нажатия клавиши после Escape.

Следующие демонстрационные обязательные файлы иллюстрируют, как Вы могли бы настроить привязку. Первый добавляет привязку функциональной клавиши для некоторого общего поведения Emacs. Это могло бы быть полезно, где привязка функциональной клавиши не является стандартной. С этой привязкой было бы необходимо ввести “Control-Q, Option-f” для ввода символа флорина вместо того, чтобы продвинуться слово. Эта выборка также явно связывает Escape с complete:. (В OS X это - значение по умолчанию, таким образом, это переопределение ничего не изменяет.)

/* ~/Library/KeyBindings/DefaultKeyBinding.dict */
 
{
    /* Additional Emacs bindings */
    "~f" = "moveWordForward:";
    "~b" = "moveWordBackward:";
    "~<" = "moveToBeginningOfDocument:";
    "~>" = "moveToEndOfDocument:";
    "~v" = "pageUp:";
    "~d" = "deleteWordForward:";
    "~^h" = "deleteWordBackward:";
    "~\010" = "deleteWordBackward:";  /* Option-backspace */
    "~\177" = "deleteWordBackward:";  /* Option-delete */
 
    /* Escape should really be complete: */
    "\033" = "complete:";  /* Escape */
}

Следующий пример показывает, как иметь привязку мультинажатия клавиши. Это связывает много привязки Emacs meta с помощью Escape в качестве метаклавиши вместо модификатора Опции. Так Escape, сопровождаемый «f» ключевыми средними значениями moveWordForward: здесь. Эта выборка связывает Escape Escape с complete:. Отметьте вложенные словари

/* ~/Library/KeyBindings/DefaultKeyBinding.dict */
{
    /* Additional Emacs bindings */
    "\033" = {
        "\033" = "complete:";  /* ESC-ESC */
        "f" = "moveWordForward:";  /* ESC-f */
        "b" = "moveWordBackward:";  /* ESC-b */
        "<" = "moveToBeginningOfDocument:";  /* ESC-< */
        ">" = "moveToEndOfDocument:";  /* ESC-> */
        "v" = "pageUp:";  /* ESC-v */
        "d" = "deleteWordForward:";  /* ESC-d */
        "^h" = "deleteWordBackward:";  /* ESC-Ctrl-H */
        "\010" = "deleteWordBackward:";  /* ESC-backspace */
        "\177" = "deleteWordBackward:";  /* ESC-delete */
    };
}

Как только Вы завершили указание привязок клавиш, необходимо сохранить файл и повторно запустить приложение для привязки для вступления в силу. С правильной комбинацией привязок клавиш и настроек по умолчанию, должно быть возможно адаптировать текстовую систему на ваше усмотрение.

Стандартные методы действия для выбора и редактирования

NSResponder класс объявляет прототипы метода для многих стандартных методов действия, почти все связанные с управлением выборами и редактированием текста. Эти методы обычно вызываются через doCommandBySelector: в результате интерпретации менеджером по вводу. Они попадают в следующие общие группы:

В большинстве случаев намерение метода действия ясно из его имени. Описания отдельного метода в этой спецификации также предоставляют подробную информацию о том, что должен обычно делать такой метод. Однако несколько общих понятий применяются ко многим из этих методов и объяснены здесь.

Направление выбора

Некоторые методы относятся к пространственным направлениям; левый, правильный, вниз. Они предназначаются, чтобы быть взятыми буквально, особенно в тексте. Для предоставления систем письменности с направленностью, отличающейся от латинского сценария, термины вперед, начало, назад, и конец используются.

Выбор и точка вставки

Методы, относящиеся к перемещению, удалению или вставке, подразумевают, что выбраны некоторые элементы в респонденте, или что существует выбор нулевой длины в некотором расположении (точка вставки). Эти две вещи должны всегда последовательно обрабатываться. Например, insertText: метод определяется как замена выбора с предоставленным текстом. moveForwardAndModifySelection: даже если выбор является просто точкой вставки, метод расширяет или заключает выбор. Когда выбор изменяется впервые, он должен всегда расширяться. Так a moveForward... сообщение расширяет выбор от своего конца, в то время как a moveBackward... со своего начала сообщение расширяет его.

Знаки

Много методов действия для редактирования текста подражают понятиям Emacs точки (точка вставки), и метка (привязка для больших операций, обычно обработанных выборами в графических интерфейсах). setMark: метод устанавливает метку по текущему выбору, тогда остающемуся в силе, пока метка не изменяется снова. selectToMark: метод расширяет выбор для включения метки и всех символов между выбором и метки.

Буфер уничтожения

Также как Emacs, строки влияния методов удаления, абзацы и метка неявно помещают удаленный текст в буфер, отдельный от области монтажа, от которой можно позже получить его. Методы такой как deleteToBeginningOfLine: добавьте текст к этому буферу, и yank: заменяет выбор элементом в буфере уничтожения.

Текстовые системные значения по умолчанию

NSMnemonicsWorkInText

Позволенное значение: «YES» или «НЕТ».

Это значение по умолчанию управляет, принимает ли текстовая система ключевые события с функциональной клавишей вниз. Значение по умолчанию NO. Значение YES от средних значений, которые обдумало любое ключевое событие с Опцией, откажутся цепочка респондента, которая в конечном счете будет обработана как мнемосхема вместо того, чтобы быть принятыми текстом как текстовый ввод или команда привязки клавиш. Если это значение по умолчанию будет установлено в НЕ тогда, то ключевые события с набором битов Опции будут переданы через нормальную ключевую входную последовательность системы текста. Это позволит любой Опции включения привязок клавиш работать (такие как привязка Emacs-стиля как Опция-f для слова вперед), и это позволяет вводить международных специальных и символы шрифта Символа.

NSRepeatCountBinding

Позволенное значение: строка стиля привязки клавиш.

Это значение по умолчанию управляет числовой привязкой параметра. Значение по умолчанию для числовых параметров, которые не будут поддерживаться. При обеспечении привязки для этого значения по умолчанию, Вы активируете опцию. Это позволяет Вам повторять команду клавиатуры данное число раз. Например “Control-U 10 Control-F” означает, продвигаются десять символов.

NSQuotedKeystrokeBinding

Позволенное значение: строка стиля привязки клавиш.

Это значение по умолчанию управляет привязкой кавычки. Значение по умолчанию для этого, чтобы быть «^q» (это - Управление-Q). Это - привязка, позволяющая Вам буквально вводить символы, которые были бы иначе интерпретированы как команды. Например “Control-Q Control-F” вставил бы символ Control-F в документ вместо того, чтобы выполнить команду moveForward:.

NSTextShowsInvisibleCharacters

Позволенное значение: «YES» или «НЕТ».

Значение по умолчанию управляет, покажет ли текстовый объект по умолчанию невидимые символы как вкладка, пространство и возврат каретки с помощью некоторого видимого глифа. По умолчанию это NO. Это только управляет настройкой по умолчанию для NSLayoutManager объекты (который может быть изменен программно). Для этого для работы книга правила, генерирующая глифы, должна поддерживать функцию. В настоящее время наши книги правила не поддерживают эту функцию, поэтому в настоящее время это значение по умолчанию не очень полезно.

NSTextShowsControlCharacters

Позволенное значение: «YES» или «НЕТ».

Значение по умолчанию управляет, покажет ли текстовый объект по умолчанию управляющие символы явно (обычно путем представления Ctrl-C как «^C» в тексте). По умолчанию это NO. Это только управляет настройкой по умолчанию для NSLayoutManager объекты (который может быть изменен программно). Для этого для работы книга (и) правила, генерирующая глифы, должна поддерживать функцию. Эта функция переносит стоимость. Это увеличит память, необходимую для документов, содержащих управляющие символы довольно много. Используйте его с осторожностью.

NSTextSelectionColor

Позволенное значение: Цветовой объект или спецификатор.

Это значение по умолчанию управляет цветом фона выделенного текста. По умолчанию это светло-серо. Значения по умолчанию, принимающие цвета, принимают их одним из трех способов. Любой как заархивированный NSColor объект, или как три компонента RGB, или как строка, которая может быть разрешена к селектору фабрики на NSColor это возвратит требуемый цвет (например, «redColor»). Обратите внимание на то, что NSTextField возражает и другие средства управления, использующие полевых редакторов для редактирования их текстового управления их собственные атрибуты выбора для приспосабливания UI.

NSMarkedTextAttribute и NSMarkedTextColor

Позволенное значение: Цветовой объект / спецификатор или «подчеркивание».

Это значение по умолчанию управляет путем, что отмеченный текст выведен на экран. NSMarkedTextAttribute может быть также “Background” или “Underline”. Если это “Background” тогда NSMarkedTextColor указывает цвет фона для использования для отмеченного текста. Если NSMarkedTextAttributeUnderline”, NSMarkedTextColor указывает основной цвет для использования для отмеченного текста (отмеченный текст будет составлен в обозначенном цвете и подчеркнут). По умолчанию отмеченный текст составлен с желтоватым цветом фона. Значения по умолчанию набора, принимающие цвета, принимают их одним из трех способов. Любой как заархивированный NSColor объект, или как три компонента RGB, или как строка, которая может быть разрешена к селектору фабрики на NSColor это возвратит требуемый цвет (например, «redColor»). Если NSMarkedTextAttribute значение по умолчанию содержит цвет вместо одной из строк “Background” или “Underline” тогда тот цвет используется в качестве цвета фона для отмеченного текста и NSMarkedTextColor атрибут проигнорирован.

NSTextKillRingSize

Позволенное значение: Числовая строка.

Это значение по умолчанию управляет размером кольца уничтожения (как в Управлении-Y Emacs). Значение по умолчанию равняется 1 (не действительно кольцо вообще, просто единственный буфер). При установке этого в значение, больше, чем одно также необходимо снова переплести Управление-Y к yankAndSelect: вместо yank: для вещей работать должным образом (отмечают это yankAndSelect: не перечислен ни в каких заголовках). Посмотрите Привязки клавиш для получения дополнительной информации о привязке.