#include Mew.sh
#include win32.sh
#include Convert.sh
#include dialog.sh

#define VK_LMENU 0xA4
#define VK_RMENU 0xA5                         [
#define KEY_TOGGLED 0x0001
#define KEY_PRESSED 0x8000

#define VK_NUMPAD0        0x60
#define VK_NUMPAD1        0x61
#define VK_NUMPAD2        0x62
#define VK_NUMPAD3        0x63
#define VK_NUMPAD4        0x64
#define VK_NUMPAD5        0x65
#define VK_NUMPAD6        0x66
#define VK_NUMPAD7        0x67
#define VK_NUMPAD8        0x68
#define VK_NUMPAD9        0x69


macro alt_code
/********************************************************************
                                                       Multi-Edit Macro
                                                       10-11-2009 20:05

  Function: alt_code
  Entry   : `entry`
  Exit    : `exit`
  ToDo    : Testing Phase
            Numpad Key Testing for all numpad keys into a function

                                                       LVJ
***********************************************************************/
{
  int tmp_state = GetKeyState(VK_LMENU);
  bool tmp_state_flag = tmp_state & KEY_PRESSED;
  str tmp_state_str = "16:" + Hex_Str(tmp_state) + ":2";  int tmp_numpad;
  bool tmp_numpad_flag;
  int keypad_num_cnt = 0;
  str keypad_num_str = "";

  while (tmp_state_flag != 0)
  {
    //Make_Message(ConvertBase(tmp_state_str));

    tmp_state = GetKeyState(VK_LMENU);
    tmp_state_flag = tmp_state & KEY_PRESSED;
    tmp_state_str = "16:" + Hex_Str(tmp_state) + ":2";

    ProcessMsgQueue( 10 );  //try to prevent "Not responding"

    if (keypad_num_cnt == 3) {
      break;
    }

    tmp_numpad = GetKeyState(VK_NUMPAD0);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 0");
      keypad_num_str = keypad_num_str + '0';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD1);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 1");
      keypad_num_str = keypad_num_str + '1';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD2);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 2");
      keypad_num_str = keypad_num_str + '2';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD3);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 3");
      keypad_num_str = keypad_num_str + '3';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD4);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 4");
      keypad_num_str = keypad_num_str + '4';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD5);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 5) {
      make_message("numpad 5");
      keypad_num_str = keypad_num_str + '5';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD6);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 6");
      keypad_num_str = keypad_num_str + '6';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD7);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 7");
      keypad_num_str = keypad_num_str + '7';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD8);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 8");
      keypad_num_str = keypad_num_str + '8';
      keypad_num_cnt++;
    }
    tmp_numpad = GetKeyState(VK_NUMPAD9);
    tmp_numpad_flag = tmp_numpad & KEY_PRESSED;
    if (tmp_numpad_flag != 0) {
      make_message("numpad 9");
      keypad_num_str = keypad_num_str + '9';
      keypad_num_cnt++;
    }

  }
  make_message(keypad_num_str);

}  //  alt_code


void MyKeycodeDlg()
{
  int Dlg, Result;
  str key,key_name;
  int disabled = false;

  DlgCreate( Dlg );

  DlgAddCtrl( Dlg, Dlg_Keycode, "/KL=Ctrl+Z/K1=90/K2=5",
               1, 1,                        //coordinates X, Y
              40, 1,                        //Width, Height
            2301, 0, "" );

  Result = DlgExecute( Dlg, 2301, "Keycode", "", "", 0 );

  Key = DlgGetStr( Dlg, 2301 );

  DlgKill( Dlg );

  Make_Message( "You pressed 0x" + Hex_Str( key1 ) + Hex_Str( key2 ) + " " + Key_Name + " key1: " + Hex_Str( key1 ) + " key2: " + Hex_Str( key2 ));
}

