seems correct and consistent for typing, still need undo+redo stack updates and work on cursor updates