Flex / AIR: absorver automaticamente atalhos da tecla não atribuída / deficientes
-
03-07-2019 - |
Pergunta
Eu tenho um aplicativo AIR com um componente <mx:HTML>
, o que torna uma página que inclui uma HTML/Javascript
baseado WYSIWYG/rich-text editor
. Vários atalhos de teclado são atribuídos para a formatação eo que você tem, mas se eu digitar um atalho que não é atribuído
( por exemplo, cmd ou [ Ctrl no Windows] + M ),
o personagem é inserido como se nenhuma tecla modificadora foi pressionado. Isto é verdade mesmo se o atalho é atribuído, mas seu item de menu está desativado.
O que é a melhor maneira de detectar que um modificador é pressionado, mas o atalho não é atribuído e deve ser ignorado, e não repassado para a vista HTML sem a tecla modificadora?
Solução
Não importa, eu descobri-lo. Aparentemente, o sistema de menu opera mesmo se você evitar a ação padrão na KeyboardEvent:
public var OperatingSystem:String = !!NativeApplication.supportsDockIcon ?
'mac' :
!!NativeApplication.supportsSystemTrayIcon ?
'win' :
'other';
stage.addEventListener('keyDown', function(e:KeyboardEvent):void {
if(e[(OperatingSystem == 'mac' ? 'commandKey' : 'ctrlKey')]) {
e.preventDefault();
}
});