* [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).