🐾
NoMachineでLinux→Windows11 home接続でCtrlとCapsLockの変換がうまくいかなかった場合のお話
linuxからリモート接続中のWindowsでCapsLockがCtrlとして認識されない
困ってたこと
NoMachineでリモートのWindows DesktopにログインするとCapsLockがCtrlとして認識されない
LinuxもWindowsもローカルではCapsLockをCtrlとして認識させられてるのになんでだ
環境
接続先はWindows 11 Homeのデスクトップ
接続元とはDebian GNU/Linux sidでThinkpad X13(日本語キーボード)
NoMachineのバージョンは9.2.18-5
。
Windows側で実施してあったこと
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard LayoutでCaps
Lockとctrlの入れ替えを実施してある、直接キーボードを繋いでの操作では効くがリモートからは効かない
Linuxクライアント側で実施してあること
/etc/default/keyboard にて「XKBOPTIONS="ctrl:nocaps"」してあるがリモート時にはたぶんキーボードの情報はXKBOPTIONSを参照せずに行くので意味がない
Windows側で試したこと
PowerToysの「Keyboard Manager」を使ってCapsLockをCtrl、VK 240をCtrlにもい
れたが、(たぶん)Ctrlおしっぱ状態になるのでだめ(日本語IMEの複雑怪奇な挙動原因らしいのでたぶんどうにもならない)
解決方法
接続元のLinuxクライアント側でkeydを使用してキーボードの情報をOSレベルで変換し回避した。
インストール
~$ sudo apt install keyd
設定
/etc/keyd/default.conf をつくって以下にした。
[ids]
*
[main]
capslock = leftcontrol
反映
keydの再起動
~$ sudo systemctl restart keyd
無事にリモート先でもCapsLockがCtrl(正確には左のCtrlだけど)と認識されるようになった。
Discussion