summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/features.txt4
-rw-r--r--apps/lang/english.lang34
-rw-r--r--apps/main.c8
-rw-r--r--apps/menus/settings_menu.c6
-rw-r--r--apps/misc.c26
-rw-r--r--apps/settings.h7
-rw-r--r--apps/settings_list.c11
7 files changed, 94 insertions, 2 deletions
diff --git a/apps/features.txt b/apps/features.txt
index 44ef3ddf95..35f7bb50e0 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -270,3 +270,7 @@ recording_digital
270#if MEMORYSIZE <= 2 270#if MEMORYSIZE <= 2
271lowmem 271lowmem
272#endif 272#endif
273
274#if defined(HAVE_HARDWARE_CLICK)
275hardware_click
276#endif
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index de541af1f5..a228a78f7f 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12917,3 +12917,37 @@
12917 *: "Shortcuts" 12917 *: "Shortcuts"
12918 </voice> 12918 </voice>
12919</phrase> 12919</phrase>
12920<phrase>
12921 id: LANG_KEYCLICK_SOFTWARE
12922 desc: in keyclick settings menu
12923 user: core
12924 <source>
12925 *: none
12926 hardware_click: "Headphone Keyclick"
12927 </source>
12928 <dest>
12929 *: none
12930 hardware_click: "Headphone Keyclick"
12931 </dest>
12932 <voice>
12933 *: none
12934 hardware_click: "Headphone Keyclick"
12935 </voice>
12936</phrase>
12937<phrase>
12938 id: LANG_KEYCLICK_HARDWARE
12939 desc: in keyclick settings menu
12940 user: core
12941 <source>
12942 *: none
12943 hardware_click: "Speaker Keyclick"
12944 </source>
12945 <dest>
12946 *: none
12947 hardware_click: "Speaker Keyclick"
12948 </dest>
12949 <voice>
12950 *: none
12951 hardware_click: "Speaker Keyclick"
12952 </voice>
12953</phrase>
diff --git a/apps/main.c b/apps/main.c
index 38de780c8d..9d83c62965 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -118,6 +118,10 @@
118#include "m5636.h" 118#include "m5636.h"
119#endif 119#endif
120 120
121#ifdef HAVE_HARDWARE_CLICK
122#include "piezo.h"
123#endif
124
121#if (CONFIG_PLATFORM & PLATFORM_NATIVE) 125#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
122#define MAIN_NORETURN_ATTR NORETURN_ATTR 126#define MAIN_NORETURN_ATTR NORETURN_ATTR
123#else 127#else
@@ -507,6 +511,10 @@ static void init(void)
507 radio_init(); 511 radio_init();
508#endif 512#endif
509 513
514#ifdef HAVE_HARDWARE_CLICK
515 piezo_init();
516#endif
517
510 /* Keep the order of this 3 (viewportmanager handles statusbars) 518 /* Keep the order of this 3 (viewportmanager handles statusbars)
511 * Must be done before any code uses the multi-screen API */ 519 * Must be done before any code uses the multi-screen API */
512 CHART(">gui_syncstatusbar_init"); 520 CHART(">gui_syncstatusbar_init");
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 02f68aa4ab..079e86616d 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,
229#if CONFIG_CODEC == SWCODEC 229#if CONFIG_CODEC == SWCODEC
230MENUITEM_SETTING(keyclick, &global_settings.keyclick, NULL); 230MENUITEM_SETTING(keyclick, &global_settings.keyclick, NULL);
231MENUITEM_SETTING(keyclick_repeats, &global_settings.keyclick_repeats, NULL); 231MENUITEM_SETTING(keyclick_repeats, &global_settings.keyclick_repeats, NULL);
232#ifdef HAVE_HARDWARE_CLICK
233MENUITEM_SETTING(keyclick_hardware, &global_settings.keyclick_hardware, NULL);
234MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON,
235 &keyclick, &keyclick_hardware, &keyclick_repeats);
236#else
232MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON, 237MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON,
233 &keyclick, &keyclick_repeats); 238 &keyclick, &keyclick_repeats);
234#endif 239#endif
240#endif
235 241
236 242
237#if CONFIG_CODEC == MAS3507D 243#if CONFIG_CODEC == MAS3507D
diff --git a/apps/misc.c b/apps/misc.c
index 0608595d21..04a6d05c91 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -94,6 +94,10 @@
94#endif 94#endif
95#endif 95#endif
96 96
97#ifdef HAVE_HARDWARE_CLICK
98#include "piezo.h"
99#endif
100
97/* units used with output_dyn_value */ 101/* units used with output_dyn_value */
98const unsigned char * const byte_units[] = 102const unsigned char * const byte_units[] =
99{ 103{
@@ -873,14 +877,32 @@ void system_sound_play(enum system_sound sound)
873void keyclick_click(int button) 877void keyclick_click(int button)
874{ 878{
875 /* Settings filters */ 879 /* Settings filters */
876 if (global_settings.keyclick && 880 if (
877 (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))) 881#ifdef HAVE_HARDWARE_CLICK
882 (global_settings.keyclick || global_settings.keyclick_hardware)
883#else
884 global_settings.keyclick
885#endif
886 && (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT)))
878 { 887 {
879 /* Button filters */ 888 /* Button filters */
880 if (button != BUTTON_NONE && !(button & BUTTON_REL) 889 if (button != BUTTON_NONE && !(button & BUTTON_REL)
881 && !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) ) 890 && !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
882 { 891 {
892#ifdef HAVE_HARDWARE_CLICK
893 if (global_settings.keyclick)
894 {
895 system_sound_play(SOUND_KEYCLICK);
896 }
897 if (global_settings.keyclick_hardware)
898 {
899#if !defined(SIMULATOR)
900 piezo_button_beep(false, false);
901#endif
902 }
903#else
883 system_sound_play(SOUND_KEYCLICK); 904 system_sound_play(SOUND_KEYCLICK);
905#endif
884 } 906 }
885 } 907 }
886} 908}
diff --git a/apps/settings.h b/apps/settings.h
index 92ffaf9019..06eba76e3c 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -835,6 +835,13 @@ struct user_settings
835#endif 835#endif
836 } hw_eq_bands[AUDIOHW_EQ_BAND_NUM]; 836 } hw_eq_bands[AUDIOHW_EQ_BAND_NUM];
837#endif /* AUDIOHW_HAVE_EQ */ 837#endif /* AUDIOHW_HAVE_EQ */
838
839#ifdef HAVE_HARDWARE_CLICK
840#if CONFIG_CODEC == SWCODEC
841 bool keyclick_hardware; /* hardware piezo keyclick */
842#endif
843#endif
844
838 char start_directory[MAX_PATHNAME+1]; 845 char start_directory[MAX_PATHNAME+1];
839}; 846};
840 847
diff --git a/apps/settings_list.c b/apps/settings_list.c
index e739f406cb..9232811ada 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1757,12 +1757,23 @@ const struct settings_list settings[] = {
1757#endif /* HAVE_WHEEL_ACCELERATION */ 1757#endif /* HAVE_WHEEL_ACCELERATION */
1758#if CONFIG_CODEC == SWCODEC 1758#if CONFIG_CODEC == SWCODEC
1759 /* keyclick */ 1759 /* keyclick */
1760#ifdef HAVE_HARDWARE_CLICK
1761 CHOICE_SETTING(0, keyclick, LANG_KEYCLICK_SOFTWARE, 0,
1762 "keyclick", "off,weak,moderate,strong", NULL, 4,
1763 ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE),
1764 ID2P(LANG_STRONG)),
1765 OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false,
1766 "keyclick repeats", NULL),
1767 OFFON_SETTING(0, keyclick_hardware, LANG_KEYCLICK_HARDWARE, false,
1768 "hardware keyclick", NULL),
1769#else
1760 CHOICE_SETTING(0, keyclick, LANG_KEYCLICK, 0, 1770 CHOICE_SETTING(0, keyclick, LANG_KEYCLICK, 0,
1761 "keyclick", "off,weak,moderate,strong", NULL, 4, 1771 "keyclick", "off,weak,moderate,strong", NULL, 4,
1762 ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), 1772 ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE),
1763 ID2P(LANG_STRONG)), 1773 ID2P(LANG_STRONG)),
1764 OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false, 1774 OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false,
1765 "keyclick repeats", NULL), 1775 "keyclick repeats", NULL),
1776#endif
1766#endif /* CONFIG_CODEC == SWCODEC */ 1777#endif /* CONFIG_CODEC == SWCODEC */
1767 TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory", 1778 TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory",
1768 PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL), 1779 PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL),