src/vs/workbench/services/keybinding/common/keymapInfo.ts/deserializeMapping
function deserializeMapping(serializedMapping: ISerializedMapping) {
	const mapping = serializedMapping;

	const ret: { [key: string]: any } = {};
	for (const key in mapping) {
		const result: (string | number)[] = mapping[key];
		if (result.length) {
			const value = result[0];
			const withShift = result[1];
			const withAltGr = result[2];
			const withShiftAltGr = result[3];
			const mask = Number(result[4]);
			const vkey = result.length === 6 ? result[5] : undefined;
			ret[key] = {
				'value': value,
				'vkey': vkey,
				'withShift': withShift,
				'withAltGr': withAltGr,
				'withShiftAltGr': withShiftAltGr,
				'valueIsDeadKey': (mask & 1) > 0,
				'withShiftIsDeadKey': (mask & 2) > 0,
				'withAltGrIsDeadKey': (mask & 4) > 0,
				'withShiftAltGrIsDeadKey': (mask & 8) > 0
			};
		} else {
			ret[key] = {
				'value': '',
				'valueIsDeadKey': false,
				'withShift': '',
				'withShiftIsDeadKey': false,
				'withAltGr': '',
				'withAltGrIsDeadKey': false,
				'withShiftAltGr': '',
				'withShiftAltGrIsDeadKey': false
			};
		}
	}

	return ret;
}