Despachar programaticamente os principais caracteres para entrada / conteúdo editável

Posso definir o valor de elementos DOM de estilo de entrada (input/div contenteditable=true) com bastante facilidade, definindo suas.value ouinnerText propriedades via JS.

Mas é possível enviar eventos de teclado para eles, carregados com um caractere, para que ele insira o caractere despachado na posição atual do cursor?

Aqui está um exemplo que não funciona.

'use strict'

const btn = document.querySelector('#btn')
const editable = document.querySelector('#editable')

btn.addEventListener('mousedown', e => {
  // prevent unfocus when clicking button
  e.preventDefault()
  
  const customEvt = new KeyboardEvent('keypress', {
    bubbles: true, 
    cancelable: true, 
    key: 'X', 
    char: 'X'
  })

  editable.dispatchEvent(customEvt)
})
#editable {
  border: 1px solid;
  padding: 8px 12px;
}
<p> Make sure the editable is focused before pressing button</p>
<div id="editable" contenteditable="true">Lorem Ipsum</div>
<button id="btn"> Add 'X' character at cursor position</button>

Por que eu preciso disso:

Estamos construindo um teclado de símbolos para um aplicativo, que permitirá aos usuários adicionar símbolos à posição atual do cursor.

Rastreando a posição atual do cursor em umcontenteditable, para que possamos inserir o símbolo clicado, é suscetível a erros e requer código extra (e geralmente feio). Eu gostaria de evitá-lo.

Acho que isso não pode ser feito, pois pode ser um risco à segurança, mas nunca é demais perguntar.

questionAnswers(1)

yourAnswerToTheQuestion