diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-16 11:05:46 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-16 11:05:46 +0000 |
commit | f65ceebee8124080d42295f5fc9aee0af5eb0799 (patch) | |
tree | fad81d253c3c79a89beb0df3deaa7ebfc30e2bf8 | |
parent | ea2a3ee7a8c3d0660f674de69d764d155b4d3a80 (diff) | |
download | rockbox-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.c | 51 |
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 */ |
877 | void keyclick_click(int button) | 877 | void 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 */ |