diff --git a/web/pgadmin/misc/bgprocess/static/js/Processes.jsx b/web/pgadmin/misc/bgprocess/static/js/Processes.jsx
index 860ace469..b736dfc89 100644
--- a/web/pgadmin/misc/bgprocess/static/js/Processes.jsx
+++ b/web/pgadmin/misc/bgprocess/static/js/Processes.jsx
@@ -21,6 +21,7 @@ import DeleteIcon from '@material-ui/icons/Delete';
 import HelpIcon from '@material-ui/icons/HelpRounded';
 import url_for from 'sources/url_for';
 import { Box } from '@material-ui/core';
+import { useMemo } from 'react';
 
 
 const useStyles = makeStyles((theme) => ({
@@ -98,7 +99,7 @@ export default function Processes() {
   const [tableData, setTableData] = React.useState([]);
   const [selectedRows, setSelectedRows] = React.useState([]);
 
-  let columns = [
+  let columns = useMemo(()=>[
     {
       accessor: 'stop_process',
       Header: () => null,
@@ -224,7 +225,7 @@ export default function Processes() {
       resizable: true,
       disableGlobalFilter: true,
     },
-  ];
+  ], []);
 
   const updateList = ()=>{
     if(pgAdmin.Browser.BgProcessManager.procList) {
diff --git a/web/pgadmin/static/js/clipboard.js b/web/pgadmin/static/js/clipboard.js
index 379a10648..2fd59d16a 100644
--- a/web/pgadmin/static/js/clipboard.js
+++ b/web/pgadmin/static/js/clipboard.js
@@ -1,9 +1,12 @@
+import Notifier from './helpers/Notifier';
+
 export async function copyToClipboard(text) {
   try {
     await navigator.clipboard.writeText(text);
-  } catch {
+  } catch(err) {
     /* Suppress error */
-    console.error('Does not have clipboard acccess');
+    console.log(err);
+    Notifier.error('Does not have clipboard acccess');
   }
   localStorage.setItem('clipboard', text);
 }
diff --git a/web/pgadmin/static/js/components/PgTable.jsx b/web/pgadmin/static/js/components/PgTable.jsx
index 39e6732ce..98e3e54a4 100644
--- a/web/pgadmin/static/js/components/PgTable.jsx
+++ b/web/pgadmin/static/js/components/PgTable.jsx
@@ -269,6 +269,7 @@ export default function PgTable({ columns, data, isSelectRow, caveTable=true, sc
       defaultColumn,
       isSelectRow,
       autoResetSortBy: false,
+      autoResetSelectedRows: false,
       initialState: {
         sortBy: sortOptions || [],
       }
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx
index 7b49e8938..af0b41fe0 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx
@@ -408,6 +408,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
         isDirtyRef.current = false;
         setPanelTitle(panel, fileName, {...qtState, current_file: fileName});
       }
+      eventBus.current.fireEvent(QUERY_TOOL_EVENTS.EDITOR_LAST_FOCUS);
     };
     const events = [
       [QUERY_TOOL_EVENTS.TRIGGER_LOAD_FILE, ()=>{
@@ -699,6 +700,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
               onNewQueryToolClick={onNewQueryToolClick}
               onResetLayout={onResetLayout}
               docker={docker.current}
+              containerRef={containerRef}
             />
             {React.useMemo(()=>(
               <MainToolBar
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js
index 756e48e6f..4c9f6db7d 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js
+++ b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js
@@ -56,6 +56,7 @@ export const QUERY_TOOL_EVENTS = {
   SET_FILTER_INFO: 'SET_FILTER_INFO',
   FETCH_MORE_ROWS: 'FETCH_MORE_ROWS',
 
+  EDITOR_LAST_FOCUS: 'EDITOR_LAST_FOCUS',
   EDITOR_FIND_REPLACE: 'EDITOR_FIND_REPLACE',
   EDITOR_EXEC_CMD: 'EDITOR_EXEC_CMD',
   EDITOR_SET_SQL: 'EDITOR_SET_SQL',
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/ConnectionBar.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/ConnectionBar.jsx
index 158431cdc..e3584a7b6 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ConnectionBar.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ConnectionBar.jsx
@@ -22,6 +22,8 @@ import { PgMenu, PgMenuItem } from '../../../../../../static/js/components/Menu'
 import gettext from 'sources/gettext';
 import RotateLeftRoundedIcon from '@material-ui/icons/RotateLeftRounded';
 import PropTypes from 'prop-types';
+import { useKeyboardShortcuts } from '../../../../../../static/js/custom_hooks';
+import CustomPropTypes from '../../../../../../static/js/custom_prop_types';
 
 const useStyles = makeStyles((theme)=>({
   root: {
@@ -79,7 +81,7 @@ ConnectionStatusIcon.propTypes = {
 };
 
 export function ConnectionBar({connected, connecting, connectionStatus, connectionStatusMsg,
-  connectionList, onConnectionChange, onNewConnClick, onNewQueryToolClick, onResetLayout}) {
+  connectionList, onConnectionChange, onNewConnClick, onNewQueryToolClick, onResetLayout, containerRef}) {
   const classes = useStyles();
   const connMenuRef = React.useRef();
   const [connDropdownOpen, setConnDropdownOpen] = React.useState(false);
@@ -91,6 +93,15 @@ export function ConnectionBar({connected, connecting, connectionStatus, connecti
     e.keepOpen = false;
   };
 
+  useKeyboardShortcuts([
+    {
+      shortcut: queryToolCtx.preferences?.browser?.sub_menu_query_tool,
+      options: {
+        callback: onNewQueryToolClick
+      }
+    },
+  ], containerRef);
+
   const connTitle = React.useMemo(()=>_.find(connectionList, (c)=>c.is_selected)?.conn_title, [connectionList]);
   return (
     <>
@@ -111,7 +122,8 @@ export function ConnectionBar({connected, connecting, connectionStatus, connecti
               </Box>
             </Tooltip>
           </DefaultButton>
-          <PgIconButton title={gettext('New query tool for current connection')} icon={<QueryToolIcon />} onClick={onNewQueryToolClick}/>
+          <PgIconButton title={gettext('New query tool for current connection')} icon={<QueryToolIcon />}
+            shortcut={queryToolCtx.preferences?.browser?.sub_menu_query_tool} onClick={onNewQueryToolClick}/>
         </PgButtonGroup>
         <PgButtonGroup size="small" variant="text" style={{marginLeft: 'auto'}}>
           <PgIconButton title={gettext('Reset layout')} icon={<RotateLeftRoundedIcon />} onClick={onResetLayout}/>
@@ -145,4 +157,5 @@ ConnectionBar.propTypes = {
   onNewConnClick: PropTypes.func,
   onNewQueryToolClick: PropTypes.func,
   onResetLayout: PropTypes.func,
+  containerRef: CustomPropTypes.ref,
 };
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx
index 6a4e68218..d246209bb 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx
@@ -240,6 +240,7 @@ export default function Query() {
   const eventBus = useContext(QueryToolEventsContext);
   const queryToolCtx = useContext(QueryToolContext);
   const layoutEvenBus = useContext(LayoutEventsContext);
+  const lastCursorPos = React.useRef();
   const lastSavedText = React.useRef('');
   const markedLine = React.useRef(0);
   const marker = React.useRef();
@@ -470,7 +471,16 @@ export default function Query() {
       }
     });
 
-    editor.current.focus();
+    const lastFocus = ()=>{
+      editor.current.focus();
+      if(lastCursorPos.current) {
+        editor.current.setCursor(lastCursorPos.current.line, lastCursorPos.current.ch);
+      }
+    };
+    eventBus.registerListener(QUERY_TOOL_EVENTS.EDITOR_LAST_FOCUS, lastFocus);
+    setTimeout(()=>{
+      editor.current.focus();
+    }, 250);
   }, []);
 
   useEffect(()=>{
@@ -483,6 +493,7 @@ export default function Query() {
 
   const cursorActivity = useCallback((cmObj)=>{
     const c = cmObj.getCursor();
+    lastCursorPos.current = c;
     eventBus.fireEvent(QUERY_TOOL_EVENTS.CURSOR_ACTIVITY, [c.line+1, c.ch+1]);
   }, []);
 
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSetToolbar.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSetToolbar.jsx
index 3e3b1c93e..bb899ba7a 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSetToolbar.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSetToolbar.jsx
@@ -123,6 +123,19 @@ export function ResultSetToolbar({containerRef, canEdit, totalRowCount}) {
     return ()=>eventBus.deregisterListener(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA, copyData);
   }, [checkedMenuItems['copy_with_headers']]);
 
+  const FIXED_PREF = {
+    copy: {
+      'control': true,
+      ctrl_is_meta: true,
+      'shift': false,
+      'alt': false,
+      'key': {
+        'key_code': 67,
+        'char': 'C',
+      },
+    },
+  };
+
   useKeyboardShortcuts([
     {
       shortcut: queryToolPref.save_data,
@@ -145,7 +158,7 @@ export function ResultSetToolbar({containerRef, canEdit, totalRowCount}) {
           <PgIconButton title={gettext('Add row')} icon={<PlaylistAddRoundedIcon style={{height: 'unset'}}/>}
             accesskey={shortcut_key(queryToolPref.btn_add_row)} disabled={!canEdit} onClick={addRow} />
           <PgIconButton title={gettext('Copy')} icon={<FileCopyRoundedIcon />}
-            accesskey={shortcut_key(queryToolPref.btn_copy_row)} disabled={buttonsDisabled['copy-rows']} onClick={copyData} />
+            shortcut={FIXED_PREF.copy} disabled={buttonsDisabled['copy-rows']} onClick={copyData} />
           <PgIconButton title={gettext('Copy options')} icon={<KeyboardArrowDownIcon />} splitButton
             name="menu-copyheader" ref={copyMenuRef} onClick={openMenu} />
           <PgIconButton title={gettext('Paste')} icon={<PasteIcon />}
diff --git a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
index d83720972..2026b1ef0 100644
--- a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
+++ b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
@@ -521,19 +521,6 @@ def register_query_tool_preferences(self):
         fields=accesskey_fields
     )
 
-    self.preference.register(
-        'keyboard_shortcuts', 'btn_copy_row',
-        gettext('Accesskey (Copy rows)'), 'keyboardshortcut',
-        {
-            'key': {
-                'key_code': 67,
-                'char': 'c'
-            }
-        },
-        category_label=PREF_LABEL_KEYBOARD_SHORTCUTS,
-        fields=accesskey_fields
-    )
-
     self.preference.register(
         'keyboard_shortcuts', 'btn_paste_row',
         gettext('Accesskey (Paste rows)'), 'keyboardshortcut',
