Я хотел бы понять, как отображаются ключи от Mac OSX для конечных приложений. Каковы схемы сопоставления, настройки и диагностики в каждой точке для этих выводов? Требует ли предоставленный поэтапный вывод модификаций, дополнений или вычитаний?
Я знаю, что кажется, что он охватывает многие области, но любое понимание будет полезно. Спасибо
Общий путь вывода ключей
- Физическое нажатие клавиши -> OSX USB HID драйвер -> OSX управляемый код клавиши
- OSX GUIconsole -> Terminal.app -> ssh to Linux -> терминальная сессия Linux
- терминальная сессия Linux -> Emacs в терминальной сессии -> привязки Emacs
- Консоль OSX GUI -> X-Quartz -> Emacs
В моем нынешнем понимании происходит следующая последовательность отображения:
Клавиатура -> OSX
- OSX USB HID драйвервзаимодействует с вводом с клавиатуры в iokit daemon
Apple предоставляет утилиту оболочки для переназначения кодов USB HID (работает в 10.12):
свойство hidutil —set '{«UserKeyMapping»: [{HIDKeyboardModifierMappingSrc: 0xHIDSRC, «HIDKeyboardModifierMappingDst»: 0xHIDDST,…}.
Apple предоставляет программный метод с использованием Objective-C. Оба метода используют идентификаторы использования клавиатур HID в разделе «Использование таблицы ключей» в качестве смещений от базового адреса 0x700000000. См. https://developer.apple.com/library/archive/technotes/tn2450/_index.html. Эта база 0x700000000 индексирует таблицу в документе USB-консорциума (https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf).
Karabiner-Elements - приложение, которое может захватывать ключевые событияСобственный запасной демон iokit и измените его.
Предоставляет ли Apple инструмент разработки, показывающий нажатия клавиш HID BT?
OSX -> Сессия консоли GUI
Системные настройки-> Клавиатура-> Клавиатура для установки F1, F2, ... Fn в качестве стандартных функциональных клавиш или специальных специальных Mac OSX.
Системные настройки->Клавиатура-> Сочетания клавиш для установки действий с комбинациями клавиш
Системные настройки-> Клавиатура-> Источники ввода
Одна из ссылок в этой цепочке - файлназывается «раскладка клавиатуры», которая переводит ввод (коды клавиш) в вывод (символы). MacOS использует эти файлы, чтобы можно было набирать разные языки на одной физической клавиатуре: один просто активирует другую раскладку клавиатуры. Укулеле позволяет модифицировать эту раскладку. Файл раскладки клавиатуры влияет на такие команды, как Backspace, Tab, нажатия клавиш курсора и т. Д., Поэтому для управления их выводом необходим другой подход. Я также думаю, что есть файлы XML, которые могут быть изменены здесь вручную в соответствии с некоторыми схемами?
Приложения OSX
Terminal.app Настройки-> Профили-> Клавиатура может изменять «escape-коды» ANSI ASCII для клавиш. Эти управляющие коды соответствуют стандарту ___?
Terminal.app Preferences-> Profiles-> Advanced позволяет выбрать терминал как "xterm-256color", .. .. Это влияет на отображение как?
Terminal.app Preferences-> Profiles-> Advanced-> Input разрешает дальнейшие изменения, чекбоксы: Delete передает Ctrl-H,Избегайте ввода, не входящего в ASCII, с помощью Ctrl-V, вставьте символы новой строки как возврат каретки.
ssh-сеанс с ОС Linux 10. Поток байтов ANSI ASCII интерпретируется согласно$ TERM с использованием terminfo и termcap. Детали
showkey -a, infocmp -CL предоставляет подробности
stty, как это вписывается?
Другие отображения илиинструменты диагностики здесь?
ssh-сессия с ОС Linux и Emacs 14. Emacs использует Mx-описания-привязки для отображения привязок клавиш
Emacs использует (global-set-key) и (define-key) для изменения привязок клавиш.
X сессия с Emacs
X-Quartz взаимодействует с Mac OSX для сопоставления привязок клавиш с приложениями. xmodmap и xkb можно использовать для изменения этих привязок. Другие сопоставления или диагностические инструменты здесь?