• LRN's avatar
    GDK W32: Cache multiple keyboard layouts simultaneously · 52c7e079
    LRN authored
    This changes the group/level semantic.
    Previously W32 backend used "group 0/1" to denote "AltGr OFF/ON"
    and "level 0/1" to denote "Shift is OFF/ON".
    Now "group" means "keyboard layout" and there can be up to 255 groups,
    while AltGr and Shift are combined into a single level enum that
    takes values between 0 and 4.
    Unlike X, W32 doesn't do effective group overriding, meaning that
    it will never tell the caller that a different group was actually
    used (even for universal keys, such as Enter), because key symbol
    table is completely fabricated and there's no point in trying to
    save a few of kilobytes of RAM by not duplicating universal key
    records for all groups.
    Also contains many whitespace changes (tab elimination, fixed
    indentation) and cleanup (axed a few global variables, these are
    now accessed via the default keymap).