Ярлыки клавиш перестают работать с перерывами

edit: Как видно из ответа, это фактически не имело ничего общего с режимом ожидания или спящего режима, но скорее это коррелировало со мной, часто закрывая окно приложения (которое вызвало ошибку), прежде чем переходить в режим ожидания большую часть времени .

Я видел, как несколько человек сообщают об этом в разных местах в сети, без какого-либо решения, но подумали, что я добавлю мое в любом случае:

Очень часто после возвращения в компьютер через некоторое время (когда он перешел в режим ожидания), я заметил, что некоторые ярлыки перестали работать. Это делает edit: Как видно из ответа, это фактически не имело ничего общего с режимом ожидания или спящего режима, а скорее, что оно коррелировало со мной, часто закрывая окно приложения (которое вызвало ошибку), прежде чем переходить в режим ожидания большей части время. происходит в терминале, но также в Chrome (Ctrl-L, Ctrl-R, F5 все перестает работать). Это также не влияет на все ctrl-ярлыки: Ctrl-C все еще работает, например (слава богу!).

Есть ли способ отладки этого?

edit: Я вижу, что что-то странное происходит с помощью Ctrl- R

Что-то захватывает комбинацию клавиш!

Вывод, снятый с xev

KeyPress event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24547557, (-130,529), root:(0,633), state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False FocusOut event, serial 37, synthetic NO, window 0x5200001, mode NotifyGrab, detail NotifyAncestor FocusIn event, serial 37, synthetic NO, window 0x5200001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 37, synthetic NO, window 0x0, keys: 4294967278 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 KeyRelease event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24548550, (-130,529), root:(0,633), state 0x14, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

edit: Я вижу, что что-то странное происходит с Ctrl-R

мы можем легко увидеть четыре логических события, происходящих здесь

KeyPress event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24724066, (572,852), root:(702,956), state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyPress event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24724818, (572,852), root:(702,956), state 0x14, keycode 54 (keysym 0x63, c), same_screen YES, XLookupString gives 1 bytes: (03) "" XmbLookupString gives 1 bytes: (03) "" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24724966, (572,852), root:(702,956), state 0x14, keycode 54 (keysym 0x63, c), same_screen YES, XLookupString gives 1 bytes: (03) "" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 24725339, (572,852), root:(702,956), state 0x14, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
2
задан 17 June 2017 в 13:18

3 ответа

Мне удалось найти самого неподдельного преступника: приложение Caprine Messenger! Это может также произойти со многими другими приложениями, выполненными с помощью схемы Electron (Spotify, Atom, VS Code), пока ошибка в библиотеке ярлыков не будет исправлена.

Теперь я знаю, как последовательно воспроизводить ошибку Приложение Caprine Messenger. : просто закройте приложение, чтобы оно просто находилось в системном трее. Но до того, как я добрался туда, мне удалось найти неопровержимые доказательства того, что именно Каприн захватил ярлык, и это убило его, решив проблему. Вот как я узнал (может быть использован для подобных ситуаций):

Несколько непрозрачный ответ на дублированный вопрос об этом объяснил, что можно было обнаружить, какое приложение захватывало ключи, издавая некоторые волшебные нажатия клавиш , Сначала я не совсем понял, как все это сделать, думая, что мне нужно пройти через всевозможные обручи (возиться с конфигурацией Xorg, отключить vty-переключение, ++), чтобы настроить специальную конфигурацию клавиатуры, пока мне не пришло в голову, что ответ на самом деле также рассказал о том, как программно запускать эти комбинации клавиш!

Итак, все, что мне нужно было сделать, это открыть два окна терминала. В первом окне терминала я начал регистрировать события в системе Xorg:

tail -f /var/log/Xorg.0.log > out.txt

В другом окне я запускал события, которые испускали комбинации клавиш в систему Xorg:

KEY="ctrl+r"                  # the combination that was "grabbed"
xdotool keydown ${KEY};       # start pressing the key combo
xdotool key XF86LogGrabInfo;  # the keysym that when emitted asks X to print info on the grabber of the current keys
xdotool keyup ${KEY}          # stop pressing the key combo
[d9 ] Выполнение этого несколько непрозрачного ответа на дублирующий вопрос об этом , как это было намного проще, чем делать это вручную, как осьминог пальца :-) В журнале событий, снятых в другом окне (13 000 строк !) интересные биты были очевидны в первых нескольких строках:

