[Libreoffice-bugs] [Bug 124906] iPad Hardware-Keyboard in iOS App: Characters appear twice

bugzilla-daemon at bugs.documentfoundation.org bugzilla-daemon at bugs.documentfoundation.org
Fri May 17 16:05:30 UTC 2019


https://bugs.documentfoundation.org/show_bug.cgi?id=124906

--- Comment #6 from Tor Lillqvist <tml at iki.fi> ---
For reference, here is a log from adding console.log calls to the original
code. From this can be seen that when I type the keys a ¨ e b , for some reason
the keydown, keypress, and keyup events for the b and c keys arrived in
duplicate, nested. That caused the b and c characters to be entered twice into
the document. What caused this duplication is unknown. Possibly some bug in
iOS, possibly some bug in the app (loleaflet) code.

> [Log] ==> onKeyEvents: keydown:a keyCode=65 charCode=0 unoKeyCode=512 _keyHandled=true _isComposing=undefined (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:a keyCode=97 charCode=97 unoKeyCode=257 _keyHandled=false _isComposing=undefined (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=97 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onTextInput: _keyHandled=true (Control.MobileInput.js, line 205)
> [Log] ==> onInput: inputType=insertText (Control.MobileInput.js, line 215)
> [Log] ==> onKeyEvents: keyup:a keyCode=0 charCode=0 unoKeyCode=0 _keyHandled=true _isComposing=undefined (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> [Log] ==> onCompEvents: compositionstart (Control.MobileInput.js, line 188)
> [Log] ==> onCompEvents: compositionupdate (Control.MobileInput.js, line 188)
> [Log] ==> onInput: inputType=insertCompositionText (Control.MobileInput.js, line 215)
> [Log] ==> _postCompositionEvent type=input text="¨" (TileLayer.js, line 1599)
> [Log] ==> onKeyEvents: keydown:ë keyCode=69 charCode=0 unoKeyCode=516 _keyHandled=true _isComposing=true (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:ë keyCode=235 charCode=235 unoKeyCode=235 _keyHandled=false _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=235 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onTextInput: _keyHandled=true (Control.MobileInput.js, line 205)
> [Log] ==> onInput: inputType=insertFromComposition (Control.MobileInput.js, line 215)
> [Log] ==> onCompEvents: compositionend (Control.MobileInput.js, line 188)
> [Log] ==> _postCompositionEvent type=end text="" (TileLayer.js, line 1599)
> [Log] ==> onKeyEvents: keyup:Dead keyCode=69 charCode=0 unoKeyCode=516 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=516 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> [Log] ==> onKeyEvents: keyup:ë keyCode=0 charCode=0 unoKeyCode=0 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> 
> 
> [Log] ==> onKeyEvents: keydown:b keyCode=66 charCode=0 unoKeyCode=513 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:b keyCode=98 charCode=98 unoKeyCode=258 _keyHandled=false _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=98 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onKeyEvents: keydown:b keyCode=66 charCode=0 unoKeyCode=513 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:b keyCode=98 charCode=98 unoKeyCode=258 _keyHandled=false _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=98 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onKeyEvents: keyup:Dead keyCode=66 charCode=0 unoKeyCode=513 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=513 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> [Log] ==> onKeyEvents: keyup:b keyCode=0 charCode=0 unoKeyCode=0 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> [Log] ==> onKeyEvents: keydown:c keyCode=67 charCode=0 unoKeyCode=514 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:c keyCode=99 charCode=99 unoKeyCode=259 _keyHandled=false _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=99 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onKeyEvents: keydown:c keyCode=67 charCode=0 unoKeyCode=514 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log]     _keyHandled := false (Control.MobileInput.js, line 144)
> [Log] ==> onKeyEvents: keypress:c keyCode=99 charCode=99 unoKeyCode=259 _keyHandled=false _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=input charcode=99 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 172)
> [Log] ==> onKeyEvents: keyup:Dead keyCode=67 charCode=0 unoKeyCode=514 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=514 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)
> [Log] ==> onKeyEvents: keyup:c keyCode=0 charCode=0 unoKeyCode=0 _keyHandled=true _isComposing=false (Control.MobileInput.js, line 125)
> [Log] ==> _postKeyboardEvent type=up charcode=0 keycode=0 (TileLayer.js, line 1573)
> [Log]     _keyHandled := true (Control.MobileInput.js, line 182)

When I tested with an extremely minimal HTML page with some Javascript to catch
keyboard events, I did not see any corresponding duplication, which would seem
to point the finger at our code... But no idea really.

<html>
  <head>
    <title>
      Title
    </title>

    <script>
      var keyeventhandler = function(e) {
          console.log(e.type + ' "' + e.key + '" ' + e.keyCode + ' ' +
e.charCode);
      }

      var textinputeventhandler = function(e) {
          console.log('textInput: "' + e.data + '"');
      }

      var inputeventhandler = function(e) {
          console.log(e.inputType);
      }

      var compeventhandler = function(e) {
          console.log(e.type + ' "' + e.data + '"');
      }

      window.addEventListener('keydown', keyeventhandler);
      window.addEventListener('keypress', keyeventhandler);
      window.addEventListener('keyup', keyeventhandler);

      window.addEventListener('textInput', textinputeventhandler);

      window.addEventListener('input', inputeventhandler);

      window.addEventListener('compositionstart', compeventhandler);
      window.addEventListener('compositionupdate', compeventhandler);
      window.addEventListener('compositionend', compeventhandler);

    </script>

  </head>
  <body>
    Body.
  </body>
</html>

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice-bugs/attachments/20190517/7bf5bf0d/attachment.html>


More information about the Libreoffice-bugs mailing list