Что должен делать escape-код ANSI 0x1b[0A и другие коды с нулевым значением?

Команда synclientявляется частью пакета xserver-xorg-input-synaptics. Вы можете использовать команду synclient, как обычно, после установки необходимого пакета :

.

apt install xserver-xorg-input-synaptics

Изменение драйвера libinput Xorg в Debian 9 «Stretch» ​​

To reenable a disabled touchpad in gnome on stretch:

gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'

2
28.12.2019, 21:04
2 ответа

Поведение, наблюдаемое в DEC VT, легче понять, если иметь в виду режим ZDM (с нулевым значением по умолчанию ). Из ECMA -48:

A parameter value of 0 represents a default parameter value which may be different from 0.

Для последовательностей перемещения курсора спецификация определяет значение по умолчанию как «1», поэтому все они равны в ZDM:

  • CSI A(опущенный параметр по умолчанию равен 1)
  • CSI 0 A(0 имеет особое значение значения по умолчанию)
  • CSI 1 A(параметр является значением по умолчанию)

Насколько мне известно, все последовательности CSI, реализованные в устройствах DEC, следуют схеме ZDM.

Позже ZDM был удален из спецификаций, поэтому «0» теперь следует читать как число, а не как специальный заполнитель для значения по умолчанию. Но устройства DEC не изменили это поведение. Таким образом, все сводится к вопросу, может ли эмулятор, совместимый с VT100+, соответствовать спецификациям вообще.

4
27.01.2020, 21:50

Эти управляющие последовательности принимают количество повторений в качестве параметра, например. \e[5Aперемещает курсор вверх на 5 строк, \e[10Cперемещает курсор вправо на 10 столбцов и т. д. Значение, если опущено , по умолчанию равно 1.

Но что должно произойти, если параметр явно указан как 0?

Давайте посмотрим на стандарты. ECMA -48, а также ctlseqs.html (, документирующий поведение xterm ), ничего об этом не говорят, то есть неявно подразумевают, что они должны двигаться на ноль. С другой стороны, стандарт DEC STD 070 говорит, что значение 0 должно измениться на 1.

Давайте посмотрим на реализации. urxvt интерпретирует 0 как 0 для некоторых из этих последовательностей, например. для вертикального перемещения курсора, но не для горизонтального (там 1 ). Все другие терминалы, которые я проверял, интерпретируют его как 1 (, включая xterm, поэтому его поведение и документация не соответствуют ).

Стандарты несовместимы. Реализации несовместимы.

Что ты можешь сделать? Не используйте их. Если вы столкнулись с библиотекой, которая выдает их, зарегистрируйте ошибку и попросите ее разработчиков прекратить использовать эти проблемные escape-последовательности, поскольку независимо от того, чего они ожидают, это противоречит некоторым стандартам и, несомненно, ломает некоторые терминалы.

6
27.01.2020, 21:50

Теги

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