--- alsamixer.c.prev 2005-12-16 11:44:14.000000000 -0700 +++ alsamixer.c 2006-04-01 11:09:25.734428500 -0700 @@ -197,6 +197,8 @@ static int mixer_level = 0; static struct snd_mixer_selem_regopt mixer_options; +static int xdirection = 0; + /* mixer bar channel : left or right */ #define MIXER_CHN_LEFT 0 #define MIXER_CHN_RIGHT 1 @@ -1920,7 +1922,8 @@ if (err != count) mixer_abort (ERR_FCN, "snd_mixer_poll_descriptors (err != count)", 0); - finished = poll(fds, count + 1, -1); + //finished = poll(fds, count + 1, -1); + finished = 1; /* */ /* don't abort on handled signals */ if (finished < 0 && errno == EINTR) @@ -1929,8 +1932,15 @@ mixer_resize (); if (finished > 0) { - if (fds->revents & POLLIN) { - key = getch (); + if (1 || fds->revents & POLLIN) { + //key = getch (); + if (xdirection) { + key = KEY_LEFT; + } else { + key = KEY_RIGHT; + } + usleep(30000); + //usleep(1000000); finished--; } } else { @@ -2230,8 +2240,17 @@ if (! mixer_n_view_elems) mixer_focus_elem = 0; - else + else { + if (mixer_focus_elem <= 0) + xdirection = 0; /* right */ + if (mixer_focus_elem >= mixer_n_view_elems - 1) { + //xdirection = 1; /* left */ + } + if (mixer_focus_elem >= mixer_n_view_elems) { + mixer_focus_elem = 0; + } mixer_focus_elem = CLAMP (mixer_focus_elem, 0, mixer_n_view_elems - 1); + } return finished; }