Closed Bug 599811 Opened 9 years ago Closed 9 years ago

fn/alt/shift keys on android needs to stay pressed for the next key entry

Categories

(Firefox for Android Graveyard :: General, defect)

All
Android
defect
Not set

Tracking

(fennec2.0b3+)

VERIFIED FIXED
Tracking Status
fennec 2.0b3+ ---

People

(Reporter: mevans, Assigned: mwu)

References

Details

(Keywords: relnote)

Attachments

(2 files)

currently you have to press and hold the fn key plus the next key for it to access the function value. Other browsers will keep it pressed until the next key press.
tracking-fennec: --- → ?
Flags: in-testsuite?
OS: Mac OS X → Android
Hardware: x86 → ARM
Issue also occurs on Maemo 5 GTK/N900

Mozilla/5.0 (Maemo;Linux armv71; rv:2.0b7pre)Gecko/20100930 Firefox/4.0b7pre Fennec/4.0b2pre
Mozilla/5.0 (Android; Linux armv71; rv2.0b7pre) Gecko/20100930 Firefox/4.0b7pre Fennec/4.0b2pre
OS: Android → All
Reopening bug 583327 since I was told that the Android doesn't work for a different reason than Maemo.
OS: All → Android
tracking-fennec: ? → 2.0b2+
This affects all modifier keys on Android hardware keyboards, including Fn, Alt, and Shift.
Summary: physical fn key on Samsung epic keyboard needs to stay pressed for the next key entry → fn/alt/shift keys on android needs to stay pressed for the next key entry
Duplicate of this bug: 600755
tracking-fennec: 2.0b2+ → 2.0b3+
Duplicate of this bug: 600897
Assignee: nobody → mkristoffersen
OS: Android → All
Keywords: relnote
Duplicate of this bug: 602886
crowder - can you take a look?  MikeK has no android device yet.
Assignee: mkristoffersen → crowderbt
I don't have any Android device that also has a hardware keyboard...
(In reply to comment #0)
> currently you have to press and hold the fn key plus the next key for it to
> access the function value. Other browsers will keep it pressed until the next
> key press.

This "workaround" is not working on G2
On a droid 2


Pressing just the 'a' key:

11-19 10:09:54.581  4727  4727 I GeckoApp: onKeyDown 29
11-19 10:09:54.589  4727  4727 W GeckoAppJava: IME: getEditable called from dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-19 10:09:54.604  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange  start: 0 end: 14 newEnd: 0
11-19 10:09:54.612  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange a start: 0 end: 0 newEnd: 1
11-19 10:09:54.612  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange  start: 1 end: 1 newEnd: -1
11-19 10:09:54.862  4727  4727 I GeckoApp: onKeyUp 29



Pressing the shift key, then the 'a' key:



11-19 10:10:00.221  4727  4727 I GeckoApp: onKeyDown 59
11-19 10:10:00.456  4727  4727 W GeckoAppJava: IME: getEditable called from dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-19 10:10:00.456  4727  4727 I GeckoApp: onKeyUp 59
11-19 10:10:01.050  3891  3891 D MetaKeyHandler: create a new event with new meta state
11-19 10:10:01.057  4727  4727 I GeckoApp: onKeyDown 29
11-19 10:10:01.065  4727  4727 W GeckoAppJava: IME: getEditable called from dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-19 10:10:01.089  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange aa start: 1 end: 1 newEnd: 2
11-19 10:10:01.089  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange  start: 2 end: 2 newEnd: -1
11-19 10:10:01.292  4727  4727 I GeckoApp: onKeyUp 29


Pressing the shift, holding it, then pressing the 'a' key:


11-19 10:11:47.128  4727  4727 I GeckoApp: onKeyDown 59
11-19 10:11:47.237  4727  4727 I GeckoApp: onKeyDown 47
11-19 10:11:47.245  4727  4727 W GeckoAppJava: IME: getEditable called from dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-19 10:11:47.261  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange S start: 0 end: 0 newEnd: 1
11-19 10:11:47.261  4727  4735 I GeckoAppJava: IMEStateUpdate notifyIMEChange  start: 1 end: 1 newEnd: -1
11-19 10:11:47.456  4727  4727 I GeckoApp: onKeyUp 47
11-19 10:11:47.675  4727  4727 W GeckoAppJava: IME: getEditable called from dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-19 10:11:47.675  4727  4727 I GeckoApp: onKeyUp 59
Let's see if this can make b3.
Assignee: crowderbt → mwu
Attachment #492399 - Flags: review?(doug.turner)
Blocks: 602240
Comment on attachment 492399 [details] [diff] [review]
Use KeyListener to filter keyevents

--- GeckoSurfaceView.java

Applied patch and rejects were found.
I think I am missing something, i applied this patch and still see the same behavior.
Attachment #492399 - Flags: review?(doug.turner) → review-
Comment on attachment 492424 [details] [diff] [review]
Use KeyListener to filter keyevents (without dependency on other patches)

cool.  this patch worked for me.



>-        GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
>+        if (GeckoApp.surfaceView.mIMEState == 0 ||

nit: is there a IME_STATE_ define that we can use here instead of 0

>+            keyCode == KeyEvent.KEYCODE_ENTER ||
>+            !GeckoApp.surfaceView.mKeyListener.onKeyDown(GeckoApp.surfaceView, GeckoApp.surfaceView.mEditable, keyCode, event))
>+            GeckoAppShell.sendEventToGecko(new GeckoEvent(event));

Reading over the code, it wasn't plainly clear when onKeyDown or onKeyUp would return false here.

>+        int maxLen = GeckoApp.surfaceView.mEditable.length();
>+        if (end > GeckoApp.surfaceView.mEditable.length())
>+            end = GeckoApp.surfaceView.mEditable.length();

use a temporary variable for |GeckoApp.surfaceView.mEditable.length()|


>+    public void setupEditable(String contents)
>+    {
>+        mEditable = mEditableFactory.newEditable(contents);
>+        mEditable.setSpan(inputConnection, 0, contents.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
>+        Selection.setSelection(mEditable, contents.length());
>+    }

probably want to have another temporary for .length()


Overall fine.  Love to get you to add some comments, but that can be a followup
Attachment #492424 - Flags: review+
OS: All → Android
Hardware: ARM → All
http://hg.mozilla.org/mozilla-central/rev/0b2b0417c11f

Lemme know if you want more comments.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Depends on: 614223
Somehow these hunks got reversed between review and checkin, causing bug 614223.  Fix pushed: http://hg.mozilla.org/mozilla-central/rev/0ffa6f6ee041
Depends on: 614230
Depends on: 614252
Depends on: 614289
Depends on: 614293
Works for Maemo, need to wait for android
Duplicate of this bug: 602240
Depends on: 615208
Verified:	

Mozilla/5.0 (Android; Linux armv71; rv2.0b8pre) Gecko/20101129 Firefox/4.0b8pre Fennec/4.0b3pre

Note : bug 615278
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.