linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH
@ 2011-06-14  8:28 Ike Panhc
  2011-06-14  8:29 ` Ike Panhc
  2011-06-14  9:21 ` Bastien Nocera
  0 siblings, 2 replies; 5+ messages in thread
From: Ike Panhc @ 2011-06-14  8:28 UTC (permalink / raw)
  To: platform-driver-x86, linux-kernel, linux-input
  Cc: Matthew Garrett, Dmitry Torohov

The design for ideapad Fn-F5 key is not only for wifi but for all
radio device including wifi, bluetooth and wwan. Idealy it shall
acts like this:

    wifi on          wifi off         wifi on         wifi off
     bt on   ----->   bt on   ----->   bt off  ----->  bt off

This patch will switch wifi mode every key-push and switch
bluetooth mode every two key-push.

Signed-off-by: Ike Panhc <ike.pan@canonical.com>
---
 drivers/platform/x86/ideapad-laptop.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
index bfdda33..e92ab14 100644
--- a/drivers/platform/x86/ideapad-laptop.c
+++ b/drivers/platform/x86/ideapad-laptop.c
@@ -328,6 +328,7 @@ static void ideapad_platform_exit(struct ideapad_private *priv)
 static const struct key_entry ideapad_keymap[] = {
 	{ KE_KEY, 0x06, { KEY_SWITCHVIDEOMODE } },
 	{ KE_KEY, 0x0D, { KEY_WLAN } },
+	{ KE_KEY, 0x0D, { KEY_BLUETOOTH } },
 	{ KE_END, 0 },
 };
 
