summaryrefslogtreecommitdiffstats
path: root/src/c_keys.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/c_keys.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/c_keys.c b/src/c_keys.c
new file mode 100644
index 0000000..d388d60
--- /dev/null
+++ b/src/c_keys.c
@@ -0,0 +1,84 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* c_keys.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <term.h>
+#include <libft.h>
+
+#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,
+ t_caps *tcaps)
+{
+ if (tcaps->cpos < len)
+ {
+ tputs(tgetstr("nd", NULL), 1, ft_putchar);
+ tcaps->cpos++;
+ }
+ return (1);
+}
+
+int16_t
+ c_key_left(uint32_t len,
+ t_caps *tcaps)
+{
+ (void)len;
+ if (tcaps->cpos >= 1)
+ {
+ tputs(tgetstr("le", NULL), 1, ft_putchar);
+ tcaps->cpos--;
+ }
+ return (1);
+}