mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-08 11:55:24 +00:00
parent
d80b2a150a
commit
a2491c30b3
@ -483,6 +483,68 @@ append config {
|
||||
<usb> <press code="KEY_A"/> <release code="KEY_A"/> </usb>
|
||||
<expect_press code="KEY_A" char="b"/> <expect_release code="KEY_A"/>
|
||||
|
||||
<message string="test remap of KEY_UNKNOWN"/>
|
||||
|
||||
<filter_config>
|
||||
<output>
|
||||
<remap>
|
||||
<key name="KEY_UNKNOWN" to="KEY_A"/>
|
||||
<input name="usb"/>
|
||||
</remap>
|
||||
</output>
|
||||
<policy label_suffix="usb" input="usb"/>
|
||||
</filter_config>
|
||||
<sleep ms="100"/>
|
||||
<usb>
|
||||
<press code="KEY_UNKNOWN" />
|
||||
<release code="KEY_UNKNOWN"/>
|
||||
</usb>
|
||||
<expect_press code="KEY_A" />
|
||||
<expect_release code="KEY_A" />
|
||||
|
||||
<message string="test ignore-key"/>
|
||||
|
||||
<filter_config>
|
||||
<output>
|
||||
<remap>
|
||||
<key name="KEY_UNKNOWN" to="KEY_A"/>
|
||||
<ignore-key name="KEY_UNKNOWN"/>
|
||||
<input name="usb"/>
|
||||
</remap>
|
||||
</output>
|
||||
<policy label_suffix="usb" input="usb"/>
|
||||
</filter_config>
|
||||
<sleep ms="100"/>
|
||||
<usb>
|
||||
<press code="KEY_UNKNOWN" />
|
||||
<release code="KEY_UNKNOWN"/>
|
||||
<press code="KEY_B" />
|
||||
<release code="KEY_B"/>
|
||||
</usb>
|
||||
<not_expect_press code="KEY_A" />
|
||||
<not_expect_release code="KEY_A" />
|
||||
|
||||
<message string="test log output"/>
|
||||
|
||||
<filter_config>
|
||||
<output>
|
||||
<log prefix="Remapped ">
|
||||
<remap>
|
||||
<key name="KEY_UNKNOWN" to="KEY_A"/>
|
||||
<log prefix="Unremapped ">
|
||||
<input name="usb"/>
|
||||
</log>
|
||||
</remap>
|
||||
</log>
|
||||
</output>
|
||||
<policy label_suffix="usb" input="usb"/>
|
||||
</filter_config>
|
||||
<sleep ms="100"/>
|
||||
<usb>
|
||||
<press code="KEY_UNKNOWN" />
|
||||
<release code="KEY_UNKNOWN"/>
|
||||
</usb>
|
||||
|
||||
</config>
|
||||
<route>
|
||||
<service name="Event"> <child name="event_filter"/> </service>
|
||||
@ -508,4 +570,11 @@ build_boot_image $boot_modules
|
||||
append qemu_args " -nographic "
|
||||
|
||||
run_genode_until {.*child "test-event_filter" exited with exit value 0.*} 60
|
||||
|
||||
grep_output {mapped event}
|
||||
unify_output {\t} { }
|
||||
compare_output_to {
|
||||
[init -> event_filter] Unremapped event #0 PRESS KEY_UNKNOWN 65534 key count: 1
|
||||
[init -> event_filter] Remapped event #0 PRESS KEY_A 65534 key count: 1
|
||||
[init -> event_filter] Unremapped event #1 RELEASE KEY_UNKNOWN key count: 0
|
||||
[init -> event_filter] Remapped event #1 RELEASE KEY_A key count: 0
|
||||
}
|
||||
|
@ -335,6 +335,8 @@ struct Test::Main : Input_from_filter::Event_handler
|
||||
|
||||
_input_from_filter.input_expected(step.type() == "expect_press" ||
|
||||
step.type() == "expect_release" ||
|
||||
step.type() == "not_expect_press" ||
|
||||
step.type() == "not_expect_release" ||
|
||||
step.type() == "expect_char" ||
|
||||
step.type() == "expect_motion" ||
|
||||
step.type() == "expect_wheel");
|
||||
@ -396,6 +398,7 @@ struct Test::Main : Input_from_filter::Event_handler
|
||||
}
|
||||
|
||||
if (step.type() == "expect_press" || step.type() == "expect_release"
|
||||
|| step.type() == "not_expect_press" || step.type() == "not_expect_release"
|
||||
|| step.type() == "expect_char" || step.type() == "expect_motion"
|
||||
|| step.type() == "expect_wheel")
|
||||
return;
|
||||
@ -424,6 +427,7 @@ struct Test::Main : Input_from_filter::Event_handler
|
||||
Xml_node const step = _curr_step_xml();
|
||||
|
||||
bool step_succeeded = false;
|
||||
bool step_failed = false;
|
||||
|
||||
ev.handle_press([&] (Input::Keycode key, Codepoint codepoint) {
|
||||
|
||||
@ -438,12 +442,30 @@ struct Test::Main : Input_from_filter::Event_handler
|
||||
&& ((!step.has_attribute("char") && !step.has_attribute("codepoint")) ||
|
||||
codepoint_of_step(step).value == codepoint.value))
|
||||
step_succeeded = true;
|
||||
|
||||
if (step.type() == "not_expect_press") {
|
||||
if (step.attribute_value("code", Value()) == Input::key_name(key)
|
||||
&& ((!step.has_attribute("char") && !step.has_attribute("codepoint")) ||
|
||||
codepoint_of_step(step).value == codepoint.value))
|
||||
step_failed = true;
|
||||
else
|
||||
step_succeeded = true;
|
||||
}
|
||||
});
|
||||
|
||||
ev.handle_release([&] (Input::Keycode key) {
|
||||
if (step.type() == "expect_release"
|
||||
&& step.attribute_value("code", Value()) == Input::key_name(key))
|
||||
step_succeeded = true; });
|
||||
step_succeeded = true;
|
||||
|
||||
if (step.type() == "not_expect_release") {
|
||||
if (step.attribute_value("code", Value()) == Input::key_name(key))
|
||||
step_failed = true;
|
||||
else
|
||||
step_succeeded = true;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
ev.handle_wheel([&] (int x, int y) {
|
||||
if (step.type() == "expect_wheel"
|
||||
@ -463,6 +485,11 @@ struct Test::Main : Input_from_filter::Event_handler
|
||||
&& (!step.has_attribute("ay") || step.attribute_value("ay", 0L) == y))
|
||||
step_succeeded = true; });
|
||||
|
||||
if (step_failed) {
|
||||
error("got unexpected event: ", step);
|
||||
throw Exception();
|
||||
}
|
||||
|
||||
if (step_succeeded) {
|
||||
_advance_step();
|
||||
_execute_curr_step();
|
||||
|
Loading…
x
Reference in New Issue
Block a user