mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-22 10:21:04 +00:00
drivers_managed-pc: propagate keyboard LEDs
This patch supplements the drivers subsystem with the ability to propagate the global capslock and numlock states to PS/2 and USB HID keyboards.
This commit is contained in:
parent
fe4f304815
commit
c05ab9c310
@ -139,13 +139,15 @@
|
|||||||
</config>
|
</config>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
<start name="usb_drv" caps="100" priority="-1">
|
<start name="usb_drv" caps="200" priority="-1">
|
||||||
<resource name="RAM" quantum="16M"/>
|
<resource name="RAM" quantum="16M"/>
|
||||||
<provides> <service name="Input"/> <service name="Usb"/> </provides>
|
<provides> <service name="Input"/> <service name="Usb"/> </provides>
|
||||||
<route>
|
<route>
|
||||||
<service name="Platform"> <child name="platform_drv"/> </service>
|
<service name="Platform"> <child name="platform_drv"/> </service>
|
||||||
<service name="ROM" label="config">
|
<service name="ROM" label="config">
|
||||||
<child name="fs_rom" label="usb_drv.config"/> </service>
|
<child name="fs_rom" label="usb_drv.config"/> </service>
|
||||||
|
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
|
||||||
|
<service name="ROM" label="numlock"> <parent label="numlock"/> </service>
|
||||||
<service name="Report" label="devices">
|
<service name="Report" label="devices">
|
||||||
<child name="fs_report" label="usb_devices"/> </service>
|
<child name="fs_report" label="usb_devices"/> </service>
|
||||||
<service name="Report" label="config">
|
<service name="Report" label="config">
|
||||||
@ -162,21 +164,25 @@
|
|||||||
<start name="ps2_drv" priority="0">
|
<start name="ps2_drv" priority="0">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides> <service name="Input"/> </provides>
|
<provides> <service name="Input"/> </provides>
|
||||||
|
<config capslock_led="rom" numlock_led="rom"/>
|
||||||
<route>
|
<route>
|
||||||
<service name="Platform"> <child name="platform_drv"/> </service>
|
<service name="Platform"> <child name="platform_drv"/> </service>
|
||||||
<service name="ROM"> <parent/> </service>
|
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
|
||||||
<service name="PD"> <parent/> </service>
|
<service name="ROM" label="numlock"> <parent label="numlock"/> </service>
|
||||||
<service name="CPU"> <parent/> </service>
|
<service name="ROM"> <parent/> </service>
|
||||||
<service name="LOG"> <parent/> </service>
|
<service name="PD"> <parent/> </service>
|
||||||
|
<service name="CPU"> <parent/> </service>
|
||||||
|
<service name="LOG"> <parent/> </service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
<start name="input_filter" caps="80" priority="-1">
|
<start name="input_filter" caps="90" priority="-1">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="2M"/>
|
||||||
<provides> <service name="Input"/> </provides>
|
<provides> <service name="Input"/> </provides>
|
||||||
<route>
|
<route>
|
||||||
<service name="ROM" label="config"> <parent label="input_filter.config"/> </service>
|
<service name="ROM" label="config"> <parent label="input_filter.config"/> </service>
|
||||||
<service name="ROM" label="en_us.chargen"> <parent label="en_us.chargen"/> </service>
|
<service name="ROM" label="en_us.chargen"> <parent label="en_us.chargen"/> </service>
|
||||||
|
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
|
||||||
<service name="Input" label="ps2"> <child name="ps2_drv"/> </service>
|
<service name="Input" label="ps2"> <child name="ps2_drv"/> </service>
|
||||||
<service name="Input" label="usb"> <child name="usb_drv"/> </service>
|
<service name="Input" label="usb"> <child name="usb_drv"/> </service>
|
||||||
<service name="ROM"> <parent/> </service>
|
<service name="ROM"> <parent/> </service>
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
<config>
|
||||||
|
<input label="ps2"/>
|
||||||
|
<input label="usb"/>
|
||||||
|
<output>
|
||||||
|
<chargen>
|
||||||
|
<merge>
|
||||||
|
<accelerate max="50" sensitivity_percent="1000" curve="127">
|
||||||
|
<button-scroll>
|
||||||
|
<input name="ps2"/>
|
||||||
|
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
|
||||||
|
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
|
||||||
|
</button-scroll>
|
||||||
|
</accelerate>
|
||||||
|
<input name="usb"/>
|
||||||
|
</merge>
|
||||||
|
<mod1>
|
||||||
|
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
|
||||||
|
<rom name="capslock"/>
|
||||||
|
</mod1>
|
||||||
|
<mod2>
|
||||||
|
<key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/>
|
||||||
|
</mod2>
|
||||||
|
<mod3>
|
||||||
|
<key name="KEY_RIGHTALT"/> <!-- AltGr -->
|
||||||
|
</mod3>
|
||||||
|
<repeat delay_ms="230" rate_ms="90"/>
|
||||||
|
<include rom="en_us.chargen"/>
|
||||||
|
</chargen>
|
||||||
|
</output>
|
||||||
|
</config>
|
@ -10,6 +10,7 @@ create_boot_directory
|
|||||||
import_from_depot genodelabs/src/[base_src] \
|
import_from_depot genodelabs/src/[base_src] \
|
||||||
genodelabs/pkg/drivers_managed-pc \
|
genodelabs/pkg/drivers_managed-pc \
|
||||||
genodelabs/src/report_rom \
|
genodelabs/src/report_rom \
|
||||||
|
genodelabs/src/dynamic_rom \
|
||||||
genodelabs/src/init
|
genodelabs/src/init
|
||||||
|
|
||||||
install_config {
|
install_config {
|
||||||
@ -48,6 +49,8 @@ install_config {
|
|||||||
<binary name="init"/>
|
<binary name="init"/>
|
||||||
<route>
|
<route>
|
||||||
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
|
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
|
||||||
|
<service name="ROM" label="capslock"> <child name="dynamic_rom"/> </service>
|
||||||
|
<service name="ROM" label="numlock"> <child name="dynamic_rom"/> </service>
|
||||||
<service name="Timer"> <child name="timer"/> </service>
|
<service name="Timer"> <child name="timer"/> </service>
|
||||||
<service name="Report" label="block_devices"> <child name="report_rom"/> </service>
|
<service name="Report" label="block_devices"> <child name="report_rom"/> </service>
|
||||||
<any-service> <parent/> </any-service>
|
<any-service> <parent/> </any-service>
|
||||||
@ -59,6 +62,25 @@ install_config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
|
<start name="dynamic_rom">
|
||||||
|
<resource name="RAM" quantum="4M"/>
|
||||||
|
<provides> <service name="ROM"/> </provides>
|
||||||
|
<config verbose="yes">
|
||||||
|
<rom name="capslock">
|
||||||
|
<inline> <capslock enabled="no"/> </inline>
|
||||||
|
<sleep milliseconds="500" />
|
||||||
|
<inline> <capslock enabled="yes"/> </inline>
|
||||||
|
<sleep milliseconds="500" />
|
||||||
|
</rom>
|
||||||
|
<rom name="numlock">
|
||||||
|
<inline> <numlock enabled="no"/> </inline>
|
||||||
|
<sleep milliseconds="1000" />
|
||||||
|
<inline> <numlock enabled="yes"/> </inline>
|
||||||
|
<sleep milliseconds="1000" />
|
||||||
|
</rom>
|
||||||
|
</config>
|
||||||
|
</start>
|
||||||
|
|
||||||
<start name="test-driver_manager">
|
<start name="test-driver_manager">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<config>
|
<config>
|
||||||
|
@ -477,6 +477,8 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config,
|
|||||||
xml.attribute("uhci", true);
|
xml.attribute("uhci", true);
|
||||||
xml.attribute("ehci", true);
|
xml.attribute("ehci", true);
|
||||||
xml.attribute("xhci", true);
|
xml.attribute("xhci", true);
|
||||||
|
xml.attribute("capslock_led", "rom");
|
||||||
|
xml.attribute("numlock_led", "rom");
|
||||||
xml.node("hid", [&] () { });
|
xml.node("hid", [&] () { });
|
||||||
xml.node("raw", [&] () {
|
xml.node("raw", [&] () {
|
||||||
xml.node("report", [&] () { xml.attribute("devices", true); });
|
xml.node("report", [&] () { xml.attribute("devices", true); });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user