abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyModifier.java
AgeCommit message (Collapse)AuthorFilesLines
2025-08-31Use the <fn /> mappings first when typing a gesture (#1085)Jules Aguillon1-0/+7
This allows assigning mappings to letters without changing the Shift mappings and making uppercase impossible to type. For gestures, the Shift modifier is still applied first, unless a custom mapping for <fn/> is set for the key.
2025-04-15Add class Modmap and test KeyModifierJules Aguillon1-5/+5
2025-03-15Selection mode (#913)Jules Aguillon1-0/+29
* Selection mode: Space to cancel the selection This adds the "selection mode", which is activated when text is selected in the text box. The selection mode is exited when the selection is cleared. While the selection mode is activated, the Space and Esc keys are modified into the "selection cancel" key, which remove the selection without changing the text. The space bar is otherwise easy to type by accident during a selection and causes the selected text to be deleted. * Selection mode: Move each ends of selection separately with slider When the selection mode is activated, the space bar sliders change how they affect the selection: - The left side of the slider moves the left position of the selection. To shrink the selection from the left side, the slider must be activated by sliding to the left, extending the selection temporarilly, then by sliding to the right. - The right side of the slider affects the right position if the selection.
2025-03-01Add 'delete_word' and 'forward_delete_word' keysJules Aguillon1-0/+7
These keys are the equivalent of ctrl+backspace and ctrl+delete, respectively. They can be reached with Gesture+backspace and Gesture+delete respectively.
2025-02-23Apply compose sequences to String keysJules Aguillon1-22/+38
This is mostly useful for characters that do not fit on a single 16-bit char. Shift sequences for 𝕨𝕩𝕗𝕘𝕤 are added for illustration.
2025-02-08Remove binding fn+shift = capslockJules Aguillon1-14/+17
This made is hard to type fn+shift. gesture+shift still locks shift.
2025-01-03Lock shift with a gestureJules Aguillon1-0/+10
The circle gesture locks shift. It is also the case for the round-trip gesture if shift is in a corner.
2024-12-31Fn: redo and pasteAsPlainText as undo and pasteJules Aguillon1-0/+11
Allows typing redo and pasteAsPlainText easily with Fn or the round-trip gesture without adding them to the keyboard.
2024-12-19Added tamil layout (#833)Jagadeeshan S1-0/+1
Signed-off-by: Jagadeeshan S <jagadeeshan.s@addverb.com>
2024-12-11Move numpad script maps to the compose systemJules Aguillon1-174/+21
This removes the Map_char interface, which required a lot of boilerplate to use.
2024-12-07Add support for KannadaJules Aguillon1-0/+22
Add language support for Kannada, including a layout and numerals.
2024-12-07Add double grave accent (#779)Zitrone1-0/+1
2024-11-16Don't apply Fn to space bar left and rightJules Aguillon1-11/+0
"home" and "end" on the spacebar slider are not useful.
2024-09-10Define the Shift modifier using the compose mechanismJules Aguillon1-61/+4
2024-09-10Define the Fn modifier using the compose mechanismJules Aguillon1-188/+3
This removes 100Kb from the app.
2024-07-28Map Fn+Cursor_move to home/end (#728)bokidori1-0/+11
Fn modifier switches cursor_left to home key, cursor_right to end key
2024-07-25Allow Ctrl modmaps in layoutsJules Aguillon1-1/+14
The 'ctrl' modmap is different from the other modmaps as it also applies the built-in Ctrl modifier to the resulting character, even if it was first modified by the custom modmap. For example, this will map Ctrl+в to Ctrl+V (not to v): <ctrl a="в" b="v"/> This is intended to add keyboard shortcuts in non-latin layouts. A caveat is that the latin character appears on the keyboard while Ctrl is activated.
2024-06-09Refactor: Remove the KeyModifier cacheJules Aguillon1-29/+3
2024-06-09Move diacritics mapping to the compose state machineJules Aguillon1-582/+62
This replaces the switch cases in KeyModifier.java with JSON files, one for each diacritic. The number of states increases from 6727 to 7377. The apk size slightly decreases (around 3kb).
2024-05-25Circle and round trip gestures (#640)Jules Aguillon1-5/+13
This implements clockwise/anticlockwise circle and round trip gestures inspired by Messagease. The circle gestures start after a small threshold to avoid making the regular swipe too hard to aim. The gestures do: - circle: The center symbol with Shift applied, with a fallback on Fn - round trip: Same as the circle gesture but applied to a side symbol - anticlockwise circle: Nothing currently. It is intended to be made configurable per-layout in the future. The new Gesture class keeps track of what the pointer is doing while it moves on a key. It replaces the 'selected_direction' integer.
2024-05-02Hangul support (#595)Jules Aguillon1-0/+110
* Hangul support This works with two new kinds of keys (Hangul_initial and Hangul_medial) that carry a precomposed hangul syllable and act as modifiers. The hangul syllables are composed algorithmically. * Add shift layer to Dubeolsik layout
2024-05-02allow for <fn ...> in <modmap> (#626)alotbsol5551-0/+6
2024-05-02Clear cache when changing layoutJules Aguillon1-1/+8
Due to the modmap, the cache must be cleared when switching layout to or from a layout that contain a modmap. This is broken since 3f6b6fd23, which moves the modmap handling into KeyModifier.
2024-04-25Add more accented characters to KeyModifier.java (#622)JapanYoshi1-3/+67
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.