abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyModifier.java
AgeCommit message (Collapse)AuthorFilesLines
2024-04-01refactor: Apply the modmap in KeyModifierJules Aguillon1-0/+11
This makes possible to apply other modifiers to mapped keys and ensures that the modmap really override the shift key behavior.
2024-03-18refactor: Implement Compose without global stateJules Aguillon1-11/+2
Thanks to the previous commit, a modifier key can now be more complex than just a KeyValue.Modifier. This allows a more elegant implementation of the compose key, that could be taken as a base for other features (eg. unicode hex entry, hangul) The COMPOSE_PENDING modifier is removed as keys of kind Compose_pending can act as a modifier. This has the advantage of highlighting the key that was last pressed in the sequence. Rules are added to Pointers: Non-special but latchable keys must clear latches and cannot be locked with a long press. These rules were not needed before but were intended.
2024-03-18refactor: Allow modifier of other key kindsJules Aguillon1-0/+10
Allow keys of a kind other than Modifier to be a modifier. This requires writing a compareTo function for KeyValue. Fields are compared in this order: Kind, value, flags, symbol.
2024-03-03Gujarati phonetic layout (#562)Yogesh-B1-0/+47
added shift modifier characters Add support for gujarati numerals Co-authored-by: yogesh-b <yogesh@improwised.com>
2024-02-17Compose keyJules Aguillon1-1/+14
The COMPOSE_PENDING modifier indicate whether a compose sequence is in progress. The new key of kind Compose_pending sets the current state of the sequence. The compose sequences are compiled into a state machine by a python script into a compact encoding. The state of the pending compose is determined by the index of a state.
2024-02-06Add more Russian vowels combined with acute accentJules Aguillon1-0/+1
2024-01-21Add Russian vowels combined with the acute accentJules Aguillon1-0/+2
2024-01-15Refactor: Clearer names for CHANGE_METHOD* eventsJules Aguillon1-1/+1
The keys are not renamed to retain compatibility.
2024-01-13Refactor: New namespace for preference classesJules Aguillon1-1/+1
2023-12-30Bring the voice IME chooser with a long pressJules Aguillon1-0/+2
2023-12-26Separate arabic layouts with hindu or arabic numeralsJules Aguillon1-2/+2
This reverts the Tusinian layout (1af4e45) and instead introduce a new arabic PC layout with arabic numbers. Layouts are renamed: - arab_pc => arab_pc_hindu - arab_pc_tn => arab_pc
2023-12-26Add layout attribute 'numpad_script'Jules Aguillon1-3/+3
This new attribute is now used instead of 'script' for modifying the numpad according to the selected layout's script. If not provided, it defaults to the value of 'script'.
2023-10-21Add '₽' to Russian layout and to the Fn layerJules Aguillon1-2/+3
Other currencies are moved on the Fn layer for consistency with the compose key.
2023-10-20Add page_up, page_down, home, end to extra keysJules Aguillon1-0/+4
The new keys are placed on the corner of the arrow keys. Key descriptions are added. They are removed from the Fn layer to avoid showing up twice.
2023-09-09Capitalize the first letter of custom keysJules Aguillon1-1/+2
This is more useful than turning the entire string full caps.
2023-09-03Per-script numpadJules Aguillon1-1/+104
The numeric layout and the optional right hand side numpad are modified to show the digits belonging to the script used in the current layout. The numpads are still defined as it was before. The digits are changed in `modify_numpad` if needed.
2023-08-20Add missing combining accentsJules Aguillon1-27/+34
Implement the combinations that were previously not possible and were commented out. Also remove `apply_dead_char` and `apply_combining` and make all dead-keys definitions uniform.
2023-08-20Refactor: Allow combining diacritics modifiersJules Aguillon1-320/+318
Change the API of `KeyModifier.Map_char` to allow returning a string instead of a single 16 bits char. This allows to return combining diacritics. This also gets rid of `apply_map_or_dead_char`, maps can have their own fallback.
2023-08-18Add Bitcoin symbol to Fn+b (#434)Eluc1-0/+1
2023-08-07Add Superscript and Subscript letterssdrapha1-3/+39
2023-08-05Modify arabic and persian numbers info function keysJules Aguillon1-2/+23
And add function keys placeholders in the layouts.
2023-07-29Add dagger, double dagger, section mark, and pilcrow as extra keys on ↵Ben Slusky1-0/+1
QWERTY-like layouts (#410) * Add section mark as an extra key in QWERTY-like layouts that don't have it already * Add dagger (also double dagger) as an extra key in QWERTY-like layouts
2023-07-09Add symbol ₴ to Fn+h and to UkrainianJules Aguillon1-0/+1
2023-07-02Updated/Added Czech translation + 2 common Fn keys (#387)Validbit1-0/+2
2023-06-25Add hardcoded charmaps for most accentsJules Aguillon1-10/+174
`KeyCharacterMap.getDeadChar` may not be aware of the same dead keys in older version of Android. Hardcoded charmaps are more predictable.
2023-06-04Explicitly map dead key for ñJules Aguillon1-1/+28
`KeyCharacterMap.getDeadChar` seems to not give the expected result on Android 4.0. This might affect many more dead key combinations that are not fixed by this commit.
2023-03-11New Hindi layout (#313)Luke Videckis1-0/+56
* New Hindi layout * Update default layout for Marathi, Nepali * Consistent naming for Devanagari layouts
2023-02-12Option to switch to the previous input methodJules Aguillon1-0/+10
A new option changes the "change_method" into the new "change_method_prev". It switch to the previously used input method. A long press on "change_method_prev" sends "change_method". A new section is added in the settings and existing options are moved.
2023-02-12Modify keys after a long pressJules Aguillon1-0/+6
2023-02-09Added missing accent that can combine with `horn_accent` (#293)Kazoku1-0/+10
2023-02-09Vietnamese keyboard (#291)Kazoku1-0/+61
Added missing accent (horn, hook, dot below) Added layout Added accent font svg (by modified existing accent)
2023-01-31Add layouts 'he_il_1452_1' and 'he_il_1452_2'Ram Kromberg1-0/+19
2023-01-30Fix placeholder key not replacedJules Aguillon1-11/+11
Since fecc4dd, placeholder keys can't be compared by reference. Add a placeholder kind and defined placeholder values.
2022-11-05Add combinations to 'accent_slash' and show in settingsJules Aguillon1-1/+5
The 'accent_slash' was missing in the extra keys setting. Allow to type more latin letters "with oblique stroke" or "with stroke" that visually have an oblique bar, that were not added to 'accent_bar'.
2022-11-05Add the bar diacritic dead keyJules Aguillon1-0/+28
Allows to type many of the "with stroke" or "with bar" latin letters.
2022-11-01Use '₹' instead of '₨' in HindiJules Aguillon1-0/+1
₨ is Shift+₹.
2022-10-16Fix literal tab keyJules Aguillon1-1/+1
Broken since 31d6a70d.
2022-10-15Add the breve diacriticJules Aguillon1-0/+1
2022-10-04Allow to type İ on the Turkish layoutJules Aguillon1-0/+4
In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This has the inconvenient of swapping i and ı on the keyboard.
2022-07-09Add alternative greek and math symbolsquantenzitrone1-0/+30
2022-07-09added uppercase ẞ of ßQuantenzitrone1-0/+1
2022-07-09Switch to greekmath with Fn+switch_numericJules Aguillon1-0/+10
Add a shortcut to switch to the greekmath pane directly from the main layout.
2022-06-06Refactor: Remove KeyValue.nameJules Aguillon1-81/+94
This makes KeyValue objects smaller. 'equals' and 'hashCode' are now implemented too. Key names are still used to recognise keys with special meaning, but not for comparing keys anymore.
2022-06-05Refactor: Separate Events and Keyevents and use enumsJules Aguillon1-26/+26
Negative values for internal events are preventing further refactoring. Add a new kind of key and split internal events (now Event) and Android's key events (now Keyevent). Use enums events and modifiers outside of the KeyValue class. Internally, they are converted to and from integer.
2022-06-05Refactor: Merge KeyValue.char and code fieldsJules Aguillon1-11/+5
These two fields couldn't have an interesting value at the same time. As we can no longer rely on a special value to distinguish between what's the kind, the kind of the key is explicitly encoded in the two most significative bits of the _flags field. Extra nice thing: This removes the special values 'EVENT_NONE' and 'CHAR_NONE'.
2022-06-05Refactor: Associate key events in KeyModifierJules Aguillon1-0/+69
Two advantages: - No need to distinguish modifiers in KeyEventHandler. The KeyValue is enough to decide what action to do. - Keys are never a Char and Event at the same time, fields can be merged.
2022-06-05Refactor: Abstract KeyValue fieldsJules Aguillon1-168/+203
The meaning of the public fields of KeyValue was quite complicated and not handled consistently accross the app. Make these fields private and add a more abstract API on top. The meaning of these fields changed recently and it wasn't an easy change. I plan on making more changes in the future.
2022-06-05Add combining 'accent_arrow_right'Jules Aguillon1-1/+15
It's the first modifier that uses combining diacritics. Whether it should be represented as a modifier or a new kind of key can be reconsidered later.
2022-06-05Add the 'accent_slash' modifierJules Aguillon1-0/+18
Might be useful for some math characters.
2022-06-05Stop using flags for modifiersJules Aguillon1-207/+223
There was no free bits left to add new modifiers. Instead of increasing the width of the 'flags' field, refactor the way modifiers are represented and used. Modifers are now represented as independent values and stored in the 'code' field. A flag is added to distinguish between modifiers and keys with a key event. The most notable change is that modifiers can no longer be or-ed into a single value but have to be represented as an array.