|
@@ -18,6 +18,7 @@
|
18
|
18
|
|
19
|
19
|
#include <assert.h>
|
20
|
20
|
#include <string.h>
|
|
21
|
+#include <gpxe/keys.h>
|
21
|
22
|
#include <gpxe/editstring.h>
|
22
|
23
|
|
23
|
24
|
|
|
@@ -124,6 +125,7 @@ static void kill_eol ( struct edit_string *string ) {
|
124
|
125
|
*/
|
125
|
126
|
int edit_string ( struct edit_string *string, int key ) {
|
126
|
127
|
int retval = 0;
|
|
128
|
+ size_t len = strlen ( string->buf );
|
127
|
129
|
|
128
|
130
|
|
129
|
131
|
string->last_cursor = string->cursor;
|
|
@@ -135,33 +137,39 @@ int edit_string ( struct edit_string *string, int key ) {
|
135
|
137
|
|
136
|
138
|
insert_character ( string, key );
|
137
|
139
|
} else switch ( key ) {
|
138
|
|
- case 0x08:
|
|
140
|
+ case KEY_BACKSPACE:
|
139
|
141
|
|
140
|
142
|
backspace ( string );
|
141
|
143
|
break;
|
142
|
|
- case 0x04:
|
|
144
|
+ case KEY_DC:
|
|
145
|
+ case CTRL_D:
|
143
|
146
|
|
144
|
147
|
delete_character ( string );
|
145
|
148
|
break;
|
146
|
|
- case 0x0b:
|
|
149
|
+ case CTRL_K:
|
|
150
|
+
|
147
|
151
|
kill_eol ( string );
|
148
|
152
|
break;
|
149
|
|
- case 0x01:
|
|
153
|
+ case KEY_HOME:
|
|
154
|
+ case CTRL_A:
|
150
|
155
|
|
151
|
156
|
string->cursor = 0;
|
152
|
157
|
break;
|
153
|
|
- case 0x05:
|
|
158
|
+ case KEY_END:
|
|
159
|
+ case CTRL_E:
|
154
|
160
|
|
155
|
|
- string->cursor = strlen ( string->buf );
|
|
161
|
+ string->cursor = len;
|
156
|
162
|
break;
|
157
|
|
- case 0x02:
|
|
163
|
+ case KEY_LEFT:
|
|
164
|
+ case CTRL_B:
|
158
|
165
|
|
159
|
166
|
if ( string->cursor > 0 )
|
160
|
167
|
string->cursor--;
|
161
|
168
|
break;
|
162
|
|
- case 0x06:
|
|
169
|
+ case KEY_RIGHT:
|
|
170
|
+ case CTRL_F:
|
163
|
171
|
|
164
|
|
- if ( string->cursor < ( string->len - 1 ) )
|
|
172
|
+ if ( string->cursor < len )
|
165
|
173
|
string->cursor++;
|
166
|
174
|
break;
|
167
|
175
|
default:
|