abouttreesummaryrefslogcommitdiff
path: root/srcs/compose/compile.py
AgeCommit message (Collapse)AuthorFilesLines
2024-09-10compose: Allow c-style comments in json filesJules Aguillon1-1/+8
Useful to manager growing the collection of sequences.
2024-07-21Allow extending the compose key (#713)Jules Aguillon1-9/+27
This allows adding more compose sequences without modifying en_US_UTF_8_Compose.pre. This is done by grouping sequences files that should be merged together into a directory. This also allows moving keysymdef.h into that directory.
2024-06-09compose: Compile several starting statesJules Aguillon1-8/+27
Sequences from several files are no longer merged but compiled to separate starting states. The plan is to use that to represent the diacritics.
2024-06-09compose: Fix misbehaving due to encoding errorsJules Aguillon1-12/+27
Encoding errors in the compose data compiler due to: - 'UTF-16' adds a BOM, use 'UTF-16-LE' instead - 'str.encode' returns a byte array, use 'array' to have a 16-bit char array.
2024-05-29Add compose sequences for Greek, Cyrillic, Hebrew and moreJules Aguillon1-19/+13
Parse key names from keysymdef.h, which is distributed with Xorg. The Greek, Cyrillic and Hebrew sequences referenced these keysyms. This increases the number of sequences from 2043 to 2668.
2024-05-29Allow compose sequence ending with more symbolsJules Aguillon1-6/+10
Change the compose state machine definition to allow final states that are wider than 16-bits. This increases the number of sequences that can be used from en_US_UTF_8_Compose.pre from 2013 to 2043 (of 3201).
2024-03-02compose: Parse json files and fix edge casesJules Aguillon1-2/+21
There's no json file yet, this was part of an experiment. Add a missing escape rule and detect colliding sequences.
2024-02-17compose: Add X11 compose sequencesJules Aguillon1-16/+134
compile.py implements a parser for X11's Compose.pre files. A lot of code is necessary to interpret character names but thanksfully, the name of most characters is contained in the file. The state machine is compiled into two char arrays which unfortunately requires an expensive initialisation and allocation.
2024-02-17Compose keyJules Aguillon1-0/+80
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.