немного допилил YTERM |
Nov. 19th, 2023|03:49 pm |
категорически заебло, что в терминале невозможно узнать про нажатия чего-то типа «C-S-Enter» (или пробел, или альфанум). поэтому допилил специальное YTERM-расширение: «\x1b[<upper-ascii-code>;<modcode>Y».
modcode — обычный код для модофикаторов, который используется и в других OSC:
n;2 — Shift
n;3 — Alt
n;4 — Alt+Shift
n;5 — Ctrl
n;6 — Ctrl+Shift
n;7 — Ctrl+Alt
n;8 — Ctrl+Alt+Shift
естественно, просто Alt генерит обычный Esc, code. и Shift с циферками не перехватывается. а остальное — таки да. включая Alt+Shift+буковка, потому что мне так удобней.
соответственно, я теперь могу писать tty-софт, который умеет в кучу кейкомбов с разными-всякими модификаторами. конечно, работать это будет только в моей терминалке — но меня не волнует, я другие терминалки не использую. никто не мешает всем остальным эмуляторам терминалов взять — и поддержать Мой Охуительный Стандарт. не хотят? ну, их проблемы.
я — как обычно — совершенно не понимаю, почему до сих пор на такие комбы нет стандарта. если уж ведро пинусов так держится за протокол дивайсов более чем полувековой давности — хуй с ним. но нахера делать вид, что с тех пор ничего не поменялось? у нас есть клавиатуры с кучей модификаторов — но использовать это нормально в консольном софте невозможно, потому что… а хуй знает, почему. видимо, потому что ссаные пинусы — это повторение уёбищной, собраной на коленке говнооперационки 70-х годов прошлого века.
впрочем, я слишком многого хочу от ведра пинусов: там даже стандарта на OSC от функциональных клавиш (и некоторых других, типа Home/End) нет. дебилыбля.
кстати, нумерация Shift+F-кнопочек в OSC нихуя не последовательная. почему? потому что идите нахуй, вот почему. потому что на старых клавах были F1-F4, и всё. поэтому S-F1..S-F4 — это [23..26]. 27 — пропущен. Очень Страшное Число даже в десятичной записи, а не одним байтом, лучше не использовать, ага. S-F5 и S-F6 будут 28 и 29. число 30 тоже Очень Страшное, его опять пропустили. S-F7..S-F10 — [31..34].
и если вы думаете, что без шифта хотя бы Fn нормальные… F1-F5: [11..15]. F6..F10: [17..21]. а потому что идите нахуй два раза, вот почему. ах, да. это rxvt. а если xterm — то F1-F4 совсем особенные, они генерируют «\x1bOP» и далее до «S».
о, и ещё. F11 и F12. хахаха. F11 — 23. F12 — 24. конечно, 23 — это «Shift+F1». а кого ебёт, зачем нам отличать F11 от Shift+F1? или F12 от Shift+F2? в общем, их я тоже в своё расширение вынес, с кодами 111 и 112. |
|