This is the last one (whew)
Also move a somewhat unrelated initialization out of the
input attribute initialization function.
Change-Id: Icc77b32fd16b112ab43786715061b1c9dca31c04
The ultimate intent is to make these variables final,
which will allow to move the computing function to the
InputAttributes class.
Change-Id: Ifb1fc7321a19b10d60aa63fa0daaa2708deda2cf
...instead of the hard-to-understand mHasUncommittedTypedChars.
This is possible because now the word composer is actually aware
of commits.
Change-Id: I36b664ce8402a280f801e87b9ebe161f416b0853
Currently, these variables hold the info about the composing
word, or maybe some outdated info, and it's not very clear
which it is. LatinIME is maintaining the freshness info in
a separate boolean, and uses it throughout the code for many,
many things, leading to much confusion.
The idea in grouping this info is, it can be saved in another
instance and restored later. It can be tested against to know
whether there is actually outdated but kept info or not, and
it should allow to straighten out what is actually currently
being typed. Ultimately, it will eliminate the need for
LatinIME to keep track of the status of the info in the
word composer.
Change-Id: I00e2c690f303f8320c9be35590a6df4583e9e456
Also rename the function to reflect better the behavior.
An upcoming change will clean up the remnants
Change-Id: I19bdf0d9e95f62ee749e1f64fe17132c4a5ef0bc
This change introduces KeyboardSet and SubKeyboard XML definitions to
represent a set of keyboard layouts.
Bug: 5002108
Bug: 5679585
Change-Id: Ib6c8d5936187381bb6725c9fe574e93871c01a86
Upon autocorrection, there is visual feedback in the text
view that quickly flashes the background of the text that
just changed. This fixes a race condition that happens
upon autocorrection when typing fast, and that results in
flashing one character too far left (typically, the flashing
area includes the whitespace before the corrected word and
not the last character of the corrected word).
This happens because the call to commitCorrection may
happen before or after the IPC sent by sendKeyChar, but the
arguments are fit only for the case where it arrives first.
Change-Id: I9b5442a665aad5a9bc66cd49228075b9056b37fa
This place is very confusing because a member variable with
a consistent meaning is hijacked for the duration of a function
to mean something else. This is in the way of easy-to-understand
refactoring.
Change-Id: If79bc771950d6bfc0ad5f0e9c51c7ef1dbb45b66
- Stop the word composer from escaping - take a page from the law
of Demeter and only report what is actually needed.
- Fix typos in comments.
- Add a comment for a fishy processing.
- Remove a useless local variable.
Change-Id: I5fa78901cbb5483fc9683bfb7094f47244b85df6
mBestWord has a confusing name - it's actually an auto-correction.
It's cleaner if it lives in the word composer because an
auto-correction should be tied to a specific user input, and
should be reset each time the user input changes to avoid
race conditions.
Change-Id: I718d29395bc747372067e6440e090c6a181994ae
Both tests have the same meaning. They should be merged.
Also, if "deleteLast()" deletes more than one char (which
never happens in the current implementation, but it's not
guaranteed), the new code is more correct.
Change-Id: I216df7cd45f4a7d76d1d5d6aa7f8d7f9a6e35ea3
If mHasUncommittedTypedChars is true, then
mWordSavedForAutoCorrectCancellation must always be null, and
spaceState must always be SPACE_STATE_NONE.
Hence, this change is supposed to be very no-op.
Change-Id: I2716f7372d996cc4dec40a4b7ac1ee7f5f4afe91
postUpdateShiftKeyState used to be called also when
mEnteredText is not null => this is a bugfix.
The rest does not change the logic, as posting a message can
be done anywhere within the function with no impact.
Change-Id: I7888797c0778702d64f96701e35b611a55a6a259
If there are no uncommitted chars, we shouldn't enter any of
the tests that follow. We didn't use to, but a change today
made it possible - it should not happen.
There is no point in doing the rest of the tests, they are
sure to fail.
Change-Id: I580dd104aff3585de72a93b38989bfd9713f615b
This also includes a new memorized string with simpler
logic that will allow to remove other members
Change-Id: I0b97243084902e68fcb835b6163c86fef8190ebc
Reorder so that they match the order in the preference xml
file. Also add TODOs for missing raw variables.
Change-Id: I06332c131a624d6c359512d75c808f3f7313fa91
The ultimate intent is to close it up in the settings, as it does not
change while typing, only when the keyboard is open again.
Change-Id: I12ff56e7482c1584877fe5531473bf03e95a60f6
These calls, setAlphabetKeyboard, setSymbolsKeyboard, and
setSymbolsShiftedKeyboard have to be call backed from KeyboardState.
Bug: 5708602
Change-Id: Ibbe1a21bd10bf942e17886869c0ab0fa1735b87e
This also tries to make the code as easy to extend as possible
for future developments.
Bug: 5701241
Change-Id: I1ed48e6a5cc7aab94c5d6e309930cc004247d7e7
Note that this is not enough: we still need to create a
reasonable proximity table for Cyrillic characters, or we
won't be able to show up suggestions.
Bug: 5701241
Change-Id: Idb141f7a230a6e1a46094308c26f43c01ab3b97a
I14dd3815 special-cased single quotes at the start of a word, but
did not do so correctly - it would kill a composing word if entered
just after some punctuations.
The right test was not isCursorTouchingWord() but
mHasUncommittedTypedChars, which actually makes for a simpler
implementation.
Bug: 5648032
Change-Id: Icd21d213e0cad6da68cacfeb921502cd8dcfac95
Single quote at start of word is not considered a part of a
word any more.
Single quote at the end of a word now behave like capitalization:
lookup in the dictionary is done *disregarding* a final quote,
and it is forcefully added back into the suggestions afterwards.
Bug: 5566368
Change-Id: I14dd3815f4b743edba56d64a3abdf4b73d863a6a
This introduces an elementary undo facility that accounts
for magic space, strong space, double space and its cancelling,
and swapped punctuation and its cancelling.
The former three were existing behavior ; this change adds
the swapped punctuation cancelling behavior.
Bug: 5454442
Change-Id: I87af633f30caa2788e9af725e556a7f0746d9a14
The spell checker cannot afford to return static objects,
seeing as the framework will then use the same objects to
pair the cookie and sequence ids to the request.
This is a backport of Ia9c3a933
Bug: 5503243
Change-Id: Ia9c3a933bfb30cf5525418b240ef60632d72c9d0
Remove a state that can never be reached, and ajust all the
callers that would always have received false.
Change-Id: Iac025568be11743428419e0772da306a4f0a0bf1
On space swap or space removal in some occasions there would be
a small blink on the screen. This change fixes that.
Change-Id: I486cbcc5dfcafd531b3fa92c4f9a3255832f22cc
The spell checker cannot afford to return static objects,
seeing as the framework will then use the same objects to
pair the cookie and sequence ids to the request.
Bug: 5503243
Change-Id: Ia9c3a933bfb30cf5525418b240ef60632d72c9d0
This bug would kill the case where the whitelist contains
a word to be autocorrected to an uppercased version of
itself, and the user would enter the uppercase version.
In this case, this bug would cause the typed word to be
killed off the list of candidates, and possibly autocorrected
to the *next* candidate.
When the whitelist checks whether this the typed word is
a candidate for whitelisting, this change has it check whether
the whitelisting results in the typed word before returning.
Hence, it can keep the case-insensitive behavior of the
whitelist.
Coincidentally, this change renames the method used to do
this, because it does not comply with the general contract
of Dictionary. This happens to be in the way of another
upcoming change.
Bug: 5420371
Change-Id: Ifb305271acc5f171adf9b18c762ae7975b14be0a
When long press triggers caps lock, the keyboard also triggers haptic
feedback.
This change also fixes trivial harmless bug in KeyboardSwitcher.
Bug: 5424681
Change-Id: I62706b49abd7be1dcebc3c5166ea03f426fc8c86
This goes together with I6b8628b9acc32449e4147a2a754b222fbb76c754
or it will break the build
Bug: 5402436
Change-Id: I07c6266b713773a8de80bb22afdd4c566261f78a
This removes the calls, but another change will be needed to remove
the messages LatinIME used to send itself to update the suggestion
strip.
Bug: 5402537
Change-Id: I5d1aa63a892516f339f3ceac21f43771b5ffda34
This change updates suggestions when the cursor is moved.
It is now reasonable to remove the explicit test for
TextEntryState.isAcceptedDefault because it is now shielded
by mExpectingUpdateSelection : actually, this probably fixes
a long-standing bug.
Bug: 5337309
Change-Id: Iee4046420c6a88d1a07d428230f93c3ebef25c39
In effect, this stops the spell checker from suggesting overly
long words.
More precisely, it takes advantage of the new facility that
takes into account the whole length of the dictionary word when
computing scores, so words much longer than the input word will
see their score demoted accordingly.
Bug: 5384578
Change-Id: I326cd7c87c3080e7fa8729f78517f8ba13672a9b
IME is called back four methods for each input field as a IME life
cycle. The four methods are onStartInput, onStartInputView,
onFinishInputView and onFinishInput.
After orientation changed, Those quartet methods will be called back
twice. This behavior of the framework might be a bug.
In order to restore the previous keyboard layout, we should skip
onFinishInputView and onFinishInput of the first quartet and
onStartInput and onStartInputView of the second quartet.
Bug: 4311428
Change-Id: I450ddc0cce5d00abc971ffd42a507a8a86682548
It now follows the following logic:
- If the word should be filtered out => false
- Else => !IN_THE_DICTIONARY
This defines the behavior for ICS MR0, and prepares for addition
of a new HAS_LIKELY_SUGGESTIONS flag in MR1.
Bug: 5383800
Change-Id: I530b1404ae8cf3337ff68ef5ab0f4d95f2dad0e8
The gutter area between the suggestions strip and the top-row keys
looks like a part of the suggestions strip, and the touch events
landing on the area should be forwarded to the suggestions strip.
Bug: 5246673
Change-Id: I92af763be0feed21aa36ceffb5d575abe554f19e
CL https://android-git.corp.google.com/g/#/c/136474 refactored
the fullscreen test, but ithe IME_FLAG_NO_EXTRACT_UI test was
lost in the process.
Note that there is still a problem (orthogonal to that change
with key_preview_backing, which appears opaque and black sometimes.
I'll re-open 5315001.
Change-Id: If3a73179d21eaca10bdc948db7bac4b4f7a88d34
Because "TRHEE DOT LEADER" glyph of Roboto font is broken, we decide
to use "..." instead.
Bug: 5344295
Change-Id: I0fa5eefc00baf80747ff5215c018619a7e15a58e
This change also separates controlling visibility of "key preview
backing view" from suggestions strip visibility.
Bug: 5315001
Change-Id: I190a71f7956c804e5d89d2d5bacecc62d565ac2c
This is a follow up change of If6c0edef.
This is a cherry-pick of Idb415f53 from Master.
Bug: 5328922
Change-Id: I36d8bda9fb95e4809598296226c598a9f08bd8bb
This should not be used lightly, as it violates the general
contract of locale, and does kill some legitimate (albeit
alledgedly rare) use patterns.
Currently, the spell checker uses this because it uses a
negative logic: it should match broadly, and when in doubt,
match even more broadly, which is almost never the case of
something that uses the locale.
In other words: don't use this option unless you are
very, VERY sure that's what you want. Hint: it isn't
Bug: 5280929
Change-Id: Ib3cae319c692161d653630038c5bcde1f4340c05
There is no definite path known for this to end up being
touched by other classes, but we could imagine through
some way or some other it ends up shoved in the stringbuilder
pool, leading to catastrophic results.
Hopefully related to
Bug: 5248688
Change-Id: Ib8abfc31263cbf31d515ed607ced5d8253971938
If the spellchecker encounters a bug and happens to crash,
it may be sensible to avoid killing the keyboard in response.
This is a possible way to do it, which comes with the big
drawback of making bugs in the spell checker harder to find.
Change-Id: Idb26fb592b9718e1dbdadeda8fbd1a8a1d805c28
Note that this affects only the results of the spell checker if
actually passed such a word. For example, the spell checker will
not flag "http://oju" as a typo, because it looks like a URL.
But in the current implementation, TextView passes "http" and
"oju" separately, so "oju" is still flagged as a typo.
Bug: 5281875
Change-Id: I9d721fd3af34edc51b11908cf2e8fe994b164242
The locale is specified by KeyboardLocale extra key in method.xml,
LatinIME will use the specified locale for keyboard layout.
Bug: 5238658
Change-Id: I8e6cb66c73a7ac1bf611d9910b42fa9cff38eba0
Autotext correction would check whether the first suggestion
so far was the same as what Autotext would return, and if it
was indeed the same, would not send its result as
autocorrect. However, the first suggestion is not guaranteed
to have a high enough score to trigger autocorrection, and
there would be cases where a word in autotext would not get
autocorrected because the word came out of bigram
suggestions. These occurrences would be extremely rare, as
they would require concomitant insert between autotext for
one char and bigram suggestion. It is, in fact, probably
limited to the capitalization of "I".
This did not happen in gingerbread because gingerbread would
not register 1-letter words as valid bigrams.
This fix works by just always sending the result of autotext
regardless of whether it is already the first suggestion or
not. This is okay because duplicates are removed afterwards
anyway - and this processing is absolutely necessary because
the autotext'd word may actually be somewhere else in the
suggestion, so it made really no sense checking for only the
first one.
Please note that there is also a race condition that can
result in "i" not being converted to "I": at the moment,
Latin IME relies on having the suggestions evaluated
at the time autocorrection is performed, but when typing
very, very fast, those messages may have been canceled.
This is not limited to the autocorrection of "i", but
affects all autocorrections. It requires a nearly
inhumane typing speed to trigger, but hitting "i" and
space in turn as fast as one can it's possible to
reproduce occasionally.
Bug: 5135113
Change-Id: I530ea6212487300001a2c0fc5b25a5c7716bdf63
Checking the magic number of a file upon decoding is necessary,
because if the file is corrupt and we don't check it, we will
fall back to a simple copy of the corrupted file. Latin IME
would realize this and would not crash, but would not use the
corrupted dictionary. If this happened to be a main dictionary,
then the user would lose the ability to use the correct
built-in dictionary.
Not the same, but kinda similar to
Bug: 5223031
Change-Id: Ic2783dc9dd5f3dcf2865623d9452765fe3778db7
This fixes a race condition that would end up with the spell
checker not finding some words in the user dictionary when it
just booted.
Bug: 5194627
Change-Id: I1ba911cc53e6ae3b111d54a6f91d1d5feef3f5de
The message this removes gets printed under normal conditions.
Normally dictionary files are compressed then crypted, but not
compressed a second time; however LatinIME tries to open a
compressed-crypted-compressed file first, because it could not
do it afterwards and we want to support this case. So under
normal operations, the first method LatinIME tries is actually
expected to fail.
Also, if we decide to stop compressing or/and encrypting dicts
LatinIME supports it as a valid use case. It should not print
errors to the log.
If the file cannot be open at all, then it is an unexpected
case, and Latin IME still reports to the log.
Change-Id: Ic5228c51365a101af1d03e2c893484d3050b5a1c
This change also tweaks more_suggestions_hint drawables to eliminate
unnecessarily padding at the bottom.
Bug: 5204563
Change-Id: If5ec731c9a490da0116a020e8fd405c7d025d707
This change also introduces "AsciiCapable" extra value for subtype
that indicates the subtype can input any ASCII code point from its
keyboard layout.
Only if the input field has "forceAscii" private IME option and the
current subtype doesn't have "AsciiCapable" extra value, the en_US
keyboard layout will be used for the input field.
Bug: 3384942
Change-Id: I25e2553e37ecb5002df1164e45f6273845fe463b
LatinIME has several fallbacks to ensure a dictionary is used.
However, it should now be possible to deactivate the main dictionary
through the dictionary pack settings. In this case, Latin IME should
not fallback to the built-in dictionary.
Change-Id: Ibd992ad89793169f04a968b40781fce819b87b6f
This also adds some optional debug code to detect more easily possible
future occurrences of the same problem.
Bug: 5195017
Change-Id: I2558b468e46f7090de868f1ec2dc9e24895d670f
The new behavior is as follows:
- If the word in the dictionary is not fully lower case, then the
exact case is required to match.
- If the word in the dictionary is fully lower case, then any of
the following patterns match:
- fully lower case
- only the first char capitalized
- all caps
Any other capitalization is rejected.
This is probably what people want. If you type a name in all lower
case, it should be marked as a typo, but if you type a word with a
capital for emphasis or just because it's the start of the sentence,
it should match a lower case word in the dictionary. If you have
a spurious capital letter in the middle of a word because of a typo,
it should be marked as such.
Accents are not affected, and should not be. An accented letter
is a different letter and a missing accent should be reported.
We should maybe consider again for some common transpositions
like the "ue" digraph for German, which is now considered a typo,
but will suggest the correct diacritics as the first suggestion.
Bug: 5145751
Change-Id: I651e24f13c90fb94700a1674ad380e95336e7dca
by ignoring its preference value, when the "show settings key option" in
the settings is disabled.
Change-Id: I934be2d9eb0bf6bf731e03f5d9b752de4a7a1c7c
This change refactors the dictionary selection code so that the
cached dictionary files list and the settings tests are more
cleanly separated.
This will also help with future refactorings that will test for
the presence of the main dictionary and insert the fall back if
it's not supplied by the dictionary pack.
Bug: 5095140
Change-Id: I8d7caad7c054031df71fe78b043801a774d50f65
The next step is to move this over to the Utils class.
The ultimate goal is to make use of the duplicate removal code
also in the spell checker as per
Bug: 5175740
Change-Id: Ica36691b843b0713b832c56ffc65e5b2ec427c4a
Now that the dictionary pack can return several files, it's better
to handle IO exceptions for each file rather than globally. This
also will help with next implementation steps.
Bug: 5095140
Change-Id: I5ed135ad2ad4f55f61f9b3f92c48a35d5c24bdb2
The dictionaries and proximities are not thread-safe. In order to
be able to check spelling in parallel, make a dictionary pool to
call upon when a spelling check is necessary.
Bug: 5156851
Change-Id: Ie3796164187dd7b7abf5ccd5d014073d43d74408
Until the dictionary itself is re-entrant, unfortunately we have
to synchronize accesses to it.
Bug: 5156851
Change-Id: I1629a160d707e6fa1ad80cba828798abb24b68b1
Dictionaries are now copied over from the dictionary pack to Latin IME.
This change enables Latin IME to use all dictionaries that have been
cached until now.
Bug: 5095140
Change-Id: Id9a2bacf9dc1c693189b0ac8aa3f75756dc1e3e6
Using only a single thread may slow down the application, if there is already another thread running.
Bug: 5142142
Change-Id: I314480a58af20ea09458ff82e586304fc3c7c070
A recent change had the contacts reloaded every time a new field
is touched. This change not only fixes the problem, but also removes
reloading contacts when changing language, which should make language
switch within LatinIME lighter.
Bug: 5125034
Change-Id: Ia61c4f75a8617113cdce88a2e2c6fdf073146a2d
The dictionary filename used to be passed directly to Latin IME.
This change implements, on the part of Latin IME, the passing of
them as an id that should then be passed through
openAssetFileDescriptor.
Bug: 5095140
Change-Id: I7d1e9d57c19f0645045368f68681680f238189fc
This does not really fix the underlying bug, but it does fix
the apparent symptoms.
When the user presses space and a letter quick, the
onUpdateSelection handler may be called after the letter has been
actually committed. The keyboard then happily proceeds to clearing
the composition because it thinks space was pressed (or the user
moved the cursor, since it can't guess which happened).
This change removes this behavior when we are expecting an update
event from a keypress. This means the bug still exists if the user
presses space twice and a letter, and all events come after the
letter, but it is very very hard to reproduce this. There may be
other collateral damage when the user moves the cursor in the form
of race conditions, but likewise, they should be really hard to
reproduce.
Bug: 5100521
Change-Id: Ib05328c9b451bf6fe288ae00296fd283a9a4e863
The "deleteChar" argument of this method is acutally always true in the current code path.
Also, in this method, textToTheLeft virtually never has a punctuation letter as its initial
character. This change is one of preparatory changes for bug:4983945.
Change-Id: I531a32570a35634c21c1d74b2b461e40a1b7f660
This should help with LatinIME opening performance.
It should not be merged before Ia9e4741f (if it is, there is a
race condition where the wrong dictionary is opened).
Bug: 5023141
Change-Id: I39c52de70a449929a622dddfdd92b38425ad9416
This change removes everything related to the quick fixes
Latin IME option item.
Note that Autotext is still used if the current subtype language
is the same as the system language.
Bug: 4985058
Change-Id: I51728a2190543ffb9e004470674ef6257b14f6c2
This is necessary because we don't know any more whether the
locale of the process is the expected one when the dictionary
is loaded asynchronously.
Bug: 5023141
Change-Id: Ia9e4741f3b4a04a9f085f5b65ec122471b0c2dff
If all dictionaries returned by the dictionary pack are invalid,
then fallback to the dictionary included in the resources for this
locale.
Bug: 5052486
Change-Id: Id875194ca56a74b2ed6f5b0b4fdd55475f6842c8
None of these are expected to actually be null, but those are
included for peace of mind and foolproofing against future
code changes.
Bug: 4580040
Change-Id: Ib112b3e5db5f177aaf61767164b7e78d711f90a0
This allows the user to enter a period via double-space after quotes,
currency symbols, brackets and other non-sentence-finishing
punctuation marks.
Bug: 3430389
Change-Id: Ibe40b3902861207eb918e7be6113e8be12216f53
When the User dictionary service is off, LatinIME still allows to add
words to it and it crashed if the user tries to do so. This change
fixes the crash; it does not however fix the interface.
Bug: 5004408
Change-Id: I5bd2684ab3010963c1f737fc764e70e79aadbe8d
Before starting input on new TextView, we must clear the CandidateView
because it may hold the suggestion of previous TextView or even worse
the suggestions pane has been expanded and keyboard has been hidden.
Bug: 4995414
Change-Id: If848320c1a510e7018d36ed8ac61291be2fc6ce5
This change also rename static inner class to more readable name and
get rid of unnecessary object reference from PointerTracker.
Bug: 4768084
Change-Id: Ie4e2b940d66b47d41efcae7eeac853cdae2e4d38
To sort out the issue, main keyboard and mini keyboard have to share
the pointer trackers.
In order to prepare for that, KeyboardView needs to be refactored as
two separate classes. KeyboardView is responsible for drawing keyboard
visual. And LatinKeyboardBaseView is responsible for handling key
event and mini keyboard as well.
Bug: 4768084
Change-Id: I5643e333b9bdfde0c939a0693cea76bd22f38897
Up to version 10 (Gingerbread) of the API, FrameLayout doesn't handle
margin properly. This change inserts RelativeLayout to FrameLayout as
placer to set margin and place children views absolutely.
Change-Id: Iee785bc2da77677738caf456bcd2bbf57b89f007
To maintain backward compatibility back to Froyo, we can't call
3-argument constructor of LinearLayout.
Change-Id: I35310704f92812d2748d32f35820a5058fa2bf31
I left TODOs in Suggest.java because we must pay attention to locale
when changing character's case. Filed another Bug: 4769095 to track
that.
Bug: 4768050
Change-Id: I1ae2c4ffd2208403a8c2a25dd3a56b71dcefc826
The dictionary that extends ExpandableDictionary must be closed when
it becomes unused.
Bug: 4725930
Change-Id: Ib5d2c39771fb7010d303a26d1ea1c8e237c0101f
When using the sliding spacebar language switch on ICS, both
LatinIME.toggleLanguage() and
InputMethodService.onCurrentInputMethodSubtypeChanged() invoke
LatinIME.onRefreshKeyboard(). This change eliminates the first one if
it isn't necessary.
This change also cleans up the followings.
* reuse theme Context when the keyboard theme hasn't been changed.
* clear the Keyboard cache when theme has been switched.
* eliminates unnecessary Context reference from LatinKeyboard and
SlidingLocaleDrawable.
* recycle Bitmap and reuse Canvas in KeyboardView.
Bug: 4725930
Change-Id: I87366e9304879d94d12b7345adea768d86d43519
This change removes horizontal scroll from candidates strip. Instead
of that this change introduces "fixed 3 items candidates strip" and
"expandable candidates pane".
Bug: 4175031
Change-Id: Ia367d9074436fdea76d3b653d81798ce2749170e
This prepares the way for spell checking, which is to be done
without context so without proximity info.
Bug: 4176026
Change-Id: I1b4bfaefe2611e1b484acdf3c33598cb80f81ff4
This change fixes a bug that prevented to choose a prediction
several times in a row because the predictions would be replaced
right away by punctuations.
Please note several things about this change:
- Recorrection is pretty much in the middle of being refactored.
This change has no effect on recorrection itself, but may make
existing strange behavior more obvious when moving the cursor
for example.
- The part of this change in Recorrection.java is not used in
master at the moment because ongoing changes on recorrection
result in the control never landing there, but would have been
needed in the past and may be needed in the future.
- This change may have adverse effects on performance which need
to be evaluated. A comment in the code has also been written
to this effect.
- This does not fix bug 4466199, only addresses a pinpoint case
of it to help evaluating the bigram predictions feature.
Bug: 4466199
Change-Id: I7219e5aeb74dff9251d12b2a72f94448dbb3e63f
This change introduces new keyboard mode "webEmail" to honor
InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS. In this mode, both
'@' key and TAB key appear on the keyboard.
The keyboard layouts will be modified with other change.
Bug: 4490948
Change-Id: I66f9bda4907da448db097e9c900199dfa700b16a
When keyboard theme has been switched, input view will be replaced
with new theme one and current CandidateView will get stale. The
CandidateView must be reseted in setInputView.
Change-Id: I36fd14280572d2d367cfef549d7705b3b321ba3e
One of the two methods for getting a dictionary from the dictionary
pack had a bug and would not tolerate not getting an actual dictionary.
This change fixes that.
Change-Id: Id58bb27258494fb3aa60ec07a4eb27cfb5cc7279
Also add an option for popup dismissal delay so as to inaugurate the
new screen. Besides, remove a path for options to escape from
LatinIME and replace with a direct read from the settings.
Change-Id: I7ec6e724262871fa6523506ecc39f65c5fbe34da
Fix a bug where the "Touch again to save" message would not stay
on screen, following a wrong fix for a problem where Gingerbread-
would not display punctuation in the suggestion strip in
WebTextView.
Change-Id: I3556f83f867240ed7f16753450e6c975853208e5
Split symbols into:
- Symbols that should swap themselves with a magic space.
- Symbols that should remove the magic space.
- Symbols that should transform the magic space into a real space.
Also, have symbols inserted from the suggestion strip always consider
the space before them to be magic.
Also, do minor refactoring to remove useless variables or make clearer
how to carry some symbol-related information.
Bug: 4391347
Change-Id: Ie2308a62c8fef55e3610897c0f58943acb7aa8c9
Picking a suggestion inserts a space after the word. This change makes
this space a magic space.
Incidentally, do some minor cleanup: add CODE_DASH, CODE_SINGLE_QUOTE
and CODE_DOUBLE_QUOTE to Keyboard and use them throughout the code,
and remove a useless import directive in some unrelated file.
Bug: 4319740
Change-Id: I245f396c34dd0af820bca91edc4ec363238a4ae4
This change enables the interface to get multiple dictionaries from a
dictionary pack. It only implements it to the end in the case of the
proprietary method, as the open method needs still some working out,
and the "inside the package" method does not need it.
This change goes together with Iaa95bf36, and breaks the build
without it.
Bug: 1752028
Change-Id: I3ccfd696e8ef083ef9c074e1c3e4bb0bf2fcfd23
The change list that introduced this code was created at the same
time as the one that introduced the Utils.setSystemLocale method
and didn't use it yet. Fix this.
Change-Id: Ifdd2ad9f7dbb7f300bc255bc2e035ae893a9d410
The dictionary collection is a class complying to the Dictionary
interface that acts as a front end to a collection of arbitrarily many
dictionaries of any type.
The dictionary factory is a helper class for creating various
dictionaries and get some meta information about them.
At the same time, this change makes the BinaryDictionary class
not a singleton any more.
This also needs I9afe61a9 to not break the build.
Change-Id: I61fdcc4867fcda18342807bf1865e6e46979e5d5
Add a setLocale method to Utils that returns the previous locale.
Also unify all calls through the code.
Change-Id: Ic850dc5df19fba00ed3601835652859b4321b544
This change is only there to fix warning issued by Eclipse.
It should have absolutely no impact on the program logic.
Change-Id: Ie0e242ac6c167297d33de19902340b0f6ecae9e1
This change also rename methods that should have been renamed in a
previous commit (namely, the
*SetBigramSuggestions family -> *UpdateBigramSuggestions)
Change-Id: I18cac17ba2b93fcc011ea133324f2c7f3532946c
This change adds the option for bigram prediction under the option
for bigram suggestion. The "prediction" option depends on the
"suggestion" option.
This change also reorders a tad bit the settings screen. Namely, it
sticks both bigram options under a "bigram" category, and groups the
options that did not have a group under a "other options", or misc,
category.
Finally this change also renames the internal name of the "text
corrections" option category to "correction_category" instead of
"prediction_category" which was misleading.
Change-Id: I2d8787c8a391fd8202ed3a686c613494b7260a1e
This also fixes a small inconsistency upon clicking on whitespace
twice in a row.
Also add some unit tests for an introduced and an existing method.
Change-Id: I1be2fb53c9624f4d0f5299009632cb4384fdfc15
Some flag settings used to be stored in a keyboard layout extravalue setting. This
change:
- Introduces the capability of setting such specific flags in values/config.xml
- Retains the ability to use extravalues (for layout-specific settings), though
there is no more any such setting at the moment.
- Fixes a bug where loading a dictionary from outside does not initialize the flags.
- Moves Flag to another class.
Note: this needs I705ec68c to avoid breaking the build
Change-Id: Ia7703aae3215b06c0b3cb792821649806e8998c1
This update is necessary to allow dictionary content providers to use
assets, which are part of their apk, as data to pass to the keyboard.
Using plain file descriptors doesn't allow for sections of files to
be correctly used.
Change-Id: Ia94c26d6387bce61c73d38f5c2821f20e50e54d4
Previously the key preview was implemented by PopupWindow. The key
preview popup window would be dismissed and shown each time the key
was released and pressed. It turned out that it was taking several
milliseconds.
This change implements the key preview by a simple TextView which will
be layout-ed at absolute coordinates within the screen FrameLayout.
And dismissing and showing the key preview is implemented by the
TextView's visibility.
This implementation needs careful coordination of candidates.xml
layout and LatinIME.onComputeInsets to control suggestion strip
visibility.
Bug: 4179964
Change-Id: Id6347cb35b91eb14ab20dd2f312e58b54b6625a7
- Have user-history based bigrams used as soon as they are entered,
not after 6 times.
- Limit bigram frequency to 255 (this limits the multiplier to 1.8, and
has no effect on main dict bigrams which already have this limit)
- Some TODO resolving
bug: 4192129
Change-Id: I4777f1a58c43dd55381c4b01252d722ab3a70547
- VoiceConnector to VoiceProxy
- VoiceInputConnector to VoiceInputWrapper
- VoiceLoggerConnector to VoiceLoggerWrapper
Change-Id: I908ddc590c8846cf5cbd80b9c0257cb65c638bde
This change adds basic support for an external dictionary provider.
It adds methods for reading the dictionary itself from an asset in
the dictionary provider package directly, obtaining the file name
through the ContentProvider interface; it also adds a way of getting
the data through an InputStream and copying the file locally.
Incidentally this change also adds the code needed to listen for
updating the dictionary provider package and reloading it in time.
This change also goes hand-in-hand with Iab31db6e, which implements
the small closed part of this.
Issue: 3414944
Change-Id: I5e4fff99a59bb99dbdb002102db6c90e6cb41c8a
This changes:
* Flag initialization code in BinaryDictionary to be more unit test friendly.
* Removing unnecessary class hierarchy of LatinIME inner class WordAlternatives.
* Formatting normalized score neatly.
Change-Id: I9f10c093d4f36258fe883cf3fb10cbbda2770497
This change also corrects usage of "frequency", "priority" and "score"
* Frequency is the relative probability in dictionary.
* Score is the relative probability in suggestions.
* Priority is kind a sorted score.
Change-Id: Iafb135a4ecdb401cc505014a07c74dfcac44d699
It used to be the case that the scoring system turns up the same word
that was entered with a different capitalization, but with a lower
score than some other, more frequent word. To cope with this, there
was code that would order such candidates in the first slot no matter
what. This processing is now useless because fully matching words now
have a huge boost that ensures they will get to the top of the list,
before any non-fully matching word (which means, differing only by
capitalization or accents).
The bug that did happen with this was, if a fully-matching word got
matched by several processing passes, and the (chronologically) later
score affected to this word was weaker, it would result in the
duplicate removal pass removing the stronger score. This in turn would
mess with autocorrect.
In an effort to keep the risk at a minimum for MR1, this change does
not actually remove the useless code, but adds a check in the odd case
to avoid the bad situation. Another change will remove the code for
ICS release.
bug: 4100269
Change-Id: I18c0575332981ffec0e257e26a360995838d521e
Words that matched user input with skipped characters used to be demoted
in BinaryDictionary by a constant factor and not at all in those dictionaries
implemented in java code. To represent the fact that the impact of a skipped
character gets larger as the word is shorter, this change will implement a
demotion that gets larger as the typed word is shorter. The demotion rate
is (n - 2) / (n - 1) where n is the length of the typed word for n >= 2.
It implements it for both BinaryDictionary and java dictionaries.
Bug: 3340731
Change-Id: I3a18be80a9708981d56a950dc25fe08f018b5b89
For German : handle "ae", "oe" and "ue" to be alternate forms for
umlaut-bearing versions of "a", "o" and "u".
Issue: 3275926
Change-Id: I056c707cdacc464ceab63be56c016c7f8439196c
This change removes the boolean flag mJustReverted. Because we
preserve separator after canceling auto-correction according to
bug#3230708, there is no need for this flag now.
Bug: 3193810
Change-Id: Icea06ece569774b494ffa4ca4a899c898661cc19
At the moment, if there is no binary dictionary, even when pressing the
word in the suggestion strip the option to save in the user dictionary
is not displayed. This change addresses that.
Bug: 3363756
Change-Id: I4993a7f81ed15ab948a3098cdc49663e0f109e4a
This change deprecates "nm" private IME options and introduces new
private option, <package name>.noMicrophone, instead.
Change-Id: I9d5e3daaead2cdd42e017cd29f5f786ef3ba3649
When entering a word without accents the user expects the system to
add accents automatically if there is no other matching word. This
patch ensures the accented version is promoted accordingly and
autocorrection really takes place.
Issue: 3400015
Change-Id: I8cd3db5bf131ec6844b26abecc1ecbd1d6269df4
This change also introduces number password (a.k.a. PIN) layout. The
text password layout will follow.
Bug: 3384942
Change-Id: I50b5e413e47a28d5285fd0468115e11ce46c7f18
It appears it is not useful to listen to this change, because in any
case, settings will be reloaded when the view is shown again or when
IME is changed.
Change-Id: I08dddccc630b01718da7fab011ce14f189dd31c3
Also change the name of the default value for re-correction for
consistency with other constant names.
Bug: 3426884
Change-Id: I615ba640fb17e6d7514b8a0e4f52028eb0e23908
Move and rename KeyboardView.computeProximityThreshold to
KeyDetector.getMostCommonKeyWidth. And make it public for unit test
use.
This is a part of multi-project change (If751659a, Idb18f362)
Bug: 3414081
Change-Id: If751659a53c7412f836d6d28866760ffe84b179b
Change the default value when retrieving the PREF_SOUND_ON property
from the Settings from false to true.
Change-Id: I871cfaaf1f33b5e0301c84ee9c94f1c429901021
Killing the process allows for some settings that are read only on
service start up to be correctly read again.
Change-Id: Ia48f2ca4760a530ac47b727f290d606715cb6bde
If the configuration says the device should not display the "Pop up
on key press" setting, then do not read the preference and always
use the default setting.
bug: 3406181
Change-Id: Ice2989760cda1d40387ed88311144cbf2c114b93
Bug: 3374359
Bug: 3278422
"zbe" will be auto corrected to "be" by fixing s-line
"teh" will be auto corrected to "the" by promotion of full matched words
Change-Id: I314c632820e4e0b1501edeca60ada205d291451f
This reverts commit de59a84029 (Ie8d4469b).
The requested feature has been implemented by I92d98bed.
Bug: 3238092
Change-Id: I9d53030b3d5c9a0f24883292a93576a3231813aa
This change aslo eliminates duplicate suggestion from past
suggestions. And call setTypedWordVaild to past suggestions.
Bug: 3367722
Change-Id: I7ffaa2f7e4e30b3951b6c2df002d269671c9d654
Conditionally remove the "Quick fixes", "Bigram suggestions" and
"Usability study mode" options, depending on configuration.
When disabled, have the quick fixes and bigram option become
false if autocorrect is off, and true otherwise.
Also reorder options to bring "Auto correction" above "Show
suggestions".
bug: 3282448
Change-Id: Ib7fd928be417a816ef9e21423a531773069b7468
Add a "General" category to enclose general settings, and rename
"Word suggestion settings" to "Text correction".
bug: 3282448
Change-Id: Ie695683af0646974da82e29e11d1c3a785ef46c7
There has been a bit of refactoring in RecognitionView in particular to fix the portrait layout.
The main issues found were:
- the size of the keyboard is specified in inches, and
(cm)(inches + inches) != ((cm) inches) + ((cm) inches))
- the height of keyboard background is high as the landscape keyboard, but it higher than
the portrait keyboard. This is not an issue on LatinKeyboard, as it overwrite the
onMeasure method. However, if I use the same image background in RelativeLayout
the Relative layout height is set to the height of the background, thus higher than the keyboard
- the change configuration was not propageted correctly
Change-Id: Id5dca425826997c573ccae7a085d5ddc9719733b
Do not show the recorrection option on xlarge terminals,
and make it true by default. Also, bring the Auto-capitalization
at the top of the settings page.
Issue: 3282448
Change-Id: I51a9ae6c7e496be2970107277f0a4ac65b12821e
Add an option to mask the sound on keypress preference, and
make it false on xlarge terminals by default.
bug: 3282448
Change-Id: I747272d9edf854dc229aa620836cfa35a437d13f
This change also draws the language name in light gray on spacebar
without fading out even when the keyboard locale has not been changed.
Bug: 3362369
Bug: 3361915
Change-Id: I66538b03ce2e48c3441091319d0377176f8118ec
This change reverts removing SubtypeSwitcher.onConfigurationChanged by careless in I432be8f7.
Bug: 3290290
Change-Id: I796ea01877d61eb750dabdeb3fdbf87666646c56
This change also introduces the following.
* space bar language switcher is enabled for phone device.
* get rid of spcae key icon from number keyboard of tablet.
* slightly lower the position of language name on space bar of tablet.
Bug: 3290290
Change-Id: I432be8f757bcc84c257770112ff1f6fa7970c584
ApplicationInfo.sourceDir may or may not be apk file name. It can be a directory as well.
The spec just says it's "Full path to the location of this package".
Also, added error handling in loadDictionary().
Change-Id: I5e64d0aba4b1ec7634f4b3ac5537e7a774433ece
This change is a preparation for upcoming optimizations on dictionary file loading.
* We can consolidate dictionary files because we are no longer relying on Asset Manager.
* Stopping compressing dictionary files as planning to use mmap() on the region in the apk file.
* Probably we won't rely on Asset Manager. Instead we'll probably use offset and size obtained from AssetFileDescriptor.
Change-Id: Id57dce512fd3d2397a58628f8264bd824194da76
This change also fixes auto snap back behavior of key which has output
text, such as smiley key.
Bug: 3297825
Change-Id: Ia06e1abc0fbdff2a26504ddcce1dc7f933b45453
This change
- introduces the popupKeyboardTemplate attribute of Keyboard to
specify XML Keyboard file for popup mini keyboard.
- introduces the maxPopupKeyboardColumn attribute of Keyboard to
specify the maximum column of popup mini keyboard.
- changes the content format of the popupCharacters attribute of Key.
It now represents keyLabel, codes and keyTextOutput of each key of
popup mini keyboard using CSV format.
Bug: 2214959
Change-Id: I539e310f7e38a049ee193de0b4ad5d7afdce37b1
This change re-implements CandidateView using HorizontalScrollView and
customized Button, so that the candidate strip can be flingable.
This change also introduces the following features.
- Highlighting candidate strip and space bar is configurable by
@bool/config_candidate_highlight_enabled.
- Candidate strip can be centered with left/right padding if
@dimen/candidate_strip_padding size is greater than 0.
- Candidate text size is configurable by @dimen/candidate_text_size.
Bug: 1575885
Bug: 3230726
Change-Id: Iedf78ff31bc9f2f6291a8e8fb7faa0e6b961dd6d
This change,
- changes voice key code back to -102
- renames some key code names and method names
- adds mic_slash_holo to drawable-hdpi
Change-Id: I8be3a20921f472ece4298edad2d275f29a7e4955
This change also moves KeyboardSwitcher and related classes to
com.android.inputmethod.keyboard package.
Multi project change with Ib23017b2
Change-Id: Id7d54b24615fe22ebb540ca847549909e346ee24
This change introduces new package com.android.inputmethod.keyboard
which hosts keyboard related classes.
Also adds missing @Override and @SuppressWarning("unused") annotation
Change-Id: I0317f5cfa317e13f3c77815f48ffc69b5d1ade05
This change introduces,
- center align "More" key label
- remove drop shadow from key label
- darker key label color when manual temporary upper case
- narrower pop up mini keyboard
- remove unnecessary key background from pop up mini keyboard
- smaller key label in portrait
Bug: 3216592
Change-Id: I77e0733f467a88aa32e09fcbace56fe08f755229
This change introduces shiftedIcon attribute for Key which specifies
icon to draw the shift key while the key is in shifted state.
This change also intriduces new configurable dimension value
key_label_horizontal_alignment_padding which represents horizontal
padding for left or right alignment of key label.
Bug: 3216592
Bug: 3201839
Change-Id: I3aa7392227ce573c404517678e6340a8d1fcb328
This change also uses slightly larger font size for functional key
label according to the v4 keyboard design.
Bug: 3216592
Change-Id: I027f109b7748ade8564dc808487d9a6ce1da9761
This change is a followup of I948ef26f
Automatic Temporary Upper Case mode acts like Normal mode until shift
key is pressed. However, after shift key is pressed, it acts like
Manual Temporary Upper Case mode.
Bug: 3193390
Change-Id: Id3d7a38a1f5905322cd46ded36b1db26576d49af
With this change,
- Shift and Shift lock state of keyboard is maintained by
LatinKeyboard.ShiftState.
- Shift key state is maintained by ShiftKeyState object in
KeyboardSwitcher.
- LatinIME informs KeyboardSwitcher that shift key press, release and
long press and KeyboardSwitcher determines which state LatinKeyboard
and ShiftLeyState should be.
Bug: 3193390
Change-Id: I948ef26fda512eb1cb0ebddc89d322c4f4f4d670
This change partially implements the requested feature. The following
are not supported yet.
- Non-letter key handling on automatic temporary upper case layout.
- Non-letter key handling on shift chording in caps lock layout.
- Hint icons for manual temporary upper case layout are not final ones.
Bug: 3193390
Change-Id: I636da99d1be05b1337935d87c6f4d140661e1cc8
This change also eliminates KeyboardSwitcher.refreshKeyboardCache,
LatinIME.reloadKeyboards() and LanguageSwicther.getLocales().
Change-Id: I5fd4914660ea1c955ddfa0ca62b920f9bcd53e1b
This change defers determining which keyboard should be loaded and
holds the information in KeyboardId object as much as possible. At
keyboard loading time, the determination deferred will be made
depending on the information of KeyboardId.
Change-Id: Ice2455d9e5b21671a250c342c06c043e4baa5355
Because there may be very long key, such as space bar on tablet, we
should not use the distance between the touch point and the center of
key as proximity detection. Instead of that, this change uses the
distance between the point and the nearest edge of key as proximity
detection.
Also this change fixes the bug that space key (code 32) was not
counted in proximity detection.
Bug: 3164020
Bug: 3168138
Change-Id: I687f1ce94a8e944c3f6eea0fe00e18ed6e68e278
This change also fixes that the popup preview of ALT on symbol
keyboard is not showing.
Bug: 3122877
Bug: 3127255
Change-Id: I978cb30a0d05298274d8ab6541b91323a0fef211
Gesture detector, for closing keyboard by swiping down, must be
disabled not only when mini-keyboard is on the screen, but also in the
mini-keyboard itself.
Bug: 3105595
Change-Id: I548501f7117ca2310943cabb678c1e250e5012ce
Cherrypick I44f3b2eef8086d6e0b0db53d38f08487549060c6 from Gingerbread
This change also introduces the key background drawables which has no
fixed bottom padding. Instead of relying on bottom padding in
drawable, this change also specifies Keyboard.verticalGap with
physical unit. Other keyboard related length, distance and size are
also specified by physical unit.
Bug: 3066107
Change-Id: Ib38355ebfc2f8d5b1d26c4e90eba87196fbeddfa
LatinKeyboardBaseView should have removed "long pressed" pointer tracker from the multi-touch pointer queue.
bug: 3099130
Change-Id: I3d358a373b0de07558a204e9ff5a95e9ece38bcc
This is follow up change of I8b38e2803eb32469653484701882af35108eb69a
This change fixes the following when "Voice input on symbols keyboard"
option is selected.
- LatinIME.onCreateInputView fails to show "123mic" icon.
- Email and URL variation keyboard fails to show "123mic" icon.
Bug: 3084022
Change-Id: Ia3929bb0cc5c5c8651af816718c21d1f20e8f016
This change also introduces the key background drawables which has no
fixed bottom padding. Instead of relying on bottom padding in
drawable, this change also specifies Keyboard.verticalGap with
physical unit. Other keyboard related length, distance and size are
also specified by physical unit.
Bug: 3066107
Change-Id: I44f3b2eef8086d6e0b0db53d38f08487549060c6
Merge commit '938c0a3722a9c597931e6f75408dc7ab636d7052'
* commit '938c0a3722a9c597931e6f75408dc7ab636d7052':
Fix - "Touch again to save" not working for manually picked suggestion when re-correction is enabled.
master was still using the deleted constants in different places and
Java 6 didn't like the imports.
Change-Id: If9472a2acb029e56790dc4d19ab62e608c970175
We'll merge this to master for now, but we should have new attr (such as popupCharWidth) to handle this reasonably in the newly created BaseKeyboard class.
bug: 3082178
Change-Id: I024b946aafbbeb07b865a09f489dacb56f0478d0
Merge commit '644445868f1023b3263a149f2faf617b88341d20'
* commit '644445868f1023b3263a149f2faf617b88341d20':
Addressed bug: 3058217 "-" key not working at beginning of line
To avoid a corner case of bug#3070963, in toggleShift() method of
KeyboardSwitcher, the shifted symbol keyboard will be set if current
keyboard is symbol keyboard or is not shifted symbol keyboard.
This change also implements mini keyboard cache with WeakHashMap.
Bug: 3070963
Change-Id: I868fc072e2f21bddded1622b800a53b9a6a43e91
Before this change, the delay was 500 ms that came from
ViewConfiguration.getLongPressTimeout(). This change reduces the
delay to 400 ms.
Bug: 3074984
Change-Id: Ia5af5e877a3c4bb29211ef4040c728ac09a9fe85
Keyboard XML file can include other keyboard XML file using directive
<include keyboardLayout="@xml/...">. The keyboard XML file which is
included must have <merge> tag as root element.
Change-Id: I06c35fe7b3db5232acdb33f73a79f38d31261b32
Also fixed related issues below:
* Punc suggestions list was sometimes not displayed after cursor move which follows re-correction
* Punc suggestions list was disappearing with words which contains certain punc chars (but not word separator) such as ' and -
Change-Id: I36faf679321782fa8eaf318411308a4a6b89cc25
Merge commit 'c0fc4bf9932caf536af5d5d86bb61ec6d8a44a99'
* commit 'c0fc4bf9932caf536af5d5d86bb61ec6d8a44a99':
Long press mic/comma key bring mini keyboard with settings
Merge commit '8e6a92703d1bdf530d32c8cdf90deefc6bc3a878'
* commit '8e6a92703d1bdf530d32c8cdf90deefc6bc3a878':
Dismiss orange highlight after suggestion has been selected
Merge commit '105f7c36b7fa1845b9edbf47ca55b4a6660303b6'
* commit '105f7c36b7fa1845b9edbf47ca55b4a6660303b6':
Long pressing mic/comma key will show settings menue
Merge commit '93176d869a496051344d80ef03573bc6bb99035a'
* commit '93176d869a496051344d80ef03573bc6bb99035a':
Display feedback popup for saving word while the word is pressing.
Merge commit '4d158dc2779ffff8c92a41f32e6885bd0f155fc3'
* commit '4d158dc2779ffff8c92a41f32e6885bd0f155fc3':
Check recorrection on focusing into a text field that has text already.
This change also fixes tha the touch slop value is applyed only for
initial movement of scrolling suggestion bar.
Bug: 3004920
Change-Id: I62afdedc210156e41e8c84c48cade442f9d5a1aa
Merge commit 'fcd5f2b9b4229c00a6589aad1fda9b727759d343'
* commit 'fcd5f2b9b4229c00a6589aad1fda9b727759d343':
Mini keyboard works even while shift is being pressed
Merge commit '0ea7e504887702bace7b2e765704d08e737ab1b5'
* commit '0ea7e504887702bace7b2e765704d08e737ab1b5':
Fixed key code and key coordinates when move debounce has been in action
This change refactors a key index and pointer position variables into
a separate static inner class KeyState . This change also disables
time debouncing.
Bug: 3033737
Change-Id: Ie4fc37316c260330d8f0861e0771ea903a99cfce
Merge commit '7f2a6a056b67efa2a1fb623ca4cf73f7fb6c7d8c'
* commit '7f2a6a056b67efa2a1fb623ca4cf73f7fb6c7d8c':
Capitalize the displayed text in the suggestion bar when all of the user typed chars are upper case
This keyboard layout is tentative for UX study.
This change added xlarge keyboard layouts only for "regular text",
"symbol/number mode" and "symbol/number mode shifted".
TODO other text mode variants should have dedicated layout.
Change-Id: I36077efcec4b57c3b5cada0a851e1409a289eeb9
Merge commit 'ca2fba71086b3832998ee9039723b66cce3be300'
* commit 'ca2fba71086b3832998ee9039723b66cce3be300':
Keep addWordToDictionary from doing disk I/O on main thread
Merge commit 'bf03559f7e38cd51cb5fd6b0afa937982cbffc67'
* commit 'bf03559f7e38cd51cb5fd6b0afa937982cbffc67':
Add enter/exit animation style to prevew and mini keyboard
TODO This animation style API of PopupWindow can be called only in
Gingrebread or later. We should refactor this using reflection to be
able to be compatible with Froyo.
Bug: 3004787
Bug: 2973989
Change-Id: I2abfcc853b1a0af2bccee7bdf5fbd723456b7d34
Merge commit '27bddbe67f00953dc82a8543fe610c9010f7077c'
* commit '27bddbe67f00953dc82a8543fe610c9010f7077c':
Move RingCharBuffer as a singleton in Util
Merge commit 'ec8b7360161f37d00d178bef37c30352982cd007'
* commit 'ec8b7360161f37d00d178bef37c30352982cd007':
Tune left and right padding of popup mini keyboard
Merge commit '1241be7e8498b8cca348d74363ece68b3ade730c'
* commit '1241be7e8498b8cca348d74363ece68b3ade730c':
Use SystemClock.uptimeMillis() for event time
Merge commit '8957296f066b1f624dc4fae71d3eeb5a0fec1b4f'
* commit '8957296f066b1f624dc4fae71d3eeb5a0fec1b4f':
Choose smaller or shorter language name for space bar
To fit a language name to the space bar or the language switcher, this
change chooses smaller text size or shorter language name
appropriately.
This change also tunes the vertical position of a language name in the
space bar by parameter SPACEBAR_LANGUAGE_BASELINE.
Bug: 3004640
Bug: 3001021
Change-Id: Idb3adcb6fac1a23836510912d35312fa11b4f259
Merge commit '7c120ce4872398ea4f61a67aba1d069e45f1c012'
* commit '7c120ce4872398ea4f61a67aba1d069e45f1c012':
Fix issue space key preview remains on screen and would not dismiss
The space key preview should be displayed one of the following case.
- Popup preview is enabled
- Language switcher is in action, whether popup preview is enabled or
not.
For phone number keyboard, popup preview is never displayed even if
popup preview is enabled.
Bug: 3006612
Bug: 3021091
Change-Id: I5385c776d0e8e3981fc8d8851db9140d92599ce5
This change adds lightweight visual hints of alternate numeric characters on the top row - e.g. having a light gray '1' on the upper right corner of letter 'q'
Note that MDPI resources are tentative (the same as HDPI for now, until we get fixed MDPI visual assets).
bug: 3004632
Change-Id: I7a25cf90b702433a844c88f5c47bf914706af9bc
Merge commit 'c01d978f56f90425f070d57a66968aa77ef69a7d'
* commit 'c01d978f56f90425f070d57a66968aa77ef69a7d':
Draw language label on space key of symbol+alt mode
Merge commit '9c822ec48de0e6839a861212d8b7143f70b29fd1'
* commit '9c822ec48de0e6839a861212d8b7143f70b29fd1':
Fix mini keyboard display position when preview is disabled
The residual time was formerly 150ms by
Ia63662a549481d18046a46ef8292c0a4438b5588, and originally was 70ms.
Bug: 3004787
Change-Id: If60a74c51e9a68f008711cca2423094e8204755f
Merge commit '300362f20982974d07876dee01b4550b8e54d449'
* commit '300362f20982974d07876dee01b4550b8e54d449':
Use the phone keyboard for NUMBER and DATETIME until we get a dedicated number entry keypad.
Merge commit '8ef27577da17f4203db00d5df96c3d2ed32ac713'
* commit '8ef27577da17f4203db00d5df96c3d2ed32ac713':
Default puctuation suggestions have same color
Merge commit '13a6c8c1f8691b753cd1a6b7a77d99af4f7d78ac'
* commit '13a6c8c1f8691b753cd1a6b7a77d99af4f7d78ac':
Add a new preference item to show/hide the settings key.
Merge commit 'b9705959df5d7de38df5dea53270bf702b87716d'
* commit 'b9705959df5d7de38df5dea53270bf702b87716d':
All keys should be processed before processing modifier key
Merge commit '4b813f56bbe11210835a31de7fd73bfe5a566ead'
* commit '4b813f56bbe11210835a31de7fd73bfe5a566ead':
Fix bug that upper case mini-keyboard does not work
Bug: 2996887
Override the methods in InputMethodService that hide the candidates view, since
it was just an optimization to show more lines of text when editing, which
conflicts with the re-correct feature.
Change-Id: Ibfed5ccd9efa048d0b69297a5cf8a638a0d00c72
This change also introduces MiniKeyboardKeyDetector and
mini_keyboad_slide_allowance parameter to tune the key detection
behavior.
Bug: 2993769
Change-Id: I1932b0a382e172cb77b9e098ae182049c834dfe0
The newly added SharedPreferencesCompat adapter class does apply() when available (Gingerbread+), else do commit().
This change incorporates I4eca20fb and I39f6aa04.
bug: 2983837
Change-Id: Iec4e8b69840ad71dbbd6098eeba349934d8248ff
Merge commit '65dab9078dd0c77adcc49d08c46039dad2a950f6'
* commit '65dab9078dd0c77adcc49d08c46039dad2a950f6':
Fix a bug in y-axis offset for sliding finger key detection for mini popup keyboard.
Also, tentatively added key detection allowance for below of the keys in mini popup keyboard.
bug: 2979407
Change-Id: I84794969facd929c84df23e0120d46dff71c6efb
Merge commit 'd73d267f34efb131467d9103bb9a56c18f9623b7'
* commit 'd73d267f34efb131467d9103bb9a56c18f9623b7':
Mini popup keyboard adjustment: Have the leftmost number right above the key.
Also fixed an issue when the mini popup keyboard hits the right edge of the view.
A few code cleanups as well.
bug: 2980864
Change-Id: I95f8392521e57560907d54b662e3483ebaf6f7ce
On a device that has distinct multi-touch panel, pressing '123?' key
will change keyboard layout to symbol mode. While pressing '123?'
key, you can press other symbol key to input. Then releasing '123?'
key will change keyboard layout back to alphabet mode.
Bug: 2973383
Change-Id: I3b069fb19141820def8060db4766a08c7c0a6ff0
Merge commit 'dacc927a57b0c7adfbdf244441b9b2495c959980'
* commit 'dacc927a57b0c7adfbdf244441b9b2495c959980':
Update strings for the settings access - based on the latest GB IME spec (ver 03).
Merge commit 'e5abf25d4b57ecdfc01ca3ddf94753d5bcb07fea'
* commit 'e5abf25d4b57ecdfc01ca3ddf94753d5bcb07fea':
Dismiss mini keyboard when finger is released outside mini keyboard
Merge commit 'bc1a0354ef1cac0319cab63822c66203f1fa2c24'
* commit 'bc1a0354ef1cac0319cab63822c66203f1fa2c24':
Fixed extra periods when chording with shift and space
Actually it was caused by canceling repeat key (space and delete) when
multiple pointer are touching.
Bug: 2975041
Change-Id: If82183b9225efdace7b5418860b9664f1705b7ec
This change also disable the special behavior of long press a key that
has only one digit alternate. If the visual design of both the pop-up
preview and the mini keyboard will look like same, I think that
showing mini keyboard is enough for the key that has one digit
alternate.
Bug: 2973546
Change-Id: I04f138c120aa58526fe054626dac856171fb7a58
Merge commit 'd5bcbf8156fdba8199452b8f95ed1940b7e96d31'
* commit 'd5bcbf8156fdba8199452b8f95ed1940b7e96d31':
Support multi-touch only when device has distinct multi-touch panel
Merge commit '232b039496ef95c543bac5128e6378b38760de21'
* commit '232b039496ef95c543bac5128e6378b38760de21':
One alternate is treated as key action, not open mini keyboard
Merge commit 'c93ac9db7129f935425f79d5a460e7b926cb4a22'
* commit 'c93ac9db7129f935425f79d5a460e7b926cb4a22':
Move inflating mini keyboard code into separate method
Merge commit '6654653562d0ec5d46a74f8c49eab2488e273cf2'
* commit '6654653562d0ec5d46a74f8c49eab2488e273cf2':
Change symbol on space bar when autocompletion is activated
This change also refactors some mini-keyboard related methods in
LatinKeyboardBaseView and PointerTracker class.
Bug: 2973236
Change-Id: I3190fe89ea3ac3c6d351ed4b6d77de98a0aa65db
TODO:
- Remove close button on mini-keyboard
- Dismiss mini-keyboard when finger leave the screen while no key is selected
This change also renames some instance variables to have more meaningful name.
Bug: 2959169
Change-Id: I9fd79116a647d7be82415c6e9e7cdaf6edcb2bf6
Merge commit 'a4397ce38af2e1ac3a8284bc078bd1e9cb4fecf4'
* commit 'a4397ce38af2e1ac3a8284bc078bd1e9cb4fecf4':
Add PointerTracker argument to long press related methods
Merge commit 'd0457eae17d10535023a02579d16ede7bfcc6bec'
* commit 'd0457eae17d10535023a02579d16ede7bfcc6bec':
Queuing PointerTracker to support n-key roll-over and shift modifier.
Merge commit 'c5363012b846733e9a3b7ce7de5b04e58644bedc'
* commit 'c5363012b846733e9a3b7ce7de5b04e58644bedc':
Change the preference name for a theme and remove a preference settings
Merge commit '308acfa714a3a0aae073871e76e753b5a98096d1'
* commit '308acfa714a3a0aae073871e76e753b5a98096d1':
Change background color for functional keys in LatinIME
Merge commit 'c354167c84b06b572067efaddfbd3667ffdadb98'
* commit 'c354167c84b06b572067efaddfbd3667ffdadb98':
Correction improvements - use the new InputConnection APIs for underlining and
fetching the selected text.
Bug: 2950652
Some refinements to correction behavior, such as retaining the tap-to-save
when in correction mode.
Use reflection to access the new InputConnection APIs with fallbacks, in case
we run on older OS versions.
Some refactoring to separate lookup for voice alternatives and typed alternatives.
Change-Id: I7c4178bf7e6b47ee274c49fa7a694f8c2d50cea7
Merge commit '2c7583f6c3c24202492b9404955b1aee2dc5ce94'
* commit '2c7583f6c3c24202492b9404955b1aee2dc5ce94':
Add new public attribute mPointerId to PointerTracker
The KeyDetector abstracts key detection algorithm. The
ProximityKeyDetector is one of its concrete implementations. Another
one that might be called XAxisKeyDetector will follow to realize the
pop-up mini-keyboard behavior described in bug#2959169.
Bug: 2959169
Change-Id: Idd3fc53282e6b721ec7a4ce500af8aba21ce07a3
- Add a layout for popup for new theme
- Change the color of language bar
- Fix a drawable for settings feedback
Change-Id: I7c0c9e238c8223554a62f7b0c8092d074cf9743f
Merge commit 'ad60fe2e80878e1b1caa2c9207d8f601e203560f'
* commit 'ad60fe2e80878e1b1caa2c9207d8f601e203560f':
Make KeyDebounce class a top-level class and rename it to PointerTracker
This change moves the following methods into KeyDebounce class.
- MotionEvent handling methods (onDownEvent etc.).
- Keyboard action event generator method (detectAndSendKey).
- Multi-tap key support methods (resetMultiTap etc.).
- Key preview text generator method (getPreviewText).
The change that makes KeyDebounce a top-level class will follow.
Bug: 2910379
Change-Id: I1526c0461e247d97f0c4b3bd580330f137c787be
Extract key press and release handling out of previewKey() to
KeyDebouncer class. And pass Key object as argument of previewKey()
instead of key index.
Bug: 2910379
Change-Id: Ifec39cfc4845bd92da2f62eba2b26ac6a5cbb341
Log which voice-based alternates were selected, and what
word in the recognition results were replaced.
Change-Id: I1527dc794902a18a226ca45e186ecf84841094c8
Conflicts:
java/src/com/android/inputmethod/latin/LatinIME.java
These three conditions assign true to the mAbortKey flag.
1. setKeyboard() sets the new keyboard layout.
2. long press shows the pop-up mini keyboard.
3. ACTION_CANCEL event is occurred.
In the case 1, in LatinIME so far, only "symbol key" and "language
switch" cause keyboard layout change. In both cases, the event is
occurred in onUpEvent(), so we do not need to worry about aborting
event.
In the case 2, long press is used only to pop-up mini-keyboard and at that
time mMiniKeyboardOnScreen could be used as a flag.
In the case 3, though I'm not sure when this case occurs, in
onCancelEvent() all the things that should be canceled are canceled
in onCancelEvent().
Bug: 2910379
Change-Id: I12377c5f3e808f1c017ce980e12b1513895047bc
This change will display the key board preview instantaneously when
the key is pressed. Dismissing the key preview will be delayed
slightly after the key is released, as we do now.
Because in multi touch mode, we should instantaneously change keyboard
layout when modifier key, such as shit and symbol, is pressed.
Change-Id: I49348d563ca0f40f5a0a236bdcd0bb07eedd599b
Long-press on shift and symbol keys will conflict with press-and-hold
these keys and press normal key (a.k.a. multi touch support).
Bug: 2910379
Change-Id: I27007b55a30a3699bf63fd8f64d58c4b23d97d9f
This change eliminates the need of extra MotionEvent allocation. Also
this will lead to the easy way to handle multi touch events.
Bug: 2910379
Change-Id: Ibcfcba554b732c13105f91877b41b553ee6928ba
This change moves SwipeTracker out from LatinKeyboardBaseView. Also
this introduces EventBuffer class for swipe tracking buffer.
Bug: 2910379
Change-Id: I48ff714226a248ca063cbaf9755cf45e458f7402
GestureDetector listener's onFling method will not call detectAndSendKey
anymore.
Make gesture detector be ignoring multitouch. Refactoring
GestureDetector out of LatinKeyboardBaseView class change will follow.
Bug: 2910379
Change-Id: I0b2a9c4cf7d432f89f9085f3c2bdf3a3757a8903
This change encapsulates mInKeyRepeat (former mRepeatKeyIndex) into
UIHandler class. Also this eliminates mCurrentKey and mLastTapTime
dependency from repeatKey method.
Bug: 2910379
Change-Id: I9351a558be2ebc04de4ebb0d323af4be33bd470c
This change simplifies onModifierTouchEvent to focus on handling
motion event related to a key event.
Other refactoring will follow in order to support multi touch.
Bug: 2910379
Change-Id: I036be64168d951a535600a7910b36bc109f88490
Merge commit '6558253160e2039c87f424bd814f402ecd31de3b' into gingerbread
* commit '6558253160e2039c87f424bd814f402ecd31de3b':
Fix a bug in backspace handling for the "Tap again to save"
Merge commit 'f02964264f196447b03a88591a2964b67c318718' into froyo-plus-aosp
* commit 'f02964264f196447b03a88591a2964b67c318718':
Don't auto-select the system language in IME language selection screen.
Fixes http://b/2650378
On entering the selection screen, don't add the system language in addition
to other selected languages.
Change-Id: Id7a3b45df39a8493d17be668029eee139bf00ff3
Sometimes the only motion event that is above the keyboard is the UP
event. In that case we can't expect one more event to come that will
dismiss the extension. So don't show the extension if the only Y < 0
event is an UP event.
Change-Id: I04a8b742dea03cd700006dc5df740ac7d9620c0b
Merge commit 'c2b8c16bdf392c81785031483d21740c5e883046' into froyo-plus-aosp
* commit 'c2b8c16bdf392c81785031483d21740c5e883046':
Possible fix for monkey bug: 2529350
Merge commit '3e0c82ec80a69c4adbd60546c3c56c83c43ec7eb' into froyo-plus-aosp
* commit '3e0c82ec80a69c4adbd60546c3c56c83c43ec7eb':
Fix for 2568664 : Slide gesture on spacebar is not reliable anymore
This was due to the multi-touch error correction code that was recently
added. Make sure that one of the move points is in the upper 3 rows
to allow for fast swipe on spacebar.
Change-Id: I420bdb83a4cd8833c4158bc37a2d806b8c83b948
Detect sudden moves that have a large delta that would not be a typical drag
by the user when hunting for a key. Drop move events until the user releases
the touch and register both starting and ending keys instead of only the
ending key. This reduces the frequency of dropped keys on touch hardware that
isn't able to detect multi-touch reliably.
This also takes into account diagonal moves or right angled moves due to
pseudo-multi-touch.
It weakens the swipe gestures (to swipe, you'll need to swipe slowly and fully,
otherwise it will trigger 2 keys)
Change-Id: Ieba3a0bef4c8910f0f17aa20baedb3581d1de12b
Keep a reference to the openhelper around across locale and input language
changes. Also, share the openhelper between the queries and updates. Creating
a new one in a separate thread could cause it to be closed at the wrong time.
Monkey bugs, probably dupes.
Bug: 2560471
Bug: 2544169
Change-Id: I6eb39145de7191732ddde455728bf147a2d1ba31
Also don't highlight quickfixes when in suggest-only mode
In general, reduce the situations where words are auto-added. It was
too eagerly adding even words that were in the dictionary.
This might also fix the keyboard closing suddenly when using the extension.
Re-enable bubble for landscape extension keyboard, since the framework can
now display it to the side.
Also add a summary text in the input language list for languages with
a dictionary so that users don't feel cheated when they pick a language
that doesn't happen to have a dictionary. Remove greek as it isn't an
extension of the QWERTY keyboard.
We were overlogging the TextMoified action because the old
implementation would log a cursor change as a text
modification. This CL logs 4 specific actions (choose
suggestion, delete text, insert text, insert punctuation)
as a text modification rather than any action in the textbox
I also add in logging of the length of the recognition result
so that we can get some more context around the scope of the
editing of the ime result.
Change-Id: I172df24ddc0a7b62bcc5ed806fd70ef7e1c42310
Bug: 2513996
The array of adjacent letters did not have the primary code in the first
position. Swap the codes around to make the primary the first one.
Change-Id: Id753254c88d440d3d76dbc048d123dfc78edf58d
This is to avoid ANRs during bootup, as some of the providers
may not have been initialized yet.
Refactored the ContactsDictionary and moved the async loading
code to ExpandableDictionary to share with the other dicts.
Bug: 2501133
Change-Id: I20393edb6fdf5df2f54ebac8dd04419a592177a2
Move java code to a different directory so that the unbundled
version doesn't try to compile the native code again.
Change-Id: I05cf9e643824ddc448821f69805ccb0240c5b986