* Re: [Powertop] PowerTOP UI navigation enhancement.
@ 2012-09-11 17:07 Chris Ferron
0 siblings, 0 replies; 5+ messages in thread
From: Chris Ferron @ 2012-09-11 17:07 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 8121 bytes --]
On 09/11/2012 09:55 AM, Sergey Senozhatsky wrote:
> On (09/11/12 09:39), Chris Ferron wrote:
>> This patch add more ui navigation features allowing for the scrolling
>> of PowerTop content for each tab. This is done by controlling the
>> location of the winpad, and refreshing the terminal window when
>> needed. To do this, the navigation keys have been updated as follows.
>>
>> "Arrow Keys" now scroll the tab windows
>> "Page up/down" scroll tab windows up and down
>> "TAB" cycles the next window tab
>> "SHIFT+TAB" cycles the previous window tab
>> "ENTER" toggles tunables
>> "SPACE BAR" toggles tunables
>> "r KEY" refresh results and resets view of tab window.
>>
>> Known issues:
>> There is no handler for terminal re-sizing. The workaround is to use
>> "r KEY" to refresh if terminal windows size is changed mid session.
>> ---
>> src/cpu/abstract_cpu.cpp | 1 -
>> src/display.cpp | 98
>> ++++++++++++++++++++++++++++++++++--------------
>> src/display.h | 13 ++++++-
>> src/main.cpp | 17 ++++++---
>> 4 files changed, 93 insertions(+), 36 deletions(-)
>>
>>
>> diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
>> index 8b4c650..ca6901c 100644
>> --- a/src/cpu/abstract_cpu.cpp
>> +++ b/src/cpu/abstract_cpu.cpp
>> @@ -422,7 +422,6 @@ void abstract_cpu::validate(void)
>>
>> if (children[i]) {
>> if (my_time != children[i]->total_pstate_time())
>> - printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
>> first_cpu,
>> (unsigned long long)my_time,
>> children[i]->number,
>
> not sure this will compile.
>
>
> -ss
Crap thanks, v2 on the way.
-C
>
>> diff --git a/src/display.cpp b/src/display.cpp
>> index f48b53f..6a119bc 100644
>> --- a/src/display.cpp
>> +++ b/src/display.cpp
>> @@ -95,7 +95,7 @@ static int current_tab;
>>
>> void show_tab(unsigned int tab)
>> {
>> - WINDOW *win;
>> + class tab_window *win;
>> unsigned int i;
>> int tab_pos = 17;
>> const char *c;
>> @@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
>> wrefresh(tab_bar);
>> wrefresh(bottom_line);
>>
>> - win = get_ncurses_win(tab_names[tab]);
>> + win = tab_windows[tab_names[tab]];
>> if (!win)
>> return;
>>
>> - prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
>> + prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> }
>>
>> WINDOW *get_ncurses_win(const char *name)
>> @@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
>> return get_ncurses_win(name.c_str());
>> }
>>
>> -
>> -void show_next_tab(void)
>> +void show_prev_tab(void)
>> {
>> - class tab_window *w;
>> + class tab_window *w;
>>
>> - if (!display)
>> - return;
>> + if (!display)
>> + return;
>> + w = tab_windows[tab_names[current_tab]];
>> + if (w)
>> + w->hide();
>>
>> - w = tab_windows[tab_names[current_tab]];
>> - if (w)
>> - w->hide();
>> + current_tab --;
>> + if (current_tab < 0)
>> + current_tab = tab_names.size() - 1;
>>
>> - current_tab ++;
>> - if (current_tab >= (int)tab_names.size())
>> - current_tab = 0;
>> -
>> - w = tab_windows[tab_names[current_tab]];
>> - if (w)
>> - w->expose();
>> + w = tab_windows[tab_names[current_tab]];
>> + if (w)
>> + w->expose();
>>
>> - show_tab(current_tab);
>> + show_tab(current_tab);
>> }
>>
>> -void show_prev_tab(void)
>> +void show_next_tab(void)
>> {
>> class tab_window *w;
>>
>> if (!display)
>> return;
>> +
>> w = tab_windows[tab_names[current_tab]];
>> if (w)
>> w->hide();
>>
>> - current_tab --;
>> - if (current_tab < 0)
>> - current_tab = tab_names.size() - 1;
>> + current_tab ++;
>> + if (current_tab >= (int)tab_names.size())
>> + current_tab = 0;
>>
>> w = tab_windows[tab_names[current_tab]];
>> if (w)
>> @@ -241,8 +240,16 @@ void cursor_down(void)
>> class tab_window *w;
>>
>> w = tab_windows[tab_names[current_tab]];
>> - if (w)
>> - w->cursor_down();
>> + if (w) {
>> + if (tab_names[current_tab] == "Tunables") {
>> + if ((w->cursor_pos + 7) >= LINES) {
>> + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + }
>> + w->cursor_down();
>> + } else {
>> + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + }
>> + }
>>
>> show_cur_tab();
>> }
>> @@ -253,12 +260,45 @@ void cursor_up(void)
>>
>> w = tab_windows[tab_names[current_tab]];
>>
>> - if (w)
>> - w->cursor_up();
>> -
>> + if (w) {
>> + w->cursor_up();
>> + if(w->ypad_pos > 0) {
>> + if (tab_names[current_tab] == "Tunables") {
>> + prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + } else {
>> + prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + }
>> + }
>> + }
>> +
>> show_cur_tab();
>> }
>>
>> +void cursor_left(void)
>> +{
>> + class tab_window *w;
>> +
>> + w = tab_windows[tab_names[current_tab]];
>> +
>> + if (w) {
>> + if (w->xpad_pos > 0) {
>> + prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + }
>> + }
>> +}
>> +
>> +void cursor_right(void)
>> +{
>> + class tab_window *w;
>> +
>> + w = tab_windows[tab_names[current_tab]];
>> +
>> + if (w) {
>> + prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> + }
>> +
>> +}
>> +
>> void cursor_enter(void)
>> {
>> class tab_window *w;
>> @@ -279,6 +319,8 @@ void window_refresh()
>> w = tab_windows[tab_names[current_tab]];
>>
>> if (w) {
>> + w->ypad_pos = 0;
>> + w->xpad_pos = 0;
>> w->window_refresh();
>> w->repaint();
>> }
>> diff --git a/src/display.h b/src/display.h
>> index 33aaae1..00887aa 100644
>> --- a/src/display.h
>> +++ b/src/display.h
>> @@ -41,6 +41,8 @@ extern void show_prev_tab(void);
>> extern void show_cur_tab(void);
>> extern void cursor_up(void);
>> extern void cursor_down(void);
>> +extern void cursor_right(void);
>> +extern void cursor_left(void);
>> extern void cursor_enter(void);
>> extern void window_refresh(void);
>>
>> @@ -48,10 +50,17 @@ class tab_window {
>> public:
>> int cursor_pos;
>> int cursor_max;
>> + int xpad_pos, ypad_pos;
>> WINDOW *win;
>>
>> - virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
>> - virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
>> + virtual void cursor_down(void) {
>> + if (cursor_pos < cursor_max ) cursor_pos++; repaint();
>> + } ;
>> + virtual void cursor_up(void) {
>> + if (cursor_pos > 0) cursor_pos--; repaint();
>> + };
>> + virtual void cursor_left(void) { };
>> + virtual void cursor_right(void) { };
>>
>> virtual void cursor_enter(void) { };
>> virtual void window_refresh() { };
>> diff --git a/src/main.cpp b/src/main.cpp
>> index cf47b4e..edc4147 100644
>> --- a/src/main.cpp
>> +++ b/src/main.cpp
>> @@ -135,22 +135,29 @@ static void do_sleep(int seconds)
>> halfdelay(delta * 10);
>>
>> c = getch();
>> -
>> + printf("c (%i)", c);
>> switch (c) {
>> - case KEY_NPAGE:
>> + case 353:
>> + show_prev_tab();
>> + break;
>> + case 9:
>> + show_next_tab();
>> + break;
>> case KEY_RIGHT:
>> - show_next_tab();
>> + cursor_right();
>> break;
>> - case KEY_PPAGE:
>> case KEY_LEFT:
>> - show_prev_tab();
>> + cursor_left();
>> break;
>> + case KEY_NPAGE:
>> case KEY_DOWN:
>> cursor_down();
>> break;
>> + case KEY_PPAGE:
>> case KEY_UP:
>> cursor_up();
>> break;
>> + case 32:
>> case 10:
>> cursor_enter();
>> break;
>>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Powertop] PowerTOP UI navigation enhancement.
@ 2012-09-11 17:16 Ferron, Chris E
0 siblings, 0 replies; 5+ messages in thread
From: Ferron, Chris E @ 2012-09-11 17:16 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 9963 bytes --]
On Tue, Sep 11, 2012 at 10:08 AM, Sergey Senozhatsky
<sergey.senozhatsky(a)gmail.com> wrote:
> On (09/11/12 10:07), Chris Ferron wrote:
>> On 09/11/2012 09:55 AM, Sergey Senozhatsky wrote:
>> >On (09/11/12 09:39), Chris Ferron wrote:
>> >>This patch add more ui navigation features allowing for the scrolling
>> >>of PowerTop content for each tab. This is done by controlling the
>> >>location of the winpad, and refreshing the terminal window when
>> >>needed. To do this, the navigation keys have been updated as follows.
>> >>
>> >>"Arrow Keys" now scroll the tab windows
>> >>"Page up/down" scroll tab windows up and down
>> >>"TAB" cycles the next window tab
>> >>"SHIFT+TAB" cycles the previous window tab
>> >>"ENTER" toggles tunables
>> >>"SPACE BAR" toggles tunables
>> >>"r KEY" refresh results and resets view of tab window.
>> >>
>> >>Known issues:
>> >>There is no handler for terminal re-sizing. The workaround is to use
>> >>"r KEY" to refresh if terminal windows size is changed mid session.
>> >>---
>> >> src/cpu/abstract_cpu.cpp | 1 -
>> >> src/display.cpp | 98
>> >>++++++++++++++++++++++++++++++++++--------------
>> >> src/display.h | 13 ++++++-
>> >> src/main.cpp | 17 ++++++---
>> >> 4 files changed, 93 insertions(+), 36 deletions(-)
>> >>
>> >>
>> >>diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
>> >>index 8b4c650..ca6901c 100644
>> >>--- a/src/cpu/abstract_cpu.cpp
>> >>+++ b/src/cpu/abstract_cpu.cpp
>> >>@@ -422,7 +422,6 @@ void abstract_cpu::validate(void)
>> >> if (children[i]) {
>> >> if (my_time != children[i]->total_pstate_time())
>> >>- printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
>> >> first_cpu,
>> >> (unsigned long long)my_time,
>> >> children[i]->number,
>> >
>> >not sure this will compile.
>> >
>> >
>> > -ss
>> Crap thanks, v2 on the way.
>> -C
>
> no problem
>
>
>>
>> >
>> >>diff --git a/src/display.cpp b/src/display.cpp
>> >>index f48b53f..6a119bc 100644
>> >>--- a/src/display.cpp
>> >>+++ b/src/display.cpp
>> >>@@ -95,7 +95,7 @@ static int current_tab;
>> >> void show_tab(unsigned int tab)
>> >> {
>> >>- WINDOW *win;
>> >>+ class tab_window *win;
>> >> unsigned int i;
>> >> int tab_pos = 17;
>> >> const char *c;
>> >>@@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
>> >> wrefresh(tab_bar);
>> >> wrefresh(bottom_line);
>> >>- win = get_ncurses_win(tab_names[tab]);
>> >>+ win = tab_windows[tab_names[tab]];
>> >> if (!win)
>> >> return;
>> >>- prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
>> >>+ prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >> }
>> >> WINDOW *get_ncurses_win(const char *name)
>> >>@@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
>> >> return get_ncurses_win(name.c_str());
>> >> }
>> >>-
>> >>-void show_next_tab(void)
>> >>+void show_prev_tab(void)
>> >> {
>> >>- class tab_window *w;
>> >>+ class tab_window *w;
>> >>- if (!display)
>> >>- return;
>> >>+ if (!display)
>> >>+ return;
>> >>+ w = tab_windows[tab_names[current_tab]];
>> >>+ if (w)
>> >>+ w->hide();
>> >>- w = tab_windows[tab_names[current_tab]];
>> >>- if (w)
>> >>- w->hide();
>> >>+ current_tab --;
>> >>+ if (current_tab < 0)
>> >>+ current_tab = tab_names.size() - 1;
>> >>- current_tab ++;
>> >>- if (current_tab >= (int)tab_names.size())
>> >>- current_tab = 0;
>> >>-
>> >>- w = tab_windows[tab_names[current_tab]];
>> >>- if (w)
>> >>- w->expose();
>> >>+ w = tab_windows[tab_names[current_tab]];
>> >>+ if (w)
>> >>+ w->expose();
>> >>- show_tab(current_tab);
>> >>+ show_tab(current_tab);
>> >> }
>> >>-void show_prev_tab(void)
>> >>+void show_next_tab(void)
>> >> {
>> >> class tab_window *w;
>> >> if (!display)
>> >> return;
>> >>+
>> >> w = tab_windows[tab_names[current_tab]];
>> >> if (w)
>> >> w->hide();
>> >>- current_tab --;
>> >>- if (current_tab < 0)
>> >>- current_tab = tab_names.size() - 1;
>> >>+ current_tab ++;
>> >>+ if (current_tab >= (int)tab_names.size())
>> >>+ current_tab = 0;
>> >> w = tab_windows[tab_names[current_tab]];
>> >> if (w)
>> >>@@ -241,8 +240,16 @@ void cursor_down(void)
>> >> class tab_window *w;
>> >> w = tab_windows[tab_names[current_tab]];
>> >>- if (w)
>> >>- w->cursor_down();
>> >>+ if (w) {
>> >>+ if (tab_names[current_tab] == "Tunables") {
>> >>+ if ((w->cursor_pos + 7) >= LINES) {
>> >>+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ }
>> >>+ w->cursor_down();
>> >>+ } else {
>> >>+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ }
>> >>+ }
>> >> show_cur_tab();
>> >> }
>> >>@@ -253,12 +260,45 @@ void cursor_up(void)
>> >> w = tab_windows[tab_names[current_tab]];
>> >>- if (w)
>> >>- w->cursor_up();
>> >>-
>> >>+ if (w) {
>> >>+ w->cursor_up();
>> >>+ if(w->ypad_pos > 0) {
>> >>+ if (tab_names[current_tab] == "Tunables") {
>> >>+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ } else {
>> >>+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ }
>> >>+ }
>> >>+ }
>> >>+
>> >> show_cur_tab();
>> >> }
>> >>+void cursor_left(void)
>> >>+{
>> >>+ class tab_window *w;
>> >>+
>> >>+ w = tab_windows[tab_names[current_tab]];
>> >>+
>> >>+ if (w) {
>> >>+ if (w->xpad_pos > 0) {
>> >>+ prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ }
>> >>+ }
>> >>+}
>> >>+
>> >>+void cursor_right(void)
>> >>+{
>> >>+ class tab_window *w;
>> >>+
>> >>+ w = tab_windows[tab_names[current_tab]];
>> >>+
>> >>+ if (w) {
>> >>+ prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
>> >>+ }
>> >>+
>> >>+}
>> >>+
>> >> void cursor_enter(void)
>> >> {
>> >> class tab_window *w;
>> >>@@ -279,6 +319,8 @@ void window_refresh()
>> >> w = tab_windows[tab_names[current_tab]];
>> >> if (w) {
>> >>+ w->ypad_pos = 0;
>> >>+ w->xpad_pos = 0;
>> >> w->window_refresh();
>> >> w->repaint();
>> >> }
>> >>diff --git a/src/display.h b/src/display.h
>> >>index 33aaae1..00887aa 100644
>> >>--- a/src/display.h
>> >>+++ b/src/display.h
>> >>@@ -41,6 +41,8 @@ extern void show_prev_tab(void);
>> >> extern void show_cur_tab(void);
>> >> extern void cursor_up(void);
>> >> extern void cursor_down(void);
>> >>+extern void cursor_right(void);
>> >>+extern void cursor_left(void);
>> >> extern void cursor_enter(void);
>> >> extern void window_refresh(void);
>> >>@@ -48,10 +50,17 @@ class tab_window {
>> >> public:
>> >> int cursor_pos;
>> >> int cursor_max;
>> >>+ int xpad_pos, ypad_pos;
>> >> WINDOW *win;
>> >>- virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
>> >>- virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
>> >>+ virtual void cursor_down(void) {
>> >>+ if (cursor_pos < cursor_max ) cursor_pos++; repaint();
>> >>+ } ;
>> >>+ virtual void cursor_up(void) {
>> >>+ if (cursor_pos > 0) cursor_pos--; repaint();
>> >>+ };
>> >>+ virtual void cursor_left(void) { };
>> >>+ virtual void cursor_right(void) { };
>> >> virtual void cursor_enter(void) { };
>> >> virtual void window_refresh() { };
>> >>diff --git a/src/main.cpp b/src/main.cpp
>> >>index cf47b4e..edc4147 100644
>> >>--- a/src/main.cpp
>> >>+++ b/src/main.cpp
>> >>@@ -135,22 +135,29 @@ static void do_sleep(int seconds)
>> >> halfdelay(delta * 10);
>> >> c = getch();
>> >>-
>> >>+ printf("c (%i)", c);
>
>
> could we please push debug output to stderr, for example, and run 'powertop 2 > cursor_pos_log'.
> printf() just messes with ncurses output.
>
>
> -ss
Yes absolutely.
-C
>
>
>> >> switch (c) {
>> >>- case KEY_NPAGE:
>> >>+ case 353:
>> >>+ show_prev_tab();
>> >>+ break;
>> >>+ case 9:
>> >>+ show_next_tab();
>> >>+ break;
>> >> case KEY_RIGHT:
>> >>- show_next_tab();
>> >>+ cursor_right();
>> >> break;
>> >>- case KEY_PPAGE:
>> >> case KEY_LEFT:
>> >>- show_prev_tab();
>> >>+ cursor_left();
>> >> break;
>> >>+ case KEY_NPAGE:
>> >> case KEY_DOWN:
>> >> cursor_down();
>> >> break;
>> >>+ case KEY_PPAGE:
>> >> case KEY_UP:
>> >> cursor_up();
>> >> break;
>> >>+ case 32:
>> >> case 10:
>> >> cursor_enter();
>> >> break;
>> >>
>>
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Powertop] PowerTOP UI navigation enhancement.
@ 2012-09-11 17:08 Sergey Senozhatsky
0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2012-09-11 17:08 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 8450 bytes --]
On (09/11/12 10:07), Chris Ferron wrote:
> On 09/11/2012 09:55 AM, Sergey Senozhatsky wrote:
> >On (09/11/12 09:39), Chris Ferron wrote:
> >>This patch add more ui navigation features allowing for the scrolling
> >>of PowerTop content for each tab. This is done by controlling the
> >>location of the winpad, and refreshing the terminal window when
> >>needed. To do this, the navigation keys have been updated as follows.
> >>
> >>"Arrow Keys" now scroll the tab windows
> >>"Page up/down" scroll tab windows up and down
> >>"TAB" cycles the next window tab
> >>"SHIFT+TAB" cycles the previous window tab
> >>"ENTER" toggles tunables
> >>"SPACE BAR" toggles tunables
> >>"r KEY" refresh results and resets view of tab window.
> >>
> >>Known issues:
> >>There is no handler for terminal re-sizing. The workaround is to use
> >>"r KEY" to refresh if terminal windows size is changed mid session.
> >>---
> >> src/cpu/abstract_cpu.cpp | 1 -
> >> src/display.cpp | 98
> >>++++++++++++++++++++++++++++++++++--------------
> >> src/display.h | 13 ++++++-
> >> src/main.cpp | 17 ++++++---
> >> 4 files changed, 93 insertions(+), 36 deletions(-)
> >>
> >>
> >>diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
> >>index 8b4c650..ca6901c 100644
> >>--- a/src/cpu/abstract_cpu.cpp
> >>+++ b/src/cpu/abstract_cpu.cpp
> >>@@ -422,7 +422,6 @@ void abstract_cpu::validate(void)
> >> if (children[i]) {
> >> if (my_time != children[i]->total_pstate_time())
> >>- printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
> >> first_cpu,
> >> (unsigned long long)my_time,
> >> children[i]->number,
> >
> >not sure this will compile.
> >
> >
> > -ss
> Crap thanks, v2 on the way.
> -C
no problem
>
> >
> >>diff --git a/src/display.cpp b/src/display.cpp
> >>index f48b53f..6a119bc 100644
> >>--- a/src/display.cpp
> >>+++ b/src/display.cpp
> >>@@ -95,7 +95,7 @@ static int current_tab;
> >> void show_tab(unsigned int tab)
> >> {
> >>- WINDOW *win;
> >>+ class tab_window *win;
> >> unsigned int i;
> >> int tab_pos = 17;
> >> const char *c;
> >>@@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
> >> wrefresh(tab_bar);
> >> wrefresh(bottom_line);
> >>- win = get_ncurses_win(tab_names[tab]);
> >>+ win = tab_windows[tab_names[tab]];
> >> if (!win)
> >> return;
> >>- prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
> >>+ prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >> }
> >> WINDOW *get_ncurses_win(const char *name)
> >>@@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
> >> return get_ncurses_win(name.c_str());
> >> }
> >>-
> >>-void show_next_tab(void)
> >>+void show_prev_tab(void)
> >> {
> >>- class tab_window *w;
> >>+ class tab_window *w;
> >>- if (!display)
> >>- return;
> >>+ if (!display)
> >>+ return;
> >>+ w = tab_windows[tab_names[current_tab]];
> >>+ if (w)
> >>+ w->hide();
> >>- w = tab_windows[tab_names[current_tab]];
> >>- if (w)
> >>- w->hide();
> >>+ current_tab --;
> >>+ if (current_tab < 0)
> >>+ current_tab = tab_names.size() - 1;
> >>- current_tab ++;
> >>- if (current_tab >= (int)tab_names.size())
> >>- current_tab = 0;
> >>-
> >>- w = tab_windows[tab_names[current_tab]];
> >>- if (w)
> >>- w->expose();
> >>+ w = tab_windows[tab_names[current_tab]];
> >>+ if (w)
> >>+ w->expose();
> >>- show_tab(current_tab);
> >>+ show_tab(current_tab);
> >> }
> >>-void show_prev_tab(void)
> >>+void show_next_tab(void)
> >> {
> >> class tab_window *w;
> >> if (!display)
> >> return;
> >>+
> >> w = tab_windows[tab_names[current_tab]];
> >> if (w)
> >> w->hide();
> >>- current_tab --;
> >>- if (current_tab < 0)
> >>- current_tab = tab_names.size() - 1;
> >>+ current_tab ++;
> >>+ if (current_tab >= (int)tab_names.size())
> >>+ current_tab = 0;
> >> w = tab_windows[tab_names[current_tab]];
> >> if (w)
> >>@@ -241,8 +240,16 @@ void cursor_down(void)
> >> class tab_window *w;
> >> w = tab_windows[tab_names[current_tab]];
> >>- if (w)
> >>- w->cursor_down();
> >>+ if (w) {
> >>+ if (tab_names[current_tab] == "Tunables") {
> >>+ if ((w->cursor_pos + 7) >= LINES) {
> >>+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ }
> >>+ w->cursor_down();
> >>+ } else {
> >>+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ }
> >>+ }
> >> show_cur_tab();
> >> }
> >>@@ -253,12 +260,45 @@ void cursor_up(void)
> >> w = tab_windows[tab_names[current_tab]];
> >>- if (w)
> >>- w->cursor_up();
> >>-
> >>+ if (w) {
> >>+ w->cursor_up();
> >>+ if(w->ypad_pos > 0) {
> >>+ if (tab_names[current_tab] == "Tunables") {
> >>+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ } else {
> >>+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ }
> >>+ }
> >>+ }
> >>+
> >> show_cur_tab();
> >> }
> >>+void cursor_left(void)
> >>+{
> >>+ class tab_window *w;
> >>+
> >>+ w = tab_windows[tab_names[current_tab]];
> >>+
> >>+ if (w) {
> >>+ if (w->xpad_pos > 0) {
> >>+ prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ }
> >>+ }
> >>+}
> >>+
> >>+void cursor_right(void)
> >>+{
> >>+ class tab_window *w;
> >>+
> >>+ w = tab_windows[tab_names[current_tab]];
> >>+
> >>+ if (w) {
> >>+ prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> >>+ }
> >>+
> >>+}
> >>+
> >> void cursor_enter(void)
> >> {
> >> class tab_window *w;
> >>@@ -279,6 +319,8 @@ void window_refresh()
> >> w = tab_windows[tab_names[current_tab]];
> >> if (w) {
> >>+ w->ypad_pos = 0;
> >>+ w->xpad_pos = 0;
> >> w->window_refresh();
> >> w->repaint();
> >> }
> >>diff --git a/src/display.h b/src/display.h
> >>index 33aaae1..00887aa 100644
> >>--- a/src/display.h
> >>+++ b/src/display.h
> >>@@ -41,6 +41,8 @@ extern void show_prev_tab(void);
> >> extern void show_cur_tab(void);
> >> extern void cursor_up(void);
> >> extern void cursor_down(void);
> >>+extern void cursor_right(void);
> >>+extern void cursor_left(void);
> >> extern void cursor_enter(void);
> >> extern void window_refresh(void);
> >>@@ -48,10 +50,17 @@ class tab_window {
> >> public:
> >> int cursor_pos;
> >> int cursor_max;
> >>+ int xpad_pos, ypad_pos;
> >> WINDOW *win;
> >>- virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
> >>- virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
> >>+ virtual void cursor_down(void) {
> >>+ if (cursor_pos < cursor_max ) cursor_pos++; repaint();
> >>+ } ;
> >>+ virtual void cursor_up(void) {
> >>+ if (cursor_pos > 0) cursor_pos--; repaint();
> >>+ };
> >>+ virtual void cursor_left(void) { };
> >>+ virtual void cursor_right(void) { };
> >> virtual void cursor_enter(void) { };
> >> virtual void window_refresh() { };
> >>diff --git a/src/main.cpp b/src/main.cpp
> >>index cf47b4e..edc4147 100644
> >>--- a/src/main.cpp
> >>+++ b/src/main.cpp
> >>@@ -135,22 +135,29 @@ static void do_sleep(int seconds)
> >> halfdelay(delta * 10);
> >> c = getch();
> >>-
> >>+ printf("c (%i)", c);
could we please push debug output to stderr, for example, and run 'powertop 2 > cursor_pos_log'.
printf() just messes with ncurses output.
-ss
> >> switch (c) {
> >>- case KEY_NPAGE:
> >>+ case 353:
> >>+ show_prev_tab();
> >>+ break;
> >>+ case 9:
> >>+ show_next_tab();
> >>+ break;
> >> case KEY_RIGHT:
> >>- show_next_tab();
> >>+ cursor_right();
> >> break;
> >>- case KEY_PPAGE:
> >> case KEY_LEFT:
> >>- show_prev_tab();
> >>+ cursor_left();
> >> break;
> >>+ case KEY_NPAGE:
> >> case KEY_DOWN:
> >> cursor_down();
> >> break;
> >>+ case KEY_PPAGE:
> >> case KEY_UP:
> >> cursor_up();
> >> break;
> >>+ case 32:
> >> case 10:
> >> cursor_enter();
> >> break;
> >>
>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Powertop] PowerTOP UI navigation enhancement.
@ 2012-09-11 16:55 Sergey Senozhatsky
0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2012-09-11 16:55 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 7672 bytes --]
On (09/11/12 09:39), Chris Ferron wrote:
> This patch add more ui navigation features allowing for the scrolling
> of PowerTop content for each tab. This is done by controlling the
> location of the winpad, and refreshing the terminal window when
> needed. To do this, the navigation keys have been updated as follows.
>
> "Arrow Keys" now scroll the tab windows
> "Page up/down" scroll tab windows up and down
> "TAB" cycles the next window tab
> "SHIFT+TAB" cycles the previous window tab
> "ENTER" toggles tunables
> "SPACE BAR" toggles tunables
> "r KEY" refresh results and resets view of tab window.
>
> Known issues:
> There is no handler for terminal re-sizing. The workaround is to use
> "r KEY" to refresh if terminal windows size is changed mid session.
> ---
> src/cpu/abstract_cpu.cpp | 1 -
> src/display.cpp | 98
> ++++++++++++++++++++++++++++++++++--------------
> src/display.h | 13 ++++++-
> src/main.cpp | 17 ++++++---
> 4 files changed, 93 insertions(+), 36 deletions(-)
>
>
> diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
> index 8b4c650..ca6901c 100644
> --- a/src/cpu/abstract_cpu.cpp
> +++ b/src/cpu/abstract_cpu.cpp
> @@ -422,7 +422,6 @@ void abstract_cpu::validate(void)
>
> if (children[i]) {
> if (my_time != children[i]->total_pstate_time())
> - printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
> first_cpu,
> (unsigned long long)my_time,
> children[i]->number,
not sure this will compile.
-ss
> diff --git a/src/display.cpp b/src/display.cpp
> index f48b53f..6a119bc 100644
> --- a/src/display.cpp
> +++ b/src/display.cpp
> @@ -95,7 +95,7 @@ static int current_tab;
>
> void show_tab(unsigned int tab)
> {
> - WINDOW *win;
> + class tab_window *win;
> unsigned int i;
> int tab_pos = 17;
> const char *c;
> @@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
> wrefresh(tab_bar);
> wrefresh(bottom_line);
>
> - win = get_ncurses_win(tab_names[tab]);
> + win = tab_windows[tab_names[tab]];
> if (!win)
> return;
>
> - prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
> + prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> }
>
> WINDOW *get_ncurses_win(const char *name)
> @@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
> return get_ncurses_win(name.c_str());
> }
>
> -
> -void show_next_tab(void)
> +void show_prev_tab(void)
> {
> - class tab_window *w;
> + class tab_window *w;
>
> - if (!display)
> - return;
> + if (!display)
> + return;
> + w = tab_windows[tab_names[current_tab]];
> + if (w)
> + w->hide();
>
> - w = tab_windows[tab_names[current_tab]];
> - if (w)
> - w->hide();
> + current_tab --;
> + if (current_tab < 0)
> + current_tab = tab_names.size() - 1;
>
> - current_tab ++;
> - if (current_tab >= (int)tab_names.size())
> - current_tab = 0;
> -
> - w = tab_windows[tab_names[current_tab]];
> - if (w)
> - w->expose();
> + w = tab_windows[tab_names[current_tab]];
> + if (w)
> + w->expose();
>
> - show_tab(current_tab);
> + show_tab(current_tab);
> }
>
> -void show_prev_tab(void)
> +void show_next_tab(void)
> {
> class tab_window *w;
>
> if (!display)
> return;
> +
> w = tab_windows[tab_names[current_tab]];
> if (w)
> w->hide();
>
> - current_tab --;
> - if (current_tab < 0)
> - current_tab = tab_names.size() - 1;
> + current_tab ++;
> + if (current_tab >= (int)tab_names.size())
> + current_tab = 0;
>
> w = tab_windows[tab_names[current_tab]];
> if (w)
> @@ -241,8 +240,16 @@ void cursor_down(void)
> class tab_window *w;
>
> w = tab_windows[tab_names[current_tab]];
> - if (w)
> - w->cursor_down();
> + if (w) {
> + if (tab_names[current_tab] == "Tunables") {
> + if ((w->cursor_pos + 7) >= LINES) {
> + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + }
> + w->cursor_down();
> + } else {
> + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + }
> + }
>
> show_cur_tab();
> }
> @@ -253,12 +260,45 @@ void cursor_up(void)
>
> w = tab_windows[tab_names[current_tab]];
>
> - if (w)
> - w->cursor_up();
> -
> + if (w) {
> + w->cursor_up();
> + if(w->ypad_pos > 0) {
> + if (tab_names[current_tab] == "Tunables") {
> + prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + } else {
> + prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + }
> + }
> + }
> +
> show_cur_tab();
> }
>
> +void cursor_left(void)
> +{
> + class tab_window *w;
> +
> + w = tab_windows[tab_names[current_tab]];
> +
> + if (w) {
> + if (w->xpad_pos > 0) {
> + prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + }
> + }
> +}
> +
> +void cursor_right(void)
> +{
> + class tab_window *w;
> +
> + w = tab_windows[tab_names[current_tab]];
> +
> + if (w) {
> + prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
> + }
> +
> +}
> +
> void cursor_enter(void)
> {
> class tab_window *w;
> @@ -279,6 +319,8 @@ void window_refresh()
> w = tab_windows[tab_names[current_tab]];
>
> if (w) {
> + w->ypad_pos = 0;
> + w->xpad_pos = 0;
> w->window_refresh();
> w->repaint();
> }
> diff --git a/src/display.h b/src/display.h
> index 33aaae1..00887aa 100644
> --- a/src/display.h
> +++ b/src/display.h
> @@ -41,6 +41,8 @@ extern void show_prev_tab(void);
> extern void show_cur_tab(void);
> extern void cursor_up(void);
> extern void cursor_down(void);
> +extern void cursor_right(void);
> +extern void cursor_left(void);
> extern void cursor_enter(void);
> extern void window_refresh(void);
>
> @@ -48,10 +50,17 @@ class tab_window {
> public:
> int cursor_pos;
> int cursor_max;
> + int xpad_pos, ypad_pos;
> WINDOW *win;
>
> - virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
> - virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
> + virtual void cursor_down(void) {
> + if (cursor_pos < cursor_max ) cursor_pos++; repaint();
> + } ;
> + virtual void cursor_up(void) {
> + if (cursor_pos > 0) cursor_pos--; repaint();
> + };
> + virtual void cursor_left(void) { };
> + virtual void cursor_right(void) { };
>
> virtual void cursor_enter(void) { };
> virtual void window_refresh() { };
> diff --git a/src/main.cpp b/src/main.cpp
> index cf47b4e..edc4147 100644
> --- a/src/main.cpp
> +++ b/src/main.cpp
> @@ -135,22 +135,29 @@ static void do_sleep(int seconds)
> halfdelay(delta * 10);
>
> c = getch();
> -
> + printf("c (%i)", c);
> switch (c) {
> - case KEY_NPAGE:
> + case 353:
> + show_prev_tab();
> + break;
> + case 9:
> + show_next_tab();
> + break;
> case KEY_RIGHT:
> - show_next_tab();
> + cursor_right();
> break;
> - case KEY_PPAGE:
> case KEY_LEFT:
> - show_prev_tab();
> + cursor_left();
> break;
> + case KEY_NPAGE:
> case KEY_DOWN:
> cursor_down();
> break;
> + case KEY_PPAGE:
> case KEY_UP:
> cursor_up();
> break;
> + case 32:
> case 10:
> cursor_enter();
> break;
>
^ permalink raw reply [flat|nested] 5+ messages in thread* [Powertop] PowerTOP UI navigation enhancement.
@ 2012-09-11 16:39 Chris Ferron
0 siblings, 0 replies; 5+ messages in thread
From: Chris Ferron @ 2012-09-11 16:39 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 982 bytes --]
This patch add more ui navigation features allowing for the scrolling of
PowerTop content for each tab. This is done by controlling the location
of the winpad, and refreshing the terminal window when needed. To do
this, the navigation keys have been updated as follows.
"Arrow Keys" now scroll the tab windows
"Page up/down" scroll tab windows up and down
"TAB" cycles the next window tab
"SHIFT+TAB" cycles the previous window tab
"ENTER" toggles tunables
"SPACE BAR" toggles tunables
"r KEY" refresh results and resets view of tab window.
Known issues:
There is no handler for terminal re-sizing. The workaround is to use "r
KEY" to refresh if terminal windows size is changed mid session.
---
src/cpu/abstract_cpu.cpp | 1 -
src/display.cpp | 98
++++++++++++++++++++++++++++++++++--------------
src/display.h | 13 ++++++-
src/main.cpp | 17 ++++++---
4 files changed, 93 insertions(+), 36 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-PowerTOP-UI-navigation-enhancement.patch --]
[-- Type: text/x-patch, Size: 5808 bytes --]
diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
index 8b4c650..ca6901c 100644
--- a/src/cpu/abstract_cpu.cpp
+++ b/src/cpu/abstract_cpu.cpp
@@ -422,7 +422,6 @@ void abstract_cpu::validate(void)
if (children[i]) {
if (my_time != children[i]->total_pstate_time())
- printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
first_cpu,
(unsigned long long)my_time,
children[i]->number,
diff --git a/src/display.cpp b/src/display.cpp
index f48b53f..6a119bc 100644
--- a/src/display.cpp
+++ b/src/display.cpp
@@ -95,7 +95,7 @@ static int current_tab;
void show_tab(unsigned int tab)
{
- WINDOW *win;
+ class tab_window *win;
unsigned int i;
int tab_pos = 17;
const char *c;
@@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
wrefresh(tab_bar);
wrefresh(bottom_line);
- win = get_ncurses_win(tab_names[tab]);
+ win = tab_windows[tab_names[tab]];
if (!win)
return;
- prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
+ prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
}
WINDOW *get_ncurses_win(const char *name)
@@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
return get_ncurses_win(name.c_str());
}
-
-void show_next_tab(void)
+void show_prev_tab(void)
{
- class tab_window *w;
+ class tab_window *w;
- if (!display)
- return;
+ if (!display)
+ return;
+ w = tab_windows[tab_names[current_tab]];
+ if (w)
+ w->hide();
- w = tab_windows[tab_names[current_tab]];
- if (w)
- w->hide();
+ current_tab --;
+ if (current_tab < 0)
+ current_tab = tab_names.size() - 1;
- current_tab ++;
- if (current_tab >= (int)tab_names.size())
- current_tab = 0;
-
- w = tab_windows[tab_names[current_tab]];
- if (w)
- w->expose();
+ w = tab_windows[tab_names[current_tab]];
+ if (w)
+ w->expose();
- show_tab(current_tab);
+ show_tab(current_tab);
}
-void show_prev_tab(void)
+void show_next_tab(void)
{
class tab_window *w;
if (!display)
return;
+
w = tab_windows[tab_names[current_tab]];
if (w)
w->hide();
- current_tab --;
- if (current_tab < 0)
- current_tab = tab_names.size() - 1;
+ current_tab ++;
+ if (current_tab >= (int)tab_names.size())
+ current_tab = 0;
w = tab_windows[tab_names[current_tab]];
if (w)
@@ -241,8 +240,16 @@ void cursor_down(void)
class tab_window *w;
w = tab_windows[tab_names[current_tab]];
- if (w)
- w->cursor_down();
+ if (w) {
+ if (tab_names[current_tab] == "Tunables") {
+ if ((w->cursor_pos + 7) >= LINES) {
+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ }
+ w->cursor_down();
+ } else {
+ prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ }
+ }
show_cur_tab();
}
@@ -253,12 +260,45 @@ void cursor_up(void)
w = tab_windows[tab_names[current_tab]];
- if (w)
- w->cursor_up();
-
+ if (w) {
+ w->cursor_up();
+ if(w->ypad_pos > 0) {
+ if (tab_names[current_tab] == "Tunables") {
+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ } else {
+ prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ }
+ }
+ }
+
show_cur_tab();
}
+void cursor_left(void)
+{
+ class tab_window *w;
+
+ w = tab_windows[tab_names[current_tab]];
+
+ if (w) {
+ if (w->xpad_pos > 0) {
+ prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ }
+ }
+}
+
+void cursor_right(void)
+{
+ class tab_window *w;
+
+ w = tab_windows[tab_names[current_tab]];
+
+ if (w) {
+ prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+ }
+
+}
+
void cursor_enter(void)
{
class tab_window *w;
@@ -279,6 +319,8 @@ void window_refresh()
w = tab_windows[tab_names[current_tab]];
if (w) {
+ w->ypad_pos = 0;
+ w->xpad_pos = 0;
w->window_refresh();
w->repaint();
}
diff --git a/src/display.h b/src/display.h
index 33aaae1..00887aa 100644
--- a/src/display.h
+++ b/src/display.h
@@ -41,6 +41,8 @@ extern void show_prev_tab(void);
extern void show_cur_tab(void);
extern void cursor_up(void);
extern void cursor_down(void);
+extern void cursor_right(void);
+extern void cursor_left(void);
extern void cursor_enter(void);
extern void window_refresh(void);
@@ -48,10 +50,17 @@ class tab_window {
public:
int cursor_pos;
int cursor_max;
+ int xpad_pos, ypad_pos;
WINDOW *win;
- virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
- virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
+ virtual void cursor_down(void) {
+ if (cursor_pos < cursor_max ) cursor_pos++; repaint();
+ } ;
+ virtual void cursor_up(void) {
+ if (cursor_pos > 0) cursor_pos--; repaint();
+ };
+ virtual void cursor_left(void) { };
+ virtual void cursor_right(void) { };
virtual void cursor_enter(void) { };
virtual void window_refresh() { };
diff --git a/src/main.cpp b/src/main.cpp
index cf47b4e..edc4147 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -135,22 +135,29 @@ static void do_sleep(int seconds)
halfdelay(delta * 10);
c = getch();
-
+ printf("c (%i)", c);
switch (c) {
- case KEY_NPAGE:
+ case 353:
+ show_prev_tab();
+ break;
+ case 9:
+ show_next_tab();
+ break;
case KEY_RIGHT:
- show_next_tab();
+ cursor_right();
break;
- case KEY_PPAGE:
case KEY_LEFT:
- show_prev_tab();
+ cursor_left();
break;
+ case KEY_NPAGE:
case KEY_DOWN:
cursor_down();
break;
+ case KEY_PPAGE:
case KEY_UP:
cursor_up();
break;
+ case 32:
case 10:
cursor_enter();
break;
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-09-11 17:16 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-11 17:07 [Powertop] PowerTOP UI navigation enhancement Chris Ferron
-- strict thread matches above, loose matches on Subject: below --
2012-09-11 17:16 Ferron, Chris E
2012-09-11 17:08 Sergey Senozhatsky
2012-09-11 16:55 Sergey Senozhatsky
2012-09-11 16:39 Chris Ferron
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.