Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48e70804 authored by Stefan Achatz's avatar Stefan Achatz Committed by Jiri Kosina
Browse files

HID: roccat: refactor special event handling



As special events are reported along with hid event information all
events are now processed further by standard handler.
Also cleaned up this code.

Signed-off-by: default avatarStefan Achatz <erazor_de@users.sourceforge.net>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 73b3577d
Loading
Loading
Loading
Loading
+20 −34
Original line number Diff line number Diff line
@@ -912,6 +912,24 @@ static void kone_remove(struct hid_device *hdev)
	hid_hw_stop(hdev);
}

/* handle special events and keep actual profile and dpi values up to date */
static void kone_keep_values_up_to_date(struct kone_device *kone,
		struct kone_mouse_event const *event)
{
	switch (event->event) {
	case kone_mouse_event_switch_profile:
	case kone_mouse_event_osd_profile:
		kone->actual_profile = event->value;
		kone->actual_dpi = kone->profiles[kone->actual_profile - 1].
				startup_dpi;
		break;
	case kone_mouse_event_switch_dpi:
	case kone_mouse_event_osd_dpi:
		kone->actual_dpi = event->value;
		break;
	}
}

/*
 * Is called for keyboard- and mousepart.
 * Only mousepart gets informations about special events in its extended event
@@ -938,41 +956,9 @@ static int kone_raw_event(struct hid_device *hdev, struct hid_report *report,
	else
		memset(&event->tilt, 0, 5);

	/*
	 * handle special events and keep actual profile and dpi values
	 * up to date
	 */
	switch (event->event) {
	case kone_mouse_event_osd_dpi:
		dev_dbg(&hdev->dev, "osd dpi event. actual dpi %d\n",
				event->value);
		return 1; /* return 1 if event was handled */
	case kone_mouse_event_switch_dpi:
		kone->actual_dpi = event->value;
		dev_dbg(&hdev->dev, "switched dpi to %d\n", event->value);
		return 1;
	case kone_mouse_event_osd_profile:
		dev_dbg(&hdev->dev, "osd profile event. actual profile %d\n",
				event->value);
		return 1;
	case kone_mouse_event_switch_profile:
		kone->actual_profile = event->value;
		kone->actual_dpi = kone->profiles[kone->actual_profile - 1].
				startup_dpi;
		dev_dbg(&hdev->dev, "switched profile to %d\n", event->value);
		return 1;
	case kone_mouse_event_call_overlong_macro:
		dev_dbg(&hdev->dev, "overlong macro called, button %d %s/%s\n",
				event->macro_key,
				kone->profiles[kone->actual_profile - 1].
				button_infos[event->macro_key].macro_set_name,
				kone->profiles[kone->actual_profile - 1].
				button_infos[event->macro_key].macro_name
				);
		return 1;
	}

	return 0; /* do further processing */
	kone_keep_values_up_to_date(kone, event);

	return 0; /* always do further processing */
}

static const struct hid_device_id kone_devices[] = {