Ejemplo n.º 1
0
static void do_pad(unsigned char value, char up_flag)
{
	static const char *pad_chars = "0123456789+-*/\015,.?";
	static const char *app_map = "pqrstuvwxylSRQMnn?";

	if (up_flag)
		return;		/* no action, if this is a key release */

	/* kludge... shift forces cursor/number keys */
	if (vc_kbd_mode(kbd,VC_APPLIC) && !k_down[KG_SHIFT]) {
		applkey(app_map[value], 1);
		return;
	}

	if (!vc_kbd_led(kbd,VC_NUMLOCK))
		switch (value) {
			case KVAL(K_PCOMMA):
			case KVAL(K_PDOT):
				do_fn(KVAL(K_REMOVE), 0);
				return;
			case KVAL(K_P0):
				do_fn(KVAL(K_INSERT), 0);
				return;
			case KVAL(K_P1):
				do_fn(KVAL(K_SELECT), 0);
				return;
			case KVAL(K_P2):
				do_cur(KVAL(K_DOWN), 0);
				return;
			case KVAL(K_P3):
				do_fn(KVAL(K_PGDN), 0);
				return;
			case KVAL(K_P4):
				do_cur(KVAL(K_LEFT), 0);
				return;
			case KVAL(K_P6):
				do_cur(KVAL(K_RIGHT), 0);
				return;
			case KVAL(K_P7):
				do_fn(KVAL(K_FIND), 0);
				return;
			case KVAL(K_P8):
				do_cur(KVAL(K_UP), 0);
				return;
			case KVAL(K_P9):
				do_fn(KVAL(K_PGUP), 0);
				return;
			case KVAL(K_P5):
				applkey('G', vc_kbd_mode(kbd, VC_APPLIC));
				return;
		}

	put_queue(pad_chars[value]);
	if (value == KVAL(K_PENTER) && vc_kbd_mode(kbd, VC_CRLF))
		put_queue(10);
}
Ejemplo n.º 2
0
static void num(void)
{
	if (vc_kbd_mode(kbd,VC_APPLIC))
		applkey('P', 1);
	else
		bare_num();
}
Ejemplo n.º 3
0
static void
do_cur(unsigned char value, char up_flag)
{
#if 1
#ifdef DBG2
   printf("do_cur: %d\r\n", value);
#endif
   if (up_flag)
      return;

   switch (K(KT_CUR, value))
   {
   case K_DOWN:
      put_acqueue(KEY_DOWN);
      break;
   case K_LEFT:
      put_acqueue(KEY_LEFT);
      break;
   case K_RIGHT:
      put_acqueue(KEY_RIGHT);
      break;
   case K_UP:
      put_acqueue(KEY_UP);
      break;
   }
#else
   static const char *cur_chars = "BDCA";

   if (up_flag)
      return;

   applkey(cur_chars[value], /*vc_kbd_mode(kbd,VC_CKMODE) */ 0);
#endif
}
Ejemplo n.º 4
0
static void do_cur(unsigned char value, char up_flag)
{
	static const char *cur_chars = "BDCA";
	if (up_flag)
		return;

	applkey(cur_chars[value], vc_kbd_mode(kbd,VC_CKMODE));
}
Ejemplo n.º 5
0
static void num(void)
{
	if (vc_kbd_mode(kbd,VC_APPLIC)) {
		applkey('P', 1);
		return;
	}
	if (!rep)	/* no autorepeat for numlock, ChN */
		chg_vc_kbd_led(kbd,VC_NUMLOCK);
}
Ejemplo n.º 6
0
static void
do_pad(unsigned char value, char up_flag)
{
   static const char pad_chars[] = "0123456789+-*/\015,.?()";

   /*static const char app_map[] = "pqrstuvwxylSRQMnnmPQ"; */

#ifdef DBG2
   printf("do_pad: %d\r\n", value);
#endif

   if (up_flag)
      return;			/* no action, if this is a key release */

#if 0
   /* kludge... shift forces cursor/number keys */
   if ( /*vc_kbd_mode(kbd,VC_APPLIC) */ applic_mode && !k_down[KG_SHIFT])
   {
      if (value < sizeof(app_map))
	 applkey(app_map[value], 1);
      return;
   }
#endif

   switch (value)
   {
   case KVAL(K_PPLUS):
      put_acqueue('+');
      return;
   case KVAL(K_PMINUS):
      put_acqueue('-');
      return;
   case KVAL(K_PSLASH):
      put_acqueue('/');
      return;
   case KVAL(K_PSTAR):
      put_acqueue('*');
      return;
   }

   if ((!scan_numlock_state	/*vc_kbd_led(kbd,VC_NUMLOCK) */
	&& !(shift_state & ((1 << KG_SHIFT) | (1 << KG_SHIFTL) | (1 << KG_SHIFTR)))) || (scan_numlock_state && (shift_state & ((1 << KG_CTRL) | (1 << KG_CTRLL) | (1 << KG_CTRLR)))))
   {
      switch (value)
      {
      case KVAL(K_PCOMMA):
      case KVAL(K_PDOT):
	 do_fn(KVAL(K_REMOVE), 0);
	 return;
      case KVAL(K_P0):
	 do_fn(KVAL(K_INSERT), 0);
	 return;
      case KVAL(K_P1):
	 do_fn(KVAL(K_SELECT), 0);
	 return;
      case KVAL(K_P2):
	 do_cur(KVAL(K_DOWN), 0);
	 return;
      case KVAL(K_P3):
	 do_fn(KVAL(K_PGDN), 0);
	 return;
      case KVAL(K_P4):
	 do_cur(KVAL(K_LEFT), 0);
	 return;
      case KVAL(K_P6):
	 do_cur(KVAL(K_RIGHT), 0);
	 return;
      case KVAL(K_P7):
	 do_fn(KVAL(K_FIND), 0);
	 return;
      case KVAL(K_P8):
	 do_cur(KVAL(K_UP), 0);
	 return;
      case KVAL(K_P9):
	 do_fn(KVAL(K_PGUP), 0);
	 return;
      case KVAL(K_P5):
	 applkey('G', /*vc_kbd_mode(kbd, VC_APPLIC) */ applic_mode);
	 return;
      }
   }

   if (value < sizeof(pad_chars))
      /*put_fqueue(pad_chars[value]); */
      put_queue(pad_chars[value]);
#if 0
   if (value == KVAL(K_PENTER) && vc_kbd_mode(kbd, VC_CRLF))
      put_queue(10);
#endif
}