summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2010-01-30 01:44:20 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2010-01-30 01:48:03 -0800
commit429722e19dff319aa87ee552beadee71d41a3655 (patch)
treeb0d760de09f128ae674b0f318386e5cefd0758c3
parent99b089c3c38a83ebaeb1cc4584ddcde841626467 (diff)
downloadop-kernel-dev-429722e19dff319aa87ee552beadee71d41a3655.zip
op-kernel-dev-429722e19dff319aa87ee552beadee71d41a3655.tar.gz
Input: Mac button emulation - allow compiling as a module
Not all systems require Mac-style button emulation, however distributions enable it by default so it is readily available. Allow compiling it as a module so it can be loaded only on systems that actually require it. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r--drivers/macintosh/Kconfig8
-rw-r--r--drivers/macintosh/mac_hid.c13
2 files changed, 16 insertions, 5 deletions
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig
index aa3c27e..fd85bde 100644
--- a/drivers/macintosh/Kconfig
+++ b/drivers/macintosh/Kconfig
@@ -171,9 +171,8 @@ config INPUT_ADBHID
If unsure, say Y.
config MAC_EMUMOUSEBTN
- bool "Support for mouse button 2+3 emulation"
- depends on SYSCTL
- select INPUT
+ tristate "Support for mouse button 2+3 emulation"
+ depends on SYSCTL && INPUT
help
This provides generic support for emulating the 2nd and 3rd mouse
button with keypresses. If you say Y here, the emulation is still
@@ -185,6 +184,9 @@ config MAC_EMUMOUSEBTN
If you have an Apple machine with a 1-button mouse, say Y here.
+ To compile this driver as a module, choose M here: the
+ module will be called mac_hid.
+
config THERM_WINDTUNNEL
tristate "Support for thermal management on Windtunnel G4s"
depends on I2C && I2C_POWERMAC && PPC_PMAC && !PPC_PMAC64
diff --git a/drivers/macintosh/mac_hid.c b/drivers/macintosh/mac_hid.c
index 0b210a9..e943d2a 100644
--- a/drivers/macintosh/mac_hid.c
+++ b/drivers/macintosh/mac_hid.c
@@ -14,6 +14,8 @@
#include <linux/input.h>
#include <linux/module.h>
+MODULE_LICENSE("GPL");
+
static int mouse_emulate_buttons;
static int mouse_button2_keycode = KEY_RIGHTCTRL; /* right control key */
static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */
@@ -252,7 +254,6 @@ static ctl_table mac_hid_root_dir[] = {
static struct ctl_table_header *mac_hid_sysctl_header;
-
static int __init mac_hid_init(void)
{
mac_hid_sysctl_header = register_sysctl_table(mac_hid_root_dir);
@@ -261,5 +262,13 @@ static int __init mac_hid_init(void)
return 0;
}
+module_init(mac_hid_init);
-device_initcall(mac_hid_init);
+static void __exit mac_hid_exit(void)
+{
+ unregister_sysctl_table(mac_hid_sysctl_header);
+
+ if (mouse_emulate_buttons)
+ mac_hid_stop_emulation();
+}
+module_exit(mac_hid_exit);
OpenPOWER on IntegriCloud