A command that has an effect and then returns false
seems dodgy—if you handle a key, you should probably return true.
The delete
call deletes from the cursor to the size of the node before the cursor after the cursor. Something like delete($from.pos - $from.nodeBefore.nodeSize, $from.pos)
seems more reasonable. Also, leave nodes like hard breaks always have node size 1, so you could simplify that.