У вас есть несколько вещей, которые нужно настроить для прослушивания ключей:
1: цель Если вы хотите прослушивать ключи на всей странице, первое, что вам нужно, это объявить это свойство библиотеки в вашем zk. xml: https://www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.invokeFirstRootForAfterKeyDown.enabled со значением "true"
Это свойство библиотеки перенаправляет каждое событие ключевого слушателя на компонент root вашей страницы. Если вы не установите его, вы сможете прослушивать ключи компонента, только когда он находится в фокусе.
2: объявление ключа Вам необходимо указать, какие ключи вы слушаете, с помощью comp.setCtrlKeys(ctrlKeys);
где ctrlKeys - это строка, содержащая ключи, которые вы хотите прослушать, например, ctrl + v будет comp.setCtrlKeys("^v");
3: слушатель Ваш пример кода уже имеет версию этого. Вы можете использовать синтаксис add addEventLister(this)
, но это усложняет задачу. Самый простой вариант - встроить слушателя, если вы его не используете повторно:
//comp here is the root div of my page
comp.setCtrlKeys("^v");
comp.addEventListener(Events.ON_CTRL_KEY, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
Clients.log("do something at page level");
}
});
См. эту скрипку !!!! ЭТА НЕПРАВИЛЬНАЯ РАБОТА НА УРОВНЕ СТРАНИЦЫ !!!! из-за того, что свойство библиотеки не устанавливается в zkfiddle. Просто запустите его локально со своим zk. xml, включая указанное выше свойство, чтобы иметь прослушивателей на уровне страницы.