Я бы очень рекомендовал использовать для этого элементы HTML. Вы можете наложить их на холст с помощью CSS-позиционирования, так что может показаться, что они являются частью того, что вы нарисовали на самом холсте.
Создание этого исключительно с использованием canvas - очень сложная задача.
Во-первых, вам нужно создать подпрограммы для рисования полей ввода и кнопки. Затем вам понадобятся процедуры, чтобы нарисовать их в разных состояниях, например кнопку, когда она нажата. Вам также нужно будет написать код, который позаботится об отображении каретки в текстовых полях, символов, вводимых пользователем, добавить код для обработки событий клавиш, чтобы создавать ключи, обрабатывать комбинации клавиш с копировальной пастой, обрабатывать клавиши со стрелками и нажимать на разные части текст для перемещения ...
и многое другое.
Серьезно. Сделайте это с элементами ввода HTML. На основании вашего вопроса это лучший выбор.