my backspace key isn't being detected as a '\b'. What can I do?
Какие управляющие или управляющие последовательности используются для и #x232B;(backspace )и & #x2326;(удалить )клавиши генерируются по-разному.
На терминалах, которые пытаются быть похожими на ТН DEC:
- и #x2326; Клавиша генерирует управляющую последовательность DECFNK.
- Поведение и #x232B; можно переключать между символами ASCII BS и DEL, при этом на терминал передается управляющая последовательность с именем DECBKM.
Но не каждый терминал (эмулятор )даже пытается быть похожим на DEC VT, не говоря уже о реализации механизма DECBKM. Вы не можете просто запрограммировать последовательности ввода с клавиатуры и ожидать, что они будут работать при любых обстоятельствах.
Ваша программа должна работать следующим образом. :Она должна взять тип терминала из переменной окружения
TERM
, получить соответствующую запись из базы данныхterminfo
(илиtermcap
)и найти там две способности:
kbs
(kb
)— последовательность, отправляемая и #x232B; клавишаkdch1
(kD
)— последовательность, отправленная и #x2326; клавишаОн должен сопоставлять эти строки с входными данными, которые он считывает.Чтобы отличить фактические последовательности управления от простых нажатий Esc , ваша программа должна быть более сложной, чем цикл
fgetc()
. Вы должны установить не -канонический режим и установить (короткий )тайм-аут чтения. Только еслиread()
возвращает всю строку в течение периода ожидания, она должна рассматриваться как последовательность управления вводом.Обратите внимание, что специальные символы, установленные с помощью
stty
, в значительной степени являются отвлекающим маневром. Они не применяются в не-каноническом режиме и в любом случае влияют только на линейную дисциплину . Поведение терминала полностью определяется тем, как он отображает события аппаратных клавиш на управляющие последовательности, которые он отправляет «по сети» в линейную дисциплину. Терминалы, как было сказано ранее, могут делать это различными способами, от использования загружаемых карт между кодами клавиш и управляющими последовательностями (, встроенными во FreeBSD -в эмуляторе терминала ядра ), до ресурсов X.Дополнительная литература
- Информация о программаторе видеотерминала VT510. ЭК -ВТ510 -РМ. Ноябрь 1993. ДЕКАБРЬ.
- Информация о программаторе видеотерминала VT520/VT525. ЭК -ВТ520 -РМ. Июль 1994. ДЕКАБРЬ.
- Почему «Shift -Tab» приводит к «Escape» в терминале?
- https://unix.stackexchange.com/a/299423/5132
Мы столкнулись с вашим вопросом, когда пытались исправить ту же проблему на наших компьютерах, присоединенных к AD RHEL. Мы установили наш тестовый блок на один день и перезапустили демоны SSSD и realmd. Примерно через 5 минут атрибут pwdLastSet в тестовом блоке был обновлен.
Что касается автоматического сброса, похоже, что он был удален в SSSD v1.13.4 в пользу использования упомянутой выше настройки. Посмотрите здесь :https://access.redhat.com/solutions/2420951
Примечания к выпуску SSSD, упомянутые в приведенной выше ссылке, можно найти здесь :https://docs.pagure.org/SSSD.sssd/users/relnotes/notes_1_13_4.html
Чтобы изменить пароль рекламной машины, необходимо добавить параметр в файл /etc/sssd/sssd.conf в разделе домена.
Надеюсь, это поможет!