|
@@ -1061,6 +1061,8 @@ static void asus_wmi_notify(u32 value, void *context)
|
|
|
acpi_status status;
|
|
|
int code;
|
|
|
int orig_code;
|
|
|
+ unsigned int key_value = 1;
|
|
|
+ bool autorelease = 1;
|
|
|
|
|
|
status = wmi_get_event_data(value, &response);
|
|
|
if (status != AE_OK) {
|
|
@@ -1076,6 +1078,13 @@ static void asus_wmi_notify(u32 value, void *context)
|
|
|
code = obj->integer.value;
|
|
|
orig_code = code;
|
|
|
|
|
|
+ if (asus->driver->key_filter) {
|
|
|
+ asus->driver->key_filter(asus->driver, &code, &key_value,
|
|
|
+ &autorelease);
|
|
|
+ if (code == ASUS_WMI_KEY_IGNORE)
|
|
|
+ goto exit;
|
|
|
+ }
|
|
|
+
|
|
|
if (code >= NOTIFY_BRNUP_MIN && code <= NOTIFY_BRNUP_MAX)
|
|
|
code = NOTIFY_BRNUP_MIN;
|
|
|
else if (code >= NOTIFY_BRNDOWN_MIN &&
|
|
@@ -1085,7 +1094,8 @@ static void asus_wmi_notify(u32 value, void *context)
|
|
|
if (code == NOTIFY_BRNUP_MIN || code == NOTIFY_BRNDOWN_MIN) {
|
|
|
if (!acpi_video_backlight_support())
|
|
|
asus_wmi_backlight_notify(asus, orig_code);
|
|
|
- } else if (!sparse_keymap_report_event(asus->inputdev, code, 1, true))
|
|
|
+ } else if (!sparse_keymap_report_event(asus->inputdev, code,
|
|
|
+ key_value, autorelease))
|
|
|
pr_info("Unknown key %x pressed\n", code);
|
|
|
|
|
|
exit:
|