vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
В мониторе QEMU есть команда sendkey. Правда, она почти не документирована.
Только в каком-то левом Wiki удалось нарыть таблицу названий клавиш, причем не полную и по состоянию на qemu 0.12.

Пришлось RTFS заняться. Но теперь у меня в документации на vws есть таблица, в которой по крайней мере все нормальные клавиши с алфавитно-цифровой клавиатуры описаны (включая grave_accent, bracket_left и bracket_right).

Правда, вот возможность сделать
vws sendkey machine "Hello, kitty!" 


я туда не приделал. Просто потому что из qemu монитора нет никакой возможости узнать в какой раскладке сегодня клавиатура виртуальной машины. (и даже состояния caps lock и num lock).
Поэтому если я туда пошлю что-то вроде

vws sendkey WinSrv2008 ctrl-shift shift-r b c f comma spc r e minus r e shift-1

может быть получится "Киса, ку-ку!", а может и нет.

Date: 2019-10-04 01:27 pm (UTC)
avnik: (Default)
From: [personal profile] avnik
Там все плохо. RDP оперирует сканкодами клавиатуры, +там специальный хак который позволяет вставить unicode symbol. Так вот этот символ xrdp транслирует.... правильно, в сканкод.
Вот я ему нагенерил таблицу сканкодов несуществующих клавиш с кодами 210-243, и сделал для них xkb раскладку. Но с этим не все приложения живут (нормальные -- живут, а вот вайн мне патчить пришлось, потому что он считает символы для которых нет сканкода несуществующими. Ужасные подробности есть в багтрекере вайна, потому что если XLookupString возвращает для инпута валидный юникод, то символ должен вводиться не смотря на все внутренние хаки для игрушек).

Date: 2019-10-04 01:48 pm (UTC)
avnik: (Default)
From: [personal profile] avnik
ты про xrdp или про freerdp? К первому у меня есть кривопатч, который надо рефакторить в нормальный патч и опцию в модуле иксов типа "Option XKBReloadOnReconnect yes/always/never . Но у меня мотивации нет.

Date: 2019-10-07 12:24 pm (UTC)
avnik: (Default)
From: [personal profile] avnik
Ну по идее там есть скрипт-коллбек, который вызывается при реконнекте (сервером), и есть место где шлется сигнал на то, что у нас клавиатура сменилась (unconditionally в ту, которая в их внутренней таблице соотвествует языку который ты показал при коннекте в rdp). На то что в некоторых языках латиницы нет, и нужны две раскладки -- забили болт как обычно (вводите команды и пароли на кириллице, не обляпайтесь).

Я могу показать место в исходниках иксового модуля где это происходит -- https://github.com/neutrinolabs/xorgxrdp/blob/devel/xrdpkeyb/rdpKeyboard.c#L860 вот собственно

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4 56 7
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 01:41 pm
Powered by Dreamwidth Studios