Shift-Space в меньше

Я люблю rxvt-unicode. Это делает все те вещи, но не по умолчанию. Это имеет много опций времени компиляции, одна из которых является встроенным жемчугом для расширения его с помощью дополнительной функциональности, такой как вкладки. Это имеет клиент-серверную архитектуру также. Один основной экземпляр работает выполненный несколько терминальных сеансов в различных окнах. Я на самом деле не использую окна с вкладками, я предпочитаю использовать функции менеджера окон для получения того же эффекта.

Получение прозрачности необходимо на самом деле запускать составляющий композит менеджер окон. Приложениям не придется иметь дело с ним. Но urxvt может, если Вы должны. Это использует X свойств. Для получения прозрачности устанавливает это:

urxvt.background:   rgba:0000/0000/0000/dddd

Поскольку имя подразумевает, что это - также unicode терминал (может отобразить UTF-8 непосредственно), таким образом, можно также видеть символы и международные буквы в том же терминале

8
29.08.2013, 01:03
4 ответа

Я думаю, что Вы подняли столкновение культур, вызванное техническим ограничением. Так как Shift+Space генерирует тот же вывод как Пространство, модель терминала Unix рассматривает их тождественно. Для различения эти два Вам нужна среда программирования, которую поддержки настраивают / ключ вниз события. Это возможно в X11 и в эмуляторах терминала то переотображение поддержки ключи. Пример переотображения Shift+Space к PageUp:

# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: \033[5~
6
27.01.2020, 20:12
  • 1
    Большинство ключей переотображения поддержки эмуляторов терминала, таким образом, возможно сделать это с большинством эмуляторов терминала (xterm -xrm 'XTerm.VT100.translations: #override Shift <KeyPress> space: string(0x2)' в xterm, например, или Вы отправляете ту же последовательность, как отправлено на <PageUp>). Конечно, это сделало бы вводящий текст при содержании неловкой клавиши Shift. –  Stéphane Chazelas 28.08.2013, 23:21

В эмуляторах терминала эта функция нарушала бы ввод текста в верхнем регистре со вставленными пробелами при удерживании клавиши Shift. Например. если вы хотите ввести «Это название», вам придется отпустить Shift между «А» и «Т». Если удерживать ее нажатой, курсор сдвинется с места, а остальная часть того, что вы набираете, переместится неправильно. Я считаю, что это будет намного больше раздражать, чем то, что вы получаете с функцией прокрутки вверх.

Обычное поведение при вводе текста и прокручивании вверх всякий раз, когда пробел прокручивается вниз, потребовал бы редизайна и тесного сотрудничества со стороны приложений (например, приложение могло бы переключать то, что отправляет Shift + пробел), я почти уверен, что этого не произойдет. произойдет.

Ключевое отличие состоит в том, что приложение с графическим интерфейсом знает «контекст», редактируете ли вы или просматриваете контент, эмуляторы терминала не имеют возможности узнать об этом.

1
27.01.2020, 20:12

Эмуляторы терминала отправляют один и тот же символ после пробела и Shift + пробела . В противном случае было бы неудобно набирать текст, удерживая клавишу Shift (см. ответ @ egmont , который расширяет этот аргумент).

Однако вы можете обойти это, сопоставив Shift + Space с последовательностью символов, которая в конечном итоге приведет к вставке пробела по умолчанию, и для которой вы можете настроить такие приложения, как меньше ] для прокрутки вверх при таком нажатии клавиши.

Например, такой последовательностью может быть ` DEL SPC (измените DEL на BS в системах, где BS является удалить символ).

Для xterm добавьте ресурс:

XTerm.VT100.translations: #override \
  Shift <KeyPress> space: string("`") string(0x7f) string(" ") 

И настройте less с помощью:

printf '%s\n' '#command' '`\177\40 back-screen' | lesskey -
1
27.01.2020, 20:12

lessв настоящее время не поддерживает это, но определенно можно было бы добавить .

Если программа использует управляющую последовательность xterm для установки modifyOtherKeysк 2 письменно \e[>4;2mна терминал, затем xtermаннотирует клавиши дополнительной информацией о том, какие клавиши-модификаторы активны. В частности, для клавиши Пробел с активным modifyOtherKeysв xterm Shift + Пробел превращается в \e[27;2;32~. lessдолжен правильно интерпретировать это как Shift + Пробел , а затем запустить прокрутку вверх.

Хотя это определенно будет работать в xterm, это будет работать не во всех терминальных приложениях. Но те терминалы, которые не распознают эту escape-последовательность для включения modifyOtherKeys, просто проигнорируют эту escape-последовательность и продолжат посылать программам обычный символ пробела, когда вы нажимаете Shift + Пробел .

На веб-сайте xterm есть довольно подробная страница, объясняющая, как рассчитываются коды modifyOtherKeys:https://invisible-island.net/xterm/modified-keys.html

2
27.01.2020, 20:12

Теги

Похожие вопросы