キー入力とマウス
#また横道に逸れますが…
Brynhildrサーバに、デバイスの入力(PCだと主にキーボード、マウスですね)を連絡する必要がありますが、その通信内容、手順の詳細は問い合わせ中なので、そこで必要になるであろう情報について考えました。
キーボードだと、どのキーを押したかですね。これは遥か昔に書いたのですけど、イベントという形で伝わります。
Keyを押した時: void keyPressEvent(QKeyEvent *event)
Keyを離した時: void keyReleaseEvent(QKeyEvent *event)
がそれぞれ呼ばれます。引数eventに押されたキーなどの情報が入っていますので、これから情報を取得することになります。Qt AssistantでQKeyEventを検索してみます。
QKeyEvent::key()というメンバ関数でどのキーか分かるようです。返ってくる値はQt::Key_????というような値だそうです。例えば、右カーソルキーなら、Qt::Key_Right, '+'ならQt::Key_Plusです。Qt AssistantのQKeyEventのメンバ関数key()の記述の近くにあるQt::Keyというリンクをクリックすると一覧が見られます。enum Qt::Keyと定義されているようです。例えば、こんな感じです。プログラム中では、Qt::Key_????を使うことになります。
Qt::Key_SysReq 0x0100000a Qt::Key_Clear 0x0100000b Qt::Key_Home 0x01000010 Qt::Key_End 0x01000011 Qt::Key_Left 0x01000012 Qt::Key_Up 0x01000013 Qt::Key_Right 0x01000014 Qt::Key_Down 0x01000015
Qt NamespaceでAt Assinstantを検索すると、すべてのQtの名前空間での定数値を調べられます。
これらのキー情報を、Brynhildrサーバさんが解釈できる情報に変換してあげる必要があります、たぶん。
Brynhildrサーバさんは、Qtのキー情報を知っているはずがないのでこの値を送っても、知らないよって言われます(^_^;
次は、マウスの情報です。マウスの情報といえば、とりあえず思いつくところでは、ウィンドウ内の位置(x,y)、押されたボタン(右、左)、離されたボタン(右、左)、くらいしか思いつかないのですが、早速Qt Assistantで調べてみます。
なんか、こんな感じの関数が呼ばれるようです。
マウスボタンを押した時 void mousePressEvent(QMouseEvent *event)
マウスボタンを離した時 void mouseReleaseEvent(QMouseEvent *event)
マウスを動かした時 void mouseMoveEvent(QMouseEvent *event)
他にあります。
基本的にはQMouseEventというものとして、情報が渡されるようです。# QWheelEventというものもあるそうですが。
検索して、メンバー関数をさらっと眺めるといろいろと情報が渡ってくるのが分かります。
ウィンドウ内の位置(x,y)、デスクトップ内の位置(x,y)、どのボタン、といった情報のようです。
恐らくBrynhildrサーバさんから送られてきたデスクトップのJPEG画像の中で、今どのウィンドウにフォーカスがあるのか、とかを判断しなくてはならないので、JPEGで表示したデスクトップ画像のウィンドウ内のマウスカーソルの位置とかが必要になってくるのかもしれません。まだ、憶測の域を超えませんが、なんとなく必要な情報は渡せそうな気がしてきました。
QKeyEvent, QMouseEvent, QWheelEventを必要になったら調べることになりそうです。とりあえず、目処は付いた気になったので、この辺りで元に戻ろうかと…思います。
« 暗号化についても考えてみる その3 | トップページ | 暗号化についても考えてみる その4 »
コメント