JSFiddle - React, Tailwind, and code Playground

HTML

<textarea></textarea>

<pre id="r"></pre>

JavaScript

var specialChars = {
            27: "esc", 9: "tab", 32: "space", 13: "return", 8: "backspace", 145: "scroll", 20: "capslock", 144: "numlock",
            19: "pause", 45: "insert", 36: "home", 46: "del", 35: "end", 33: "pageup", 34: "pagedown",
            37: "left", 38: "up", 39: "right", 40: "down", 109: "-",
            112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6",
            118: "f7", 119: "f8", 120: "f9", 121: "f10", 122: "f11", 123: "f12", 191: "/"
        };

function chromeKeyPress(i,e){
    e.type="chromekeypress";
    e.which = 0;
    handleKey(e);
}
function handleKey(e) {
    $("#r").html($("#r").html() + "\n" +
        e.type + "\n" +
        "  which: " + e.which + " == " + String.fromCharCode(e.which) + "\n" +
        "  keyCode: " + e.keyCode + " == " + String.fromCharCode(e.keyCode) + "\n" +
     "");
}

$("textarea").keydown(function(e) {
    if (specialChars[e.keyCode])
    {
        $("textarea").trigger("chromekeypress", e);
    
        $("textarea").unbind("keypress");
        setTimeout(function(){ $("textarea").bind("keypress", handleKey); },10);
    }
});
$("textarea").keypress(handleKey);
$("textarea").bind("chromekeypress", chromeKeyPress);