Re: [patch] terminal kbd: Support Ctrl-Alt-letter key combinations.

Jonas Fonseca <[email protected]>
Newsgroups gmane.comp.web.links
Message-ID <[email protected]>
Kalle Olavi Niemitalo <[email protected]> wrote Fri, Jul 28, 2006:
> diff --git a/src/config/kbdbind.c b/src/config/kbdbind.c
> index 09c7ceb..a90a3d7 100644
> --- a/src/config/kbdbind.c
> +++ b/src/config/kbdbind.c
> @@ -369,34 +369,41 @@ read_key(unsigned char *key_str)
>  	return -1;
>  }
>  
> +struct modifier {
> +	const unsigned char *name_and_dash;
> +	size_t name_len;	/* does not include the dash */
> +	int bitmask;
> +};

Ok, I didn't see the funny string name and the comment in my first run
through the patch. Below a simpler idea for doing this which is more
obvious or clean, at least to me.

> +static const struct modifier modifiers[] = {
> +	{ "Shift-", 5, KBD_MOD_SHIFT },
> +	{ "Ctrl-",  4, KBD_MOD_CTRL },
> +	{ "Alt-",   3, KBD_MOD_ALT },
> +	{ NULL }
> +};

Leave out the '-'s at the end here ...

> @@ -408,15 +415,14 @@ add_keystroke_to_string(struct string *s
>  	unsigned char key_buffer[3] = "\\x";
>  	unsigned char *key_string = NULL;
>  	struct key *key;
> +	const struct modifier *modp;
>  
>  	if (kbd->key < 0) return;
>  
> -	if (kbd->modifier & KBD_MOD_SHIFT)
> -		add_to_string(str, "Shift-");
> -	if (kbd->modifier & KBD_MOD_CTRL)
> -		add_to_string(str, "Ctrl-");
> -	if (kbd->modifier & KBD_MOD_ALT)
> -		add_to_string(str, "Alt-");
> +	for (modp = modifiers; modp->name_and_dash != NULL; ++modp) {
> +		if (kbd->modifier & modp->bitmask)
> +			add_to_string(str, modp->name_and_dash);

... and use

			add_format_to_string(str, "%s-", ...);

here.

(Sorry for nitpicking. ;)

-- 
Jonas Fonseca
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.