All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Hughes <john@calvaedi.com>
To: John Hughes <john@Calva.COM>
Cc: Mattia Dongili <malattia@linux.it>,
	Valdis.Kletnieks@vt.edu, linux-kernel@vger.kernel.org,
	Stelian Pop <stelian@popies.net>,
	platform-driver-x86 <platform-driver-x86@vger.kernel.org>
Subject: Re: sony-laptop driver: Volume keys on Sony Vaio TX3 don't work
Date: Thu, 20 Oct 2011 00:01:12 +0200	[thread overview]
Message-ID: <4E9F48A8.3020507@calvaedi.com> (raw)
In-Reply-To: <4E9D41C5.70902@Calva.COM>

[-- Attachment #1: Type: text/plain, Size: 2755 bytes --]

On 10/18/2011 11:07 AM, John Hughes wrote:
> udev does have some per-model stuff for the Vaio's.
>
> Doesn't work right because the scancodes reported the sony-laptop 
> driver are not the right ones.
>
> (sony-laptop sends its "event" code as the scancode, but to change the 
> keymap you have to use the index in the sony_laptop_input_keycode_map 
> table.  I have posted one patch for this which makes the scancodes at 
> least consistent but I think I'll do another that makes them be the 
> same as what current udev thinks they should be.  I'll have that ready 
> this evening I thing - have to work now :-( )
>
Ok, here is a patch that makes the scancodes reported by sony-laptop be 
the same as the SONY_EVENT defines.

Unfortunately this doesn't work terribly well because the scancodes used 
by udev seem to be chosen randomly:

$ cat /lib/udev/keymaps/module-sony
0x06 mute # Fn+F2
0x07 volumedown # Fn+F3
0x08 volumeup # Fn+F4
0x09 brightnessdown # Fn+F5
0x0A brightnessup # Fn+F6
0x0B switchvideomode # Fn+F7
0x0E zoom # Fn+F10
0x10 suspend # Fn+F12

and

$ cat /lib/udev/keymaps/module-sony-vgn
0x00 brightnessdown # Fn+F5
0x10 brightnessup # Fn+F6
0x11 switchvideomode # Fn+F7
0x12 zoomout
0x14 zoomin
0x15 suspend # Fn+F12
0x17 prog1


So the different ideas are:

key      module-sony  module-sony-vgn   orig code(*)   event(*)
fn_f1                                   0x05           0x0c
fn_f2    0x06                           0x06           0x0d
fn_f3    0x07                           0x07           0x0e
fn_f4    0x08                           0x08           0x0f
fn_f5    0x09          0x00 (!)         0x09           0x10
fn_f6    0x0a          0x10             0x0a           0x11
fn_f7    0x0b          0x11             0x0b           0x12
fn_f8                                   0x0c           0x13
fn_f9                                   0x0d           0x14
fn_f10   0x0e                           0x0e           0x15
fn_f11                                  0x0f           0x16
fn_f12   0x10          0x15             0x10           0x17


(*) Orig code - the scancodes that map for the original code, and the 
scancodes returned by my first patch
(*) event - the scancodes from the patch included here.

So, it seems to me that:

1. my original patch is the smaller change, and works with the udev 
"module-sony" keymap file

2. this patch is prettier but doesn't work with existing userspace.

3. the poor sod who wrote the module-sony-vgn file was terribly confused 
by the scancodes returned by the original code.

My recommendation would be to use my first patch - it makes the driver 
return  scancodes that correspond to the scancodes that you need to map.

OK?

Want me to do the whole formal "blablabla-by" stuff now?


[-- Attachment #2: sony-scancode-event.patch --]
[-- Type: text/x-patch, Size: 11185 bytes --]

diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index bbd182e..e2acfd5 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -177,146 +177,83 @@ struct sony_laptop_keypress {
 };
 
 /* Correspondance table between sonypi events
- * and input layer indexes in the keymap
+ * and keycodes
  */
-static int sony_laptop_input_index[] = {
-	-1,	/*  0 no event */
-	-1,	/*  1 SONYPI_EVENT_JOGDIAL_DOWN */
-	-1,	/*  2 SONYPI_EVENT_JOGDIAL_UP */
-	-1,	/*  3 SONYPI_EVENT_JOGDIAL_DOWN_PRESSED */
-	-1,	/*  4 SONYPI_EVENT_JOGDIAL_UP_PRESSED */
-	-1,	/*  5 SONYPI_EVENT_JOGDIAL_PRESSED */
-	-1,	/*  6 SONYPI_EVENT_JOGDIAL_RELEASED */
-	 0,	/*  7 SONYPI_EVENT_CAPTURE_PRESSED */
-	 1,	/*  8 SONYPI_EVENT_CAPTURE_RELEASED */
-	 2,	/*  9 SONYPI_EVENT_CAPTURE_PARTIALPRESSED */
-	 3,	/* 10 SONYPI_EVENT_CAPTURE_PARTIALRELEASED */
-	 4,	/* 11 SONYPI_EVENT_FNKEY_ESC */
-	 5,	/* 12 SONYPI_EVENT_FNKEY_F1 */
-	 6,	/* 13 SONYPI_EVENT_FNKEY_F2 */
-	 7,	/* 14 SONYPI_EVENT_FNKEY_F3 */
-	 8,	/* 15 SONYPI_EVENT_FNKEY_F4 */
-	 9,	/* 16 SONYPI_EVENT_FNKEY_F5 */
-	10,	/* 17 SONYPI_EVENT_FNKEY_F6 */
-	11,	/* 18 SONYPI_EVENT_FNKEY_F7 */
-	12,	/* 19 SONYPI_EVENT_FNKEY_F8 */
-	13,	/* 20 SONYPI_EVENT_FNKEY_F9 */
-	14,	/* 21 SONYPI_EVENT_FNKEY_F10 */
-	15,	/* 22 SONYPI_EVENT_FNKEY_F11 */
-	16,	/* 23 SONYPI_EVENT_FNKEY_F12 */
-	17,	/* 24 SONYPI_EVENT_FNKEY_1 */
-	18,	/* 25 SONYPI_EVENT_FNKEY_2 */
-	19,	/* 26 SONYPI_EVENT_FNKEY_D */
-	20,	/* 27 SONYPI_EVENT_FNKEY_E */
-	21,	/* 28 SONYPI_EVENT_FNKEY_F */
-	22,	/* 29 SONYPI_EVENT_FNKEY_S */
-	23,	/* 30 SONYPI_EVENT_FNKEY_B */
-	24,	/* 31 SONYPI_EVENT_BLUETOOTH_PRESSED */
-	25,	/* 32 SONYPI_EVENT_PKEY_P1 */
-	26,	/* 33 SONYPI_EVENT_PKEY_P2 */
-	27,	/* 34 SONYPI_EVENT_PKEY_P3 */
-	28,	/* 35 SONYPI_EVENT_BACK_PRESSED */
-	-1,	/* 36 SONYPI_EVENT_LID_CLOSED */
-	-1,	/* 37 SONYPI_EVENT_LID_OPENED */
-	29,	/* 38 SONYPI_EVENT_BLUETOOTH_ON */
-	30,	/* 39 SONYPI_EVENT_BLUETOOTH_OFF */
-	31,	/* 40 SONYPI_EVENT_HELP_PRESSED */
-	32,	/* 41 SONYPI_EVENT_FNKEY_ONLY */
-	33,	/* 42 SONYPI_EVENT_JOGDIAL_FAST_DOWN */
-	34,	/* 43 SONYPI_EVENT_JOGDIAL_FAST_UP */
-	35,	/* 44 SONYPI_EVENT_JOGDIAL_FAST_DOWN_PRESSED */
-	36,	/* 45 SONYPI_EVENT_JOGDIAL_FAST_UP_PRESSED */
-	37,	/* 46 SONYPI_EVENT_JOGDIAL_VFAST_DOWN */
-	38,	/* 47 SONYPI_EVENT_JOGDIAL_VFAST_UP */
-	39,	/* 48 SONYPI_EVENT_JOGDIAL_VFAST_DOWN_PRESSED */
-	40,	/* 49 SONYPI_EVENT_JOGDIAL_VFAST_UP_PRESSED */
-	41,	/* 50 SONYPI_EVENT_ZOOM_PRESSED */
-	42,	/* 51 SONYPI_EVENT_THUMBPHRASE_PRESSED */
-	43,	/* 52 SONYPI_EVENT_MEYE_FACE */
-	44,	/* 53 SONYPI_EVENT_MEYE_OPPOSITE */
-	45,	/* 54 SONYPI_EVENT_MEMORYSTICK_INSERT */
-	46,	/* 55 SONYPI_EVENT_MEMORYSTICK_EJECT */
-	-1,	/* 56 SONYPI_EVENT_ANYBUTTON_RELEASED */
-	-1,	/* 57 SONYPI_EVENT_BATTERY_INSERT */
-	-1,	/* 58 SONYPI_EVENT_BATTERY_REMOVE */
-	-1,	/* 59 SONYPI_EVENT_FNKEY_RELEASED */
-	47,	/* 60 SONYPI_EVENT_WIRELESS_ON */
-	48,	/* 61 SONYPI_EVENT_WIRELESS_OFF */
-	49,	/* 62 SONYPI_EVENT_ZOOM_IN_PRESSED */
-	50,	/* 63 SONYPI_EVENT_ZOOM_OUT_PRESSED */
-	51,	/* 64 SONYPI_EVENT_CD_EJECT_PRESSED */
-	52,	/* 65 SONYPI_EVENT_MODEKEY_PRESSED */
-	53,	/* 66 SONYPI_EVENT_PKEY_P4 */
-	54,	/* 67 SONYPI_EVENT_PKEY_P5 */
-	55,	/* 68 SONYPI_EVENT_SETTINGKEY_PRESSED */
-	56,	/* 69 SONYPI_EVENT_VOLUME_INC_PRESSED */
-	57,	/* 70 SONYPI_EVENT_VOLUME_DEC_PRESSED */
-	-1,	/* 71 SONYPI_EVENT_BRIGHTNESS_PRESSED */
-	58,	/* 72 SONYPI_EVENT_MEDIA_PRESSED */
-	59,	/* 72 SONYPI_EVENT_VENDOR_PRESSED */
-};
-
 static int sony_laptop_input_keycode_map[] = {
-	KEY_CAMERA,	/*  0 SONYPI_EVENT_CAPTURE_PRESSED */
-	KEY_RESERVED,	/*  1 SONYPI_EVENT_CAPTURE_RELEASED */
-	KEY_RESERVED,	/*  2 SONYPI_EVENT_CAPTURE_PARTIALPRESSED */
-	KEY_RESERVED,	/*  3 SONYPI_EVENT_CAPTURE_PARTIALRELEASED */
-	KEY_FN_ESC,	/*  4 SONYPI_EVENT_FNKEY_ESC */
-	KEY_FN_F1,	/*  5 SONYPI_EVENT_FNKEY_F1 */
-	KEY_FN_F2,	/*  6 SONYPI_EVENT_FNKEY_F2 */
-	KEY_FN_F3,	/*  7 SONYPI_EVENT_FNKEY_F3 */
-	KEY_FN_F4,	/*  8 SONYPI_EVENT_FNKEY_F4 */
-	KEY_FN_F5,	/*  9 SONYPI_EVENT_FNKEY_F5 */
-	KEY_FN_F6,	/* 10 SONYPI_EVENT_FNKEY_F6 */
-	KEY_FN_F7,	/* 11 SONYPI_EVENT_FNKEY_F7 */
-	KEY_FN_F8,	/* 12 SONYPI_EVENT_FNKEY_F8 */
-	KEY_FN_F9,	/* 13 SONYPI_EVENT_FNKEY_F9 */
-	KEY_FN_F10,	/* 14 SONYPI_EVENT_FNKEY_F10 */
-	KEY_FN_F11,	/* 15 SONYPI_EVENT_FNKEY_F11 */
-	KEY_FN_F12,	/* 16 SONYPI_EVENT_FNKEY_F12 */
-	KEY_FN_F1,	/* 17 SONYPI_EVENT_FNKEY_1 */
-	KEY_FN_F2,	/* 18 SONYPI_EVENT_FNKEY_2 */
-	KEY_FN_D,	/* 19 SONYPI_EVENT_FNKEY_D */
-	KEY_FN_E,	/* 20 SONYPI_EVENT_FNKEY_E */
-	KEY_FN_F,	/* 21 SONYPI_EVENT_FNKEY_F */
-	KEY_FN_S,	/* 22 SONYPI_EVENT_FNKEY_S */
-	KEY_FN_B,	/* 23 SONYPI_EVENT_FNKEY_B */
-	KEY_BLUETOOTH,	/* 24 SONYPI_EVENT_BLUETOOTH_PRESSED */
-	KEY_PROG1,	/* 25 SONYPI_EVENT_PKEY_P1 */
-	KEY_PROG2,	/* 26 SONYPI_EVENT_PKEY_P2 */
-	KEY_PROG3,	/* 27 SONYPI_EVENT_PKEY_P3 */
-	KEY_BACK,	/* 28 SONYPI_EVENT_BACK_PRESSED */
-	KEY_BLUETOOTH,	/* 29 SONYPI_EVENT_BLUETOOTH_ON */
-	KEY_BLUETOOTH,	/* 30 SONYPI_EVENT_BLUETOOTH_OFF */
-	KEY_HELP,	/* 31 SONYPI_EVENT_HELP_PRESSED */
-	KEY_FN,		/* 32 SONYPI_EVENT_FNKEY_ONLY */
-	KEY_RESERVED,	/* 33 SONYPI_EVENT_JOGDIAL_FAST_DOWN */
-	KEY_RESERVED,	/* 34 SONYPI_EVENT_JOGDIAL_FAST_UP */
-	KEY_RESERVED,	/* 35 SONYPI_EVENT_JOGDIAL_FAST_DOWN_PRESSED */
-	KEY_RESERVED,	/* 36 SONYPI_EVENT_JOGDIAL_FAST_UP_PRESSED */
-	KEY_RESERVED,	/* 37 SONYPI_EVENT_JOGDIAL_VFAST_DOWN */
-	KEY_RESERVED,	/* 38 SONYPI_EVENT_JOGDIAL_VFAST_UP */
-	KEY_RESERVED,	/* 39 SONYPI_EVENT_JOGDIAL_VFAST_DOWN_PRESSED */
-	KEY_RESERVED,	/* 40 SONYPI_EVENT_JOGDIAL_VFAST_UP_PRESSED */
-	KEY_ZOOM,	/* 41 SONYPI_EVENT_ZOOM_PRESSED */
-	BTN_THUMB,	/* 42 SONYPI_EVENT_THUMBPHRASE_PRESSED */
-	KEY_RESERVED,	/* 43 SONYPI_EVENT_MEYE_FACE */
-	KEY_RESERVED,	/* 44 SONYPI_EVENT_MEYE_OPPOSITE */
-	KEY_RESERVED,	/* 45 SONYPI_EVENT_MEMORYSTICK_INSERT */
-	KEY_RESERVED,	/* 46 SONYPI_EVENT_MEMORYSTICK_EJECT */
-	KEY_WLAN,	/* 47 SONYPI_EVENT_WIRELESS_ON */
-	KEY_WLAN,	/* 48 SONYPI_EVENT_WIRELESS_OFF */
-	KEY_ZOOMIN,	/* 49 SONYPI_EVENT_ZOOM_IN_PRESSED */
-	KEY_ZOOMOUT,	/* 50 SONYPI_EVENT_ZOOM_OUT_PRESSED */
-	KEY_EJECTCD,	/* 51 SONYPI_EVENT_CD_EJECT_PRESSED */
-	KEY_F13,	/* 52 SONYPI_EVENT_MODEKEY_PRESSED */
-	KEY_PROG4,	/* 53 SONYPI_EVENT_PKEY_P4 */
-	KEY_F14,	/* 54 SONYPI_EVENT_PKEY_P5 */
-	KEY_F15,	/* 55 SONYPI_EVENT_SETTINGKEY_PRESSED */
-	KEY_VOLUMEUP,	/* 56 SONYPI_EVENT_VOLUME_INC_PRESSED */
-	KEY_VOLUMEDOWN,	/* 57 SONYPI_EVENT_VOLUME_DEC_PRESSED */
-	KEY_MEDIA,	/* 58 SONYPI_EVENT_MEDIA_PRESSED */
-	KEY_VENDOR,	/* 59 SONYPI_EVENT_VENDOR_PRESSED */
+	KEY_UNKNOWN,	/*  0 no event */
+	KEY_UNKNOWN,	/*  1 SONYPI_EVENT_JOGDIAL_DOWN */
+	KEY_UNKNOWN,	/*  2 SONYPI_EVENT_JOGDIAL_UP */
+	KEY_UNKNOWN,	/*  3 SONYPI_EVENT_JOGDIAL_DOWN_PRESSED */
+	KEY_UNKNOWN,	/*  4 SONYPI_EVENT_JOGDIAL_UP_PRESSED */
+	KEY_UNKNOWN,	/*  5 SONYPI_EVENT_JOGDIAL_PRESSED */
+	KEY_UNKNOWN,	/*  6 SONYPI_EVENT_JOGDIAL_RELEASED */
+	KEY_CAMERA,	/*  7 SONYPI_EVENT_CAPTURE_PRESSED */
+	KEY_RESERVED,	/*  8 SONYPI_EVENT_CAPTURE_RELEASED */
+	KEY_RESERVED,	/*  9 SONYPI_EVENT_CAPTURE_PARTIALPRESSED */
+	KEY_RESERVED,	/* 10 SONYPI_EVENT_CAPTURE_PARTIALRELEASED */
+	KEY_FN_ESC,	/* 11 SONYPI_EVENT_FNKEY_ESC */
+	KEY_FN_F1,	/* 12 SONYPI_EVENT_FNKEY_F1 */
+	KEY_FN_F2,	/* 13 SONYPI_EVENT_FNKEY_F2 */
+	KEY_FN_F3,	/* 14 SONYPI_EVENT_FNKEY_F3 */
+	KEY_FN_F4,	/* 15 SONYPI_EVENT_FNKEY_F4 */
+	KEY_FN_F5,	/* 16 SONYPI_EVENT_FNKEY_F5 */
+	KEY_FN_F6,	/* 17 SONYPI_EVENT_FNKEY_F6 */
+	KEY_FN_F7,	/* 18 SONYPI_EVENT_FNKEY_F7 */
+	KEY_FN_F8,	/* 19 SONYPI_EVENT_FNKEY_F8 */
+	KEY_FN_F9,	/* 20 SONYPI_EVENT_FNKEY_F9 */
+	KEY_FN_F10,	/* 21 SONYPI_EVENT_FNKEY_F10 */
+	KEY_FN_F11,	/* 22 SONYPI_EVENT_FNKEY_F11 */
+	KEY_FN_F12,	/* 23 SONYPI_EVENT_FNKEY_F12 */
+	KEY_FN_F1,	/* 24 SONYPI_EVENT_FNKEY_1 */
+	KEY_FN_F2,	/* 25 SONYPI_EVENT_FNKEY_2 */
+	KEY_FN_D,	/* 26 SONYPI_EVENT_FNKEY_D */
+	KEY_FN_E,	/* 27 SONYPI_EVENT_FNKEY_E */
+	KEY_FN_F,	/* 28 SONYPI_EVENT_FNKEY_F */
+	KEY_FN_S,	/* 29 SONYPI_EVENT_FNKEY_S */
+	KEY_FN_B,	/* 30 SONYPI_EVENT_FNKEY_B */
+	KEY_BLUETOOTH,	/* 31 SONYPI_EVENT_BLUETOOTH_PRESSED */
+	KEY_PROG1,	/* 32 SONYPI_EVENT_PKEY_P1 */
+	KEY_PROG2,	/* 33 SONYPI_EVENT_PKEY_P2 */
+	KEY_PROG3,	/* 34 SONYPI_EVENT_PKEY_P3 */
+	KEY_BACK,	/* 35 SONYPI_EVENT_BACK_PRESSED */
+	KEY_UNKNOWN,	/* 36 SONYPI_EVENT_LID_CLOSED */
+	KEY_UNKNOWN,	/* 37 SONYPI_EVENT_LID_OPENED */
+	KEY_BLUETOOTH,	/* 38 SONYPI_EVENT_BLUETOOTH_ON */
+	KEY_BLUETOOTH,	/* 39 SONYPI_EVENT_BLUETOOTH_OFF */
+	KEY_HELP,	/* 40 SONYPI_EVENT_HELP_PRESSED */
+	KEY_FN,		/* 41 SONYPI_EVENT_FNKEY_ONLY */
+	KEY_RESERVED,	/* 42 SONYPI_EVENT_JOGDIAL_FAST_DOWN */
+	KEY_RESERVED,	/* 43 SONYPI_EVENT_JOGDIAL_FAST_UP */
+	KEY_RESERVED,	/* 44 SONYPI_EVENT_JOGDIAL_FAST_DOWN_PRESSED */
+	KEY_RESERVED,	/* 45 SONYPI_EVENT_JOGDIAL_FAST_UP_PRESSED */
+	KEY_RESERVED,	/* 46 SONYPI_EVENT_JOGDIAL_VFAST_DOWN */
+	KEY_RESERVED,	/* 47 SONYPI_EVENT_JOGDIAL_VFAST_UP */
+	KEY_RESERVED,	/* 48 SONYPI_EVENT_JOGDIAL_VFAST_DOWN_PRESSED */
+	KEY_RESERVED,	/* 49 SONYPI_EVENT_JOGDIAL_VFAST_UP_PRESSED */
+	KEY_ZOOM,	/* 50 SONYPI_EVENT_ZOOM_PRESSED */
+	BTN_THUMB,	/* 51 SONYPI_EVENT_THUMBPHRASE_PRESSED */
+	KEY_RESERVED,	/* 52 SONYPI_EVENT_MEYE_FACE */
+	KEY_RESERVED,	/* 53 SONYPI_EVENT_MEYE_OPPOSITE */
+	KEY_RESERVED,	/* 54 SONYPI_EVENT_MEMORYSTICK_INSERT */
+	KEY_RESERVED,	/* 55 SONYPI_EVENT_MEMORYSTICK_EJECT */
+	KEY_UNKNOWN,	/* 56 SONYPI_EVENT_ANYBUTTON_RELEASED */
+	KEY_UNKNOWN,	/* 57 SONYPI_EVENT_BATTERY_INSERT */
+	KEY_UNKNOWN,	/* 58 SONYPI_EVENT_BATTERY_REMOVE */
+	KEY_UNKNOWN,	/* 59 SONYPI_EVENT_FNKEY_RELEASED */
+	KEY_WLAN,	/* 60 SONYPI_EVENT_WIRELESS_ON */
+	KEY_WLAN,	/* 61 SONYPI_EVENT_WIRELESS_OFF */
+	KEY_ZOOMIN,	/* 62 SONYPI_EVENT_ZOOM_IN_PRESSED */
+	KEY_ZOOMOUT,	/* 63 SONYPI_EVENT_ZOOM_OUT_PRESSED */
+	KEY_EJECTCD,	/* 64 SONYPI_EVENT_CD_EJECT_PRESSED */
+	KEY_F13,	/* 65 SONYPI_EVENT_MODEKEY_PRESSED */
+	KEY_PROG4,	/* 66 SONYPI_EVENT_PKEY_P4 */
+	KEY_F14,	/* 67 SONYPI_EVENT_PKEY_P5 */
+	KEY_F15,	/* 68 SONYPI_EVENT_SETTINGKEY_PRESSED */
+	KEY_VOLUMEUP,	/* 69 SONYPI_EVENT_VOLUME_INC_PRESSED */
+	KEY_VOLUMEDOWN,	/* 70 SONYPI_EVENT_VOLUME_DEC_PRESSED */
+	KEY_UNKNOWN,	/* 71 SONYPI_EVENT_BRIGHTNESS_PRESSED */
+	KEY_MEDIA,	/* 72 SONYPI_EVENT_MEDIA_PRESSED */
+	KEY_VENDOR,	/* 72 SONYPI_EVENT_VENDOR_PRESSED */
 };
 
 /* release buttons after a short delay if pressed */
@@ -376,22 +313,20 @@ static void sony_laptop_report_input_event(u8 event)
 		break;
 
 	default:
-		if (event >= ARRAY_SIZE(sony_laptop_input_index)) {
+		if (event >= ARRAY_SIZE(sony_laptop_input_keycode_map)) {
 			dprintk("sony_laptop_report_input_event, event not known: %d\n", event);
 			break;
 		}
-		if (sony_laptop_input_index[event] != -1) {
-			kp.key = sony_laptop_input_keycode_map[sony_laptop_input_index[event]];
-			if (kp.key != KEY_UNKNOWN)
-				kp.dev = key_dev;
-		}
+		kp.key = sony_laptop_input_keycode_map[event];
+		if (kp.key != KEY_UNKNOWN && kp.key != KEY_RESERVED)
+			kp.dev = key_dev;
 		break;
 	}
 
 	if (kp.dev) {
-		input_report_key(kp.dev, kp.key, 1);
 		/* we emit the scancode so we can always remap the key */
 		input_event(kp.dev, EV_MSC, MSC_SCAN, event);
+		input_report_key(kp.dev, kp.key, 1);
 		input_sync(kp.dev);
 
 		/* schedule key release */

  reply	other threads:[~2011-10-19 22:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-16 11:11 sony-laptop driver: Volume keys on Sony Vaio TX3 don't work John Hughes
2011-10-16 12:30 ` Bug: changing keycodes generated by sony-laptop doesn't work John Hughes
2011-10-16 13:30   ` John Hughes
2011-10-17  9:08     ` John Hughes
2011-10-16 13:27 ` sony-laptop driver: Volume keys on Sony Vaio TX3 don't work John Hughes
2011-10-16 17:45   ` John Hughes
2011-10-16 18:20     ` Valdis.Kletnieks
2011-10-16 21:38       ` Mattia Dongili
2011-10-16 21:50         ` Valdis.Kletnieks
2011-10-16 23:17           ` John Hughes
2011-10-17 21:43             ` Mattia Dongili
2011-10-18  9:02               ` John Hughes
2011-10-17 21:45           ` Mattia Dongili
2011-10-18  9:07             ` John Hughes
2011-10-19 22:01               ` John Hughes [this message]
2011-10-16 23:13       ` John Hughes

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=4E9F48A8.3020507@calvaedi.com \
    --to=john@calvaedi.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=john@Calva.COM \
    --cc=linux-kernel@vger.kernel.org \
    --cc=malattia@linux.it \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=stelian@popies.net \
    /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.