私はカーネルバージョン5.12.13とLXQtでVoid Linuxを使っていて、XScreenSaver 6.01を使って画面をロックしたいです。
xscreensaver-auth
ただし、Shiftキーを使用して大文字で書き込むたびにXScreenSaverが遅れるため、画面にパスワードを書き込むのはかなり困難です。いくつかの追加情報をお知らせします。スクリーンセーバーが表示されたら、キーを押してパスワードプロンプトを表示します。最初は約5秒程度の遅延が発生します。 (他のパスワードと関係があるかどうかはわかりません)以前は約5秒程度の遅延がありました。 Shiftキーを離すと(またはCaps Lockキーを無効にすると)同じ動作が発生します。
一部のプロセスにバグがある可能性がありますが、識別できません。アメリカのキーボードレイアウトと同じで、私のキーボードレイアウト(フランス語のキーボードレイアウト)とは関係のないようです。 XScreenSaverの外では、ShiftキーとCaps Lockキーが正しく機能します。グラフィックカードには問題がなく、スクリーンセーバーが正しく表示されます。
xscreensaver
以下は、このオプションを使用して起動したときに私が書いたものを抜粋したものです--verbose
。
xscreensaver-auth: 19:50:34: initial effective uid/gid was root/user (0/1000)
xscreensaver-auth: 19:50:34: changed uid/gid to user/user (1000/1000)
xscreensaver-auth: 19:50:34: running as user "user"
xscreensaver-auth: 19:50:34: PAM: pam_start ("xscreensaver", "user", ...) ==> 0 (Succès)
xscreensaver-auth: 19:50:34: pam_set_item (p, PAM_TTY, ":0") ==> 0 (Succès)
xscreensaver-auth: 19:50:34: pam_authenticate (...) ...
xscreensaver-auth: 19:50:34: pam_conversation (ECHO_OFF="Mot de passe : ") ...
xscreensaver-auth: 19:50:34: theme: default
xscreensaver-auth: 19:50:38: kbd layout: French
xscreensaver-auth: 19:50:38: mouse is at 719,577 on monitor 0 1600x900+0+0 "eDP1"
xscreensaver-auth: 19:50:38: re-creating window: size changed
xscreensaver-auth: 19:50:39: XI RawKeyPress
xscreensaver-auth: 19:50:39: XKB event 2
xscreensaver-auth: 19:50:43: kbd layout: French
xscreensaver-auth: 19:50:44: XI RawKeyPress
xscreensaver-auth: 19:50:44: XI RawKeyRelease
xscreensaver-auth: 19:50:44: XI RawKeyPress
xscreensaver-auth: 19:50:44: XI RawKeyRelease
xscreensaver-auth: 19:50:44: XI RawKeyPress
xscreensaver-auth: 19:50:44: XI RawKeyRelease
xscreensaver-auth: 19:50:45: XI RawKeyPress
xscreensaver-auth: 19:50:45: XI RawKeyRelease
xscreensaver-auth: 19:50:45: XI RawKeyPress
xscreensaver-auth: 19:50:45: XI RawKeyRelease
xscreensaver-auth: 19:50:45: XI RawKeyRelease
xscreensaver-auth: 19:50:45: XKB event 2
xscreensaver-auth: 19:50:49: kbd layout: French
19:50:39にShiftキーを押して19:50:45に放します。
システムロギングヘルプが有効になっています。これページは表示されますが、svlogtail
遅延期間中は何も表示されません。
/var/log/Xorg.0.log
---スクリーンセーバーを起動すると、次のようになります。
[ 18271.902] (EE) event5 - Logitech M215: client bug: event processing lagging behind by 4021ms, your system is too slow
[ 18271.902] (EE) client bug: timer event5 debounce: scheduled expiry is in the past (-3996ms), your system is too slow
[ 18271.902] (EE) client bug: timer event5 debounce short: scheduled expiry is in the past (-4009ms), your system is too slow
[ 18280.862] (II) event0 - AT Translated Set 2 keyboard: SYN_DROPPED event - some input events have been lost.
[ 18302.431] (II) event0 - AT Translated Set 2 keyboard: SYN_DROPPED event - some input events have been lost.
Logitech M215
私のマウスです。
どんなアイデアがありますか?
答え1
xscreensaver
Debian Bookwormバージョン6.02+dfsg1-2でも同様の問題が発見されました。 5秒の遅延ではなくミリ秒の範囲に属しますが、xscreensaver
大文字のパスワード文字を繰り返し落とし、迷惑にするのに十分です。 5.45ではこれは起こりませんでした。
他の場所について話しました。 https://github.com/Zygo/xscreensaver/issues/11
これは、レースを説明するコメントがあるxinput.c
可能性があります。xinput_event_to_xlib_1
The closest thing to actual documentation on XInput2 seems to be a series
of blog posts by Peter Hutterer. There's basically nothing about it on
www.x.org. In http://who-t.blogspot.com/2009/07/xi2-recipes-part-4.html
he says:
"XIDeviceEvent [...] contains the state of the modifier keys [...]
The base modifiers are the ones currently pressed, latched the ones
pressed until a key is pressed that's configured to unlatch it (e.g.
some shift-capslock interactions have this behaviour) and finally
locked modifiers are the ones permanently active until unlocked
(default capslock behaviour in the US layout). The effective modifiers
are a bitwise OR of the three above - which is essentially equivalent
to the modifiers state supplied in the core protocol events."
However, I'm seeing random noise in the various XIDeviceEvent.mods fields.
Nonsensical values like base = 0x6045FB3D. So, let's poll the actual
modifiers from XQueryPointer. This can race: maybe the modifier state
changed between when the server generated the keyboard event, and when
we receive it and poll. However, if an actual human is typing and
releasing their modifier keys on such a tight timeframe... that's
probably already not going well.
I'm also seeing random noise in the event_xy and root_xy fields in
motion events. So just always use XQueryPointer.
私のキーボードには、「時間梗塞」を説明する「クリックレイヤー」があります。
編集:Jamie Zawinski(xscreensaver作成者)といくつかの電子メールをデバッグして交換した後、duplicate_xinput_event_p
パッチを適用しましたxinput.c
。アップストリームで同様または他の方法で変更できます。その間、リンクされたgithubにパッチを投稿します(ここに投稿するには大きすぎるようです)。