Bug 4602 - On-screen keyboard doesn't work in Chrome on Android
Summary: On-screen keyboard doesn't work in Chrome on Android
Status: CLOSED FIXED
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Web Access (show other bugs)
Version: trunk
Hardware: PC Unknown
: P2 Normal
Target Milestone: 4.1.1
Assignee: Samuel Mannehed
URL:
Keywords: aaron_tester, relnotes
Depends on:
Blocks: keyboard
  Show dependency treegraph
 
Reported: 2013-04-17 11:07 CEST by Pierre Ossman
Modified: 2013-10-24 10:52 CEST (History)
2 users (show)

See Also:
Acceptance Criteria:


Attachments

Description Pierre Ossman cendio 2013-04-17 11:07:02 CEST
Backspace seems to work, but all other keys are lost somewhere.
Comment 1 Pierre Ossman cendio 2013-04-17 11:08:01 CEST
Tested with Firefox on Android. The AOSP browser doesn't support enough websockets. No idea about other browsers.
Comment 2 Peter Åstrand cendio 2013-04-17 11:21:11 CEST
https://github.com/kanaka/noVNC/issues/251
Comment 3 Karl Mikaelsson cendio 2013-04-23 13:35:46 CEST
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 Peter Åstrand cendio 2013-04-23 15:00:40 CEST
|----------+------------------------------------|
| 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 Karl Mikaelsson cendio 2013-04-23 17:27:51 CEST
(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 Samuel Mannehed cendio 2013-07-04 16:21:11 CEST
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 Samuel Mannehed cendio 2013-07-04 17:52:54 CEST
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 Pierre Ossman cendio 2013-07-05 10:04:19 CEST
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 Peter Åstrand cendio 2013-07-23 15:31:22 CEST
The keyboard works with the Ericom HTML5 client on Chrome @ Android.
Comment 10 Samuel Mannehed cendio 2013-09-16 17:25:12 CEST
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 Samuel Mannehed cendio 2013-09-17 16:49:33 CEST
Renamed from "android keyboard doesn't work".
Comment 12 Samuel Mannehed cendio 2013-10-09 16:56:03 CEST
Doc updated in revision 28019.
Comment 13 Aaron Sowry cendio 2013-10-23 12:50:47 CEST
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.

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