@@ -12,6 +12,7 @@ import io.github.sds100.keymapper.base.trigger.AssistantTriggerType
1212import io.github.sds100.keymapper.base.trigger.EvdevTriggerKey
1313import io.github.sds100.keymapper.base.trigger.RecordTriggerController
1414import io.github.sds100.keymapper.base.trigger.RecordTriggerState
15+ import io.github.sds100.keymapper.common.models.EvdevDeviceInfo
1516import io.github.sds100.keymapper.common.models.GrabDeviceRequest
1617import io.github.sds100.keymapper.system.inputevents.KMEvdevEvent
1718import io.github.sds100.keymapper.system.inputevents.KMInputEvent
@@ -37,7 +38,7 @@ class KeyMapDetectionController(
3738 private const val INPUT_EVENT_HUB_ID = " key_map_controller"
3839
3940 fun getEvdevGrabRequests (algorithm : KeyMapAlgorithm ): List <GrabDeviceRequest > {
40- val requests = mutableListOf< GrabDeviceRequest >()
41+ val deviceKeyEventMap = mutableMapOf< EvdevDeviceInfo , MutableSet < Int > >()
4142
4243 for ((index, trigger) in algorithm.triggers.withIndex()) {
4344 val evdevDevices = trigger.keys.filterIsInstance<EvdevTriggerKey >()
@@ -56,15 +57,15 @@ class KeyMapDetectionController(
5657 val extraKeyCodes = actions
5758 .filterIsInstance<ActionData .InputKeyEvent >()
5859 .map { it.keyCode }
59- .distinct()
60- .toIntArray()
6160
6261 for (device in evdevDevices) {
63- requests.add( GrabDeviceRequest ( device, extraKeyCodes) )
62+ deviceKeyEventMap.getOrPut( device, { mutableSetOf () }).addAll(extraKeyCodes )
6463 }
6564 }
6665
67- return requests
66+ return deviceKeyEventMap.map { (device, keyEvents) ->
67+ GrabDeviceRequest (device, keyEvents.toIntArray())
68+ }
6869 }
6970 }
7071
0 commit comments