⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_bak.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 3 页
字号:
	"DPLU 151",		"DPLU 152",		"DPLU 153",		"DPLU 154",		"DPLU 155",		
	"DPLU 156",		"DPLU 157",		"DPLU 158",		"DPLU 159",		"DPLU 160",		
	"DPLU 161",		"DPLU 162",		"DPLU 163",		"DPLU 164",		"DPLU 165",		
	"DPLU 166",		"DPLU 167",		"DPLU 168",		"DPLU 169",		"DPLU 170",		
	"DPLU 171",		"DPLU 172",		"DPLU 173",		"DPLU 174",		"DPLU 175",		
	"DPLU 176",		"DPLU 177",		"DPLU 178",		"DPLU 179",		"DPLU 180",		
	"DPLU 181",		"DPLU 182",		"DPLU 183",		"DPLU 184",		"DPLU 185",		
	"DPLU 186",		"DPLU 187",		"DPLU 188",		"DPLU 189",		"DPLU 190",		
	"DPLU 191",		"DPLU 192",		"DPLU 193",		"DPLU 194",		"DPLU 195",		
	"DPLU 196",		"DPLU 197",		"DPLU 198",		"DPLU 199",		"DPLU 200",		
};

/*----------------------------------------------------------------------------------------
*  Default keyboard layout when do all clear.
*---------------------------------------------------------------------------------------*/
const word Deft_Key_Tabl_Retail[MAX_KEY_CNT] =
{
	#if KB == KB_59N24
	// 7 * 9 keyboard
	KD_DP9,		KD_DP18,		KD_DP27,    KD_DP36,		KD_DP45,
	KD_DP8,		KD_DP17,		KD_DP26,		KD_DP35,		KD_DP44,
	KD_DP7,		KD_DP16,		KD_DP25,		KD_DP34,		KD_DP43,		KD_DPSF,		KD_CLERK,
	KD_DP6,		KD_DP15,		KD_DP24,		KD_DP33,		KD_DP42,		KD_RA,		KD_PO,
	KD_DP5,		KD_DP14,		KD_DP23,		KD_DP32,		KD_DP41,		KD_PER3,	KD_REFUND,
	KD_DP4,		KD_DP13,		KD_DP22,		KD_DP31,		KD_DP40,		KD_PER1,		KD_PER2,
	KD_DP3,		KD_DP12,		KD_DP21,		KD_DP30,		KD_DP39,		KD_CHARGE,	KD_CHECK,
	KD_DP2,		KD_DP11,		KD_DP20,		KD_DP29,		KD_DP38,		KD_SUBTTL,	KD_SUBTTL,
	KD_DP1,		KD_DP10,		KD_DP19,		KD_DP28,		KD_DP37,		KD_CASH,		KD_CASH,

	// 3 * 8 keyboard
	KD_FEED, 	KD_NS,		KD_PLU,		KD_7,  	KD_8,  	KD_9,
	KD_TRS_VOID,KD_RESEARCH,KD_XTIME,	KD_4,  	KD_5,  	KD_6,
	KD_RM, 		KD_VOID, 	KD_RESTOCK,	KD_1,  	KD_2,  	KD_3,
	KD_CLEAR, 	KD_MODE,		KD_FCE,		KD_0,  	KD_D0, 	KD_DEC,
	#elif KB == KB_38
   KD_FEED, 	KD_RA,	   KD_PO,      KD_PER1,    KD_PER2,
   KD_CLEAR,	KD_XTIME,	KD_VOID,		KD_PLU,		KD_AMOUNT,
   KD_7, 	   KD_8,   		KD_9,       KD_DPSF,    KD_RM,      KD_REFUND,	KD_NS,
   KD_4, 	   KD_5,    	KD_6,       KD_DP3,     KD_DP6,     KD_RCPT_ON,	KD_CLERK,
   KD_1, 	   KD_2,    	KD_3,       KD_DP2,     KD_DP5,     KD_CHECK,   KD_SUBTTL,
   KD_0, 	   KD_D0,   	KD_DEC,     KD_DP1,     KD_DP4,     KD_CASH,    KD_CASH
	#else
	#endif

	#if	0
	// pos keyboard
	KD_DPLU001,	KD_DPLU02,	KD_DPLU03,	KD_DPLU04,	KD_DPLU05,	KD_DPLU06,	KD_DPLU07,	KD_DPLU08,	KD_DPLU09,	KD_DPLU10,	
	KD_DPLU11,	KD_DPLU12,	KD_DPLU13,	KD_DPLU14,	KD_DPLU15,	KD_DPLU16,	KD_DPLU17,	KD_DPLU18,	KD_DPLU19,	KD_DPLU20,	
	KD_DPLU21,	KD_DPLU22,	KD_DPLU23,	KD_DPLU24,	KD_DPLU25,	KD_DPLU26,	KD_DPLU27,	KD_DPLU28,	KD_DPLU29,	KD_DPLU30,	
	KD_DPLU31,	KD_DPLU32,	KD_DPLU33,	KD_DPLU34,	KD_DPLU35,	KD_DPLU36,	KD_DPLU37,	KD_DPLU38,	KD_DPLU39,	KD_DPLU40,	
	KD_DPLU41,	KD_DPLU42,	KD_DPLU43,	KD_DPLU44,	KD_DPLU45,	KD_DPLU46,	KD_DPLU47,	KD_DPLU48,	KD_DPLU49,	KD_DPLU50,	
	KD_DPLU51,	KD_DPLU52,	KD_DPLU53,	KD_DPLU54,	KD_DPLU55,	KD_DPLU56,	KD_DPLU57,	KD_DPLU58,	KD_DPLU59,	KD_DPLU60,
	KD_DPLU61,	KD_DPLU62,	KD_DPLU63,	KD_DPLU64,	KD_DPLU65,	KD_DPLU66,	KD_DPLU67,	KD_DPLU68,	KD_DPLU69,	KD_DPLU70,	
	KD_DPLU71,	KD_DPLU72,	KD_DPLU73,	KD_DPLU74,	KD_DPLU75,	KD_DPLU76,	KD_DPLU77,	KD_DPLU78,	KD_DPLU79,	KD_DPLU80,	
	#endif
};

