Skip to content

Support more dead keys and allow customization #245

Description

@xaltsc

Currently, kalamine implements fixed behaviour for 20 dead keys. However, there are 45 ones of them in xkb:

┬─[ax@teroknor:/n/s/f/s/X/locale]─[16:48:54]
╰─>$ rg '<dead_[^>]+>' -o | cut -d: -f2 | sort | uniq | wc -l
45
┬─[ax@teroknor:/n/s/f/s/X/locale]─[16:49:25]
╰─>$ rg '<dead_[^>]+>' -o | cut -d: -f2 | sort | uniq
<dead_a>
<dead_A>
<dead_abovedot>
<dead_abovering>
<dead_acute>
<dead_belowbreve>
<dead_belowcircumflex>
<dead_belowcomma>
<dead_belowdiaeresis>
<dead_belowdot>
<dead_belowmacron>
<dead_belowring>
<dead_belowtilde>
<dead_breve>
<dead_caron>
<dead_cedilla>
<dead_circumflex>
<dead_currency>
<dead_dasia>
<dead_diaeresis>
<dead_doubleacute>
<dead_doublegrave>
<dead_e>
<dead_E>
<dead_grave>
<dead_greek>
<dead_hamza>
<dead_hook>
<dead_horn>
<dead_i>
<dead_I>
<dead_invertedbreve>
<dead_iota>
<dead_macron>
<dead_o>
<dead_O>
<dead_ogonek>
<dead_psili>
<dead_SCHWA>
<dead_semivoiced_sound>
<dead_stroke>
<dead_tilde>
<dead_u>
<dead_U>
<dead_voiced_sound>

Some of them are for polytonic (ancient) greek, some for arabic, but this project mostly targets latin keyboards.

While I think it's pointless to implement a fixed behaviour for each of these dead keys, I would be nice to be able to use them along with a custom mapping, which is not possible at the moment as I understand it.

This could help solve issues such as this one Nuclear-Squid/ergol#394 (comment) , for creating an extended keyboard layout with a unicode math layer.

For the record, as I've been told on discord on discord, this will break compatibility with Windows (and possibly OSX), to be frank, I don't think that this matter as this is issue is intended for personal use.

A broader proposal, perhaps simpler for my use-case, would be to enable users to use any keysym in their TOML files, such as Multi_key, or only keysyms that are recognized throughout OSes, if maintaining compatibility stays a goal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions