Der erste wichtige Punkt, den Sie beachten sollten, ist das Deaktivieren der Tastenwiederholung für alle Eingaben, einschließlich der virtuellen Maschine oder RDP-Sitzung, über die Sie eine Verbindung herstellen, sowie für die Hostmaschine der obersten Ebene. Dies behebt nicht den endgültigen Zielcomputer, trägt jedoch erheblich zur Verbesserung der Situation bei.
Wie für die Zielmaschine:
Es gibt Berichte, wonach die Verwendung von ssh zum Herstellen einer Verbindung mit dem SSH-Port von HP iLO Schlüsselwiederholungsprobleme vermeidet. Diese Methode konnte ich jedoch nicht verwenden, da mein Host (online.net) Port 22 nicht durch seine iLO-Firewall ließ. Wenn Sie jedoch Zugriff auf den SSH-Port von iLO haben (wahrscheinlich 22), scheint dies der einfachste Ansatz zu sein.
Ich habe versucht, die Tastaturwiederholrate und die Verzögerungszeit beim Booten mit einer Systemeinheit einzustellen:
# Note that kbdrate only affects existing keyboards, and HP iLO attaches a new
# USB keyboard when you connect, so you may have to reboot (with the iLO console
# attached) to get the keyboard delay and repeat rate to take effect.
[Unit]
Description=Set longer delay time for key repeat
[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=tty
StandardOutput=tty
ExecStart=/sbin/kbdrate -d 1000 -r 2
[Install]
WantedBy=multi-user.target
WantedBy=rescue.target
(Stellen Sie sicher, /sbin/kbdrate
wo Sie haben kbdrate
. Schreiben Sie an /etc/systemd/systemd/slower-keyboard-repeat.service
und systemctl daemon-reload && systemctl enable slower-keyboard-repeat.service
)
Wie im Kommentar erwähnt, war dies jedoch nur ein Teilerfolg, da ein Neustart erforderlich war, um die Wiederholungsrate für die neue Tastatur festzulegen, die iLO anfügt. Aber es ist gut genug, wenn Sie den Computer neu starten können.
Letztendlich habe ich den Linux-Kernel gepatcht, um die Standardwiederholrate und -verzögerungszeit auf allen Tastaturen zu ändern:
From 78c32f539b89bf385985bea47a7058a540d31da0 Mon Sep 17 00:00:00 2001
From: Ivan Kozik <ivan@ludios.org>
Date: Thu, 30 Mar 2017 13:31:17 +0000
Subject: [PATCH] Increase the default keyboard repeat delay from 250ms to
1000ms and repeat rate from 1000/33 Hz to 1000/500 Hz to avoid unintentional
repeated keystrokes when using remote consoles such as HP iLO over
high-latency links. These consoles (HP iLO included) often transmit key
states (up/down) instead of keystrokes, making it impossible to even enter a
password and log in.
Fixing this in the kernel avoids problems with kbdrate where the parameters
passed to kbdrate don't apply to the new keyboards attached by HP iLO.
---
drivers/input/input.c | 2 +-
drivers/input/keyboard/atkbd.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 880605959aa6..a195af2d062a 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -2126,7 +2126,7 @@ int input_register_device(struct input_dev *dev)
* is handled by the driver itself and we don't do it in input.c.
*/
if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD])
- input_enable_softrepeat(dev, 250, 33);
+ input_enable_softrepeat(dev, 1000, 500);
if (!dev->getkeycode)
dev->getkeycode = input_default_getkeycode;
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index ec876b5b1382..9dd04c2215b3 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -1096,8 +1096,8 @@ static void atkbd_set_device_attrs(struct atkbd *atkbd)
BIT_MASK(LED_MUTE) | BIT_MASK(LED_MISC);
if (!atkbd->softrepeat) {
- input_dev->rep[REP_DELAY] = 250;
- input_dev->rep[REP_PERIOD] = 33;
+ input_dev->rep[REP_DELAY] = 1000;
+ input_dev->rep[REP_PERIOD] = 500;
}
input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) :
--
2.11.0
und das löste das problem für mich.