/*----------------------------------------------------------------------------------------
*  Default keyboard layout when changed to restrurant mode
*---------------------------------------------------------------------------------------*/
const word Deft_Key_Tabl_Rest[MAX_KEY_CNT] =
{
	#if	KB == KB_59N24
	// 7 * 9 keyboard
	KD_DP9,		KD_DP18,		KD_DP27,    KD_DP36,		KD_DP45,
	KD_DP8,		KD_DP17,		KD_DP26,		KD_DP35,		KD_DP44,		
	KD_DP7,		KD_DP16,		KD_DP25,		KD_DP34,		KD_DP43,		KD_DPSF,	KD_CLERK,
	KD_DP6,		KD_DP15,		KD_DP24,		KD_DP33,		KD_DP42,		KD_RA,		KD_PO, 
	KD_DP5,		KD_DP14,		KD_DP23,		KD_DP32,		KD_DP41,		KD_MINUS,	KD_OPEN,		
	KD_DP4,		KD_DP13,		KD_DP22,		KD_DP31,		KD_DP40,		KD_PER1,	KD_SUSPEND,
	KD_DP3,		KD_DP12,		KD_DP21,		KD_DP30,		KD_DP39,		KD_TNSFER,	KD_CREDIT,	
	KD_DP2,		KD_DP11,		KD_DP20,		KD_DP29,		KD_DP38,		KD_SUBTTL,	KD_SUBTTL,
	KD_DP1,		KD_DP10,		KD_DP19,		KD_DP28,		KD_DP37,		KD_CASH,		KD_SUBTTL,

	// 3 * 8 keyboard
	KD_FEED, 	KD_NS,			KD_PLU,		KD_7,  	KD_8,  	KD_9,
	KD_TRS_VOID,KD_COMB,			KD_XTIME,	KD_4,  	KD_5,  	KD_6,
	KD_RM, 		KD_VOID, 		KD_RESTOCK,	KD_1,  	KD_2,  	KD_3,
	KD_CLEAR, 	KD_MODE,	KD_RCPT_ON,	KD_0,  	KD_D0, 	KD_DEC,
	#elif KB == KB_38
   KD_FEED, 	KD_RA,	   KD_PO,      KD_PER1,    KD_PER2,
   KD_CLEAR,	KD_XTIME,	KD_VOID,		KD_PLU,		KD_AMOUNT,
   KD_7, 	   KD_8,   		KD_9,       KD_DPSF,    KD_RM,      KD_REFUND,	KD_NS,
   KD_4, 	   KD_5,    	KD_6,       KD_DP3,     KD_DP6,     KD_RCPT_ON,	KD_CLERK,
   KD_1, 	   KD_2,    	KD_3,       KD_DP2,     KD_DP5,     KD_CHECK,   KD_SUBTTL,
   KD_0, 	   KD_D0,   	KD_DEC,     KD_DP1,     KD_DP4,     KD_CASH,    KD_CASH
	#else
	#endif

	#if	0
	// pos keyboard
	KD_DPLU001,	KD_DPLU02,	KD_DPLU03,	KD_DPLU04,	KD_DPLU05,	KD_DPLU06,	KD_DPLU07,	KD_DPLU08,	KD_DPLU09,	KD_DPLU10,	
	KD_DPLU11,	KD_DPLU12,	KD_DPLU13,	KD_DPLU14,	KD_DPLU15,	KD_DPLU16,	KD_DPLU17,	KD_DPLU18,	KD_DPLU19,	KD_DPLU20,	
	KD_DPLU21,	KD_DPLU22,	KD_DPLU23,	KD_DPLU24,	KD_DPLU25,	KD_DPLU26,	KD_DPLU27,	KD_DPLU28,	KD_DPLU29,	KD_DPLU30,	
	KD_DPLU31,	KD_DPLU32,	KD_DPLU33,	KD_DPLU34,	KD_DPLU35,	KD_DPLU36,	KD_DPLU37,	KD_DPLU38,	KD_DPLU39,	KD_DPLU40,	
	KD_DPLU41,	KD_DPLU42,	KD_DPLU43,	KD_DPLU44,	KD_DPLU45,	KD_DPLU46,	KD_DPLU47,	KD_DPLU48,	KD_DPLU49,	KD_DPLU50,	
	KD_DPLU51,	KD_DPLU52,	KD_DPLU53,	KD_DPLU54,	KD_DPLU55,	KD_DPLU56,	KD_DPLU57,	KD_DPLU58,	KD_DPLU59,	KD_DPLU60,
	KD_DPLU61,	KD_DPLU62,	KD_DPLU63,	KD_DPLU64,	KD_DPLU65,	KD_DPLU66,	KD_DPLU67,	KD_DPLU68,	KD_DPLU69,	KD_DPLU70,	
	KD_DPLU71,	KD_DPLU72,	KD_DPLU73,	KD_DPLU74,	KD_DPLU75,	KD_DPLU76,	KD_DPLU77,	KD_DPLU78,	KD_DPLU79,	KD_DPLU80,	
	#endif
};


