can_dock should never be false.
can_dock should not depend on the presence of HDMI output in order to be set to TRUE. If anything, it should depend on the presence of mouse and keyboard.
When I plug in a USB mouse and keyboard, I want squeekboard to go away, I want to disable scaling (set to 1.0), and I want decent window management. None of those wants have anything to do with whether an external display is connected. I frequently use my device this way, with usb keyboard/trackpad only and no external display in landscape mode. The user experience of constantly dismissing squeekboard is very unpleasant and completely ruins the quasi-laptop fun.
Why not just default to undocked if no HDMI is present, and just leave it up to the user to enter docked mode when he connects in HID? What justification is there for ever setting can_dock to false? Why override the user's intent?