summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-10-09 09:29:04 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-10-09 09:29:04 +0000
commit902c43a9689ec2c49dedc579b3d7d9fa45293652 (patch)
tree8a1037a431be5fced557e6ed38c1fa2450d354f4
parent26e7ec47870f6287d7efbecd0499034b9073381e (diff)
downloadrockbox-902c43a9689ec2c49dedc579b3d7d9fa45293652.tar.gz
rockbox-902c43a9689ec2c49dedc579b3d7d9fa45293652.zip
Filters out AN5 keys if UP is pressed. Solves bug #619028.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2545 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/button.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 30b7622f53..4657e1d84b 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -271,16 +271,22 @@ static int button_read(void)
271 else if (data >= LEVEL1) 271 else if (data >= LEVEL1)
272 btn |= BUTTON_F1; 272 btn |= BUTTON_F1;
273 273
274 /* Check DOWN, PLAY, LEFT, RIGHT */ 274 /* Some units have mushy keypads, so pressing UP also activates
275 data = adc_read(ADC_BUTTON_ROW2); 275 the Left/Right buttons. Let's combat that by skipping the AN5
276 if (data >= LEVEL4) 276 checks when UP is pressed. */
277 btn |= BUTTON_DOWN; 277 if(!(btn & BUTTON_UP))
278 else if (data >= LEVEL3) 278 {
279 btn |= BUTTON_PLAY; 279 /* Check DOWN, PLAY, LEFT, RIGHT */
280 else if (data >= LEVEL2) 280 data = adc_read(ADC_BUTTON_ROW2);
281 btn |= BUTTON_LEFT; 281 if (data >= LEVEL4)
282 else if (data >= LEVEL1) 282 btn |= BUTTON_DOWN;
283 btn |= BUTTON_RIGHT; 283 else if (data >= LEVEL3)
284 btn |= BUTTON_PLAY;
285 else if (data >= LEVEL2)
286 btn |= BUTTON_LEFT;
287 else if (data >= LEVEL1)
288 btn |= BUTTON_RIGHT;
289 }
284 290
285 return btn; 291 return btn;
286} 292}