Closed bobaoapae closed 7 months ago
Update:
The issue it's not the paste Control + V, any Control + letter result in this weird character in the text area
Hi
What platform is this on? And is that just a normal text field?
It looks like five 'empty rectangle' characters which are what would be displayed if there was no appropriate character available in the selected font, so can you please also check the text format that's applied there to ensure it's not an embedded font, or if it is, please make sure all the font characters are included (not sure if you're creating this from Animate or a tool that only embeds characters that are required in the source..)
Also just wondering if you can read out the value of the text field to see what the 'text' contents area when this happens - and then what happens if you set those values manually?
Could be all sorts of things I'm afraid! but with the above it will help us narrow it down a bit..
thanks
Hello, it's windows I don't checked in others plataforma wet. Theses empty rectangles only show when I press control + any letter. Like: control + a, control + c, control + v etc etc etc. If I just type works normally, right click copy and paste also works without problem.
Other example. Control + a should select all the text in the text field but instead it's not doing this and acting adding theses rectangles
Here it's a video showing the issue
I believe, it would be easier for somebody to help if you would trace and write here what symbols/symbol codes are they printing. Cause every [] is some symbol/letter and it means something, and what exact symbol and in what encoding your actions type, as well as the font you use and what symbols from that font you embed, might help in better understanding the cause.
Font it's Arial:
_inputField = new TextField(); _inputField.type = "input"; _inputField.autoSize = "none"; _inputField.multiline = false; _inputField.wordWrap = false; _inputField.maxChars = 100; _inputField.x = loc1.x; _inputField.y = loc1.y; _inputField.height = 20; addChild(_inputField); _inputField.addEventListener("change", onInputFieldChange); _inputField.addEventListener(TextEvent.TEXT_INPUT, onTextInput); setTextFormat(new TextFormat("Arial",12,65280));
private function setTextFormat(param1:TextFormat) : void { _inputField.defaultTextFormat = param1; _inputField.setTextFormat(param1); }
private function __onInputFieldChange(param1:Event) : void { if(_inputField.text) { trace("Input Field Changed: ", _inputField.text); } }
private function __onTextInput(param1:TextEvent):void { trace("Input Field Input: ", param1.text); }
[trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed: [trace] Input Field Changed:
[trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input: [trace] Input Field Input:
Yeah just show empty in the output console.
Even showing empty in the trace statement, the empty rectangle are added to the textfield as show in the video.
If i copy and paste from the input in to Notepad++ they show theses code, any control + letter generate some other weird code
if (param1.ctrlKey)
{
param1.preventDefault();
if (param1.keyCode == 65)
{
_inputField.setSelection(0, _inputField.text.length);
}
else if (param1.keyCode == 67)
{
//get selection or all text and copy to clipboard
if (_inputField.selectionBeginIndex != _inputField.selectionEndIndex)
{
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, _inputField.text.substring(_inputField.selectionBeginIndex, _inputField.selectionEndIndex));
}
else
{
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, _inputField.text);
}
}
else if (param1.keyCode == 86)
{
if (!Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT))
return;
var data:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
if (_inputField.selectionBeginIndex != _inputField.selectionEndIndex)
{
_inputField.replaceText(_inputField.selectionBeginIndex, _inputField.selectionEndIndex, data);
_inputField.setSelection(_inputField.selectionBeginIndex + data.length, _inputField.selectionBeginIndex + data.length);
}
else
{
_inputField.replaceText(_inputField.caretIndex, _inputField.caretIndex, Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String);
_inputField.setSelection(_inputField.caretIndex + data.length, _inputField.caretIndex + data.length);
}
}
else if (param1.keyCode == 88)
{
if (_inputField.selectionBeginIndex != _inputField.selectionEndIndex)
{
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, _inputField.text.substring(_inputField.selectionBeginIndex, _inputField.selectionEndIndex));
_inputField.replaceText(_inputField.selectionBeginIndex, _inputField.selectionEndIndex, "");
_inputField.setSelection(_inputField.selectionBeginIndex, _inputField.selectionBeginIndex);
}
else
{
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, _inputField.text);
_inputField.text = "";
}
}
return;
}
Manually handling the expected behavior fix the problem, but this should not be needed, i have to do this to all my inputx text to works as expected
So it looks like the ctrl-letter combination is resulting in a key code that's just a = 1, b = 2, c = 3, v = 22 etc (ascii value 1 = 'SOH' control code... etc)
Your code snippets imply this is just a regular TextField object that's getting the text. And it's Windows -> what version, and do you have any options with virtual keyboards or other language input options?
I don't suppose you have Visual Studio available and could do a "spy" on this, to find out what Windows messages are going to it? https://learn.microsoft.com/en-us/visualstudio/debugger/introducing-spy-increment
Alternatively if it would be possible for you to package up your app as a bundle and zip it up, could we try it here and see if we can reproduce this and then spy on things?
Or actually, probably the first thing to try is what happens if you have Adobe Scout running? Load up your application and then do the ctrl-a etc. In the Scout window, if you click on the frame in which you've pressed the keyboard (you can see where these would be in the 'events' section) and then if you click on "Activity sequence" on the bottom right, you should see something like
Handling event "keydown": 102
When I try it, hitting 'a' gives me a keydown of 97 and then a keypress of 97. Hitting ctrl-a gives me a keydown of 97 and an immediate keypress of 12. It would be good to know whether the keydown of 97 still happens when you are using the ctrl button - if not, then it seems something (in Windows?) is translating the key code before it gets to AIR...?
thanks
With the control pressed scout show the events but don't show the Handling Event login in the activity sequence. Without the control pressed show as expected. Control pressed: Without control: Event flood if keep control pressed without pressing others keys:
Seems like something is very wrong with the keyboard input on this... what language have you got Windows set to? and is there a different display language from the keyboard input language? Presumably it's a hardware keyboard rather than a virtual one?
I think we can put together a quick and simple Windows app that shows what events are being received when you press various key combinations, which will help us understand what's happening and whether we can handle these within AIR...
thanks
The alt + key you can ignore, it's my bad from the previous code, users are using control + alt to get some keyboards key and my code preventdefault if control pressed.
The issue remain only control + any key like explain before.
Windows language: PT_BR Hardware keyboard, any keyboard layout as the issue occurs to all our client using some or other keyboard layout ABNT2/US INTERNATIONAL, and any windows windows 7,8,8.1,10
@ajwfrost any news on that? This it's really impacting my application
I can repoduce it in Windows 11 french.
@ajwfrost hello, any updates on that issue?
Hi
We've still not been able to reproduce this on Windows 10 or 11, reviewing it again I'm wondering if it's due to a hardware keyboard (we've just been trying by switching the keyboard and windows input/display languages).
From some testing (with thanks to @bobaoapae) it seems we're still getting the same Windows key events on all platforms, the issue is then in how the WM_KEYDOWN event is being handled for the ctrl-a, ctrl-c etc cases. This should be picked up by the application code and translated into a call to select-all, copy etc, and the event should then have 'preventDefault' set, which means we ignore the subsequent WM_CHAR event. If that WM_CHAR gets through, it causes the square/invalid character shown in the text field.
The mystery really is why the events aren't being picked up for translation. It looks like they should be, it's not particularly complex code; the only things that may prevent it are perhaps the other settings (alt/shift/etc, but those look to be the same) or whether there's a native menu accelerator that's getting in the way.
Could someone please put the below code into a simple SWF file (call testInputTextField()
to initialise) and then let us know the trace logs if they press/release the 'a' button, then press ctrl and hold it, press/release 'a', and then release ctrl?
private function testInputTextField() : void
{
var tf : TextField = new TextField();
tf.type = "input";
tf.border = true;
tf.width = 300;
tf.height = 70;
tf.x = tf.y = 20;
addChild(tf);
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownCapture, true, int.MAX_VALUE, false);
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownCapture2, true, int.MIN_VALUE, false);
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownBubble, false, int.MAX_VALUE, false);
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownBubble2, false, int.MIN_VALUE, false);
tf.addEventListener(KeyboardEvent.KEY_DOWN, onKeyboard);
tf.addEventListener(KeyboardEvent.KEY_UP, onKeyboard);
var appMenu : NativeMenu = null;
if (NativeApplication.supportsMenu)
{
trace("NativeApplication supports menu");
appMenu = NativeApplication.nativeApplication.menu;
}
else
{
if (NativeApplication.nativeApplication.activeWindow && NativeWindow.supportsMenu)
{
trace("NativeWindow present and supports menu");
appMenu = NativeApplication.nativeApplication.activeWindow.menu;
}
}
if (appMenu) trace("MENU IS PRESENT");
else trace("No menu present");
}
private function onKeyboard(e : KeyboardEvent) : void
{
trace("TextField: " + e.toString());
if (e.type == KeyboardEvent.KEY_UP)
{
var strOutput : String = "String = ";
var txt : String = (e.target as TextField).text;
for (var i : uint = 0; i < txt.length; i++)
{
if (i) strOutput += ", ";
strOutput += txt.charCodeAt(i);
}
trace(strOutput);
}
}
private function onKeyDownCapture(e : KeyboardEvent) : void
{
trace("\nCapture before: " + e.toString());
if (e.isDefaultPrevented()) trace("Default is prevented");
}
private function onKeyDownCapture2(e : KeyboardEvent) : void
{
trace("Capture after: " + e.toString());
if (e.isDefaultPrevented()) trace("Default is prevented");
}
private function onKeyDownBubble(e : KeyboardEvent) : void
{
trace("Bubbles before: " + e.toString());
if (e.isDefaultPrevented()) trace("Default is prevented");
if (e.ctrlKey && !e.shiftKey && !e.altKey && !e.commandKey)
{
var bSpecial : Boolean = ("xXcCvVaA".indexOf(String.fromCharCode(e.charCode)) != -1);
trace("Checking char code = " + e.charCode + " = [" + String.fromCharCode(e.charCode) + "]" + (bSpecial ? " - SPECIAL" : ""));
}
}
private function onKeyDownBubble2(e : KeyboardEvent) : void
{
trace("Bubbles after: " + e.toString());
if (e.isDefaultPrevented()) trace("Default is prevented");
}
@bobaoapae @pol2095 wondering whether either of you could get an app set up with the above code and see if you can reproduce it, it would be good if we could get to the bottom of why the keyboard shortcuts aren't getting interpreted properly!
thanks
On Windows 11 AZERTY keyboard, for me [Ctrl+a] work correctly, but for example [Ctrl+e] result in weird empty rectangle in the text field, [Ctrl+l] result in weird top arrow in the text field.
I used [Ctrl+e] :
No menu present
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=101 keyCode=69 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
String = 101
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 101 = [e]
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=101 keyCode=69 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
String = 101, 5
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=0 keyCode=17 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
String = 101, 5
and [Ctrl+l]
No menu present
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=108 keyCode=76 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
String = 108
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 0 = []
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=2 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
Checking char code = 108 = [l]
Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=108 keyCode=76 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
String = 108, 12
TextField: [KeyboardEvent type="keyUp" bubbles=true cancelable=false eventPhase=2 charCode=0 keyCode=17 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
String = 108, 12
Okay thanks. So if the ctrl-a/c/v/x shortcuts are being handled, then the behaviour you see above would be considered to be expected (and I see the same here, when using ctrl-e to inject a non-printable character..)
I think we shouldn't change that behaviour due to the potential impact on other people. If you don't want these non-printable characters to be sent to the text field, you can add another handler to prevent it e.g. for a global change:
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
if (e.ctrlKey)
{
var bSpecial : Boolean = ("xXcCvVaA".indexOf(String.fromCharCode(e.charCode)) != -1);
if (!bSpecial) e.preventDefault();
}
});
But I think @bobaoapae was seeing that even a ctrl-a shortcut resulted in a non-printable character being added....
thanks
@ajwfrost Good idea, thanks.
Logs for control + a, control + c, control +v, control +x
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 0 = []
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 97 = [a] - SPECIAL
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Default is prevented
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 0 = []
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=99 keyCode=67 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=99 keyCode=67 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=99 keyCode=67 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 99 = [c] - SPECIAL
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=99 keyCode=67 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Default is prevented
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 0 = []
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=118 keyCode=86 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=118 keyCode=86 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=118 keyCode=86 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 118 = [v] - SPECIAL
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=118 keyCode=86 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Default is prevented
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 0 = []
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=120 keyCode=88 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=120 keyCode=88 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=120 keyCode=88 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 120 = [x] - SPECIAL
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=120 keyCode=88 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Default is prevented
Logs for press/release the 'a' button, then press ctrl and hold it, press/release 'a', and then release ctrl:
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=false altKey=false shiftKey=false controlKey=false commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 0 = []
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Capture after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=1 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Bubbles before: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Checking char code = 97 = [a] - SPECIAL
[trace] Bubbles after: [KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=true altKey=false shiftKey=false controlKey=true commandKey=false functionKey=false]
[trace] Default is prevented
[trace] NativeWindow present and supports menu
[trace] No menu present
Thanks @bobaoapae .. but from those logs, where you're seeing Default is prevented
and not seeing any String = xx...
output, it implies to me that you're not seeing these empty rectangles when you press ctrl-a etc?
yes... for some reason in this example i don't get empty rectangles...
@bobaoapae that seems odd; are you able to add any similar listeners into your original game that was showing up the problems, to see if we can spot where things are going wrong?
thanks
Hello i started using sdk yesterday and already buyed a one year license as almost works 99%.
One of the issues i'm having is this:
Whenever i copy some text and try to paste in the air application(It's a game) the text became just the random thing show in the image above. Copy text from game to paste in some others app works without problem, just pasting anything in the game don't works