Subversion Repositories pentevo

Rev

Rev 883 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. #include "std.h"
  2.  
  3. #include "emul.h"
  4. #include "vars.h"
  5. #include "inputpc.h"
  6. const unsigned short dik_scan[256] =
  7. {    //thims zxevo_ps/2
  8.     0x0000,
  9.     0x0076, // DIK_ESCAPE
  10.     0x0016, // DIK_1              
  11.     0x001E, // DIK_2              
  12.     0x0026, // DIK_3              
  13.     0x0025, // DIK_4              
  14.     0x002E, // DIK_5              
  15.     0x0036, // DIK_6              
  16.     0x003D, // DIK_7              
  17.     0x003E, // DIK_8              
  18.     0x0046, // DIK_9              
  19.     0x0045, // DIK_0
  20.     0x004E, // DIK_MINUS
  21.     0x0055, // DIK_EQUALS          
  22.     0x0066, // DIK_BACK
  23.     0x000D, // DIK_TAB            
  24.     0x0015, // DIK_Q              
  25.     0x001D, // DIK_W              
  26.     0x0024, // DIK_E              
  27.     0x002D, // DIK_R              
  28.     0x002C, // DIK_T              
  29.     0x0035, // DIK_Y              
  30.     0x003C, // DIK_U              
  31.     0x0043, // DIK_I              
  32.     0x0044, // DIK_O              
  33.     0x004D, // DIK_P
  34.     0x0054, // DIK_LBRACKET        
  35.     0x005B, // DIK_RBRACKET        
  36.     0x005A, // DIK_RETURN
  37.     0x0014, // DIK_LCONTROL        
  38.     0x001C, // DIK_A              
  39.     0x001B, // DIK_S              
  40.     0x0023, // DIK_D              
  41.     0x002B, // DIK_F              
  42.     0x0034, // DIK_G              
  43.     0x0033, // DIK_H              
  44.     0x003B, // DIK_J              
  45.     0x0042, // DIK_K              
  46.     0x004B, // DIK_L
  47.     0x004C, // DIK_SEMICOLON      
  48.     0x0052, // DIK_APOSTROPHE      
  49.     0x000E, // DIK_GRAVE
  50.     0x0012, // DIK_LSHIFT          
  51.     0x005D, // DIK_BACKSLASH      
  52.     0x001A, // DIK_Z              
  53.     0x0022, // DIK_X              
  54.     0x0021, // DIK_C              
  55.     0x002A, // DIK_V              
  56.     0x0032, // DIK_B              
  57.     0x0031, // DIK_N              
  58.     0x003A, // DIK_M
  59.     0x0041, // DIK_COMMA          
  60.     0x0049, // DIK_PERIOD              /* . on main keyboard */
  61.     0x004A, // DIK_SLASH               /* / on main keyboard */
  62.     0x0059, // DIK_RSHIFT          
  63.     0x007C, // DIK_MULTIPLY            /* * on numeric keypad */
  64.     0x0011, // DIK_LMENU               /* left Alt */
  65.     0x0029, // DIK_SPACE          
  66.     0x0058, // DIK_CAPITAL        
  67.     0x0005, // DIK_F1              
  68.     0x0006, // DIK_F2              
  69.     0x0004, // DIK_F3              
  70.     0x000C, // DIK_F4              
  71.     0x0003, // DIK_F5              
  72.     0x000B, // DIK_F6              
  73.     0x0083, // DIK_F7              
  74.     0x000A, // DIK_F8              
  75.     0x0001, // DIK_F9              
  76.     0x0009, // DIK_F10            
  77.     0x0077, // DIK_NUMLOCK        
  78.     0x007E, // DIK_SCROLL              /* Scroll Lock */
  79.     0x006C, // DIK_NUMPAD7        
  80.     0x0075, // DIK_NUMPAD8        
  81.     0x007D, // DIK_NUMPAD9        
  82.     0x007B, // DIK_SUBTRACT            /* - on numeric keypad */
  83.     0x006B, // DIK_NUMPAD4        
  84.     0x0073, // DIK_NUMPAD5        
  85.     0x0074, // DIK_NUMPAD6        
  86.     0x0079, // DIK_ADD                 /* + on numeric keypad */
  87.     0x0069, // DIK_NUMPAD1        
  88.     0x0072, // DIK_NUMPAD2        
  89.     0x007A, // DIK_NUMPAD3        
  90.     0x0070, // DIK_NUMPAD0        
  91.     0x0071, // DIK_DECIMAL             /* . on numeric keypad */
  92.     0x0000,
  93.     0x0000,
  94.     0x0000, // DIK_OEM_102             /* <> or \| on RT 102-key keyboard (Non-U.S.) */
  95.     0x0078, // DIK_F11            
  96.     0x0007, // DIK_F12
  97.     0x0000,
  98.     0x0000,
  99.     0x0000,
  100.     0x0000,
  101.     0x0000,
  102.     0x0000,
  103.     0x0000,
  104.     0x0000,
  105.     0x0000,
  106.     0x0000,
  107.     0x0000,
  108.     0x0000, // DIK_F13                 /*                     (NEC PC98) */
  109.     0x0000, // DIK_F14                 /*                     (NEC PC98) */
  110.     0x0000, // DIK_F15                 /*                     (NEC PC98) */
  111.     0x0000,
  112.     0x0000,
  113.     0x0000,
  114.     0x0000,
  115.     0x0000,
  116.     0x0000,
  117.     0x0000,
  118.     0x0000,
  119.     0x0000,
  120.     0x0000, // DIK_KANA                /* (Japanese keyboard)            */
  121.     0x0000,
  122.     0x0000,
  123.     0x0000, // DIK_ABNT_C1             /* /? on Brazilian keyboard */
  124.     0x0000,
  125.     0x0000,
  126.     0x0000,
  127.     0x0000,
  128.     0x0000,
  129.     0x0000, // DIK_CONVERT             /* (Japanese keyboard)            */
  130.     0x0000,
  131.     0x0000, // DIK_NOCONVERT           /* (Japanese keyboard)            */
  132.     0x0000,
  133.     0x0000, // DIK_YEN                 /* (Japanese keyboard)            */
  134.     0x0000, // DIK_ABNT_C2             /* Numpad . on Brazilian keyboard */
  135.     0x0000,
  136.     0x0000,
  137.     0x0000,
  138.     0x0000,
  139.     0x0000,
  140.     0x0000,
  141.     0x0000,
  142.     0x0000,
  143.     0x0000,
  144.     0x0000,
  145.     0x0000,
  146.     0x0000,
  147.     0x0000,
  148.     0x0000,
  149.     0x0000, // DIK_NUMPADEQUALS        /* = on numeric keypad (NEC PC98) */
  150.     0x0000,
  151.     0x0000,
  152.     0x0000, // DIK_PREVTRACK           /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
  153.     0x0000, // DIK_AT                  /*                     (NEC PC98) */
  154.     0x0000, // DIK_COLON               /*                     (NEC PC98) */
  155.     0x0000, // DIK_UNDERLINE           /*                     (NEC PC98) */
  156.     0x0000, // DIK_KANJI               /* (Japanese keyboard)            */
  157.     0x0000, // DIK_STOP                /*                     (NEC PC98) */
  158.     0x0000, // DIK_AX                  /*                     (Japan AX) */
  159.     0x0000, // DIK_UNLABELED           /*                        (J3100) */
  160.     0x0000,
  161.     0x0000, // DIK_NEXTTRACK           /* Next Track */
  162.     0x0000,
  163.     0x0000,
  164.     0x015A, // DIK_NUMPADENTER         /* Enter on numeric keypad */
  165.     0x0114, // DIK_RCONTROL        
  166.     0x0000,
  167.     0x0000,
  168.     0x0000, // DIK_MUTE                /* Mute */
  169.     0x0000, // DIK_CALCULATOR          /* Calculator */
  170.     0x0000, // DIK_PLAYPAUSE           /* Play / Pause */
  171.     0x0000,
  172.     0x0000, // DIK_MEDIASTOP           /* Media Stop */
  173.     0x0000,
  174.     0x0000,
  175.     0x0000,
  176.     0x0000,
  177.     0x0000,
  178.     0x0000,
  179.     0x0000,
  180.     0x0000,
  181.     0x0000,
  182.     0x0000, // DIK_VOLUMEDOWN          /* Volume - */
  183.     0x0000,
  184.     0x0000, // DIK_VOLUMEUP            /* Volume + */
  185.     0x0000,
  186.     0x0000, // DIK_WEBHOME             /* Web home */
  187.     0x0000, // DIK_NUMPADCOMMA         /* , on numeric keypad (NEC PC98) */
  188.     0x0000,
  189.     0x014A, // DIK_DIVIDE              /* / on numeric keypad */
  190.     0x0000,
  191.     0x0112, // DIK_SYSRQ          
  192.     0x0111, // DIK_RMENU               /* right Alt */
  193.     0x0000,
  194.     0x0000,
  195.     0x0000,
  196.     0x0000,
  197.     0x0000,
  198.     0x0000,
  199.     0x0000,
  200.     0x0000,
  201.     0x0000,
  202.     0x0000,
  203.     0x0000,
  204.     0x0000,
  205.     0x0000, // DIK_PAUSE               /* Pause */
  206.     0x0000,
  207.     0x016C, // DIK_HOME                /* Home on arrow keypad */
  208.     0x0175, // DIK_UP                  /* UpArrow on arrow keypad */
  209.     0x017D, // DIK_PRIOR               /* PgUp on arrow keypad */
  210.     0x0000,
  211.     0x016B, // DIK_LEFT                /* LeftArrow on arrow keypad */
  212.     0x0000,
  213.     0x0174, // DIK_RIGHT               /* RightArrow on arrow keypad */
  214.     0x0000,
  215.     0x0169, // DIK_END                 /* End on arrow keypad */
  216.     0x0172, // DIK_DOWN                /* DownArrow on arrow keypad */
  217.     0x017A, // DIK_NEXT                /* PgDn on arrow keypad */
  218.     0x0170, // DIK_INSERT              /* Insert on arrow keypad */
  219.     0x0171, // DIK_DELETE              /* Delete on arrow keypad */
  220.     0x0000,
  221.     0x0000,
  222.     0x0000,
  223.     0x0000,
  224.     0x0000,
  225.     0x0000,
  226.     0x0000,
  227.     0x011F, // DIK_LWIN                /* Left Windows key */
  228.     0x0127, // DIK_RWIN                /* Right Windows key */
  229.     0x012F, // DIK_APPS                /* AppMenu key */
  230.     0x0137, // DIK_POWER               /* System Power */
  231.     0x013F, // DIK_SLEEP               /* System Sleep */
  232.     0x0000,
  233.     0x0000,
  234.     0x0000,
  235.     0x015E, // DIK_WAKE                /* System Wake */
  236.     0x0000,
  237.     0x0000, // DIK_WEBSEARCH           /* Web Search */
  238.     0x0000, // DIK_WEBFAVORITES        /* Web Favorites */
  239.     0x0000, // DIK_WEBREFRESH          /* Web Refresh */
  240.     0x0000, // DIK_WEBSTOP             /* Web Stop */
  241.     0x0000, // DIK_WEBFORWARD          /* Web Forward */
  242.     0x0000, // DIK_WEBBACK             /* Web Back */
  243.     0x0000, // DIK_MYCOMPUTER          /* My Computer */
  244.     0x0000, // DIK_MAIL                /* Mail */
  245.     0x0000, // DIK_MEDIASELECT         /* Media Select */
  246.     0x0000,
  247.     0x0000,
  248.     0x0000,
  249.     0x0000,
  250.     0x0000,
  251.     0x0000,
  252.     0x0000,
  253.     0x0000,
  254.     0x0000,
  255.     0x0000,
  256.     0x0000,
  257.     0x0000,
  258.     0x0000,
  259.     0x0000,
  260.     0x0000,
  261.     0x0000,
  262.     0x0000,
  263.     0x0000
  264. };
  265. const PC_KEY pc_layout[] =
  266. {
  267.    { DIK_1, 0x31, 0xB1 },
  268.    { DIK_2, 0x32, 0xB2 },
  269.    { DIK_3, 0x33, 0xB3 },
  270.    { DIK_4, 0x34, 0xB4 },
  271.    { DIK_5, 0x35, 0xB5 },
  272.    { DIK_6, 0x45, 0xE5 },
  273.    { DIK_7, 0x44, 0xC5 },
  274.    { DIK_8, 0x43, 0xF5 },
  275.    { DIK_9, 0x42, 0xC3 },
  276.    { DIK_0, 0x41, 0xC2 },
  277.    { DIK_MINUS, 0xE4, 0xC1 }, // -_
  278.    { DIK_EQUALS, 0xE2, 0xE3 }, // =+
  279.  
  280.    { DIK_Q, 0x21, 0x29 },
  281.    { DIK_W, 0x22, 0x2A },
  282.    { DIK_E, 0x23, 0x2B },
  283.    { DIK_R, 0x24, 0x2C },
  284.    { DIK_T, 0x25, 0x2D },
  285.    { DIK_Y, 0x55, 0x5D },
  286.    { DIK_U, 0x54, 0x5C },
  287.    { DIK_I, 0x53, 0x5B },
  288.    { DIK_O, 0x52, 0x5A },
  289.    { DIK_P, 0x51, 0x59 },
  290. //   { DIK_LBRACKET, 0xD5, 0x94 }, // [{
  291. //   { DIK_RBRACKET, 0xD4, 0x95 }, // ]}
  292.  
  293.    { DIK_A, 0x11, 0x19 },
  294.    { DIK_S, 0x12, 0x1A },
  295.    { DIK_D, 0x13, 0x1B },
  296.    { DIK_F, 0x14, 0x1C },
  297.    { DIK_G, 0x15, 0x1D },
  298.    { DIK_H, 0x65, 0x6D },
  299.    { DIK_J, 0x64, 0x6C },
  300.    { DIK_K, 0x63, 0x6B },
  301.    { DIK_L, 0x62, 0x6A },
  302.    { DIK_SEMICOLON, 0xD2, 0x82 }, // ;:
  303.    { DIK_APOSTROPHE, 0xC4, 0xD1 }, // '"
  304.  
  305.    { DIK_Z, 0x02, 0x0A },
  306.    { DIK_X, 0x03, 0x0B },
  307.    { DIK_C, 0x04, 0x0C },
  308.    { DIK_V, 0x05, 0x0D },
  309.    { DIK_B, 0x75, 0x7D },
  310.    { DIK_N, 0x74, 0x7C },
  311.    { DIK_M, 0x73, 0x7B },
  312.    { DIK_COMMA, 0xF4, 0xA4 }, // ,<
  313.    { DIK_PERIOD, 0xF3, 0xA5 }, // .>
  314.    { DIK_SLASH, 0x85, 0x84 }, // /?
  315.    { DIK_BACKSLASH, 0x93, 0x92 }, // \|
  316. };
  317.  
  318. const size_t pc_layout_count = _countof(pc_layout);
  319.