diff --git a/demo/main.js b/demo/main.js index 263ba168..844d5791 100644 --- a/demo/main.js +++ b/demo/main.js @@ -1,6 +1,6 @@ var terminalContainer = document.getElementById('terminal-container'), term = new Terminal(), - shellprompt = '> '; + shellprompt = '$ '; term.open(terminalContainer); term.fit(); @@ -32,3 +32,7 @@ term.on('key', function (key, ev) { term.write(key); } }); + +term.on('paste', function (data, ev) { + term.write(data); +}); diff --git a/src/xterm.js b/src/xterm.js index ca11292c..e100e7c2 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -430,15 +430,28 @@ }; /** - * Bind to paste event + * Bind to paste event and allow right-click pasting. */ Terminal.bindPaste = function(term) { on(term.element, 'paste', function(ev) { if (ev.clipboardData) { var text = ev.clipboardData.getData('text/plain'); + term.emit('paste', text, ev); term.handler(text); } }); + + /** + * Contenteditable hack in order to allow right-click paste + */ + on(term.element, 'contextmenu', function (ev) { + console.log('hey'); + term.element.contentEditable = true; + }); + + on(term.element, 'mouseup', function (ev) { + term.element.contentEditable = false; + }); }; @@ -447,16 +460,6 @@ */ Terminal.bindKeys = function(term) { on(term.element, 'keydown', function(ev) { - /* - * Clear all selections if the key pressed was not among - * Shift, Alt, Cmd, Ctrl. - */ - var selection = window.getSelection(); - if (selection.toString() != '') { - if ([16, 17, 18, 91].indexOf(ev.keyCode) == -1) { - selection.removeAllRanges(); - } - } term.keyDown(ev); }, true); @@ -471,7 +474,7 @@ */ Terminal.bindCopy = function(term) { on(term.element, 'copy', function(ev) { - return; //temporary + return; }); };