digraph seats_libinput { rankdir="BT"; node [ shape="box"; ] ctx1 [label="libinput context 1"; URL="\ref libinput"]; ctx2 [label="libinput context 2"; URL="\ref libinput"]; seat0 [ label="seat phys 0 logical A"]; seat1 [ label="seat phys 0 logical B"]; seat2 [ label="seat phys 1 logical C"]; dev1 [label="device 'Foo'"]; dev2 [label="device 'Bar'"]; dev3 [label="device 'Spam'"]; dev4 [label="device 'Egg'"]; ctx1 -> dev1 ctx1 -> dev2 ctx1 -> dev3 ctx2 -> dev4 dev1 -> seat0 dev2 -> seat0 dev3 -> seat1 dev4 -> seat2 }