www.cendio.com
Bug 4602 - On-screen keyboard doesn't work in Chrome on Android
: On-screen keyboard doesn't work in Chrome on Android
Status: CLOSED FIXED
: ThinLinc
Web Access
: trunk
: PC Unknown
: P2 Normal
: 4.1.1
Assigned To:
:
:
:
: 3523
  Show dependency treegraph
 
Reported: 2013-04-17 11:07 by
Modified: 2013-10-24 10:52 (History)
Acceptance Criteria:


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From cendio 2013-04-17 11:07:02
Backspace seems to work, but all other keys are lost somewhere.
------- Comment #1 From cendio 2013-04-17 11:08:01 -------
Tested with Firefox on Android. The AOSP browser doesn't support enough
websockets. No idea about other browsers.
------- Comment #2 From cendio 2013-04-17 11:21:11 -------
https://github.com/kanaka/noVNC/issues/251
------- Comment #3 From cendio 2013-04-23 13:35:46 -------
Tested today with whatever's installed on the demo system.

|----------+------------------------------------|
| Platform | Android 4.2.2; Nexus 7 Build/JDQ39 |
|----------+------------------------------------|
| Browser  | Chrome 26.0.1410.58                |
|----------+------------------------------------|

Works: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, Enter


|----------+------------------------------------|
| Platform | Android 4.2.2; Nexus 7 Build/JDQ39 |
|----------+------------------------------------|
| Browser  | Firefox 20.0.1                     |
|----------+------------------------------------|

Works: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, Backspace, Enter


|----------+------------------------------------|
| Platform | Android 4.2.2; Nexus 7 Build/JDQ39 |
|----------+------------------------------------|
| Browser  | Opera Mobile                       |
|----------+------------------------------------|

Doesn't start. Stops at "noVNC ready: native WebSockets, canvas
rendering" message.
------- Comment #4 From cendio 2013-04-23 15:00:40 -------
|----------+------------------------------------|
| Platform | Android 2.3.5; HTC ChaCha          |
|----------+------------------------------------|
| Browser  | Firefox 20.0.1                     |
|----------+------------------------------------|