[ 24264.517]     detail 71 (mask 0), modifiersDetail 128 (mask 0)
[ 24264.517]     device 'Virtual core keyboard' (3), modifierDevice 'Virtual core keyboard' (3)
[ 24264.517]     core event mask 0x3
[ 24264.517]     owner-events false, kb 1 ptr 1, confine 0x0, cursor 0x0
[ 24264.517]   Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f 
[ 24264.517]   Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f 
[ 24264.517]   Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp 
[ 24264.517]   Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp 
[ 24264.517]   Printing all registered grabs of client pid 18336 xdotool key XF86LogGrabInfo
[ 24264.517] End list of registered passive grabs
[ 24308.177] (II) Printing all currently active device grabs:
[ 24308.177] Active grab 0x44800160 (core) on device 'Virtual core keyboard' (3):
[ 24308.177]       client pid 5614 /opt/Caprine/caprine 
[ 24308.177]       at 24308139 (from passive grab) (device thawed, state 1)
[ 24308.177]         core event mask 0x3
[ 24308.177]       passive grab type 2, detail 0x1b, activating key 27
[ 24308.177]       owner-events false, kb 1 ptr 1, confine 0, cursor 0x0
[ 24308.177] (II) End list of active device grabs

После убийства Каприна я мог бы наконец снова использовать Ctrl-R в терминале, чтобы выполнять обратный поиск истории, а также обновлять Chrome ! xev также выводит что-то совершенно отличное от того, что я подробно изложил в вопросе, теперь очень похоже на вывод из Ctrl-L:

KeyPress event, serial 39, synthetic NO, window 0x5200001,
    root 0xee, subw 0x0, time 25356738, (917,877), root:(1047,981),
    state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 39, synthetic NO, window 0x5200001,
    root 0xee, subw 0x0, time 25357181, (917,877), root:(1047,981),
    state 0x14, keycode 27 (keysym 0x72, r), same_screen YES,
    XLookupString gives 1 bytes: (12) ""
    XmbLookupString gives 1 bytes: (12) ""
    XFilterEvent returns: False

KeyRelease event, serial 39, synthetic NO, window 0x5200001,
    root 0xee, subw 0x0, time 25357315, (917,877), root:(1047,981),
    state 0x14, keycode 27 (keysym 0x72, r), same_screen YES,
    XLookupString gives 1 bytes: (12) ""
    XFilterEvent returns: False

KeyRelease event, serial 39, synthetic NO, window 0x5200001,
    root 0xee, subw 0x0, time 25357710, (917,877), root:(1047,981),
    state 0x14, keycode 105 (keysym 0xffe4, Control_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

edit: Оказывается, ошибка известна

Проблема с ошибкой также показывает, как последовательно воспроизводить это (свести к минимуму). Это было вызвано ошибкой в ​​библиотеке электронно-локальных объектов.

Создал электронный localshortcut , чтобы с легкостью отправить эти ярлыки программным путем.

3
ответ дан 22 May 2018 в 21:30

Мне удалось найти самого неподдельного преступника: приложение Caprine Messenger! Это может также произойти со многими другими приложениями, выполненными с помощью схемы Electron (Spotify, Atom, VS Code), пока ошибка в библиотеке ярлыков не будет исправлена.

Теперь я знаю, как последовательно воспроизводить ошибку Приложение Caprine Messenger. : просто закройте приложение, чтобы оно просто находилось в системном трее. Но до того, как я добрался туда, мне удалось найти неопровержимые доказательства того, что именно Каприн захватил ярлык, и это убило его, решив проблему. Вот как я узнал (может быть использован для подобных ситуаций):

Несколько непрозрачный ответ на дублированный вопрос об этом объяснил, что можно было обнаружить, какое приложение захватывало ключи, издавая некоторые волшебные нажатия клавиш , Сначала я не совсем понял, как все это сделать, думая, что мне нужно пройти через всевозможные обручи (возиться с конфигурацией Xorg, отключить vty-переключение, ++), чтобы настроить специальную конфигурацию клавиатуры, пока мне не пришло в голову, что ответ на самом деле также рассказал о том, как программно запускать эти комбинации клавиш!

Итак, все, что мне нужно было сделать, это открыть два окна терминала. В первом окне терминала я начал регистрировать события в системе Xorg:

tail -f /var/log/Xorg.0.log > out.txt

В другом окне я запускал события, которые испускали комбинации клавиш в систему Xorg:

KEY="ctrl+r" # the combination that was "grabbed" xdotool keydown ${KEY}; # start pressing the key combo xdotool key XF86LogGrabInfo; # the keysym that when emitted asks X to print info on the grabber of the current keys xdotool keyup ${KEY} # stop pressing the key combo

Выполнение этого несколько непрозрачного ответа на дублирующий вопрос об этом , как это было намного проще, чем делать это вручную, как осьминог пальца :-) В журнале событий, снятых в другом окне (13 000 строк !) интересные биты были очевидны в первых нескольких строках:

