diff --git a/web/pgadmin/tools/psql/static/js/psql_module.js b/web/pgadmin/tools/psql/static/js/psql_module.js index 1261023d..326a7218 100644 --- a/web/pgadmin/tools/psql/static/js/psql_module.js +++ b/web/pgadmin/tools/psql/static/js/psql_module.js @@ -333,28 +333,30 @@ export function initialize(gettext, url_for, $, _, pgAdmin, csrfToken, Browser) // Listen key press event from terminal and emit socket event. term.attachCustomKeyEventHandler(e => { e.stopPropagation(); - if(e.type=='keydown' && (e.metaKey || e.ctrlKey) &&(e.key == 'v' || e.key == 'V')) { - navigator.permissions.query({ name: 'clipboard-read' }).then(function(result) { + if(e.type=='keydown' && (e.metaKey || e.ctrlKey) && (e.key == 'c' || e.key == 'C')) { + document.execCommand('copy'); + } + + if (e.ctrlKey && platform == 'win32') { + return false; + } + + return true; + }); + + term.textarea.addEventListener('paste', function(e) { + navigator.permissions.query({ name: 'clipboard-read' }).then(function(result) { if(result.state === 'granted' || result.state === 'prompt') { navigator.clipboard.readText().then( clipText => { var selected_text = clipText; if (selected_text.length > 0) { - socket.emit('socket_input', {'input': selected_text, 'key_name': e.code}); + socket.emit('socket_input', {'input': selected_text, 'key_name': 'paste'}); } }); } else{ Alertify.alert(gettext('Clipboard read permission required'), gettext('To paste data on the PSQL terminal, Clipboard read permission required.')); } }); - }else if(e.type=='keydown' && (e.metaKey || e.ctrlKey) && (e.key == 'c' || e.key == 'C')) { - document.execCommand('copy'); - } - - if (e.ctrlKey && platform == 'win32') { - return false; - } - - return true; }); term.onKey(function (ev) {