Advanced/W-ZERO3[es] の Xcrawl Scroll の拾い方

  • KeyDown(上下キー)→KeyDown(KeyValue=0x83)→KeyUp(上下キー)→KeyUp(KeyValue=0x83) の順でイベントが発生する
  • KeyDownで0x83のフラグを立てておいて、KeyUpで上下キーが来たときにフラグ立ってたらスクロールとみなせばOKそう。
  • ちなみに「WM_KEYDOWN 0x83」でぐぐったら VK_F20 ってでてきたので、e.KeyValue = 0x83 じゃなくて、e.KeyData = Keys.F20 っでもいいかもしれない。
 private const int XCRAWL_KEYCODE = 0x83;  // Xcrawl のスクロールイベント
 bool m_scrollFlag = false;                // スクロールイベントフラグ
 
 /// <summary>
 /// 入力エリアでキーが押されたとき
 /// </summary>
 private void inputTextBox_KeyDown(object sender, KeyEventArgs e)
 {
     // Xcrawl のスクロールキーコードの場合
     if (e.KeyValue == XCRAWL_KEYCODE)
     {
         // スクロールフラグON
         m_scrollFlag = true;
         e.Handled = true;
     }
 }
 
 /// <summary>
 /// 入力エリアでキーが離されたとき
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void inputTextBox_KeyUp(object sender, KeyEventArgs e)
 {
     // Xcrawl のスクロールキーコードの場合
     if (e.KeyValue == XCRAWL_KEYCODE)
     {
         // スクロールフラグOFF
         m_scrollFlag = false;
         e.Handled = true;
         return;
     }
     switch (e.KeyCode)
     {
         case Keys.Up:
             if (m_scrollFlag) 
             {
                 System.Diagnostics.Debug.WriteLine("Xcrawl Up");
             }
             else
             {
                 System.Diagnostics.Debug.WriteLine("Up");
             }
             break;
         case Keys.Down:
             if (m_scrollFlag)
             {
                 System.Diagnostics.Debug.WriteLine("Xcrawl Down");
             }
             else
             {
                 System.Diagnostics.Debug.WriteLine("Down");
             }
             break;
         default:
             break;
     }
 }