普段開発だ、検証作業だなどをしていると、色々なOSを横断して使ったりすることがよくあります。
Windowsであればリモートデスクトップが使えます。 一方、macOSとかLinuxだとVNCがよく使われます*1。デスクトップ環境がインストールされていないLinuxであればSSHを使いますけどね。
普段はmacOSで作業しているので他のOSのデスクトップ環境にアクセスしたい場合はVNCをよく使うのですが、VNC接続だとよくキーボードアサインがおかしくなります。症状としてありがちなのが、アットマークとかバックスラッシュが打てないとかですね。特に致命的なのがバックスラッシュで、これが打てないとWindowsの場合、コマンドプロンプトやPowerShell、エクスプローラーで、パスの移動ができずに困ったことになります。
とりあえずしばらくはソフトウェアキーボードを使ってしのいでいました。しかし、コマンドプロンプトでパス移動するのが多くなってきて流石にこれではまずいと思い、調べることにしました。
ちなみにWindows 11では「時刻と言語 > 入力」の設定で、「タッチキーボードを表示」のところを「常に表示する」に変更すると、右下にキーボードのアイコンが表示されるようになり、クリックでソフトウェアキーボードを表示できます。
アットマークは、USキーボードだと「2」の位置にあります。それで打てれば良いですが、駄目ならソフトウェアキーボードを使うと良いと思います。アットマークなんて滅多に打たないでしょうし。
設定を変えると思ったように動く
症状で調べたら出てきた情報がこれです。
UltraVNCのAdmin Propertiesを開いて、左下の「Advanced options」を開き、Keyboard & Mouseの設定の中の「Alternate keyboard」の設定を変更して「OK」ボタンを押し、次の画面で「VNC Serverがデバイスに変更を加えることを許可して良いか」と聞かれるので、「はい」ボタンを押すだけで解消されました。設定を変更するだけで再接続することなくキー入力ができるようになりました。こんな簡単なことだったんですね。
先程のサイトにはクライアントの設定変更についても書かれていましたが、macOS標準のVNCクライアントでは設定変更は不要でした。ちなみにmacOS Sonoma環境で確認しています。
macOS Sonomaで画面共有アプリが刷新したらしく、従来よりもVNCアクセスがスムーズに動作して良い感じです。 こんな感じの接続リストアプリみたいなものも用意されています。
従来は「コマンド」+「K」で表示される「サーバーへ接続」アプリで接続みたいな感じでしたが、ほかのリモートアクセスクライアントのような見た目のクライアントも用意されています。
*1:最近のUbuntu Desktopとかだと、接続にVNCのほかRDPプロトコルを使ってアクセス可能になっており、好きなプロトコルで接続できて便利です。つまり、Ubuntu Desktopでマイクロソフトのリモートデスクトップクライアントから接続できるようになります