Добавление настраиваемых сочетаний клавиш в надстройки Office
Сочетания клавиш, также известные как сочетания клавиш, позволяют пользователям надстройки работать более эффективно. Сочетания клавиш также повышают доступность надстройки для пользователей с ограниченными возможностями, предоставляя альтернативу мыши.
Добавить сочетания клавиш в надстройку можно тремя шагами.
- Настройте манифест надстройки для использования общей среды выполнения.
- Определите пользовательские сочетания клавиш и выполняемые ими действия.
- Сопоставлять пользовательские действия с их функциями с помощью API Office.actions.associate .
Предварительные условия
В настоящее время сочетания клавиш поддерживаются только на следующих платформах и сборках Excel и Word.
Office в Интернете
Примечание.
Функция сочетания клавиш в настоящее время развертывается для Word в Интернете. Если вы протестируете эту функцию в Word в Интернете в настоящее время, сочетания клавиш могут не работать, если они активируются в области задач надстройки. Мы рекомендуем периодически проверка наборы обязательных наборов сочетаний клавиш, чтобы узнать, когда функция полностью поддерживается.
Office для Windows
- Excel: версия 2102 (сборка 13801.20632) и более поздние версии
- Word: версия 2408 (сборка 17928.20114) и более поздние версии
Office для Mac
- Excel: версия 16.55 (21111400) и более поздние версии
- Word: версия 16.88 (24081116) и более поздние версии
Кроме того, сочетания клавиш работают только на платформах, поддерживающих следующие наборы обязательных элементов. Сведения о наборах требований и способах работы с ними см. в разделе Указание приложений Office и требований API.
- SharedRuntime 1.1
- KeyboardShortcuts 1.1 (требуется, если надстройка предоставляет пользователям возможность настройки сочетаний клавиш)
Совет
Чтобы начать с рабочей версии надстройки с уже настроенными сочетаниями клавиш, клонируйте и запустите пример Использование сочетаний клавиш для надстроек Office . Когда вы будете готовы добавлять сочетания клавиш в собственную надстройку, перейдите к этой статье.
Определение пользовательских сочетаний клавиш
Процесс определения настраиваемых сочетаний клавиш для надстройки зависит от типа манифеста, используемого надстройкой. Выберите вкладку для типа манифеста, который вы используете.
Совет
Дополнительные сведения о манифестах надстроек Office см. в разделе Манифест надстроек Office.
Примечание.
Реализация сочетаний клавиш в манифесте унифицированного приложения для Microsoft 365 доступна в общедоступной предварительной версии для разработчиков. Его не следует использовать в рабочих надстройках. Мы приглашаем вас опробовать его в средах тестирования или разработки. Дополнительные сведения см. в статье Схема манифеста общедоступной предварительной версии приложения для разработчиков.
Если надстройка использует манифест унифицированного приложения для Microsoft 365, в манифесте определяются пользовательские сочетания клавиш и их действия.
В проекте надстройки откройте файл manifest.json .
Добавьте следующий объект в массив extensions.runtimes. Обратите внимание на следующие особенности этой разметки.
- Объекты actions указывают функции, которые может выполнять надстройка. В следующем примере надстройка сможет отображать и скрывать область задач. Эти функции будут созданы в следующем разделе. В настоящее время пользовательские сочетания клавиш могут выполнять только действия типа "executeFunction".
- Хотя свойство actions.displayName является необязательным, оно обязательно, если для действия будет создано пользовательское сочетание клавиш. Это свойство используется для описания действия сочетания клавиш. Предоставленное вами описание отображается в диалоговом окне, которое отображается пользователю при конфликте сочетаний клавиш между несколькими надстройками или с Microsoft 365. Office добавляет имя надстройки в круглые скобки в конце описания. Дополнительные сведения о том, как обрабатываются конфликты с сочетаниями клавиш, см. в статье Предотвращение использования сочетаний клавиш другими надстройками.
"runtimes": [ { "id": "TaskPaneRuntime", "type": "general", "code": { "page": "https://localhost:3000/taskpane.html" }, "lifetime": "long", "actions": [ { "id": "ShowTaskpane", "type": "executeFunction", "displayName": "Show task pane (Contoso Add-in)" }, { "id": "HideTaskpane", "type": "executeFunction", "displayName": "Hide task pane (Contoso Add-in)" } ], } ]
Добавьте следующий код в массив extensions. Обратите внимание на следующее о разметке.
- Набор обязательных элементов SharedRuntime 1.1 указан в объекте requirements.capabilities для поддержки пользовательских сочетаний клавиш.
- Каждый объект сочетаний клавиш представляет собой одно действие, вызываемое сочетанием клавиш. Он задает поддерживаемые сочетания ключей для различных платформ, таких как Office в Интернете, в Windows и Mac. Инструкции по созданию пользовательских сочетаний ключей см. в статье Руководство по пользовательским сочетаниям ключей.
- Необходимо указать сочетание ключей по умолчанию. Он используется на всех поддерживаемых платформах, если для определенной платформы не настроено определенное сочетание.
- Значение свойства actionId должно соответствовать значению, указанному в свойстве id применимого объекта extensions.runtimes.actions.
"keyboardShortcuts": [ { "requirements": { "capabilities": [ { "name": "SharedRuntime", "minVersion": "1.1" } ] }, "shortcuts": [ { "key": { "default": "Ctrl+Alt+Up", "mac": "Command+Shift+Up", "web": "Ctrl+Alt+1", "windows": "Ctrl+Alt+Up" }, "actionId": "ShowTaskpane" }, { "key": { "default": "Ctrl+Alt+Down", "mac": "Command+Shift+Down", "web": "Ctrl+Alt+2", "windows": "Ctrl+Alt+Up" }, "actionId": "HideTaskpane" } ] } ]
Сопоставление пользовательских действий с их функциями
В проекте откройте файл JavaScript, загруженный html-страницей, в элементе <FunctionFile> .
В файле JavaScript используйте API Office.actions.associate , чтобы сопоставить каждое действие, указанное на предыдущем шаге, с функцией JavaScript. Добавьте следующий Код JavaScript в файл. Обратите внимание на следующие сведения о коде.
- Первый параметр — это имя действия, сопоставленного с сочетанием клавиш. Расположение имени действия зависит от типа манифеста, используемого надстройкой.
- Манифест единого приложения для Microsoft 365: значение свойства extensions.keyboardShortcuts.shortcuts.actionId в файле manifest.json .
- Манифест только надстройки. Значение свойства "actions.id" в JSON-файле ярлыков.
- Второй параметр — это функция, которая выполняется, когда пользователь нажимает сочетание клавиш, сопоставленное с действием.
Office.actions.associate("ShowTaskpane", () => { return Office.addin.showAsTaskpane() .then(() => { return; }) .catch((error) => { return error.code; }); });
Office.actions.associate("HideTaskpane", () => { return Office.addin.hide() .then(() => { return; }) .catch((error) => { return error.code; }); });
- Первый параметр — это имя действия, сопоставленного с сочетанием клавиш. Расположение имени действия зависит от типа манифеста, используемого надстройкой.
Рекомендации по пользовательским сочетаниям ключей
Используйте следующие рекомендации для создания пользовательских сочетаний ключей для надстроек.
- Сочетание клавиш должно включать по крайней мере одну клавишу-модификатор (alt/option, CTRL/CMD, SHIFT) и только одну другую клавишу. Эти ключи должны быть соединены с символом
+
. - Ключ-модификатор Cmd поддерживается на платформе macOS.
- В macOS клавиша ALT сопоставляется с клавишей Option . В Windows клавиша Cmd сопоставляется с клавишей CTRL .
- Клавишу SHIFT нельзя использовать в качестве единственной клавиши-модификатора. Его необходимо комбинировать с alt/option или ctrl/cmd.
- Сочетания клавиш могут включать символы "A-Z", "a-z", "0-9", а также знаки препинания "-", "_" и "+". По соглашению строчные буквы не используются в сочетаниях клавиш.
- Если два символа связаны с одной физической клавишей на стандартной клавиатуре, они являются синонимами в пользовательском сочетании клавиш. Например, alt+a и alt+A являются одним и тем же сочетанием клавиш, а также CTRL+- и CTRL+_ ("-" и "_" связаны с одной физической клавишей).
Примечание.
Пользовательские сочетания клавиш должны нажиматься одновременно. Подсказки клавиш, также известные как последовательные сочетания клавиш (например, Alt+H, H), не поддерживаются в надстройках Office.
Сочетания клавиш браузера, которые не могут быть переопределены
При использовании пользовательских сочетаний клавиш в Интернете некоторые сочетания клавиш, используемые браузером, не могут быть переопределены надстройками. В следующем списке выполняется работа. Если вы обнаружите другие сочетания, которые невозможно переопределить, сообщите нам об этом с помощью средства обратной связи в нижней части этой страницы.
- CTRL+N
- CTRL+Сдвиг+N
- CTRL+T
- CTRL+Сдвиг+T
- CTRL+W
- CTRL+PgUp/PgDn
Избегайте сочетаний клавиш, используемых другими надстройками
В Microsoft 365 уже используется множество сочетаний клавиш. Избегайте регистрации сочетаний клавиш для вашей надстройки, которые уже используются. Однако в некоторых случаях необходимо переопределить существующие сочетания клавиш или обработать конфликты между несколькими надстройками, которые зарегистрировали одно и то же сочетание клавиш.
В случае конфликта пользователь увидит диалоговое окно при первой попытке использовать конфликтующее сочетание клавиш. Обратите внимание, что источник текста для параметра надстройки, отображаемого в этом диалоговом окне, зависит от типа манифеста, используемого надстройкой. - Манифест единого приложения для Microsoft 365: значение свойства extensions.runtimes.actions.displayName в файле manifest.json . - Манифест только надстройки. Значение свойства "actions.name" в JSON-файле ярлыков.
Пользователь может выбрать действие, которое будет выполнять сочетание клавиш. После выбора предпочтения сохраняются для дальнейшего использования того же ярлыка. Параметры сочетания клавиш сохраняются для каждого пользователя, для каждой платформы. Если пользователь хочет изменить свои предпочтения, он может вызвать команду Сброс параметров сочетания надстроек Office из поля поиска Сообщить мне . Вызов команды очищает все параметры сочетания клавиш надстроек пользователя, и при следующей попытке использовать конфликтующее сочетание клавиш пользователю снова будет предложено диалоговое окно конфликта.
Для оптимального взаимодействия с пользователем рекомендуется свести к минимуму конфликты сочетаний клавиш с помощью этих рекомендаций.
- Используйте только сочетания клавиш со следующим шаблоном: CTRL+SHIFT+ALT+x, где x — это другая клавиша.
- Избегайте использования установленных сочетаний клавиш в Excel и Word. Список см. в следующих статьях:
- Если фокус клавиатуры находится в пользовательском интерфейсе надстройки, ctrl+пробел и ctrl+shift+F10 не будут работать, так как это важные сочетания специальных возможностей.
- Если на компьютере с Windows или Mac команда сброса параметров сочетания надстроек Office недоступна в меню поиска, пользователь может вручную добавить команду на ленту, настроив ленту с помощью контекстного меню.
Локализация описания сочетания клавиш
В следующих сценариях может потребоваться локализовать пользовательские сочетания клавиш.
- Надстройка поддерживает несколько языковых стандартов.
- Надстройка поддерживает различные алфавиты, системы письма или раскладки клавиатуры.
Рекомендации по локализации сочетаний клавиш зависят от типа манифеста, используемого надстройкой.
Сведения о локализации пользовательских сочетаний клавиш с помощью манифеста унифицированного приложения для Microsoft 365 см. в статье Локализация строк в манифесте приложения.
Включение настройки ярлыка для определенных пользователей
Примечание.
Для API, описанных в этом разделе, требуется набор обязательных элементов KeyboardShortcuts 1.1 .
Пользователи надстройки могут переназначить действия надстройки на альтернативные сочетания клавиш.
Используйте метод Office.actions.replaceShortcuts , чтобы назначить пользовательские сочетания клавиатуры действиям надстроек. Метод принимает параметр типа {[actionId:string]: string|null}
, где actionId
s — это подмножество идентификаторов действий, которые должны быть определены в json расширенного манифеста надстройки. Значения — это предпочтительная комбинация ключей пользователя. Значение также может быть null
, что приведет к удалению любой настройки для этого actionId
и отменить изменения указанной комбинации клавиатуры по умолчанию.
Если пользователь вошел в Microsoft 365, пользовательские сочетания сохраняются в параметрах перемещения пользователя для каждой платформы. Настройка ярлыков в настоящее время не поддерживается для анонимных пользователей.
const userCustomShortcuts = {
ShowTaskpane: "Ctrl+Shift+1",
HideTaskpane: "Ctrl+Shift+2"
};
Office.actions.replaceShortcuts(userCustomShortcuts)
.then(() => {
console.log("Successfully registered shortcut.");
})
.catch((error) => {
if (error.code == "InvalidOperation") {
console.log("ActionId doesn't exist or shortcut combination is invalid.");
}
});
Чтобы узнать, какие сочетания клавиш уже используются для пользователя, вызовите метод Office.actions.getShortcuts . Этот метод возвращает объект типа [actionId:string]:string|null}
, где значения представляют текущую комбинацию клавиатуры, которую пользователь должен использовать для вызова указанного действия. Значения могут поступать из трех разных источников.
- Если произошел конфликт с сочетанием клавиш и пользователь решил использовать другое действие (собственное действие или другую надстройку) для этой комбинации клавиатуры, возвращаемое значение будет
null
иметь значение , так как сочетание клавиш переопределено и пользователь не может использовать для вызова этого действия надстройки. - Если сочетание клавиш было настроено с помощью метода Office.actions.replaceShortcuts , возвращаемым значением будет настроенная комбинация клавиатуры.
- Если ярлык не переопределен или настроен, возвращаемое значение зависит от типа манифеста, используемого надстройкой.
- Манифест единого приложения для Microsoft 365: ярлык, указанный в файле manifest.json надстройки.
- Только манифест надстройки: ярлык, указанный в JSON-файле ярлыков надстройки.
Ниже приведен пример.
Office.actions.getShortcuts()
.then((userShortcuts) => {
for (const action in userShortcuts) {
let shortcut = userShortcuts[action];
console.log(action + ": " + shortcut);
}
});
Как описано в разделе Избегайте сочетаний клавиш, используемых другими надстройками, рекомендуется избегать конфликтов в сочетаниях клавиш. Чтобы узнать, используется ли одно или несколько сочетаний ключей, передайте их в виде массива строк в метод Office.actions.areShortcutsInUse . Метод возвращает отчет, содержащий сочетания ключей, которые уже используются в виде массива объектов типа {shortcut: string, inUse: boolean}
. Свойство shortcut
представляет собой сочетание клавиш, например CTRL+SHIFT+1. Если сочетание уже зарегистрировано в другом действии, свойству inUse
присваивается значение true
. Например, [{shortcut: "Ctrl+Shift+1", inUse: true}, {shortcut: "Ctrl+Shift+2", inUse: false}]
. Примером является следующий фрагмент кода.
const shortcuts = ["Ctrl+Shift+1", "Ctrl+Shift+2"];
Office.actions.areShortcutsInUse(shortcuts)
.then((inUseArray) => {
const availableShortcuts = inUseArray.filter((shortcut) => {
return !shortcut.inUse;
});
console.log(availableShortcuts);
const usedShortcuts = inUseArray.filter((shortcut) => {
return shortcut.inUse;
});
console.log(usedShortcuts);
});
Реализация пользовательских сочетаний клавиш в поддерживаемых приложениях Microsoft 365
Вы можете реализовать пользовательское сочетание клавиш для использования в поддерживаемых приложениях Microsoft 365, таких как Excel и Word. Если реализация для выполнения одной и той же задачи в каждом приложении отличается, необходимо использовать Office.actions.associate
метод для вызова разных функций обратного вызова для каждого приложения. Ниже приведен код в качестве примера.
const host = Office.context.host;
if (host === Office.HostType.Excel) {
Office.actions.associate("ChangeFormat", changeFormatExcel);
} else if (host === Office.HostType.Word) {
Office.actions.associate("ChangeFormat", changeFormatWord);
}
...
См. также
Office Add-ins