netch80: (Default)
[personal profile] netch80
Вот XKB весь из себя такой конфигурируемый в 10 слоёв абстракции, но что происходит при отработке Ctrl - зашито в код намертво:

char
XkbToControl(char ch)
{
    register char c = ch;

    if ((c >= '@' && c < '\177') || c == ' ')
        c &= 0x1F;
    else if (c == '2')
        c = '\000';
    else if (c >= '3' && c <= '7')
        c -= ('3' - '\033');
    else if (c == '8')
        c = '\177';
    else if (c == '/')
        c = '_' & 0x1F;
    return c;
}


и в этом есть несколько совершенно неожиданных вещей (например, почему "забой", который 0x7f и традиционно передаётся как ^?, они сделали ^8, а ^? даёт то же, что ^_ ?)

Похоже, это очередное место типа "40 лет назад сделали на 'отцепись', а теперь фиг поменяешь".

Да, и место, где эта функция, совершенно "ожидаемо" - XKBBind.c в libX11 (что в этой трансляции от слова bind?)

Date: 2017-08-08 01:19 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Не уверен, что понял суть претензии, но в .Xresources можно написать так:

*VT100*translations: #override Ctrl_: string(0x1F)

И Ctrl-_ станет отдавать приложению 0x1F внутри xterm.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 07:09 pm
Powered by Dreamwidth Studios