diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 7cd5be1e2..febd606c1 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -306,6 +306,7 @@ import EditJsonModal from '../modals/EditJsonModal.svelte'; import { apiCall } from '../utility/api'; import getElectron from '../utility/getElectron'; + import { isCtrlOrCommandKey } from '../utility/common'; export let onLoadNextData = undefined; export let grider = undefined; @@ -976,7 +977,7 @@ const oldCurrentCell = currentCell; currentCell = cell; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { if (isRegularCell(cell)) { if (selectedCells.find(x => x[0] == cell[0] && x[1] == cell[1])) { selectedCells = selectedCells.filter(x => x[0] != cell[0] || x[1] != cell[1]); @@ -1116,6 +1117,7 @@ if ( !event.ctrlKey && !event.altKey && + !event.metaKey && ((event.keyCode >= keycodes.a && event.keyCode <= keycodes.z) || (event.keyCode >= keycodes.n0 && event.keyCode <= keycodes.n9) || (event.keyCode >= keycodes.numPad0 && event.keyCode <= keycodes.numPad9) || @@ -1150,7 +1152,7 @@ function handleCursorMove(event) { if (!isRegularCell(currentCell)) return null; let rowCount = grider.rowCount; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { switch (event.keyCode) { case keycodes.upArrow: case keycodes.pageUp: diff --git a/packages/web/src/datagrid/InplaceEditor.svelte b/packages/web/src/datagrid/InplaceEditor.svelte index 4b27ebd1b..81d85d389 100644 --- a/packages/web/src/datagrid/InplaceEditor.svelte +++ b/packages/web/src/datagrid/InplaceEditor.svelte @@ -13,6 +13,7 @@ import createRef from '../utility/createRef'; import _ from 'lodash'; import { arrayToHexString, parseCellValue, stringifyCellValue } from 'dbgate-tools'; + import { isCtrlOrCommandKey } from '../utility/common'; export let inplaceEditorState; export let dispatchInsplaceEditor; @@ -43,7 +44,7 @@ dispatchInsplaceEditor({ type: 'close', mode: 'enter' }); break; case keycodes.s: - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { if (isChangedRef.get()) { onSetValue(parseCellValue(domEditor.value)); // grider.setCellValue(rowIndex, uniqueName, editor.value); diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index ff7d9b9d6..072d00533 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -10,6 +10,7 @@ import { showModal } from '../modals/modalTools'; import { currentThemeDefinition } from '../stores'; import VirtualForeignKeyEditorModal from '../tableeditor/VirtualForeignKeyEditorModal.svelte'; + import { isCtrlOrCommandKey } from '../utility/common'; import contextMenu from '../utility/contextMenu'; import moveDrag from '../utility/moveDrag'; import ColumnLine from './ColumnLine.svelte'; @@ -217,7 +218,7 @@ e.stopPropagation(); onBringToFront(table); if (settings?.canSelectTables && !table?.isSelectedTable) { - onSelectTable(table, e.ctrlKey); + onSelectTable(table, isCtrlOrCommandKey(e)); } } }} diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index 7e75085e5..06a00b3df 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -177,6 +177,7 @@ import { apiCall } from '../utility/api'; import { copyTextToClipboard, extractRowCopiedValue } from '../utility/clipboard'; + import { isCtrlOrCommandKey } from '../utility/common'; import contextMenu, { getContextMenu, registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; import createReducer from '../utility/createReducer'; @@ -383,6 +384,7 @@ if ( !event.ctrlKey && + !event.metaKey && !event.altKey && ((event.keyCode >= keycodes.a && event.keyCode <= keycodes.z) || (event.keyCode >= keycodes.n0 && event.keyCode <= keycodes.n9) || @@ -472,7 +474,7 @@ return moveCurrentCell(columnIndex % formDisplay.columns.length, Math.floor(columnIndex / rowCount) * 2); }; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { switch (event.keyCode) { case keycodes.leftArrow: return moveCurrentCell(currentCell[0], 0); diff --git a/packages/web/src/utility/common.ts b/packages/web/src/utility/common.ts index 2e31ab5a6..423555269 100644 --- a/packages/web/src/utility/common.ts +++ b/packages/web/src/utility/common.ts @@ -64,3 +64,10 @@ export function resolveKeyText(keyText: string): string { } return keyText.replace('CtrlOrCommand+', 'Ctrl+'); } + +export function isCtrlOrCommandKey(event) { + if (isMac()) { + return event.metaKey; + } + return event.ctrlKey; +}