mirror of
https://github.com/wessel-novacustom/clevo-keyboard.git
synced 2024-11-15 11:43:59 +01:00
Add special key-combo when gauge key is pressed
This commit is contained in:
parent
8a7052dbda
commit
13d9b8bbf8
|
@ -67,10 +67,6 @@ static int tuxedo_input_init(const struct key_entry key_map[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add touchpad key event bits for manual report workaround
|
|
||||||
tuxedo_input_device->evbit[0] = BIT_MASK(EV_KEY);
|
|
||||||
tuxedo_input_device->keybit[BIT_WORD(KEY_F21)] = BIT_MASK(KEY_F21);
|
|
||||||
|
|
||||||
err = input_register_device(tuxedo_input_device);
|
err = input_register_device(tuxedo_input_device);
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
TUXEDO_ERROR("Error registering input device\n");
|
TUXEDO_ERROR("Error registering input device\n");
|
||||||
|
|
|
@ -34,19 +34,30 @@
|
||||||
#define UNIWILL_OSD_RADIOON 0x01A
|
#define UNIWILL_OSD_RADIOON 0x01A
|
||||||
#define UNIWILL_OSD_RADIOOFF 0x01B
|
#define UNIWILL_OSD_RADIOOFF 0x01B
|
||||||
|
|
||||||
|
#define UNIWILL_OSD_TOUCHPADWORKAROUND 0xFFF
|
||||||
|
|
||||||
struct tuxedo_keyboard_driver uniwill_keyboard_driver;
|
struct tuxedo_keyboard_driver uniwill_keyboard_driver;
|
||||||
|
|
||||||
static struct key_entry uniwill_wmi_keymap[] = {
|
static struct key_entry uniwill_wmi_keymap[] = {
|
||||||
// { KE_KEY, UNIWILL_OSD_RADIOON, { KEY_RFKILL } },
|
// { KE_KEY, UNIWILL_OSD_RADIOON, { KEY_RFKILL } },
|
||||||
// { KE_KEY, UNIWILL_OSD_RADIOOFF, { KEY_RFKILL } },
|
// { KE_KEY, UNIWILL_OSD_RADIOOFF, { KEY_RFKILL } },
|
||||||
|
// { KE_KEY, 0xb0, { KEY_F13 } },
|
||||||
|
{ KE_KEY, UNIWILL_OSD_TOUCHPADWORKAROUND, { KEY_F21 } },
|
||||||
|
// Only used to put ev bits
|
||||||
|
{ KE_KEY, 0xffff, { KEY_F6 } },
|
||||||
|
{ KE_KEY, 0xffff, { KEY_LEFTALT } },
|
||||||
|
{ KE_KEY, 0xffff, { KEY_LEFTMETA } },
|
||||||
{ KE_END, 0 }
|
{ KE_END, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void key_event_work(struct work_struct *work)
|
static void key_event_work(struct work_struct *work)
|
||||||
{
|
{
|
||||||
input_report_key(uniwill_keyboard_driver.input_device, KEY_F21, 1);
|
sparse_keymap_report_known_event(
|
||||||
input_report_key(uniwill_keyboard_driver.input_device, KEY_F21, 0);
|
current_driver->input_device,
|
||||||
input_sync(uniwill_keyboard_driver.input_device);
|
UNIWILL_OSD_TOUCHPADWORKAROUND,
|
||||||
|
1,
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Previous key codes for detecting longer combination
|
// Previous key codes for detecting longer combination
|
||||||
|
@ -61,7 +72,6 @@ static int keyboard_notifier_callb(struct notifier_block *nb, unsigned long code
|
||||||
if (!param->down) {
|
if (!param->down) {
|
||||||
|
|
||||||
if (code == KBD_KEYCODE) {
|
if (code == KBD_KEYCODE) {
|
||||||
TUXEDO_DEBUG("[%d, %d, %d]\n", prevprev_key, prev_key, param->value);
|
|
||||||
switch (param->value) {
|
switch (param->value) {
|
||||||
case 125:
|
case 125:
|
||||||
// If the last keys up were 85 -> 29 -> 125
|
// If the last keys up were 85 -> 29 -> 125
|
||||||
|
@ -107,6 +117,18 @@ static void uniwill_wmi_handle_event(u32 value, void *context, u32 guid_nr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special key combination when mode change key is pressed
|
||||||
|
if (code == 0xb0) {
|
||||||
|
input_report_key(current_driver->input_device, KEY_LEFTMETA, 1);
|
||||||
|
input_report_key(current_driver->input_device, KEY_LEFTALT, 1);
|
||||||
|
input_report_key(current_driver->input_device, KEY_F6, 1);
|
||||||
|
input_sync(current_driver->input_device);
|
||||||
|
input_report_key(current_driver->input_device, KEY_F6, 0);
|
||||||
|
input_report_key(current_driver->input_device, KEY_LEFTALT, 0);
|
||||||
|
input_report_key(current_driver->input_device, KEY_LEFTMETA, 0);
|
||||||
|
input_sync(current_driver->input_device);
|
||||||
|
}
|
||||||
|
|
||||||
kfree(obj);
|
kfree(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue