ScrollLock キーをダブルタップしても KVM ターゲット マシンを変更できない

ScrollLock キーをダブルタップしても KVM ターゲット マシンを変更できない

Belkin KVM スイッチを使用しています。通常は、スクロール ロックをダブルタップして、切り替え先のマシンに対応する番号を選択できますが、12.10 から 13.04 Beta 2 にアップグレードしてからは、スクロール ロックをダブルタップしてもマシンが変更されなくなりました。

私は、この「ダブルタップ」はKVMユニットにハードコードされており、いつもうまくいきましたが、どうやら間違っていたようです。

誰か何かアイデアはありますか? KVM は Belkin 2 ポート 1DL102P (ケーブルとオーディオ サポートが内蔵) で、ユニット自体にボタンがないため、「手動オーバーライド」や「ハード リセット」ボタンはありません。

次のようになります:

ベルキン 2ポート 1DL102P

ご意見、アイデア、提案などはありますか? 何らかのキーバインディングの不具合でしょうか?

答え1

このスクリプトを呼び出すと切り替わりますか?

#!/bin/bash
SLEEP=0.2
LEDMASK=4
LEDNAME="Scroll Lock"

xmessage -timeout 1 "Switching..." &

STATE="$(( $(xset q | awk '/LED/ {print $10}') & LEDMASK ))"

test $STATE -eq $LEDMASK && xset -led named "$LEDNAME" && sleep $SLEEP
xset led named "$LEDNAME"  
sleep $SLEEP
xset -led named "$LEDNAME" 
sleep $SLEEP
xset led named "$LEDNAME"  
test $STATE -ne $LEDMASK && sleep $SLEEP && xset -led named "$LEDNAME"

答え2

OK、両方のマシンから KVM の kbd/マウス アダプターを取り外し、再度差し込むと、一種の「ハード リセット」が機能したようです。これで再び動作するようになりました。

このユニットは AC アダプターを使用する代わりに PS2 ポートから電力を供給するため、PS2 ケーブルを抜くと問題が解決しました。

答え3

uli42 さんの回答は、私の Syba KVM で動作したときに役立ちました。KVM は、キーボードから PC への「キーが押された」信号ではなく、PC からキーボードへの「LED がセットされた」信号をリッスンします。おそらく、KVM を購入したパワー ユーザーがキーマップをカスタマイズした場合に、OS のさまざまなキーボード レイアウトのサポートと Just Work™ を利用できるようにするためでしょう。

実際、私の Syba KVM のマニュアルには、その機能は「Windows でのみ動作する」と書かれていましたが、後から考えてみると、それが大きな手がかりでした。

(macOS には Scroll Lock の概念がなく、LED を切り替えることができませんが、X11 のデフォルトのキーボード設定では、Scroll Lock は長い間バインドされていません。)

次のようなバインディングを再度追加すると、 xmodmap -e 'add mod3 = Scroll_Lock'Windows と同様に X11 でも動作するようになります。

(テストする時間はありませんが、スクロール ロック LED を切り替える何らかのスクリプトを作成し、それを F14 にバインドすることで、どの Mac でも同じ筋肉記憶を機能させることができると思います。)

「Scroll Lock」と F14 の両方が表示された Apple キーボードと代替キーキャップ

Wayland に関しては、特定の DE の開発者に問い合わせてください。最後に調べたところ、libinput の作者は、、などのコマンドに相当する独自のソリューションの開発を各 Wayland コンポジターに任せていましxmodmapsetxkbmap

mod3あるいは、バインドせずに、キー押下xbindkeysで次のようなスクリプトを実行するなどして、 1 回のキー押下で済ませることもできますScroll_Lock

#!/bin/sh
LEDNAME="Scroll Lock"

echo "Switching KVM..."
xset led named "$LEDNAME"
sleep 0.5
xset -led named "$LEDNAME"

関連情報