[ 24264.517] detail 71 (mask 0), modifiersDetail 128 (mask 0) [ 24264.517] device 'Virtual core keyboard' (3), modifierDevice 'Virtual core keyboard' (3) [ 24264.517] core event mask 0x3 [ 24264.517] owner-events false, kb 1 ptr 1, confine 0x0, cursor 0x0 [ 24264.517] Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f [ 24264.517] Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f [ 24264.517] Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp [ 24264.517] Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp [ 24264.517] Printing all registered grabs of client pid 18336 xdotool key XF86LogGrabInfo [ 24264.517] End list of registered passive grabs [ 24308.177] (II) Printing all currently active device grabs: [ 24308.177] Active grab 0x44800160 (core) on device 'Virtual core keyboard' (3): [ 24308.177] client pid 5614 /opt/Caprine/caprine [ 24308.177] at 24308139 (from passive grab) (device thawed, state 1) [ 24308.177] core event mask 0x3 [ 24308.177] passive grab type 2, detail 0x1b, activating key 27 [ 24308.177] owner-events false, kb 1 ptr 1, confine 0, cursor 0x0 [ 24308.177] (II) End list of active device grabs

После убийства Каприна я мог бы наконец снова использовать Ctrl-R в терминале, чтобы выполнять обратный поиск истории, а также обновлять Chrome ! xev также выводит что-то совершенно отличное от того, что я подробно изложил в вопросе, теперь очень похоже на вывод из Ctrl-L:

KeyPress event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25356738, (917,877), root:(1047,981), state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyPress event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357181, (917,877), root:(1047,981), state 0x14, keycode 27 (keysym 0x72, r), same_screen YES, XLookupString gives 1 bytes: (12) "" XmbLookupString gives 1 bytes: (12) "" XFilterEvent returns: False KeyRelease event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357315, (917,877), root:(1047,981), state 0x14, keycode 27 (keysym 0x72, r), same_screen YES, XLookupString gives 1 bytes: (12) "" XFilterEvent returns: False KeyRelease event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357710, (917,877), root:(1047,981), state 0x14, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

edit: Оказывается, ошибка известна

Проблема с ошибкой также показывает, как последовательно воспроизводить это (свести к минимуму). Это было вызвано ошибкой в ​​библиотеке электронно-локальных объектов.

Создал электронный localshortcut , чтобы с легкостью отправить эти ярлыки программным путем.

3
ответ дан 18 July 2018 в 11:36

Мне удалось найти самого неподдельного преступника: приложение Caprine Messenger! Это может также произойти со многими другими приложениями, выполненными с помощью схемы Electron (Spotify, Atom, VS Code), пока ошибка в библиотеке ярлыков не будет исправлена.

Теперь я знаю, как последовательно воспроизводить ошибку Приложение Caprine Messenger. : просто закройте приложение, чтобы оно просто находилось в системном трее. Но до того, как я добрался туда, мне удалось найти неопровержимые доказательства того, что именно Каприн захватил ярлык, и это убило его, решив проблему. Вот как я узнал (может быть использован для подобных ситуаций):

