Взгляните на Обратный инжиниринг редактора ОМУ . Это редактор, используемый в SO и поддерживающий то, на что вы ссылаетесь. Функция, которая увеличивает текущий выделенный текст как Полужирный , называется doBorI()
. Ищите его в источнике.
Что касается перехвата событий клавиатуры, на этой странице есть отличный пример, в том числе определение, какая клавиша была нажата.
Не уверен, что именно ваш конкретный вопрос, но, надеюсь, это хорошее начало.