From 97282fa9160d661751303e018c04dff443bb701e Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sun, 24 Nov 2013 12:19:54 -0800 Subject: [PATCH] fix backspacing disk path in parameters interface --- src/common.h | 3 +++ src/interface.c | 2 +- src/keys.c | 16 ++++++++++++---- src/keys.h | 3 +++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/common.h b/src/common.h index 1ccf63ed..9a1b4102 100644 --- a/src/common.h +++ b/src/common.h @@ -28,6 +28,9 @@ #include #include +#include +#include + #ifndef NDEBUG # if defined(__GNUC__) # pragma GCC diagnostic push diff --git a/src/interface.c b/src/interface.c index 2cf742fc..6f1ad875 100644 --- a/src/interface.c +++ b/src/interface.c @@ -1057,7 +1057,7 @@ void c_interface_parameters() cur_y = option = 0; /* wrap both to first */ } } - else if (ch == kLEFT) /* Arrow left */ + else if ((ch == kLEFT) && (!is_backspace())) /* Arrow left */ { switch (option) { diff --git a/src/keys.c b/src/keys.c index 0114e59c..754e9aff 100644 --- a/src/keys.c +++ b/src/keys.c @@ -14,11 +14,9 @@ * */ -#include -#include -#include -#include +#ifdef __linux__ #include +#endif #include "common.h" #include "keys.h" @@ -51,7 +49,10 @@ pthread_mutex_t interface_mutex = PTHREAD_MUTEX_INITIALIZER; int x_val, y_val; #endif +#define SCODE_BS 14 + static int next_key = -1; +static int last_scancode = -1; static char caps_lock = 1; /* is enabled */ static int in_mygetch = 0; @@ -421,6 +422,8 @@ void c_periodic_update(int dummysig) { void c_read_raw_key(int scancode, int pressed) { int *keymap = NULL; + last_scancode = scancode; + /* determine which key mapping to use */ if (apple_mode == IIE_MODE || in_mygetch) { @@ -508,6 +511,11 @@ void c_read_raw_key(int scancode, int pressed) { } } +bool is_backspace() +{ + return (last_scancode == SCODE_BS); +} + int c_mygetch(int block) { int retval; diff --git a/src/keys.h b/src/keys.h index d2017165..365fc1c2 100644 --- a/src/keys.h +++ b/src/keys.h @@ -14,6 +14,8 @@ * */ +#include "common.h" + #ifndef A2_KEYS_H #define A2_KEYS_H @@ -90,5 +92,6 @@ void c_read_raw_key(int scancode, int pressed); void c_periodic_update(int dummysig); void enter_debugger(void); int c_mygetch(int block); +bool is_backspace(); // is the current key actually a backspace? #endif