Несколько непрозрачный ответ на дублированный вопрос об этом объяснил, что можно было обнаружить, какое приложение захватывало ключи, издавая некоторые волшебные нажатия клавиш , Сначала я не совсем понял, как все это сделать, думая, что мне нужно пройти через всевозможные обручи (возиться с конфигурацией Xorg, отключить vty-переключение, ++), чтобы настроить специальную конфигурацию клавиатуры, пока мне не пришло в голову, что ответ на самом деле также рассказал о том, как программно запускать эти комбинации клавиш!

Итак, все, что мне нужно было сделать, это открыть два окна терминала. В первом окне терминала я начал регистрировать события в системе Xorg:

tail -f /var/log/Xorg.0.log > out.txt

В другом окне я запускал события, которые испускали комбинации клавиш в систему Xorg:

KEY="ctrl+r" # the combination that was "grabbed" xdotool keydown ${KEY}; # start pressing the key combo xdotool key XF86LogGrabInfo; # the keysym that when emitted asks X to print info on the grabber of the current keys xdotool keyup ${KEY} # stop pressing the key combo

Выполнение этого несколько непрозрачного ответа на дублирующий вопрос об этом , как это было намного проще, чем делать это вручную, как осьминог пальца :-) В журнале событий, снятых в другом окне (13 000 строк !) интересные биты были очевидны в первых нескольких строках:

[ 24264.517] detail 71 (mask 0), modifiersDetail 128 (mask 0) [ 24264.517] device 'Virtual core keyboard' (3), modifierDevice 'Virtual core keyboard' (3) [ 24264.517] core event mask 0x3 [ 24264.517] owner-events false, kb 1 ptr 1, confine 0x0, cursor 0x0 [ 24264.517] Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f [ 24264.517] Printing all registered grabs of client pid 5643 /opt/Caprine/caprine --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,23,59,71 --gpu-vendor-id=0x8086 --gpu-device-id=0x5916 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --service-request-channel-token=B68A5099B5760C39675F51019B3D4F7A --v8-natives-passed-by-fd --v8-snapshot-passed-by-f [ 24264.517] Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp [ 24264.517] Printing all registered grabs of client pid 5684 /usr/lib/slack/slack --disable-gp [ 24264.517] Printing all registered grabs of client pid 18336 xdotool key XF86LogGrabInfo [ 24264.517] End list of registered passive grabs [ 24308.177] (II) Printing all currently active device grabs: [ 24308.177] Active grab 0x44800160 (core) on device 'Virtual core keyboard' (3): [ 24308.177] client pid 5614 /opt/Caprine/caprine [ 24308.177] at 24308139 (from passive grab) (device thawed, state 1) [ 24308.177] core event mask 0x3 [ 24308.177] passive grab type 2, detail 0x1b, activating key 27 [ 24308.177] owner-events false, kb 1 ptr 1, confine 0, cursor 0x0 [ 24308.177] (II) End list of active device grabs

После убийства Каприна я мог бы наконец снова использовать Ctrl-R в терминале, чтобы выполнять обратный поиск истории, а также обновлять Chrome ! xev также выводит что-то совершенно отличное от того, что я подробно изложил в вопросе, теперь очень похоже на вывод из Ctrl-L:

KeyPress event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25356738, (917,877), root:(1047,981), state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyPress event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357181, (917,877), root:(1047,981), state 0x14, keycode 27 (keysym 0x72, r), same_screen YES, XLookupString gives 1 bytes: (12) "" XmbLookupString gives 1 bytes: (12) "" XFilterEvent returns: False KeyRelease event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357315, (917,877), root:(1047,981), state 0x14, keycode 27 (keysym 0x72, r), same_screen YES, XLookupString gives 1 bytes: (12) "" XFilterEvent returns: False KeyRelease event, serial 39, synthetic NO, window 0x5200001, root 0xee, subw 0x0, time 25357710, (917,877), root:(1047,981), state 0x14, keycode 105 (keysym 0xffe4, Control_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

edit: Оказывается, ошибка известна

Проблема с ошибкой также показывает, как последовательно воспроизводить это (свести к минимуму). Это было вызвано ошибкой в ​​библиотеке электронно-локальных объектов.

Создал электронный localshortcut , чтобы с легкостью отправить эти ярлыки программным путем.

3
ответ дан 24 July 2018 в 19:49

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

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