When using the arrow keys the cursor is moved. However, when the cursor is at the minimal or maximum position and I press up / left or down / right the key down event will not be consumed. (This then results in the fact that focus movement will work again).
Normally widgets do not implement directly key-down callbacks. They normally use ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT and key_actions. With these helpers the actaul "key" and modifier gets loaded from the config, which means these operations can be changed by a API user (which happens from time to time). Using these helpers will also simplyfy your code, additionally, the bug described above will be solved more easily.