diff options
| author | Martin Scarratt <mmmm@rockbox.org> | 2006-07-23 18:33:43 +0000 |
|---|---|---|
| committer | Martin Scarratt <mmmm@rockbox.org> | 2006-07-23 18:33:43 +0000 |
| commit | af5393c7a62c652943efa3cea385e63aa130dd3f (patch) | |
| tree | fb83e951d002d4d476396e134579b48c4892702f /apps | |
| parent | 4f93b30192270dd7dae6f0625a02cee095abbfac (diff) | |
| download | rockbox-af5393c7a62c652943efa3cea385e63aa130dd3f.zip rockbox-af5393c7a62c652943efa3cea385e63aa130dd3f.tar.gz rockbox-af5393c7a62c652943efa3cea385e63aa130dd3f.tar.bz2 rockbox-af5393c7a62c652943efa3cea385e63aa130dd3f.tar.xz | |
Fix custom Virtual keyboards (broken during VK remote support implementation)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10298 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/recorder/keyboard.c | 60 |
1 files changed, 28 insertions, 32 deletions
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c index 109f745..e31c920 100644 --- a/apps/recorder/keyboard.c +++ b/apps/recorder/keyboard.c @@ -221,11 +221,8 @@ static bool morse_mode = false; int load_kbd(unsigned char* filename) { int fd, count, l; - int i[NB_SCREENS]; - unsigned char buf[4]; - - FOR_NB_SCREENS(l) - i[l] = 0; + int i = 0; + unsigned char buf[4]; if (filename == NULL) { kbd_loaded = false; @@ -236,40 +233,39 @@ int load_kbd(unsigned char* filename) if (fd < 0) return 1; - FOR_NB_SCREENS(l) - { - while (read(fd, buf, 1) == 1 && i[l] < KBD_BUF_SIZE) { - /* check how many bytes to read */ - if (buf[0] < 0x80) { - count = 0; - } else if (buf[0] < 0xe0) { - count = 1; - } else if (buf[0] < 0xf0) { - count = 2; - } else if (buf[0] < 0xf5) { - count = 3; - } else { - /* Invalid size. */ - continue; - } - - if (read(fd, &buf[1], count) != count) { - close(fd); - kbd_loaded = false; - return 1; - } + while (read(fd, buf, 1) == 1 && i < KBD_BUF_SIZE) { + /* check how many bytes to read */ + if (buf[0] < 0x80) { + count = 0; + } else if (buf[0] < 0xe0) { + count = 1; + } else if (buf[0] < 0xf0) { + count = 2; + } else if (buf[0] < 0xf5) { + count = 3; + } else { + /* Invalid size. */ + continue; + } - utf8decode(buf, ¶m[l].kbd_buf[i[l]]); - if (param[l].kbd_buf[i[l]] != 0xFEFF && - param[l].kbd_buf[i[l]] != '\r') /*skip BOM & carriage returns */ - i[l]++; + if (read(fd, &buf[1], count) != count) { + close(fd); + kbd_loaded = false; + return 1; } + + FOR_NB_SCREENS(l) + utf8decode(buf, ¶m[l].kbd_buf[i]); + + if (param[0].kbd_buf[i] != 0xFEFF && param[0].kbd_buf[i] != '\n' && + param[0].kbd_buf[i] != '\r') /*skip BOM & newlines */ + i++; } close(fd); kbd_loaded = true; FOR_NB_SCREENS(l) - param[l].nchars = i[l]; + param[l].nchars = i; return 0; } |