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
This commit is contained in:
Jonathan Gordon 2011-11-16 11:05:46 +00:00
parent ea2a3ee7a8
commit f65ceebee8

View file

@ -872,10 +872,12 @@ void system_sound_play(enum system_sound sound)
params->amplitude * *params->setting); params->amplitude * *params->setting);
} }
} }
/* Produce keyclick based upon button and global settings */ /* Produce keyclick based upon button and global settings */
void keyclick_click(int button) void keyclick_click(int button)
{ {
static long last_button = BUTTON_NONE;
bool do_beep = false;
/* Settings filters */ /* Settings filters */
if ( if (
#ifdef HAVE_HARDWARE_CLICK #ifdef HAVE_HARDWARE_CLICK
@ -883,27 +885,48 @@ void keyclick_click(int button)
#else #else
global_settings.keyclick global_settings.keyclick
#endif #endif
&& (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))) )
{ {
/* Button filters */ if (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))
if (button != BUTTON_NONE && !(button & BUTTON_REL)
&& !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
{ {
#ifdef HAVE_HARDWARE_CLICK /* Button filters */
if (global_settings.keyclick) if (button != BUTTON_NONE && !(button & BUTTON_REL)
&& !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
{ {
system_sound_play(SOUND_KEYCLICK); do_beep = true;
} }
if (global_settings.keyclick_hardware) }
{ else if ((button & BUTTON_REPEAT) && (last_button == BUTTON_NONE))
#if !defined(SIMULATOR) {
piezo_button_beep(false, false); do_beep = true;
}
#ifdef HAVE_SCROLLWHEEL
else if (button & (BUTTON_SCROLL_BACK | BUTTON_SCROLL_FWD))
{
do_beep = true;
}
#endif #endif
} }
#else if (button&BUTTON_REPEAT)
last_button = button;
else
last_button = BUTTON_NONE;
if (do_beep)
{
#ifdef HAVE_HARDWARE_CLICK
if (global_settings.keyclick)
{
system_sound_play(SOUND_KEYCLICK); system_sound_play(SOUND_KEYCLICK);
}
if (global_settings.keyclick_hardware)
{
#if !defined(SIMULATOR)
piezo_button_beep(false, false);
#endif #endif
} }
#else
system_sound_play(SOUND_KEYCLICK);
#endif
} }
} }
#endif /* CONFIG_CODEC == SWCODEC */ #endif /* CONFIG_CODEC == SWCODEC */