@@ -113,9 +113,11 @@ def notify(
113
113
if is_activated == self ._output_active :
114
114
# nothing changed
115
115
if is_pressed :
116
- self .remember (self ._output_active , event )
117
- # combination is active: consume the event
118
- # combination inactive: forward the event
116
+ # If the output is active, a key-down event triggered it, which then
117
+ # did not get forwarded, therefore it doesn't require a release.
118
+ self .require_release_later (not self ._output_active , event )
119
+ # output is active: consume the event
120
+ # output inactive: forward the event
119
121
return self ._output_active
120
122
else :
121
123
# Else if it is released: Returning `False` means that the event-reader
@@ -146,7 +148,9 @@ def notify(
146
148
sub_handler_result = self ._sub_handler .notify (event , source , suppress )
147
149
148
150
if is_pressed :
149
- self .remember (sub_handler_result , event )
151
+ # If the sub-handler return True, it handled the event, so the user never
152
+ # sees this key-down event. In that case, we don't require a release event.
153
+ self .require_release_later (not sub_handler_result , event )
150
154
return sub_handler_result
151
155
else :
152
156
# Else if it is released: Returning `False` means that the event-reader
@@ -170,10 +174,10 @@ def should_release_event(self, event: InputEvent) -> bool:
170
174
assert event .value == 0
171
175
return self ._requires_a_release .pop (event .type_and_code , False )
172
176
173
- def remember (self , will_require_release_later : bool , event : InputEvent ) -> None :
177
+ def require_release_later (self , require : bool , event : InputEvent ) -> None :
174
178
"""Remember if this key-down event will need a release event later on."""
175
179
assert event .value == 1
176
- self ._requires_a_release [event .type_and_code ] = not will_require_release_later
180
+ self ._requires_a_release [event .type_and_code ] = require
177
181
178
182
def reset (self ) -> None :
179
183
self ._sub_handler .reset ()
0 commit comments