Esempio n. 1
0
static int keys_inside(int key)
{
assert(sub_current);
assert(main_pad);
	if(!main_pad->wd) return 0;
	if(sub_current->arrow >= 0 && handle_arrow(key)) return KEY_HANDLED;
	switch(key) {
	case 'z':
		if(sub_current->lines > sub_current->offset + main_pad->size_y - PAD_Y) 
			sub_current->offset++;
		break;
	case 'a':
		if(sub_current->offset) sub_current->offset--;
		break;
	case KBD_RIGHT:
		if(SUBWIN_COLS - sub_current->xoffset > main_pad->size_x - PAD_X + 1) 
			 sub_current->xoffset++;
		break;
	case KBD_LEFT:
		if(sub_current->xoffset) sub_current->xoffset--;
		break;
	default: return KEY_SKIPPED;
	}
	return KEY_HANDLED;
}
Esempio n. 2
0
static int		check_key(t_elem **list, struct termios *backup, char *buf)
{
	int		key;

	if ((key = is_return(buf)))
	{
		ft_strdel(&buf);
		handle_rtn(*list, backup);
		exit(0);
	}
	else if ((key = is_del(buf)))
	{
		if (handle_del(list))
			return (-1);
	}
	else if ((key = is_arrow(buf)))
		handle_arrow(*list, key);
	else if ((key = is_space(buf)))
		handle_space(*list);
	else
		return (0);
	return (key);
}