マウスカーソル。
えー、近頃Brynhildrの修正と言いますか不具合対応と言いますかそんな感じの作業をチマチマと行っております。
で、そんな中マウスカーソルの処理についてちょっと悩み中で御座いました。というのも、クライアントモードに「Force Mouse Cursor」という強制的にマウスカーソルを矢印で表示する設定があるのですが、これの使い勝手をもう少し良くしようかと思ってますがどの方向に持っていこうかと考えていた次第で御座いました。
例えば、WindowsVPSをレンタルした時にサーバー側の仮想化ソフトウェアによってはRDPでしかマウスカーソルが表示されない時があります。中身的にはマウスカーソルの形状取得に失敗しております。そんな時はクライアント側に矢印でマウスカーソルを表示させないと非常に操作がしにくいのです。あと、WindowsMediaPlayerやスクリーンセーバーでもマウスカーソルを消すといった処理がなされます。そんなサーバー側でマウスカーソルは消えた時の処理をどうしようかと考えていた次第で御座いました。
さて、ちなみにBrynhildrはサーバー側でマウスを動かした場合は、画像にマウスカーソルを合成、クライアント側でマウスを動かした場合は、クライアント側にマウスカーソルの形状を送りマウスカーソルの形状を変更させています。そうする事で視覚的にわかりやすくし、レスポンスを向上させています。
という事で、次のバージョンではそのマウスカーソルの形状の仕組みを変更して「Force Mouse Cursor」は矢印マウスカーソルで固定では無く、サーバー側のマウスカーソルが消えた場合or取得できない時に、クライアント側を矢印マウスカーソルを表示/非表示という仕様に変更したいと思います。ですので「Force Mouse Cursor」がONの時でも普通にマウスカーソルの形状が変化しますので、基本ONで良い事になるかと思います。
あと、マウスカーソル関連で不具合を1つ見つけまして、クライアント側のマウスカーソルを変更させて表示させてると先述しましたが、例えば黒色のみで構成されたマウスカーソルが転送できていない事がありましたので修正しました。サーバー側のマウスカーソルを動かした時は問題無いのですが、クライアント側を動かした時にはマウスカーソルが表示されないといった事になっていました。原因はマスクとかそーゆー絡みだったのですが、初期化をZeroMemoryで行っていたのがまずかったですね。その後にマスクの値と比較して0x01に変更してみました。何を言ってるか不明ですよね、これ。まー、自分用のメモっつー事で。
ちなみにOrthrosから接続の時は上記のいずれも該当しないのでスルーという話で御座います。
そんなこんなで今後はWindowsOSもクラウド化になり、サーバー側のOSをリモートで操作する事が当たり前の時代も来るかもしてません。今のWindowsVPSに接続するようなスタイルですかね。ちょっとその辺の事も考えてマウスカーソル1つにとっても仕様を考えるって非常に大変と思う次第で御座います。
いやー、マウスカーソルってホント奥が深いですね。
で、そんな中マウスカーソルの処理についてちょっと悩み中で御座いました。というのも、クライアントモードに「Force Mouse Cursor」という強制的にマウスカーソルを矢印で表示する設定があるのですが、これの使い勝手をもう少し良くしようかと思ってますがどの方向に持っていこうかと考えていた次第で御座いました。
例えば、WindowsVPSをレンタルした時にサーバー側の仮想化ソフトウェアによってはRDPでしかマウスカーソルが表示されない時があります。中身的にはマウスカーソルの形状取得に失敗しております。そんな時はクライアント側に矢印でマウスカーソルを表示させないと非常に操作がしにくいのです。あと、WindowsMediaPlayerやスクリーンセーバーでもマウスカーソルを消すといった処理がなされます。そんなサーバー側でマウスカーソルは消えた時の処理をどうしようかと考えていた次第で御座いました。
さて、ちなみにBrynhildrはサーバー側でマウスを動かした場合は、画像にマウスカーソルを合成、クライアント側でマウスを動かした場合は、クライアント側にマウスカーソルの形状を送りマウスカーソルの形状を変更させています。そうする事で視覚的にわかりやすくし、レスポンスを向上させています。
という事で、次のバージョンではそのマウスカーソルの形状の仕組みを変更して「Force Mouse Cursor」は矢印マウスカーソルで固定では無く、サーバー側のマウスカーソルが消えた場合or取得できない時に、クライアント側を矢印マウスカーソルを表示/非表示という仕様に変更したいと思います。ですので「Force Mouse Cursor」がONの時でも普通にマウスカーソルの形状が変化しますので、基本ONで良い事になるかと思います。
あと、マウスカーソル関連で不具合を1つ見つけまして、クライアント側のマウスカーソルを変更させて表示させてると先述しましたが、例えば黒色のみで構成されたマウスカーソルが転送できていない事がありましたので修正しました。サーバー側のマウスカーソルを動かした時は問題無いのですが、クライアント側を動かした時にはマウスカーソルが表示されないといった事になっていました。原因はマスクとかそーゆー絡みだったのですが、初期化をZeroMemoryで行っていたのがまずかったですね。その後にマスクの値と比較して0x01に変更してみました。何を言ってるか不明ですよね、これ。まー、自分用のメモっつー事で。
ちなみにOrthrosから接続の時は上記のいずれも該当しないのでスルーという話で御座います。
そんなこんなで今後はWindowsOSもクラウド化になり、サーバー側のOSをリモートで操作する事が当たり前の時代も来るかもしてません。今のWindowsVPSに接続するようなスタイルですかね。ちょっとその辺の事も考えてマウスカーソル1つにとっても仕様を考えるって非常に大変と思う次第で御座います。
いやー、マウスカーソルってホント奥が深いですね。