diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-16 10:25:43 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-16 10:25:43 +0000 |
| commit | be716c0be80e3f64a81a3f19b683db40489f47a1 (patch) | |
| tree | bc461ad1de8b5fda6c3c14d0cfd737bdc69ddc83 /apps | |
| parent | b7508a766df991539bec5e10fd7739001c1fdb99 (diff) | |
| download | rockbox-be716c0be80e3f64a81a3f19b683db40489f47a1.zip rockbox-be716c0be80e3f64a81a3f19b683db40489f47a1.tar.gz rockbox-be716c0be80e3f64a81a3f19b683db40489f47a1.tar.bz2 rockbox-be716c0be80e3f64a81a3f19b683db40489f47a1.tar.xz | |
Finally commit FS#5111 - piezo clicker for ipods!
Origional implementation by Robert Keevil with contributions from Frederik Vestre, Stoyan Stratev, Craig Elliott, Michael Sparmann, Thomas Schott, Rosso Maltese, and syncs from a bunch of other people!
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30995 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/features.txt | 4 | ||||
| -rw-r--r-- | apps/lang/english.lang | 34 | ||||
| -rw-r--r-- | apps/main.c | 8 | ||||
| -rw-r--r-- | apps/menus/settings_menu.c | 6 | ||||
| -rw-r--r-- | apps/misc.c | 26 | ||||
| -rw-r--r-- | apps/settings.h | 7 | ||||
| -rw-r--r-- | apps/settings_list.c | 11 |
7 files changed, 94 insertions, 2 deletions
diff --git a/apps/features.txt b/apps/features.txt index 44ef3dd..35f7bb5 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -270,3 +270,7 @@ recording_digital #if MEMORYSIZE <= 2 lowmem #endif + +#if defined(HAVE_HARDWARE_CLICK) +hardware_click +#endif diff --git a/apps/lang/english.lang b/apps/lang/english.lang index de541af..a228a78 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -12917,3 +12917,37 @@ *: "Shortcuts" </voice> </phrase> +<phrase> + id: LANG_KEYCLICK_SOFTWARE + desc: in keyclick settings menu + user: core + <source> + *: none + hardware_click: "Headphone Keyclick" + </source> + <dest> + *: none + hardware_click: "Headphone Keyclick" + </dest> + <voice> + *: none + hardware_click: "Headphone Keyclick" + </voice> +</phrase> +<phrase> + id: LANG_KEYCLICK_HARDWARE + desc: in keyclick settings menu + user: core + <source> + *: none + hardware_click: "Speaker Keyclick" + </source> + <dest> + *: none + hardware_click: "Speaker Keyclick" + </dest> + <voice> + *: none + hardware_click: "Speaker Keyclick" + </voice> +</phrase> diff --git a/apps/main.c b/apps/main.c index 38de780..9d83c62 100644 --- a/apps/main.c +++ b/apps/main.c @@ -118,6 +118,10 @@ #include "m5636.h" #endif +#ifdef HAVE_HARDWARE_CLICK +#include "piezo.h" +#endif + #if (CONFIG_PLATFORM & PLATFORM_NATIVE) #define MAIN_NORETURN_ATTR NORETURN_ATTR #else @@ -507,6 +511,10 @@ static void init(void) radio_init(); #endif +#ifdef HAVE_HARDWARE_CLICK + piezo_init(); +#endif + /* Keep the order of this 3 (viewportmanager handles statusbars) * Must be done before any code uses the multi-screen API */ CHART(">gui_syncstatusbar_init"); diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 02f68aa..079e866 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -229,9 +229,15 @@ MAKE_MENU(limits_menu, ID2P(LANG_LIMITS_MENU), 0, Icon_NOICON, #if CONFIG_CODEC == SWCODEC MENUITEM_SETTING(keyclick, &global_settings.keyclick, NULL); MENUITEM_SETTING(keyclick_repeats, &global_settings.keyclick_repeats, NULL); +#ifdef HAVE_HARDWARE_CLICK +MENUITEM_SETTING(keyclick_hardware, &global_settings.keyclick_hardware, NULL); +MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON, + &keyclick, &keyclick_hardware, &keyclick_repeats); +#else MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON, &keyclick, &keyclick_repeats); #endif +#endif #if CONFIG_CODEC == MAS3507D diff --git a/apps/misc.c b/apps/misc.c index 0608595..04a6d05 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -94,6 +94,10 @@ #endif #endif +#ifdef HAVE_HARDWARE_CLICK +#include "piezo.h" +#endif + /* units used with output_dyn_value */ const unsigned char * const byte_units[] = { @@ -873,14 +877,32 @@ void system_sound_play(enum system_sound sound) void keyclick_click(int button) { /* Settings filters */ - if (global_settings.keyclick && - (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))) + if ( +#ifdef HAVE_HARDWARE_CLICK + (global_settings.keyclick || global_settings.keyclick_hardware) +#else + global_settings.keyclick +#endif + && (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))) { /* Button filters */ if (button != BUTTON_NONE && !(button & BUTTON_REL) && !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) ) { +#ifdef HAVE_HARDWARE_CLICK + if (global_settings.keyclick) + { + system_sound_play(SOUND_KEYCLICK); + } + if (global_settings.keyclick_hardware) + { +#if !defined(SIMULATOR) + piezo_button_beep(false, false); +#endif + } +#else system_sound_play(SOUND_KEYCLICK); +#endif } } } diff --git a/apps/settings.h b/apps/settings.h index 92ffaf9..06eba76 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -835,6 +835,13 @@ struct user_settings #endif } hw_eq_bands[AUDIOHW_EQ_BAND_NUM]; #endif /* AUDIOHW_HAVE_EQ */ + +#ifdef HAVE_HARDWARE_CLICK +#if CONFIG_CODEC == SWCODEC + bool keyclick_hardware; /* hardware piezo keyclick */ +#endif +#endif + char start_directory[MAX_PATHNAME+1]; }; diff --git a/apps/settings_list.c b/apps/settings_list.c index e739f40..9232811 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -1757,12 +1757,23 @@ const struct settings_list settings[] = { #endif /* HAVE_WHEEL_ACCELERATION */ #if CONFIG_CODEC == SWCODEC /* keyclick */ +#ifdef HAVE_HARDWARE_CLICK + CHOICE_SETTING(0, keyclick, LANG_KEYCLICK_SOFTWARE, 0, + "keyclick", "off,weak,moderate,strong", NULL, 4, + ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), + ID2P(LANG_STRONG)), + OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false, + "keyclick repeats", NULL), + OFFON_SETTING(0, keyclick_hardware, LANG_KEYCLICK_HARDWARE, false, + "hardware keyclick", NULL), +#else CHOICE_SETTING(0, keyclick, LANG_KEYCLICK, 0, "keyclick", "off,weak,moderate,strong", NULL, 4, ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), ID2P(LANG_STRONG)), OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false, "keyclick repeats", NULL), +#endif #endif /* CONFIG_CODEC == SWCODEC */ TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory", PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL), |