Alt -Gr и уровень клавиатуры 3

Символ, скажем, $, имеет особое значение и считается особенным, когда он оказывает какое-либо влияние, кроме того, что является буквальной частью данных. В $x, $имеет особый смысл, вводя разложение по параметрам.

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

A that is not quoted shall preserve the literal value of the following character, with the exception of a

Например, "\$x"— это строка «$x», а "a\ b"— это строка «a\b», поскольку во втором случае обратная косая черта предшествует незарегистрированному символу и поэтому не имеет особого значения. Вне двойных кавычек,однако a\ b- это строка «a b», с обратной косой чертой, из-за которой пробел включается буквально, а сама обратная косая черта удаляется.

Процитированный вами отрывок не говорит о том, что иногда символы сохраняют свое особое значение, несмотря на экранирование , а скорее о том, что обратная косая черта не имеет особого значения, если только она не влияет на один из них. их.


Здесь есть потенциально висячий модификатор :считаются ли символы специальными или обратная косая черта ?

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

Лучший вариант, который у меня есть, где, если он ограничивает символы, он может возникнуть здесь -разделители документов:

cat <<"A$B"
A$B
cat <<"A\$B"
A$B

Оба они делают одно и то же на всех моих панцирях. Возможно, $не является особенным, поскольку он был включен в разделитель в первый раз, поэтому \внутри двойных кавычек не должен был ускользнуть от него во второй раз и должен был быть включен буквально. Я не думаю, что это обязательное поведение, но кажется, что оно соответствует букве закона.

Для встроенных расширений они либо отрицают какой-либо эффект от кавычек (обоих видов $(...)), либо имеют свои собственные правила цитирования и не имеют единого способа цитирования (всех видов ${...}и `... `),и мне не удалось создать что-то, что явно должно иметь не -специальную версию одного из этих символов и не -специальную обратную косую черту перед ним.

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

1
26.01.2021, 21:07
1 ответ

Проблема заключалась в том, что переключение профилей клавиатуры каким-то образом приводило к путанице в настройках xmodmap. Кроме того, Multi_Key, похоже, не заменяет клавиатуру уровня 3 должным образом. Итак, я создал файл $HOME/.Xmodmap, применив

> xmodmap -pke >.Xmodmap

I изменил строку в .Xmodmap, которая обрабатывает код клавиши 108, то есть ту, которая xevидентифицирована как клавиша Alt -Gr:

keycode 108 = ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift

Затем перезагрузил через

> xmodmap.Xmodmap

Я подождал несколько минут. И вуаля! Я получил свои знаки @,мои фигурные скобки и мой знак € снова на моей клавиатуре.

1
18.03.2021, 22:34

Теги

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