public override bool ProcessKey(int c)
{
int n;
switch (c){
case 16: // Control-p
case Curses.KeyUp:
if (selected > 0){
selected--;
if (selected < top)
top = selected;
SelectedChanged ();
Redraw ();
return true;
} else
return false;
case 14: // Control-n
case Curses.KeyDown:
if (selected+1 < items){
selected++;
if (selected >= top + h){
top++;
}
SelectedChanged ();
Redraw ();
return true;
} else
return false;
case 22: // Control-v
case Curses.KeyNPage:
n = (selected + h);
if (n > items)
n = items-1;
if (n != selected){
selected = n;
if (items >= h)
top = selected;
else
top = 0;
SelectedChanged ();
Redraw ();
}
return true;
case Curses.KeyPPage:
n = (selected - h);
if (n < 0)
n = 0;
if (n != selected){
selected = n;
top = selected;
SelectedChanged ();
Redraw ();
}
return true;
default:
return provider.ProcessKey (c);
}
}