Change:
<!-- Do you have a question? Please ask it on --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.20.0-ins OS Version: win7x64 In we have a column called "Source". How about to create a filter called "source:user", so as "source:default", etc... ? !
any code-pointer to start on this?
Here it is -
hey! are you working on this? If not, I can take this.
I'm already started on this. Thanks for asking though.
sumitted a PR here. Care to comment / review.

Discussion:
import { DefineKeybindingWidget } from 'vs/workbench/parts/preferences/browser/keybindingWidgets'; import { IPreferencesService, IKeybindingsEditor, CONTEXT_KEYBINDING_FOCUS, CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDINGS_SEARCH_FOCUS, KEYBINDINGS_EDITOR_COMMAND_REMOVE, KEYBINDINGS_EDITOR_COMMAND_COPY, <del> KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR </del> <ins> KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR, KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS </ins> } from 'vs/workbench/parts/preferences/common/preferences'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IKeybindingEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing';

return focusedElement && focusedElement.templateId === KEYBINDING_ENTRY_TEMPLATE_ID ? <IKeybindingItemEntry>focusedElement : null; } <ins> getSecondaryActions(): IAction[] { return <IAction[]>[ <IAction>{ label: localize('showDefaultKeybindings', "Show Default Keybindings"), enabled: true, id: KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, run: (): TPromise<any> => { this.searchWidget.setValue('@source: default'); return TPromise.as(null); } }, <IAction>{ label: localize('showUserKeybindings', "Show User Keybindings"), enabled: true, id: KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS, run: (): TPromise<any> => { this.searchWidget.setValue('@source: user'); return TPromise.as(null); } } ]; } </ins> defineKeybinding(keybindingEntry: IKeybindingItemEntry): TPromise<any> { this.selectEntry(keybindingEntry); this.showOverlayContainer();

return this.fetchKeybindingItems(sortByPrecedence ? this._keybindingItemsSortedByPrecedence : this._keybindingItems, searchValue, quoteAtFirstChar && quoteAtLastChar); } <ins> isSourceFilterApplied(words: string[]): boolean { return (words.length) && (words[0].trim().toLowerCase() === '@source:'); } getSourceFilterValue(words: string[]): string { return words[1] || ''; } </ins> private fetchKeybindingItems(keybindingItems: IKeybindingItem[], searchValue: string, completeMatch: boolean): IKeybindingItemEntry[] { if (!searchValue) { return keybindingItems.map(keybindingItem => ({ id: KeybindingsEditorModel.getId(keybindingItem), keybindingItem, templateId: KEYBINDING_ENTRY_TEMPLATE_ID }));

const result: IKeybindingItemEntry[] = []; const words = searchValue.split(' '); <ins> const sourceFilterApplied: boolean = this.isSourceFilterApplied(words); let sourceFilterSearchValue: string; if (sourceFilterApplied) { sourceFilterSearchValue = this.getSourceFilterValue(words); } </ins> const keybindingWords = this.splitKeybindingWords(words); for (const keybindingItem of keybindingItems) { <del> let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, searchValue, words, keybindingWords, completeMatch); if (keybindingMatches.commandIdMatches || keybindingMatches.commandLabelMatches || keybindingMatches.commandDefaultLabelMatches || keybindingMatches.sourceMatches || keybindingMatches.whenMatches || keybindingMatches.keybindingMatches) { result.push({ id: KeybindingsEditorModel.getId(keybindingItem), templateId: KEYBINDING_ENTRY_TEMPLATE_ID, commandLabelMatches: keybindingMatches.commandLabelMatches, commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, keybindingItem, keybindingMatches: keybindingMatches.keybindingMatches, commandIdMatches: keybindingMatches.commandIdMatches, sourceMatches: keybindingMatches.sourceMatches, whenMatches: keybindingMatches.whenMatches }); </del> <ins> if (sourceFilterApplied) { let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, sourceFilterSearchValue, words, keybindingWords, completeMatch); if (keybindingMatches.sourceMatches) { result.push({ id: KeybindingsEditorModel.getId(keybindingItem), templateId: KEYBINDING_ENTRY_TEMPLATE_ID, commandLabelMatches: keybindingMatches.commandLabelMatches, commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, keybindingItem, keybindingMatches: keybindingMatches.keybindingMatches, commandIdMatches: keybindingMatches.commandIdMatches, sourceMatches: keybindingMatches.sourceMatches, whenMatches: keybindingMatches.whenMatches }); } } else { let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, searchValue, words, keybindingWords, completeMatch); if (keybindingMatches.commandIdMatches || keybindingMatches.commandLabelMatches || keybindingMatches.commandDefaultLabelMatches || keybindingMatches.sourceMatches || keybindingMatches.whenMatches || keybindingMatches.keybindingMatches) { result.push({ id: KeybindingsEditorModel.getId(keybindingItem), templateId: KEYBINDING_ENTRY_TEMPLATE_ID, commandLabelMatches: keybindingMatches.commandLabelMatches, commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, keybindingItem, keybindingMatches: keybindingMatches.keybindingMatches, commandIdMatches: keybindingMatches.commandIdMatches, sourceMatches: keybindingMatches.sourceMatches, whenMatches: keybindingMatches.whenMatches }); } </ins> } } return result;

export const KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND = 'keybindings.editor.copyCommandKeybindingEntry'; export const KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR = 'keybindings.editor.showConflicts'; export const KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS = 'keybindings.editor.focusKeybindings'; <ins> export const KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS = 'keybindings.editor.showDefaultKeybindings'; export const KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS = 'keybindings.editor.showUserKeybindings'; </ins> export const FOLDER_SETTINGS_PATH = join('.vscode', 'settings.json'); export const DEFAULT_SETTINGS_EDITOR_SETTING = 'workbench.settings.openDefaultSettings';

}); }); <ins> test('filter by default source with "@source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: true }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { const actual = testObject.fetch('@source: default').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); test('filter by user source with "@source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: false }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { const actual = testObject.fetch('@source: user').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); </ins> test('filter by when context', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'whenContext1 && whenContext2', isDefault: false });