Пользовательский интерфейс моего приложения состоит из двух окон: консоли (обработано ncurses
) и окна X11 для графики. Я хотел бы централизованно обрабатывать ключевые события. То есть независимо от того, какое из двух окон активно, один и тот же цикл событий должен обрабатывать все ключевые события. У меня уже есть цикл событий для событий X11. Все, что еще нужно сделать, - переслать все события консоли в окно X11.Пересылка ncurses ключевых событий в окно X11
Основной строительный блок для этой цели находится here. Единственное, что мне нужно, это уметь переводить из значения, возвращаемого getch()
в X11 keycode
. Примерно через четыре часа поиска в Интернете я нашел код this, который является частью qemu. Однако, когда я сравниваю отображение, которое он предоставляет с выходом xev
, эти два не совпадают. Например, для ключа Home
xev
дает 110, а упомянутое отображение дает 71 | 0x0100, что составляет 327. Являются ли эти два разных типа keycodes
? Что мне не хватает?
Эти два не связаны друг с другом (за исключением тривиального случая, когда используется набор символов POSIX). –
@ThomasDickey Знаете ли вы о любом существующем сопоставлении, которое я могу повторно использовать? – AlwaysLearning
Не из рук в руки: вы можете создать сопоставление от специальных ключей проклятия к специальным клавишам X, но я не помню, чтобы с этой целью можно было использовать таблицу многократного использования. –