OnKeyDown needs to execute as much as possible, because it needs to maintain state.
It is often misused and misunderstood.
Usually it can be replaced with OnKeyUp which is a real single fire event.
So no wonder OnKeyDown has more code... It should have more.....
Not understanding the difference between the two is a very common design flaw.
E.g. with ctrl--<arrow keys> to navigate, OnKeyDown is the option. Otherwise use OnKeyUp.
LCL is literaly littered with that mistake. Even Delphi has a couple of issues, but far less so.