Как эмулировать нажатие клавиши Fn (функциональная клавиша) в xte

xte является частью пакета xautomation. После нескольких часов чтения справочной страницы и поиска документации или рабочих примеров я все еще не могу заставить xte эмулировать нажатие клавиш Fn - F7 .

xte 'keydown Meta_L' 'key F7' 'keyup Meta_L'

Я пробовал Meta_L, Meta_R, Multi_key, клавишу F7, клавишу F7, затем клавишу F7. Кажется, ни одна комбинация не работает.

Есть идеи, как я могу эмулировать нажатие комбинации клавиш клавишей Fn из команды / скрипта?

3
задан 6 March 2018 в 00:52

2 ответа

Это обычно очень хитро или близкое невозможный использовать xte моделировать fn + f ключевые нажатия клавиш, поскольку сам fn ключ не регистрируется вообще в xev, и очень часто fn ключи или fn комбинации не замечены ядром как другие нормальные клавиши на клавиатуре.

Сводка

Мне на самом деле удалось установить три сочетания клавиш (fn + f1, fn + f2 и fn + f3), потому что нажатие каждой из этих комбинаций привело к ядру, выпустив его 'неизвестную клавишу, нажатую... диалог кодов клавиши набора. Это означало, что я смог установить коды клавиши, и затем перейти к диалогу сочетаний клавиш и видеть, был ли keysym присвоен, например, XF86Paste. Если так, было теперь возможно присвоить программу для запуска от них, и было также теперь возможно использовать xte для выдачи следующей команды, которая была эквивалентом нажатия fn + f1 для меня:

xte 'keydown XF86Paste' 'keyup XF86Paste'

Это может быть pecularity одного из моих ноутбуков, что я могу установить три из этих fn комбинаций как нормальные мультимедийные ключи как показано здесь, но я объясню процесс так или иначе для Вас и конкретных шагов, которые я выполнил.


Полное объяснение

Вы не смогли устанавливать ключи, так обычно Вы не можете, но два или три могут быть установленным, как я узнал. Нажмите fn и каждую из функциональных клавиш в свою очередь (f1-f12) при рассмотрении журнала ядра:

tail -f /var/log/kern.log

Если они будут распознаны, то Вы будете видеть ядро scancode:

atkbd serio0: Unknown key pressed (translated set 2, code 0xa7 on isa0060/serio0).   
kernel: [22751.972058] atkbd serio0: Use 'setkeycodes e027 <keycode>' to make it known.

Теперь, например, необходимо настроить эти сочетания клавиш с информацией, данной ядром - т.е. использовать ядро scancode и код клавиши по Вашему выбору (предпочтительно высокое количество, таким образом, это не вмешивается ни во что больше). См. свои текущие коды клавиши с sudo dumpkeys | grep ^keycode, как отмечено в этой полезной Ubuntu статья Wiki.)

Ясно, что, потому что fn не распознан как ключ, но только в сочетании с другим ключом, сочетание клавиш fn + f3, например, рассматривают в действительности как единственный ключ и так можно установить точно так же, как другие единственные мультимедийные кнопки:

sudo setkeycodes e027 135 

Вышеупомянутая команда должна быть введена отдельно для каждого из сочетаний клавиш, которые Вы хотите установить и должны быть размещены в /etc/rc.local (без sudo префикса), если Вы хотите их загруженный на запуске.

Теперь, необходимо проверить, было ли X keysym, связанные с новыми кодами клавиши путем движения в сочетания клавиш и наблюдения, может ли сочетание клавиш, например, fn + F1, быть установлено. Если это может быть, keysym, такой как XF86Paste появится, и ярлык может быть установлен запустить любую программу, которой Вы желаете.

Теперь все необходимо сделать для тестирования этого с xte должен отметить keysym (например, XF86Paste), Вы видели в диалоге сочетаний клавиш для конкретной комбинации (например, fn + f1), и введите соответствующую команду:

xte 'keydown XF86Paste' 'keyup XF86Paste'

Это - эквивалент Вас нажатие и угнетение fn + f1.

Если Вы установили программу для запуска с сочетанием клавиш (fn + f...) assocated с keysym, то xte событие запустит ту программу, и Вы будете знать, что установка работала.


Заключение

Это - способ установить fn + комбинации Функциональной клавиши, но для Вашего ноутбука только будет возможно, если ядро распознает по крайней мере одну из комбинаций как неизвестный, но устанавливаемый ключ. Только fn +f1, fn +f2 и fn + f3 были устанавливаемы для меня, но он будет отличаться для Вашего компьютера. Если Вы хотите экспериментировать с изменением действий Вашего 'сна' fn + кнопка функциональной клавиши, см. эту статью Wiki Ubuntu, но это не может быть абсолютно актуально.

2
ответ дан 6 March 2018 в 00:52

Похоже, что автор (авторы) xte фиксировал/разрешал эту проблему просто.

Как тест, я связал ключ F7 к Аудио Бесшумной функциональности, Затем

echo 'key F7' | xte 

и подтвердил, что ключ F7 был сгенерирован успешно xte.

0
ответ дан 1 December 2019 в 17:19

Другие вопросы по тегам:

Похожие вопросы: