Adding left, right, home, end and del key support

This commit is contained in:
Anonymus Raccoon
2020-05-07 17:51:48 +02:00
parent 0f5f3cbe97
commit 79542660b4
5 changed files with 64 additions and 2 deletions
+2 -1
View File
@@ -32,7 +32,8 @@ SRC = src/shell.c \
src/key_bindings/basic_typing_functions.c \
src/key_bindings/default_bindings.c \
src/key_bindings/control_commands.c \
src/redirections/pty_pipe.c
src/redirections/pty_pipe.c \
src/key_bindings/move_commands.c
OBJ = $(SRC:%.c=%.o)
OBJ += src/main.o
+8 -1
View File
@@ -32,4 +32,11 @@ int buffer_get_display_pos(buffer_t *buffer);
int self_insert_command(int key, buffer_t *buffer, env_t *env);
int newline_command(int key, buffer_t *buffer, env_t *env);
int eof_command(int key, buffer_t *buffer, env_t *env);
int backward_delete_char_command(int key, buffer_t *buffer, env_t *env);
int backward_delete_char_command(int key, buffer_t *buffer, env_t *env);
int delete_char_command(int key, buffer_t *buffer, env_t *env);
int forward_char_command(int key, buffer_t *buffer, env_t *env);
int backward_char_command(int key, buffer_t *buffer, env_t *env);
int beginning_of_line_command(int key, buffer_t *buffer, env_t *env);
int end_of_line_command(int key, buffer_t *buffer, env_t *env);
@@ -46,6 +46,15 @@ int backward_delete_char_command(int key, buffer_t *buffer, env_t *env)
return (0);
}
int delete_char_command(int key, buffer_t *buffer, env_t *env)
{
int len = buffer->buffer ? strlen(buffer->buffer) : 0;
for (int i = buffer->pos; i < len; i++)
buffer->buffer[i] = buffer->buffer[i + 1];
return (0);
}
int newline_command(int key, buffer_t *buffer, env_t *env)
{
int ret;
+10
View File
@@ -15,6 +15,11 @@ const key_function_t key_functions[] = {
{"newline", &newline_command},
{"enf-of-file", &eof_command},
{"backward-delete-char", &backward_delete_char_command},
{"delete-char", &delete_char_command},
{"backward-char", &backward_char_command},
{"forward-char", &forward_char_command},
{"beginning-of-line", &beginning_of_line_command},
{"end-of-line", &end_of_line_command},
{NULL, NULL}
};
@@ -23,5 +28,10 @@ const binding_t emacs_bindings[] = {
{CTRL('d'), &eof_command},
{127, &backward_delete_char_command},
{KEY_BACKSPACE, &backward_delete_char_command},
{KEY_DC, &delete_char_command},
{KEY_LEFT, &backward_char_command},
{KEY_RIGHT, &forward_char_command},
{KEY_HOME, &beginning_of_line_command},
{KEY_END, &end_of_line_command},
{0, NULL}
};
+35
View File
@@ -0,0 +1,35 @@
/*
** EPITECH PROJECT, 2020
** ash
** File description:
** arrow_commands
*/
#include "shell.h"
#include "key_functions.h"
int backward_char_command(int key, buffer_t *buffer, env_t *env)
{
if (buffer->pos != 0)
buffer->pos--;
return (0);
}
int forward_char_command(int key, buffer_t *buffer, env_t *env)
{
if (buffer->buffer && buffer->buffer[buffer->pos] != '\0')
buffer->pos++;
return (0);
}
int beginning_of_line_command(int key, buffer_t *buffer, env_t *env)
{
buffer->pos = 0;
return (0);
}
int end_of_line_command(int key, buffer_t *buffer, env_t *env)
{
buffer->pos = buffer->buffer ? strlen(buffer->buffer) : 0;
return (0);
}