Only the normal unshifted/unmodifed keys works, ie basically a-z. I noticed
that the "shift" and "function" buttons didn't even work on the login form, so
this seems to be a generic problem.
------- Comment #5 From cendio 2013-04-23 17:27:51 -------
(In reply to comment #4)
> |----------+------------------------------------|
> | Platform | Android 2.3.5; HTC ChaCha          |
> |----------+------------------------------------|
> | Browser  | Firefox 20.0.1                     |
> |----------+------------------------------------|
> 
> Only the normal unshifted/unmodifed keys works, ie basically a-z. I noticed
> that the "shift" and "function" buttons didn't even work on the login form, so
> this seems to be a generic problem.

All keys and even voice recognition text input works in the login form for
Chrome, Firefox and Opera (platform/browser versions same as in comment #3).
------- Comment #6 From cendio 2013-07-04 16:21:11 -------
Used adb logcat for debugging via USB.

|-------------+-------------------------------------|
| Platform    | Android 4.2.2; Nexus 7 Build/JDQ39  |
|-------------+-------------------------------------|
| Browser     | Chrome 18.0.1025469                 |
|-------------+-------------------------------------|
| Working keys| 1,2,3,4,5,6,7,8,9,0,BACKSPACE,ENTER |
|-------------+-------------------------------------|

Works: 1,2,3,4,5,6,7,8,9,0,BACKSPACE, ENTER 

I ran tests/input.html and noticed that instead of sending the key event (like
it does on the iPad for example) the log shows this message:

I/chromium( 8658): [INFO:CONSOLE(110)] "Key event (keyCode = 229) not found on
keyDownList", source: http://justina-60.lkpg.cendio.se:6080/include/util.js
(110)

The current code explains keyCode 229 as below which seems a bit narrow minded.

if (evt.keyCode === 229) {
        // French AZERTY keyboard dead key.
        // Lame thing is that the respective keyUp is 219 so we can't
        // properly ignore the keyUp event

Even if the implementation in noVNC is poor, running other tests shows that the
problem might not be in noVNC but rather in Chrome on Android.. Exact the same
keys that fail in noVNC fail in all other keycode tests i can find:

http://www.asquare.net/javascript/tests/KeyCode.html 
http://www.webonweboff.com/tips/js/event_key_codes.aspx
http://www.west-wind.com/WestwindWebToolkit/samples/Ajax/html5andCss3/keycodechecker.aspx


|-------------+-------------------------------------|
| Platform    | Android 4.2.2; Nexus 7 Build/JDQ39  |
|-------------+-------------------------------------|
| Browser     | Firefox 22.0                        |
|-------------+-------------------------------------|
| Working keys| Everything except for å,ä,ö and     |
|             | some special characters like °,±,π  |
|-------------+-------------------------------------|

So noVNC is usable on Android if you are using a new version of Firefox. Good
news I guess. 

(Might also be worth adding that all keys work in tests/input.html in Opera,
Dolphin Browser, VBrowser and in all the smaller browsers that I tested but
they didn't have websocket support.)
------- Comment #7 From cendio 2013-07-04 17:52:54 -------
Pierre found:

http://code.google.com/p/chromium/issues/detail?id=118639

which confirms that the problem lies with Chrome. Pierre also suggested that
the only reliable solution until this is standardized is to make our own
on-screen-keyboard in HTML.
------- Comment #8 From cendio 2013-07-05 10:04:19 -------
Reading the comments on that entry, it unfortunately seems like things are not
moving towards standardising a classical keyboard model. Rather, they are
working on an input method standard instead. This is more or less useless for
VNC, further advocating that we need to come up with something independent of
the browsers.

Actual physical keyboards is still a problem area though.
------- Comment #9 From cendio 2013-07-23 15:31:22 -------
The keyboard works with the Ericom HTML5 client on Chrome @ Android.
------- Comment #10 From cendio 2013-09-16 17:25:12 -------
Fixed in revision 27888.

The tester should aim to cover the cases listed below. The ones I have tested
with success are marked with a X.

Internet Explorer 10 or newer (Desktop Mode)
* Windows 7                               [X]

Internet Explorer 10 or newer (Metro Mode)
* Windows 8                               [X]
* Windows Phone (onscreen keyboard)       [ ]
* Windows Phone (physical keyboard)       [ ]

Firefox 11 or newer
* Windows 7                               [X]
* Windows 8                               [X]
* Linux                                   [X]
* Mac OS X                                [X]

Firefox Mobile 11 or newer
* Android 4.3 (onscreen keyboard)         [X]
* Android 4.3 (physical keyboard)         [X]
* iOS 6 (onscreen keyboard)               [X]
* iOS 6 (physical keyboard)               [X]

Google Chrome 16 or newer
* Windows 7                               [X]
* Windows 8                               [X]
* Linux                                   [X]
* Mac OS X                                [ ]
* Android 4.3 (onscreen keyboard)         [X]
* Android 4.3 (physical keyboard)         [X]
* iOS 6 (onscreen keyboard)               [ ]
* iOS 6 (physical keyboard)               [ ]

Safari 6 or newer
* Mac OS X                                [X]
* iOS 6 (onscreen keyboard)               [X]
* iOS 6 (physical keyboard)               [X]

Notes on some of the cases:

|---------------------------------------------------|
| Android 4.3; Nexus 7, physical Keyboard           |
|---------------------------------------------------|

Firefox 23.0:
The Backquote, Home, AltGr, PrtScn and Pause -keys does not work.

Chrome 29.0.1547.72:
The Backquote, Home, AltGr, PrtScn and Pause -keys does not work.


|---------------------------------------------------|
| Android 4.3; Nexus 7, onscreen keyboard           |
|---------------------------------------------------|

Firefox:
Gesture typing or "swipe" does not work.


Chrome:
Gesture typing or "swipe" works.

|---------------------------------------------------|
| iPad Mini; iOS 6, physical keyboard               |
|---------------------------------------------------|

Arrow keys (UP, DOWN, LEFT, RIGHT) does not work.

|---------------------------------------------------|
| Windows 8                                         |
|---------------------------------------------------|

Chrome:
pipe, tilde and @ does not work

Firefox:
pipe does not work

IE:
pipe, tilde and @ does not work

|---------------------------------------------------|
| Windows 8; Windows Phone                          |
|---------------------------------------------------|

I did not have a device to test on.
------- Comment #11 From cendio 2013-09-17 16:49:33 -------
Renamed from "android keyboard doesn't work".
------- Comment #12 From cendio 2013-10-09 16:56:03 -------
Doc updated in revision 28019.
------- Comment #13 From cendio 2013-10-23 12:50:47 -------
Tested on Chrome with both physical and on-screen keyboards, with the same
results as listed in comment #10 above. Assuming this is good enough, so
closing.