/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* c_keys.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_utils.h" #include "m_prompt.h" int16_t c_ctrl_l(char *line, t_caps *tcaps, t_msh *msh) { tputs(tgetstr("cl", NULL), 1, ft_putchar); m_prompt_psx(1, msh); c_redraw_line(line, tcaps, msh); return (1); } int16_t c_home_key(t_caps *tcaps) { uint16_t i; i = tcaps->cpos; while (i > 0) { tputs(tgetstr("le", NULL), 1, ft_putchar); i--; } tcaps->cpos = 0; return (1); } int16_t c_end_key(uint16_t size, t_caps *tcaps) { uint16_t i; i = tcaps->cpos; while (i < size) { tputs(tgetstr("nd", NULL), 1, ft_putchar); i++; } tcaps->cpos = size; return (1); } int16_t c_key_right(uint32_t len, uint32_t plen, t_caps *tcaps) { if (((tcaps->cpos + 1) % (tcaps->ws.ws_col - plen)) == 0 && tcaps->cpos < len) { tputs(tgetstr("do", NULL), 1, ft_putchar); tputs(tgetstr("cr", NULL), 1, ft_putchar); tcaps->cpos++; } else if (tcaps->cpos < len) { tputs(tgetstr("nd", NULL), 1, ft_putchar); tcaps->cpos++; } return (1); } int16_t c_key_left(uint32_t len, uint32_t plen, t_caps *tcaps) { int32_t pos; (void)len; pos = -1; if (((tcaps->cpos) % (tcaps->ws.ws_col - plen)) == 0 && tcaps->cpos >= 1) { tputs(tgetstr("up", NULL), 1, ft_putchar); while(++pos <= (tcaps->ws.ws_col)) tputs(tgetstr("nd", NULL), 1, ft_putchar); tcaps->cpos--; } else if (tcaps->cpos >= 1) { tputs(tgetstr("le", NULL), 1, ft_putchar); tcaps->cpos--; } return (1); }