Кажется, что невозможно получить событие клавиатуры, обычно используемое для копирования, при запуске приложения Flex в браузере или в качестве приложения AIR, возможно, потому, что браузер или ОС сначала его перехватывают.
Есть ли способ указать браузеру или ОС пропустить событие?
Например, в AdvancedDataGrid я установил для события keyUp значение handleCaseListKeyUp (событие), которое вызывает следующую функцию:
private function handleCaseListKeyUp(event:KeyboardEvent):void
{
var char:String = String.fromCharCode(event.charCode).toUpperCase();
if (event.ctrlKey && char == "C")
{
trace("Ctrl-C");
copyCasesToClipboard();
return;
}
if (!event.ctrlKey && char == "C")
{
trace("C");
copyCasesToClipboard();
return;
}
// Didn't match event to capture, just drop out.
trace("charCode: " + event.charCode);
trace("char: " + char);
trace("keyCode: " + event.keyCode);
trace("ctrlKey: " + event.ctrlKey);
trace("altKey: " + event.altKey);
trace("shiftKey: " + event.shiftKey);
}
При запуске я не могу получить отпускание клавиши «C», одновременно нажимая клавишу команды (которая отображается как KeyboardEvent.ctrlKey). Я получаю следующие результаты трассировки:
charCode: 0
char:
keyCode: 17
ctrlKey: false
altKey: false
shiftKey: false
Как видите, единственное событие, которое я могу зафиксировать, - это отпускание клавиши управления, отпускание клавиши «C» при удержании клавиши управления даже не отправляется.
Кто-нибудь успешно внедрил стандартную обработку клавиатуры для копирования и вставки?
Мне суждено просто использовать клавишу «C» самостоятельно (как показано в примере кода) или сделать доступной кнопку копирования?
Или мне нужно создать слушателя вручную на более высоком уровне и передать событие в кишки моего модульного приложения?