Nekromancer, ни разу не сталкивался (самообучение любителя вещь непредсказуемая), спасибо. 
Почитал и попробовал использовать, но пока безуспешно. В примере, при нажатии в div клавиши влево, курсор должен устанавливаться в определённое место. Функция вызывается, ошибок нет. эффекта нет. Подскажете где ошибся?
<!DOCTYPE HTML>
<html>
<body>   
  <div contenteditable onkeyup = "test.call(this)">0123456789</div>
  <script>
    function test(e) {
      e = e || event;
      var range = document.createRange()
      if (e.keyCode == 37) {
        range.setStart(this.childNodes[0]/* Это же textNode? */, 2);
        range.setEnd(this.childNodes[0], 2);
      }
    }
  </script>
</body>
</html>
Похоже, выделяется текст успешно, можно его получить как range.toString(), но курсор положения не меняет (chrome 16).