Subject: Re: wscons
To: None <krp@freeshell.org>
From: TAKEMURA Shin <takemura@netbsd.org>
List: tech-kern
Date: 07/02/2002 10:38:32
From: David Ferlier <krp@freeshell.org>
Subject: Re: wscons
Date: Mon, 1 Jul 2002 14:53:52 +0000
> On Mon, Jul 01, 2002 at 08:04:43PM +0900, TAKEMURA Shin wrote:
> > You can scroll with Cmd Modifier + scroll keys (the Linux behavior).
> > AND you can use the behavior of FreeBSD : You need to press HoldScreen,
> > then use scroll keys to scroll up / down.
>
> I agree on one point : i think we definitely should remove the first
> option (the mode) : i used my patch for 2 or 3 days, and the two modes
> have advantages so let's activate both.
yes.
> For the scroll.modifier option, don't you think it is a quite good idea ?
I don't say you should throw it away. I just said you can.
At least, it might be good to call scroll ops when Cmd modifier keys and
scroll key are pressed.
In wskbd.c:
+ #ifdef WSDISPLAY_SCROLLSUPPORT
+ static void
+ scroll_command(struct wskbd_softc *sc, keysym_t ksym)
+ {
+ switch (ksym) {
+ case KS_Cmd_ScrollFastUp:
+ case KS_Cmd_ScrollFastDown:
+ wsdisplay_scroll(sc->sc_base.me_dispdv,
+ (ksym == KS_Cmd_ScrollFastUp) ?
+ WSDISPLAY_SCROLL_BACKWARD :
+ WSDISPLAY_SCROLL_FORWARD);
+ break;
+ case KS_Cmd_ScrollSlowUp:
+ case KS_Cmd_ScrollSlowDown:
+ wsdisplay_scroll(sc->sc_base.me_dispdv,
+ (ksym == KS_Cmd_ScrollSlowUp) ?
+ WSDISPLAY_SCROLL_BACKWARD | WSDISPLAY_SCROLL_LOW:
+ WSDISPLAY_SCROLL_FORWARD | WSDISPLAY_SCROLL_LOW);
+ break;
+ }
+ }
+ #endif
static int
internal_command(struct wskbd_softc *sc, u_int *type, keysym_t ksym,
keysym_t ksym2)
{
+ #ifdef WSDISPLAY_SCROLLSUPPORT
+ if (*type == WSCONS_EVENT_KEY_DOWN &&
+ MOD_ONESET(sc->id, MOD_HOLDSCREEN)) {
+ switch (ksym) {
+ case KS_Cmd_ScrollFastUp:
+ case KS_Cmd_ScrollFastDown:
+ case KS_Cmd_ScrollSlowUp:
+ case KS_Cmd_ScrollSlowDown:
+ scroll_command(sc, ksym);
+ return (1);
+ default;
+ /* XXX, what should i do ? */
+ break;
+ }
+ }
+ #endif
/*
* snipped
*/
if (*type != WSCONS_EVENT_KEY_DOWN ||
(! MOD_ONESET(sc->id, MOD_COMMAND) &&
! MOD_ALLSET(sc->id, MOD_COMMAND1 | MOD_COMMAND2)))
return (0);
switch (ksym) {
+ #ifdef WSDISPLAY_SCROLLSUPPORT
+ case KS_Cmd_ScrollFastUp:
+ case KS_Cmd_ScrollFastDown:
+ case KS_Cmd_ScrollSlowUp:
+ case KS_Cmd_ScrollSlowDown:
+ scroll_command(sc, ksym);
+ return (1);
+ #endif
> > ...please feel free to ignore this mail because I remember the war about
> > key bindings and I know that your idea is more flexible than mine.
> > But it's just that I'd like to have simple one.
>
> If you don't like it, you can still propose a better one cause mine is
> more than perfectible. But if you already have an idea, would it allow
> the user to change the modifier on the fly ? In the kernel ? (my way of
> seeing should provide both)
You can change Cmd modifier key bindings without recompile kernel.
Takemura