All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Dobriyan <adobriyan@gmail.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	hpa@zytor.com, alan@lxorguk.ukuu.org.uk, mgarski@post.pl
Subject: Re: [PATCH] kbd: (#7063) make CapsLock work as expected even for non-ASCII
Date: Tue, 17 Nov 2009 14:55:03 +0300	[thread overview]
Message-ID: <20091117115503.GB1657@x200> (raw)
In-Reply-To: <20091116231520.GD4764@const.famille.thibault.fr>

On Tue, Nov 17, 2009 at 12:15:20AM +0100, Samuel Thibault wrote:
> Alexey Dobriyan, le Tue 17 Nov 2009 02:05:23 +0300, a écrit :
> > On Mon, Nov 16, 2009 at 11:54:29PM +0100, Samuel Thibault wrote:
> > > Samuel Thibault, le Mon 16 Nov 2009 23:27:38 +0100, a écrit :
> > > > > My keymap contains
> > > > > 
> > > > > 				keycode 44 = +z
> > > > > 		shift           keycode 44 = +Z
> > > > > 	altgr                   keycode 44 = U+044F        # CYRILLIC SMALL LETTER YA
> > > > > 	altgr   shift           keycode 44 = U+042F        # CYRILLIC CAPITAL LETTER YA
> > > > 
> > > > And U+044F / U+042F is not KT_LETTER.
> > > > 
> > > > Yes, there's no way you can express a unicode character in KT_LETTER.
> > > > Limited interface, but that's not a reason to break other interfaces.
> > > 
> > > One way to go would be to decrete that keysyms between 0xD800 and 0xE000
> > 
> > And this is going to help me with U+042F/U+044F how?

> --- a/drivers/char/keyboard.c
> +++ b/drivers/char/keyboard.c
> @@ -1258,6 +1258,15 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
>  	type = KTYP(keysym);
>  
>  	if (type < 0xf0) {
> +		if (keysym >= 0xD800 && keysym < 0xE000) {

keysym is 0x044F at this point.

> +			/* Surrogates in Unicode, here KT_LETTER variants of unicode U+0000-U+07FF */
> +			keysym -= 0xD800;
> +			if (vc_kbd_led(kbd, VC_CAPSLOCK)) {
> +				key_map = key_maps[shift_final ^ (1 << KG_SHIFT)];
> +				if (key_map)
> +					keysym = key_map[keycode];
> +			}
> +		}
>  		param.value = keysym;
>  		if (atomic_notifier_call_chain(&keyboard_notifier_list, KBD_UNICODE, &param) == NOTIFY_STOP)
>  			return;
> 
> Which BTW is correct while the proposed patch earlier wasn't: the
> param.value needs to be the final keysym.

OK, this I should fix.

> But again, that only solves the problem of the limited range
> U+0000-U+0800 and doesn't solve the é/É french keyboard problem.
> 
> Adding an interface to change the modifier lock / LED assignation would
> on the other hand permit kbd and console-setup to properly do proper
> capslock processing correctly.

  reply	other threads:[~2009-11-17 11:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-16 13:51 [PATCH] kbd: (#7063) make CapsLock work as expected even for non-ASCII Alexey Dobriyan
2009-11-16 14:40 ` Alan Cox
2009-11-16 19:08   ` Samuel Thibault
2009-11-16 19:07 ` Samuel Thibault
2009-11-16 19:53   ` Alexey Dobriyan
2009-11-16 22:27     ` Samuel Thibault
2009-11-16 22:53       ` Alexey Dobriyan
2009-11-16 23:04         ` Samuel Thibault
2009-11-16 22:54       ` Samuel Thibault
2009-11-16 23:05         ` Alexey Dobriyan
2009-11-16 23:15           ` Samuel Thibault
2009-11-17 11:55             ` Alexey Dobriyan [this message]
2009-11-17 13:23               ` Samuel Thibault
2009-11-19 13:18                 ` Alexey Dobriyan
2009-11-19 13:28                   ` Samuel Thibault
2009-11-19 13:37                     ` Samuel Thibault
2009-11-19 15:07                       ` H. Peter Anvin
2009-11-20 19:07                         ` Pavel Machek
2009-11-20 20:46                           ` Pavel Machek
2009-11-20 21:27                             ` H. Peter Anvin
2010-02-21  5:01                               ` [RFC,PATCH] Route kbd leds through the generic leds layer (Was: [PATCH] kbd: (#7063) make CapsLock work as expected even for non-ASCII) Samuel Thibault
2010-02-23 16:30                                 ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091117115503.GB1657@x200 \
    --to=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgarski@post.pl \
    --cc=samuel.thibault@ens-lyon.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.