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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions