Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/sys Add some more Thinkpad hotkeys.



details:   https://anonhg.NetBSD.org/src/rev/b8291ffe2ca1
branches:  trunk
changeset: 379359:b8291ffe2ca1
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Sat May 29 16:49:57 2021 +0000

description:
Add some more Thinkpad hotkeys.

diffstat:

 sys/dev/acpi/thinkpad_acpi.c |  48 +++++++++++++++++++++++++++++++++++++++++--
 sys/sys/power.h              |   6 ++++-
 2 files changed, 50 insertions(+), 4 deletions(-)

diffs (124 lines):

diff -r b996f3ca94c5 -r b8291ffe2ca1 sys/dev/acpi/thinkpad_acpi.c
--- a/sys/dev/acpi/thinkpad_acpi.c      Sat May 29 16:49:49 2021 +0000
+++ b/sys/dev/acpi/thinkpad_acpi.c      Sat May 29 16:49:57 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: thinkpad_acpi.c,v 1.51 2021/05/29 16:49:49 riastradh Exp $ */
+/* $NetBSD: thinkpad_acpi.c,v 1.52 2021/05/29 16:49:57 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.51 2021/05/29 16:49:49 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.52 2021/05/29 16:49:57 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -76,7 +76,11 @@ typedef struct thinkpad_softc {
 #define        TP_PSW_VOLUME_UP        17
 #define        TP_PSW_VOLUME_DOWN      18
 #define        TP_PSW_VOLUME_MUTE      19
-#define        TP_PSW_LAST             20
+#define        TP_PSW_STAR_BUTTON      20
+#define        TP_PSW_SCISSORS_BUTTON  21
+#define        TP_PSW_BLUETOOTH_BUTTON 22
+#define        TP_PSW_KEYBOARD_BUTTON  23
+#define        TP_PSW_LAST             24
 
        struct sysmon_pswitch   sc_smpsw[TP_PSW_LAST];
        bool                    sc_smpsw_valid;
@@ -108,6 +112,10 @@ typedef struct thinkpad_softc {
 #define        THINKPAD_NOTIFY_VolumeDown      0x016   /* XXX: Not seen on T61 */
 #define        THINKPAD_NOTIFY_VolumeMute      0x017   /* XXX: Not seen on T61 */
 #define        THINKPAD_NOTIFY_ThinkVantage    0x018
+#define        THINKPAD_NOTIFY_Star            0x311
+#define        THINKPAD_NOTIFY_Scissors        0x312
+#define        THINKPAD_NOTIFY_Bluetooth       0x314
+#define        THINKPAD_NOTIFY_Keyboard        0x315
 
 #define        THINKPAD_CMOS_BRIGHTNESS_UP     0x04
 #define        THINKPAD_CMOS_BRIGHTNESS_DOWN   0x05
@@ -295,6 +303,10 @@ thinkpad_attach(device_t parent, device_
        psw[TP_PSW_VOLUME_UP].smpsw_name       = PSWITCH_HK_VOLUME_UP;
        psw[TP_PSW_VOLUME_DOWN].smpsw_name     = PSWITCH_HK_VOLUME_DOWN;
        psw[TP_PSW_VOLUME_MUTE].smpsw_name     = PSWITCH_HK_VOLUME_MUTE;
+       psw[TP_PSW_STAR_BUTTON].smpsw_name     = PSWITCH_HK_STAR_BUTTON;
+       psw[TP_PSW_SCISSORS_BUTTON].smpsw_name = PSWITCH_HK_SCISSORS_BUTTON;
+       psw[TP_PSW_BLUETOOTH_BUTTON].smpsw_name = PSWITCH_HK_BLUETOOTH_BUTTON;
+       psw[TP_PSW_KEYBOARD_BUTTON].smpsw_name = PSWITCH_HK_KEYBOARD_BUTTON;
 #endif /* THINKPAD_NORMAL_HOTKEYS */
 
        for (i = 0; i < TP_PSW_LAST; i++) {
@@ -426,6 +438,15 @@ thinkpad_get_hotkeys(void *opaque)
                            PSWITCH_EVENT_PRESSED);
 #endif
                        break;
+               case THINKPAD_NOTIFY_Bluetooth:
+                       thinkpad_bluetooth_toggle(sc);
+#ifndef THINKPAD_NORMAL_HOTKEYS
+                       if (sc->sc_smpsw_valid == false)
+                               break;
+                       sysmon_pswitch_event(&sc->sc_smpsw[TP_PSW_BLUETOOTH_BUTTON],
+                           PSWITCH_EVENT_PRESSED);
+#endif
+                       break;
                case THINKPAD_NOTIFY_wWANSwitch:
                        thinkpad_wwan_toggle(sc);
 #ifndef THINKPAD_NORMAL_HOTKEYS
@@ -543,6 +564,24 @@ thinkpad_get_hotkeys(void *opaque)
                        sysmon_pswitch_event(&sc->sc_smpsw[TP_PSW_VOLUME_MUTE],
                            PSWITCH_EVENT_PRESSED);
                        break;
+               case THINKPAD_NOTIFY_Star:
+                       if (sc->sc_smpsw_valid == false)
+                               break;
+                       sysmon_pswitch_event(&sc->sc_smpsw[TP_PSW_STAR_BUTTON],
+                           PSWITCH_EVENT_PRESSED);
+                       break;
+               case THINKPAD_NOTIFY_Scissors:
+                       if (sc->sc_smpsw_valid == false)
+                               break;
+                       sysmon_pswitch_event(&sc->sc_smpsw[TP_PSW_SCISSORS_BUTTON],
+                           PSWITCH_EVENT_PRESSED);
+                       break;
+               case THINKPAD_NOTIFY_Keyboard:
+                       if (sc->sc_smpsw_valid == false)
+                               break;
+                       sysmon_pswitch_event(&sc->sc_smpsw[TP_PSW_KEYBOARD_BUTTON],
+                           PSWITCH_EVENT_PRESSED);
+                       break;
 #else
                case THINKPAD_NOTIFY_FnF1:
                case THINKPAD_NOTIFY_PointerSwitch:
@@ -552,6 +591,9 @@ thinkpad_get_hotkeys(void *opaque)
                case THINKPAD_NOTIFY_VolumeUp:
                case THINKPAD_NOTIFY_VolumeDown:
                case THINKPAD_NOTIFY_VolumeMute:
+               case THINKPAD_NOTIFY_Star:
+               case THINKPAD_NOTIFY_Scissors:
+               case THINKPAD_NOTIFY_Keyboard:
                        /* XXXJDM we should deliver hotkeys as keycodes */
                        break;
 #endif /* THINKPAD_NORMAL_HOTKEYS */
diff -r b996f3ca94c5 -r b8291ffe2ca1 sys/sys/power.h
--- a/sys/sys/power.h   Sat May 29 16:49:49 2021 +0000
+++ b/sys/sys/power.h   Sat May 29 16:49:57 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: power.h,v 1.21 2018/08/01 20:09:34 kre Exp $   */
+/*     $NetBSD: power.h,v 1.22 2021/05/29 16:49:57 riastradh Exp $     */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -114,6 +114,10 @@
 #define                PSWITCH_HK_VOLUME_UP            "volume-up"
 #define                PSWITCH_HK_VOLUME_DOWN          "volume-down"
 #define                PSWITCH_HK_VOLUME_MUTE          "volume-mute"
+#define                PSWITCH_HK_STAR_BUTTON          "star-button"
+#define                PSWITCH_HK_SCISSORS_BUTTON      "scissors-button"
+#define                PSWITCH_HK_BLUETOOTH_BUTTON     "bluetooth-button"
+#define                PSWITCH_HK_KEYBOARD_BUTTON      "keyboard-button"
 #endif /* THINKPAD_NORMAL_HOTKEYS */
 #define        PSWITCH_TYPE_RADIO      6       /* radio switch */
 



Home | Main Index | Thread Index | Old Index