implement move_or_scroll_half, same key-bind, different behavior according to current cursor position