Esempio n. 1
0
static ACTION process_key_event(PLAYER *player, XKeyEvent *evnt)
{
  KeySym ks;
  ACTION act = ACT_NONE;
  int player_type = player && player->type;	
  int shift_state;
    
  ks = XLookupKeysym(evnt, 0);
/*    printf  ("KeySym = %lx\n", ks); */
     
  if (ks >= XK_a && ks <= XK_z)
	ks -= (XK_a - XK_A);		
  else
  if (ks >= XK_KP_Home && ks <= XK_KP_Begin)
	 		ks -= (XK_KP_Home - XK_Home);		

  if (ks >= XK_KP_0 && ks <= XK_KP_9)
	  ks -= (XK_KP_0 - XK_0);		
  else
	  if (ks == 0) ks = XK_Begin;		


  if (HelpMode || game.level == SummaryLevel)
	shift_state = 1;
  else
	shift_state = evnt->state & (ShiftMask | Mod1Mask);	

#ifdef USE_VOLUME_CONTROL
  if (shift_state || (player_type > 0 && game.level < Levels))
	  act = get_key_action(ks, VolumeKeys, VolumeKeysCount);

  if (act == ACT_NONE && player_type == 0)
#else
  if (player_type == 0)
#endif
  { if (shift_state)
	  act = get_key_action(ks, ShiftKeys, ShiftKeysCount);
	else      
	  act = get_key_action(ks, PlayerKeys, PlayerKeysCount);
  }	  

  if (act == ACT_NONE)
  {  act = get_key_action(ks, CommonKeys, CommonKeysCount);
		if(shift_state && act == ACT_ROTATEFWD) act = ACT_ROTATEBACK; 
  }

  if  ((act == ACT_TAB || act == ACT_DROP) && shift_state)
							 act = ACT_BACKTAB;

  return act;
}
Esempio n. 2
0
static ACTION process_key_pressed_edit(PLAYER *player, int key)
{
	 		
//		if (isprint(key)) return (ACTION) (0x100 | key);
		if (key >= ' ' && key <= 0x100) return (ACTION) (0x100 | key);

		return  get_key_action(key, EditKeys, EditKeysCount);

}
Esempio n. 3
0
static ACTION process_key_event_edit(PLAYER *player, XKeyEvent *xkey)
{	KeySym ks;
	char buffer[2];
	int  c;  

	c = XLookupString(xkey, buffer, 2, &ks, 0);
	if (c == 1)
	{  c = buffer[0];
//		if (!isprint(c))
		 if (!iscntrl(c)) return (ACTION) (0x100 | c);
	   
	}
	 
	return  get_key_action(ks, EditKeys, EditKeysCount);
}
Esempio n. 4
0
static ACTION process_key_pressed(PLAYER *player, int key)
{	int player_type = player && player->type;	
	int shift_state;
	ACTION act = ACT_NONE;

	if (key >= 'a' && key <= 'z') key -= ('a' - 'A');
 
    if (HelpMode || game.level == SummaryLevel)
		shift_state = 1;
	else
		shift_state = get_kbd_shift() & 9;	

#ifdef USE_VOLUME_CONTROL
  if (shift_state || (player_type > 0 && game.level < Levels))
	  act = get_key_action(key, VolumeKeys, VolumeKeysCount);

  if (act == ACT_NONE && player_type == 0)
#else
  if (player_type == 0)
#endif
  { if (shift_state)
	  act = get_key_action(key, ShiftKeys, ShiftKeysCount);
	else      
	  act = get_key_action(key, PlayerKeys, PlayerKeysCount);
  }	  

  if (act == ACT_NONE) 
	{	act = get_key_action(key, CommonKeys, CommonKeysCount);
		if(shift_state && act == ACT_ROTATEFWD) act = ACT_ROTATEBACK; 
	}

  if  ((act == ACT_TAB || act == ACT_DROP) && shift_state)
			  act = ACT_BACKTAB;

	return act;
}
Esempio n. 5
0
void get_key_pres(gpointer data,XEvent *event)
{
    AConvert *aconv = (AConvert *)data;
    WInfo *info = win_find(aconv->keyboard->win,aconv);
    if(info)
    {
        int action=0;
        int slen;


        if(!info)
        {
            return ;
        }

        action=get_key_action (event);
        slen = aconv->keyboard->gstr->len;//g_list_length(aconv->keyboard->ks);

        switch (action)
        {
        case KLB_NO_ACTION:
            free_keysym_to_list(aconv);
            return ;
        case KLB_CLEAR:
            free_keysym_to_list(aconv);
            return ;
        case KLB_ENTER:
            free_keysym_to_list(aconv);
            return ;
        case KLB_FLUSH:
            add_char_to_win(aconv,event,info);
            break;
        case KLB_SWITCH_MODE:
            if (KLB_INSERT_MODE == info->mode)
                info->mode = KLB_REPLACE_MODE;
            else
                info->mode = KLB_INSERT_MODE;
            return ;
        case KLB_MOVE_LEFT:
            if ((slen >0) && (aconv->keyboard->iterator <= slen))
                aconv->keyboard->iterator++;
            else
            {
                free_keysym_to_list(aconv);
            }
            return ;
        case KLB_MOVE_RIGHT:
            if (aconv->keyboard->iterator <= slen)
                aconv->keyboard->iterator--;
            else
            {
                free_keysym_to_list(aconv);
            }
            return;
        case KLB_DEL_SYM_LEFT:
            if (aconv->keyboard->iterator <= 0)
            {
                if(slen>0)
                {
                    dell_keysym_to_list(aconv,slen);
                }
            }
            else if (aconv->keyboard->iterator >= 1)
            {
                if(slen>0)
                {
                    dell_keysym_to_list(aconv,slen-aconv->keyboard->iterator);
                }
            }
            else
            {
                free_keysym_to_list(aconv);
            }
            break;
        case KLB_DEL_SYM_RIGHT:
            if (aconv->keyboard->iterator <= 0)
            {
                free_keysym_to_list(aconv);
            }
            else if (aconv->keyboard->iterator >= 1)
            {
                dell_keysym_to_list(aconv,(slen-aconv->keyboard->iterator)+1);
                aconv->keyboard->iterator--;
            }
            break;
        case KLB_ADD_SYM:
            add_char_to_win(aconv,event,info);
            break;
        default:
            break;
        }
    }
}