mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2 (#8911)
* Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2 * update distro * fix layering * update distro * fix tests
This commit is contained in:
@@ -44,7 +44,7 @@ import { IKeymapService } from 'vs/workbench/services/keybinding/common/keymapIn
|
||||
import { getDispatchConfig } from 'vs/workbench/services/keybinding/common/dispatchConfig';
|
||||
import { isArray } from 'vs/base/common/types';
|
||||
import { INavigatorWithKeyboard, IKeyboard } from 'vs/workbench/services/keybinding/browser/navigatorKeyboard';
|
||||
import { ScanCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from 'vs/base/common/scanCode';
|
||||
import { ScanCode, ScanCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from 'vs/base/common/scanCode';
|
||||
import { flatten } from 'vs/base/common/arrays';
|
||||
import { BrowserFeatures, KeyboardSupport } from 'vs/base/browser/canIUse';
|
||||
|
||||
@@ -143,6 +143,24 @@ const keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<Contribute
|
||||
}
|
||||
});
|
||||
|
||||
const NUMPAD_PRINTABLE_SCANCODES = [
|
||||
ScanCode.NumpadDivide,
|
||||
ScanCode.NumpadMultiply,
|
||||
ScanCode.NumpadSubtract,
|
||||
ScanCode.NumpadAdd,
|
||||
ScanCode.Numpad1,
|
||||
ScanCode.Numpad2,
|
||||
ScanCode.Numpad3,
|
||||
ScanCode.Numpad4,
|
||||
ScanCode.Numpad5,
|
||||
ScanCode.Numpad6,
|
||||
ScanCode.Numpad7,
|
||||
ScanCode.Numpad8,
|
||||
ScanCode.Numpad9,
|
||||
ScanCode.Numpad0,
|
||||
ScanCode.NumpadDecimal
|
||||
];
|
||||
|
||||
export class WorkbenchKeybindingService extends AbstractKeybindingService {
|
||||
|
||||
private _keyboardMapper: IKeyboardMapper;
|
||||
@@ -559,6 +577,21 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
|
||||
return false;
|
||||
}
|
||||
const code = ScanCodeUtils.toEnum(event.code);
|
||||
|
||||
if (NUMPAD_PRINTABLE_SCANCODES.indexOf(code) !== -1) {
|
||||
// This is a numpad key that might produce a printable character based on NumLock.
|
||||
// Let's check if NumLock is on or off based on the event's keyCode.
|
||||
// e.g.
|
||||
// - when NumLock is off, ScanCode.Numpad4 produces KeyCode.LeftArrow
|
||||
// - when NumLock is on, ScanCode.Numpad4 produces KeyCode.NUMPAD_4
|
||||
// However, ScanCode.NumpadAdd always produces KeyCode.NUMPAD_ADD
|
||||
if (event.keyCode === IMMUTABLE_CODE_TO_KEY_CODE[code]) {
|
||||
// NumLock is on or this is /, *, -, + on the numpad
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const keycode = IMMUTABLE_CODE_TO_KEY_CODE[code];
|
||||
if (keycode !== -1) {
|
||||
// https://github.com/microsoft/vscode/issues/74934
|
||||
|
||||
@@ -38,7 +38,6 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor
|
||||
import { KeybindingsEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing';
|
||||
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
import { TextModelResolverService } from 'vs/workbench/services/textmodelResolver/common/textModelResolverService';
|
||||
import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService';
|
||||
import { TestBackupFileService, TestContextService, TestEditorGroupsService, TestEditorService, TestLifecycleService, TestTextFileService, TestTextResourcePropertiesService, TestWorkingCopyService } from 'vs/workbench/test/workbenchTestServices';
|
||||
import { FileService } from 'vs/platform/files/common/fileService';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
@@ -105,7 +104,6 @@ suite.skip('KeybindingsEditing', () => {
|
||||
fileService.registerProvider(Schemas.file, diskFileSystemProvider);
|
||||
fileService.registerProvider(Schemas.userData, new FileUserDataProvider(environmentService.appSettingsHome, environmentService.backupHome, diskFileSystemProvider, environmentService));
|
||||
instantiationService.stub(IFileService, fileService);
|
||||
instantiationService.stub(IUntitledTextEditorService, instantiationService.createInstance(UntitledTextEditorService));
|
||||
instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService));
|
||||
instantiationService.stub(ITextModelService, <ITextModelService>instantiationService.createInstance(TextModelResolverService));
|
||||
instantiationService.stub(IBackupFileService, new TestBackupFileService());
|
||||
|
||||
Reference in New Issue
Block a user