Могут ли терминалы обнаруживать < Shift-Enter > или < Control-Enter & gt ;?

Краткий ответ: нет. Это C ++, статически скомпилированный язык, где имена членов структуры преобразуются компилятором в смещения памяти. Он не динамичен, как PHP или Python, где среда выполнения связана со всеми ссылками на переменные.

35
задан Nicolas Wu 23 August 2017 в 08:39
поделиться

2 ответа

Некоторые терминалы отправляют <NL>, когда <C-Enter> нажимается. Это эквивалентно отправке <C-J>.

Для обнаружения, что терминал делает с <Shift-Enter>, <Ctrl-Enter> и <Enter>, переходят к терминалу, тип <Ctrl-V> (подобный предложению sykora для энергии), и вводят в последовательности, которой Вы интересуетесь.

Используя терминал гнома, я получаю следующее:

  <Enter> : ^M
<S-Enter> : ^M
<C-Enter> : <NL>

Рассмотрение man ascii указывает, что ^M дает эти <CR> последовательность.

ответ - то, что это зависит от терминала, и существует простой способ проверить.

37
ответ дан Nicolas Wu 23 August 2017 в 18:39
поделиться
  • 1
    Я hadn' t думал об этом на самом деле. Конечно, не идеальный, но это будет, вероятно, работать. Я действительно надеялся на некоторый способ заглядывать пользовательскому адаптеру или чему-то. Спасибо за быстрый ответ! – Frothy 7 June 2010 в 19:30

Gvim выполняет своего собственного менеджера для обработки нажатия клавиши и так может взять все различные сочетания клавиш. Vim уверен в определенном терминале для передачи конкретного нажатия клавиши, таким образом, keyhandling только так хорош или варьировался, как терминал.

Один способ, которым можно узнать, можно ли сделать то, что Вы хотите сделать, состоит в том, чтобы использовать ключ для обнаружения то, что вставляется. например, Тип:

:<C-V><C-Enter>

т.е. на самом деле вводят в комбинации, которую Вы хотите нажать, введя Управление комбинацией - Против После этого делают то же самое для входит, т.е.

:<C-V><Enter>

, Если они приводят к тому же коду, тогда терминал интерпретирует оба сочетания клавиш как тот же код клавиши, и Вы не можете связать их, не смешивая с терминалом.

В моем терминале (urxvt), Управление - Входит, Shift-Enter и Входит (отдельно), все производят символ ^M, подразумевая, что я не могу отобразиться один, не отображая другой. То же идет для Вкладки Управления и Управления-I, и Пространства Управления и Control-@

РЕДАКТИРОВАНИЕ: Используйте C-Q вместо C-V для Windows.

18
ответ дан sykora 23 August 2017 в 18:39
поделиться
  • 1
    @mcdowella: Да. Это решает проблему присваивающихся положений на странице к символам во входной строке. – hammar 26 May 2011 в 09:43
Другие вопросы по тегам:

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