@@ -379,7 +380,22 @@ static void __devexit ideapad_input_exit(struct ideapad_private *priv)
 static void ideapad_input_report(struct ideapad_private *priv,
 				 unsigned long scancode)
 {
-	sparse_keymap_report_event(priv->inputdev, scancode, 1, true);
+	static int bt_event_round;
+
+	if (scancode == 0x0D) {
+		bt_event_round++;
+		if (bt_event_round & 1) {
+			input_report_key(priv->inputdev, KEY_BLUETOOTH, 1);
+			input_sync(priv->inputdev);
+			input_report_key(priv->inputdev, KEY_BLUETOOTH, 0);
+			input_sync(priv->inputdev);
+		}
+		input_report_key(priv->inputdev, KEY_WLAN, 1);
+		input_sync(priv->inputdev);
+		input_report_key(priv->inputdev, KEY_WLAN, 0);
+		input_sync(priv->inputdev);
+	} else
+		sparse_keymap_report_event(priv->inputdev, scancode, 1, true);
 }
 
 /*
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH
  2011-06-14  8:28 [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH Ike Panhc
@ 2011-06-14  8:29 ` Ike Panhc
  2011-06-14  9:08   ` David Woodhouse
  2011-06-14  9:21 ` Bastien Nocera
  1 sibling, 1 reply; 5+ messages in thread
From: Ike Panhc @ 2011-06-14  8:29 UTC (permalink / raw)
  To: platform-driver-x86, linux-kernel, linux-input
  Cc: Matthew Garrett, Dmitry Torohov

On 06/14/2011 04:28 PM, Ike Panhc wrote:
> The design for ideapad Fn-F5 key is not only for wifi but for all
> radio device including wifi, bluetooth and wwan. Idealy it shall
> acts like this:
> 
>     wifi on          wifi off         wifi on         wifi off
>      bt on   ----->   bt on   ----->   bt off  ----->  bt off
> 
> This patch will switch wifi mode every key-push and switch
> bluetooth mode every two key-push.

This maybe is disputed. 

The problem is that now Fn+F5 only turns on/off wifi and leave bluetooth alone.
According to the design this hotkey shall change the status of all radio
devices, including wifi, bluetooth and wwan.

On machine with wifi and bluetooth, it will turn on/off wifi and bluetooth in
order. On machine with wifi, it will switch wifi mode on every event.

I think it is better to solve this in driver not in user space application 
because on some other platforms, the KEY_WLAN and KEY_BLUETOOTH are separate.

I do not have a clear idea how to deal with wwan interface such as it shall be
exclusive or inclusive with wifi.

Please reply for any opinion.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH
  2011-06-14  8:29 ` Ike Panhc
@ 2011-06-14  9:08   ` David Woodhouse
  0 siblings, 0 replies; 5+ messages in thread
From: David Woodhouse @ 2011-06-14  9:08 UTC (permalink / raw)
  To: Ike Panhc
  Cc: platform-driver-x86, linux-kernel, linux-input, Matthew Garrett,
	Dmitry Torohov

On Tue, 2011-06-14 at 16:29 +0800, Ike Panhc wrote:
> I think it is better to solve this in driver not in user space application 
> because on some other platforms, the KEY_WLAN and KEY_BLUETOOTH are separate.

I think it's better to do it in userspace. It's not as if it's hard to
define another KEY_ and just tell the truth about what happened. Let
userspace work out what to do with it.

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH
  2011-06-14  8:28 [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH Ike Panhc
  2011-06-14  8:29 ` Ike Panhc
@ 2011-06-14  9:21 ` Bastien Nocera
  2011-06-14 21:52   ` Joey Lee
  1 sibling, 1 reply; 5+ messages in thread
From: Bastien Nocera @ 2011-06-14  9:21 UTC (permalink / raw)
  To: Ike Panhc
  Cc: platform-driver-x86, linux-kernel, linux-input, Matthew Garrett,
	Dmitry Torohov

On Tue, 2011-06-14 at 16:28 +0800, Ike Panhc wrote:
> The design for ideapad Fn-F5 key is not only for wifi but for all
> radio device including wifi, bluetooth and wwan. Idealy it shall
> acts like this:
> 
>     wifi on          wifi off         wifi on         wifi off
>      bt on   ----->   bt on   ----->   bt off  ----->  bt off
> 
> This patch will switch wifi mode every key-push and switch
> bluetooth mode every two key-push.

If that's what you want to achieve, then the key should be KEY_RFKILL.
That's what the key is there for.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH
  2011-06-14  9:21 ` Bastien Nocera
@ 2011-06-14 21:52   ` Joey Lee
  0 siblings, 0 replies; 5+ messages in thread
From: Joey Lee @ 2011-06-14 21:52 UTC (permalink / raw)
  To: ike.pan
  Cc: dmitry.torokhov, hadess, Gary Lin, mjg, linux-input, linux-kernel,
	platform-driver-x86

Hi Ike, 

於 二,2011-06-14 於 10:21 +0100,Bastien Nocera 提到:
> On Tue, 2011-06-14 at 16:28 +0800, Ike Panhc wrote:
> > The design for ideapad Fn-F5 key is not only for wifi but for all
> > radio device including wifi, bluetooth and wwan. Idealy it shall
> > acts like this:
> > 
> >     wifi on          wifi off         wifi on         wifi off
> >      bt on   ----->   bt on   ----->   bt off  ----->  bt off
> > 
> > This patch will switch wifi mode every key-push and switch
> > bluetooth mode every two key-push.
> 
> If that's what you want to achieve, then the key should be KEY_RFKILL.
> That's what the key is there for.
> 

I also agree push the wifi key logic to userland application has more
flexibility.

Highly suggest you can use urfkill daemon:
http://www.google.com.tw/search?sourceid=chrome&ie=UTF-8&q=urfkill

It support KEY_WIRELESS, KEY_BLUETOOTH and KEY_RFKILL, and you can setup
the wifi key rule on urfkill daemon. 
Please feel free send patch to Gary Lin <GLin@novell.com>, he can merge
your key rule for ideapad.


Thank's
Joey Lee


--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-06-14 21:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-14  8:28 [PATCH] ideapad: let Fn+F5 also trigger KEY_BLUETOOTH Ike Panhc
2011-06-14  8:29 ` Ike Panhc
2011-06-14  9:08   ` David Woodhouse
2011-06-14  9:21 ` Bastien Nocera
2011-06-14 21:52   ` Joey Lee

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).