menu: support seeking the filelist with letter keys

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@956 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2012-07-22 16:56:34 +00:00
parent 134503079f
commit bc3f85abed

View file

@ -559,9 +559,10 @@ static const struct {
#define KEY_PBTN_MAP_SIZE (sizeof(key_pbtn_map) / sizeof(key_pbtn_map[0])) #define KEY_PBTN_MAP_SIZE (sizeof(key_pbtn_map) / sizeof(key_pbtn_map[0]))
static int in_evdev_menu_translate(void *drv_data, int keycode) static int in_evdev_menu_translate(void *drv_data, int keycode, char *charcode)
{ {
in_evdev_t *dev = drv_data; in_evdev_t *dev = drv_data;
int ret = 0;
int i; int i;
if (keycode < 0) if (keycode < 0)
@ -578,12 +579,25 @@ static int in_evdev_menu_translate(void *drv_data, int keycode)
} }
else else
{ {
for (i = 0; i < KEY_PBTN_MAP_SIZE; i++) for (i = 0; i < KEY_PBTN_MAP_SIZE; i++) {
if (key_pbtn_map[i].key == keycode) if (key_pbtn_map[i].key == keycode) {
return key_pbtn_map[i].pbtn; ret = key_pbtn_map[i].pbtn;
break;
}
}
if (charcode != NULL && (unsigned int)keycode < KEY_CNT &&
in_evdev_keys[keycode] != NULL && in_evdev_keys[keycode][1] == 0)
{
char c = in_evdev_keys[keycode][0];
if ('A' <= c && c <= 'Z')
c = 'a' + c - 'A';
ret |= PBTN_CHAR;
*charcode = c;
}
} }
return 0; return ret;
} }
/* remove binds of missing keys, count remaining ones */ /* remove binds of missing keys, count remaining ones */