/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* c_input.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include "c_init.h" #include "c_input.h" #include "c_utils.h" #include "m_prompt.h" #include "m_loop.h" int16_t c_init_keys(t_caps *tcaps) { if (tcaps) { tcaps->KL[0] = 27; tcaps->KL[1] = 91; tcaps->KL[2] = 68; tcaps->KL[3] = 0; tcaps->KR[0] = 27; tcaps->KR[1] = 91; tcaps->KR[2] = 67; tcaps->KR[3] = 0; tcaps->CL[0] = 12; tcaps->CL[1] = 0; tcaps->CL[2] = 0; tcaps->CL[3] = 0; tcaps->CC[0] = 3; tcaps->CC[1] = 0; tcaps->CC[2] = 0; tcaps->CC[3] = 0; tcaps->HM[0] = 27; tcaps->HM[1] = 91; tcaps->HM[2] = 72; tcaps->HM[3] = 0; tcaps->ND[0] = 27; tcaps->ND[1] = 91; tcaps->ND[2] = 52; tcaps->ND[3] = 126; return (1); } else return (-1); } uint32_t c_get_line_num(char *line, uint32_t cpos, uint32_t plen, t_caps *tcaps) { uint32_t it; uint32_t line_num; uint32_t len; it = 0; line_num = 0; tcaps->lpos = 1; len = ft_strlen(line); if (len < (tcaps->ws.ws_col - plen)) return (1); while (it < len) { it += (it == 0) ? (tcaps->ws.ws_col - plen) : tcaps->ws.ws_col; tcaps->lpos += (it < cpos) ? 1 : 0; line_num++; } return (line_num); } int16_t c_back_slash(char **line, uint32_t plen, t_caps *tcaps) { int32_t pos; pos = -1; if (tcaps->cpos >= 1) { if (((tcaps->cpos + plen) % (tcaps->ws.ws_col)) == 0) { tputs(tgetstr("up", NULL), 1, ft_putchar); while(++pos <= (tcaps->ws.ws_col)) tputs(tgetstr("nd", NULL), 1, ft_putchar); } else { tputs(tgetstr("le", NULL), 1, ft_putchar); } tputs(tgetstr("dc", NULL), 1, ft_putchar); *line = c_delchar(*line, tcaps->cpos); tcaps->cpos--; } return (1); } int16_t c_ctrl_c(char *line, t_caps *tcaps, t_msh *msh) { (void)tcaps; (void)line; msh->ret = 130; c_new_line(NULL, msh, tcaps); return (1); }