summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-11-16 11:05:46 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-11-16 11:05:46 +0000
commitf65ceebee8124080d42295f5fc9aee0af5eb0799 (patch)
treefad81d253c3c79a89beb0df3deaa7ebfc30e2bf8
parentea2a3ee7a8c3d0660f674de69d764d155b4d3a80 (diff)
downloadrockbox-f65ceebee8124080d42295f5fc9aee0af5eb0799.tar.gz
rockbox-f65ceebee8124080d42295f5fc9aee0af5eb0799.zip
Change the "keyclick repeat" setting behaviour so when it is off only the *first* repeat will click.
Otherwise single presses and all wheel movements will cause a click. with "keyclick repeat" enabled *all* repeats will cause clicks git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30997 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/misc.c51
1 files changed, 37 insertions, 14 deletions
diff --git a/apps/misc.c b/apps/misc.c
index 04a6d05c91..407a26c90f 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -872,10 +872,12 @@ void system_sound_play(enum system_sound sound)
872 params->amplitude * *params->setting); 872 params->amplitude * *params->setting);
873 } 873 }
874} 874}
875 875
876/* Produce keyclick based upon button and global settings */ 876/* Produce keyclick based upon button and global settings */
877void keyclick_click(int button) 877void keyclick_click(int button)
878{ 878{
879 static long last_button = BUTTON_NONE;
880 bool do_beep = false;
879 /* Settings filters */ 881 /* Settings filters */
880 if ( 882 if (
881#ifdef HAVE_HARDWARE_CLICK 883#ifdef HAVE_HARDWARE_CLICK
@@ -883,27 +885,48 @@ void keyclick_click(int button)
883#else 885#else
884 global_settings.keyclick 886 global_settings.keyclick
885#endif 887#endif
886 && (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))) 888 )
887 { 889 {
888 /* Button filters */ 890 if (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))
889 if (button != BUTTON_NONE && !(button & BUTTON_REL)
890 && !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
891 { 891 {
892#ifdef HAVE_HARDWARE_CLICK 892 /* Button filters */
893 if (global_settings.keyclick) 893 if (button != BUTTON_NONE && !(button & BUTTON_REL)
894 && !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
894 { 895 {
895 system_sound_play(SOUND_KEYCLICK); 896 do_beep = true;
896 } 897 }
897 if (global_settings.keyclick_hardware) 898 }
898 { 899 else if ((button & BUTTON_REPEAT) && (last_button == BUTTON_NONE))
899#if !defined(SIMULATOR) 900 {
900 piezo_button_beep(false, false); 901 do_beep = true;
902 }
903#ifdef HAVE_SCROLLWHEEL
904 else if (button & (BUTTON_SCROLL_BACK | BUTTON_SCROLL_FWD))
905 {
906 do_beep = true;
907 }
901#endif 908#endif
902 } 909 }
903#else 910 if (button&BUTTON_REPEAT)
911 last_button = button;
912 else
913 last_button = BUTTON_NONE;
914 if (do_beep)
915 {
916#ifdef HAVE_HARDWARE_CLICK
917 if (global_settings.keyclick)
918 {
904 system_sound_play(SOUND_KEYCLICK); 919 system_sound_play(SOUND_KEYCLICK);
920 }
921 if (global_settings.keyclick_hardware)
922 {
923#if !defined(SIMULATOR)
924 piezo_button_beep(false, false);
905#endif 925#endif
906 } 926 }
927#else
928 system_sound_play(SOUND_KEYCLICK);
929#endif
907 } 930 }
908} 931}
909#endif /* CONFIG_CODEC == SWCODEC */ 932#endif /* CONFIG_CODEC == SWCODEC */