/*---------------------------------------------------------------------------------------
*  key logical code with the keyboard.
*--------------------------------------------------------------------------------------*/
const word key_logic[MAX_KEY_CNT] =
{
	#if	KB == KB_59N24
	// 7 * 9 keyboard.
	0x0F,0x0A,0x0B,	0x36,0x37,
	0x09,0x0E,0x0C,	0x34,0x35,
	0x05,0x15,0x1D,	0x25,0x2D,	0x3D,0x45,
	0x04,0x14,0x1C,	0x24,0x2C,	0x3C,0x44,

	0x06,0x16,0x1E,	0x26,0x2E,	0x3E,0x46,
	0x03,0x13,0x1B,	0x23,0x2B,	0x3B,0x43,
	0x02,0x12,0x1A,	0x22,0x2A,	0x3A,0x42,
	0x01,0x11,0x19,	0x21,0x29,	0x39,0x41,
	0x07,0x17,0x1F,	0x27,0x2F,	0x3f,0x47,		// CASH & SUBTTL occupy two positions 

	// 3 * 8 keyboard.
	0x4D,0x55,0x49,	0x4A,0x4B,0x4C,
	0x4E,0x56,0x51,	0x52,0x53,0x5C,
	0x4F,0x57,0x59,	0x5A,0x5B,0x54,
	0x50,0x58,0x60,	0x5F,0x5D,0x5E,
	#elif	KB == KB_38
	0x01,0x09,0x11,0x19,0x25,
	0x02,0x0A,0x12,0x1A,0x23,
	0x03,0x0B,0x13,0x1B,0x24,0x26,0x27,
	0x04,0x0D,0x0C,0x14,0x1C,0x1D,0x28,
	0x05,0x06,0x0E,0x16,0x15,0x1E,0x1F,
	0x07,0x08,0x10,0x0F,0x17,0x18,0x20,        /* The CASH key has occupy two positions. */
	#else
	#endif

	#if	0
   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
   #endif
};
/*-------------------------------------------------------------------------------------
*  when every all clear operation, initialize the key matrix sequence.
*  Default  Keyboard Layout:
*------------------------------------------------------------------------------------*/
void key_matrx_init(void)
{
   word i;
   word *pp1;
   word *pp2;
//		pp1 = (char*)Deft_Key_Tabl;
   if (work_mode == RETAIL)
   	pp1 = (word *)Deft_Key_Tabl_Retail;
   else
   	pp1 = (word *)Deft_Key_Tabl_Rest;
   pp2 = FF_Key_Tabl;
   for ( i = 0; i < MAX_KEY_CNT; i ++ )
      *pp2 ++ = *pp1 ++;
   if(sysflag->soft_lock_flag == 1)				/* Use the soft control lock mode */
   	Modi_Key(2, KD_MODE);

   PS2_GetFeedCode();
}


//*************************************************************************************
void  FF_Tmpkey_Init(void)    /* Initital the free function temporary key table */
{
   word i;
   word *pp1;
   word *pp2;
   pp1 = FF_Key_Tabl;
   pp2 = (word *)Tmp_Key_Tab;
   for ( i = 0; i < MAX_KEY_CNT; i ++ )
      *pp2 ++ = *pp1 ++;
}

/*--------------------------------------------------------------------------------------
*  According to the logical key code, get the free Funcation key code.
*-------------------------------------------------------------------------------------*/
word FF_Key_Get(word key_code )
{
   return( FF_Key_Tabl[key_code] );
}

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/* Function : Keyboard check subroutine         */
/*                                              */
/*    Create   03-8-14 10:58  by X.C.Zheng      */
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
word key_check( void )
{
   byte     i;
   byte     j;
   word     work;
   word     chk;
   word  data;
/*#*/
   chk = 0;
   key_chk = 0;
   work = 0;
#if 1//KB == KB_TS
    if(sysflag->soft_lock_flag == 0)           /* Not use the soft control lock */
        currmodeInt = key_scan_buf[0];    /* Control lock position check and save */
#else
   for( i = 0; i < ( MAX_KEY_SCAN_CNTR - 1); i++ )
   {
      data = key_scan_buf[i];
      if ( data == 0 )
      {
         if ( key_chk == 0 )
         {
            work += 8;
         }
      }
      else
      {
         if (key_chk == 0)
         {
            for( j = 0; j < 8; j++ )
            {
               if ((data & 0x01) != 0)
               {
                  key_chk = 1;
                  if ((data & 0xFE) != 0)
                  {
                     chk = 1;
                  }
                  break;
               }
               work++;
               data = data >> 1;
            }
         }
         else
         {
            chk = 1;
         }
      }
/*#*/
      if (chk != 0)              /* Multi-key depress */
      {
         work = 0;
         key_fd = 0;
         key_off = 0;
         key_wka = KEY_END;         /* Pesuedo value set */
         break;
      }
   }
/*#*/
   if ( chk == 0 )               /* No multy key input */
   {
      if ( key_chk == 0 )        /* No key input */
      {
         work = 0;
         key_fd = 0;
         key_off = 1;            /* Key alreay depress,wait it release next */
         key_wka = KEY_END;         /* Pesuedo value set	*/
         if(sysflag->soft_lock_flag == 0)			/* Not use the soft control lock */
         	currmodeInt = key_scan_buf[MAX_KEY_SCAN_CNTR-1];   	/* Control lock position check and save */
      }
      else
         work ++;
   }
/*#*/
#endif
   return( work );
}

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/* Function : Keyboard ring buffer set          */
/*                                              */
/*    Create   03-8-14 11:21  by X.C.Zheng      */
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
void key_rngset(word   work)
{
	static word tmp = KEY_END;
	static const word *key_table;

	if (skip_null_key) {
		if (Lcd_Mode_Int == LCD_10_INCH) {
			if (work >= TS_LOGI_OFFSET) {
				tmp = ts_get_logi(work);
				key_table = Ts_Key_Tab;
				tmp = key_table[tmp];
				if (tmp == KD_NULL || tmp == KD_NULL_TS)		/* The null key, return */
					return;
			}
		}
		else { // Lcd_Mode_Int == LCD_7_INCH
			if (work >= TS_LOGI_OFFSET) {
				tmp = ts_get_logi(work);
				key_table = Ts_Key_Tab;
				tmp = key_table[tmp];
				if (tmp == KD_NULL || tmp == KD_NULL_TS)		/* The null key, return */
					return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -