Назначение клавиш: Отображение их с клавиатуры на приложение? - PullRequest
1 голос
/ 31 октября 2019

Я хотел бы понять, как отображаются ключи от Mac OSX для конечных приложений. Каковы схемы сопоставления, настройки и диагностики в каждой точке для этих выводов? Требует ли предоставленный поэтапный вывод модификаций, дополнений или вычитаний?

Я знаю, что кажется, что он охватывает многие области, но любое понимание будет полезно. Спасибо

Общий путь вывода ключей

  • Физическое нажатие клавиши -> OSX USB HID драйвер -> OSX управляемый код клавиши
  • OSX GUIconsole -> Terminal.app -> ssh to Linux -> терминальная сессия Linux
  • терминальная сессия Linux -> Emacs в терминальной сессии -> привязки Emacs
  • Консоль OSX GUI -> X-Quartz -> Emacs

В моем нынешнем понимании происходит следующая последовательность отображения:

Клавиатура -> OSX

  1. OSX USB HID драйвервзаимодействует с вводом с клавиатуры в iokit daemon
  2. Apple предоставляет утилиту оболочки для переназначения кодов USB HID (работает в 10.12):

    свойство hidutil —set '{«UserKeyMapping»: [{HIDKeyboardModifierMappingSrc: 0xHIDSRC, «HIDKeyboardModifierMappingDst»: 0xHIDDST,…}.

  3. 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).

  4. Karabiner-Elements - приложение, которое может захватывать ключевые событияСобственный запасной демон iokit и измените его.

  5. Предоставляет ли 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 можно использовать для изменения этих привязок. Другие сопоставления или диагностические инструменты здесь?
...