Мне удалось получить Python программу для прослушивания Control + Alt + P и Control + Alt + O , даже если у окна нет фокуса.
Однако я не могу захватить <FX86Audio...>
событий, даже если успешно выполняется связывание (если написано правильно).
Вот фрагмент кода, который работает:
Как упоминалось ранее, эти привязки клавиш принимаются, но не работают:
key.bind("<XF86AudioPlay>", self.say, "World :)")
key.bind("<XF86AudioPause>", self.say, "World :(")
key.bind("<AudioPlay>", self.say, "World :/")
Клавиатура работает для паузы и игры с rhythembox
.
Думая, что Unity мешает, я переставил <XF86AudioPlay>
комбинацию клавиш в другую последовательность, но безрезультатно.
На других сайтах он говорит о gsettings
и моё кажется нормальным для Ubuntu 16.04 с интерфейсом Unity:
Ответить на комментарии
Вот xev
вывод:
KeymapNotify event, serial 37, synthetic NO, window 0x0,
keys: 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 37, synthetic NO, window 0x3a00001,
root 0x259, subw 0x0, time 802402347, (1900,975), root:(3820,1027),
state 0x10, keycode 172 (keysym 0x1008ff14, XF86AudioPlay), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Добавление init
и изменение порядка не сделали XF86AudioPlay
работой, но, с другой стороны, не сломались Contr ol + Alt + P и Control + Alt + O , которые продолжают работать.
Вот что я добавил / изменил в порядке:
Keybinder.init()
key = Keybinder # The module to bind keys
key.init() # Call the mainloop something like Gtk.main()
Ответ на комментарий 2
Добавлено:
if not Keybinder.bind("<control><alt>p", A.say, "Bad News 1"):
print "Keybinder.bind() failed 1."
if not Keybinder.bind("<XF86AudioPlay>", A.say, "Bad News 2"):
print "Keybinder.bind() failed 2."
Первая клавиатура успешно, но второй выводит на терминал:
Keybinder.bind() failed 2.