From: <sag...@us...> - 2009-12-04 19:30:45
|
Revision: 432 http://modplug.svn.sourceforge.net/modplug/?rev=432&view=rev Author: saga-games Date: 2009-12-04 19:30:31 +0000 (Fri, 04 Dec 2009) Log Message: ----------- [New] Two new keymaps: French Laptop by Paul Legovitch, Norwegian MPT Classic by Rakib. [Imp] Changed Buzz colour preset a bit more [Imp] Treeview: Switching between sequences should be easier now. There's a context menu entry for it and double-clicking on an empty sequence will switch to it (as there are no orderlist item to click on). [Ref] Rewrote the treeview GetModItem crap a bit, as it was a lot of redundant code which even differed from function to function (f.e. usage of HIWORD vs. >> 16 shift) Modified Paths: -------------- trunk/OpenMPT/mptrack/Moptions.cpp trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h trunk/OpenMPT/mptrack/resource.h Added Paths: ----------- trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb Modified: trunk/OpenMPT/mptrack/Moptions.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-01 18:43:53 UTC (rev 431) +++ trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-04 19:30:31 UTC (rev 432) @@ -569,9 +569,9 @@ CustomColors[MODCOLOR_GLOBALS] = RGB(0x66, 0x00, 0x00); CustomColors[MODCOLOR_SAMPLE] = RGB(0x00, 0xFF, 0x00); CustomColors[MODCOLOR_ENVELOPES] = RGB(0xFF, 0x00, 0x00); - CustomColors[MODCOLOR_SEPSHADOW] = RGB(0x9A, 0x87, 0x63); - CustomColors[MODCOLOR_SEPFACE] = RGB(0xE1, 0xDB, 0xD0); - CustomColors[MODCOLOR_SEPHILITE] = RGB(0xFF, 0xFF, 0xFF); + CustomColors[MODCOLOR_SEPSHADOW] = RGB(0xAC, 0xA8, 0xA1); + CustomColors[MODCOLOR_SEPFACE] = RGB(0xD6, 0xD0, 0xC6); + CustomColors[MODCOLOR_SEPHILITE] = RGB(0xEC, 0xE8, 0xE1); CustomColors[MODCOLOR_BLENDCOLOR] = RGB(0xE1, 0xDB, 0xD0); OnPreviewChanged(); } Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-01 18:43:53 UTC (rev 431) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-04 19:30:31 UTC (rev 432) @@ -75,8 +75,9 @@ ON_COMMAND(ID_MODTREE_UNMUTEALL, OnUnmuteAllTreeItem) ON_COMMAND(ID_MODTREE_DUPLICATE, OnDuplicateTreeItem) ON_COMMAND(ID_MODTREE_INSERT, OnInsertTreeItem) + ON_COMMAND(ID_MODTREE_SWITCHTO, OnSwitchToTreeItem) -// -> CODE#0023 + // -> CODE#0023 // -> DESC="IT project files (.itp)" ON_COMMAND(ID_MODTREE_SETPATH, OnSetItemPath) ON_COMMAND(ID_MODTREE_SAVEITEM, OnSaveItem) @@ -1149,11 +1150,12 @@ { if (hItem) { - uint64 qwItemType = GetModItem(hItem); - DWORD dwItem = (DWORD)(qwItemType >> 16); + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + uint32 modItemID = GetModItemID(modItem); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(qwItemType & 0xFFFF) + switch(modItemType) { case MODITEM_COMMENTS: if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_COMMENTS, 0); @@ -1164,25 +1166,25 @@ return TRUE;*/ case MODITEM_ORDER: - if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, dwItem | 0x8000); + if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, modItemID | 0x8000); return TRUE; case MODITEM_PATTERN: - if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, dwItem); + if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, modItemID); return TRUE; case MODITEM_SAMPLE: - if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_SAMPLES, dwItem); + if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_SAMPLES, modItemID); return TRUE; case MODITEM_INSTRUMENT: - if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_INSTRUMENTS, dwItem); + if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_INSTRUMENTS, modItemID); return TRUE; case MODITEM_MIDIPERCUSSION: - dwItem |= 0x80; + modItemID |= 0x80; case MODITEM_MIDIINSTRUMENT: - OpenMidiInstrument(dwItem); + OpenMidiInstrument(modItemID); return TRUE; case MODITEM_EFFECT: @@ -1201,7 +1203,7 @@ return TRUE; default: - if (qwItemType & 0x8000) + if (modItemType & 0x8000) { PlayItem(hItem); return TRUE; @@ -1217,11 +1219,12 @@ { if (hItem) { - uint64 qwItemType = GetModItem(hItem); - DWORD dwItem = (DWORD)(qwItemType >> 16); + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + uint32 modItemID = GetModItemID(modItem); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(qwItemType & 0xFFFF) + switch(modItemType) { case MODITEM_SAMPLE: if (pModDoc) @@ -1233,7 +1236,7 @@ } else { pModDoc->NoteOff(0, TRUE); // cut previous playing samples - pModDoc->PlayNote(nParam & 0x7F, 0, dwItem, FALSE); + pModDoc->PlayNote(nParam & 0x7F, 0, modItemID, FALSE); } } return TRUE; @@ -1248,13 +1251,13 @@ } else { pModDoc->NoteOff(0, TRUE); - pModDoc->PlayNote(nParam, dwItem, 0, FALSE); + pModDoc->PlayNote(nParam, modItemID, 0, FALSE); } } return TRUE; case MODITEM_EFFECT: - if ((pModDoc) && (dwItem < MAX_MIXPLUGINS)) + if ((pModDoc) && (modItemID < MAX_MIXPLUGINS)) {/* CSoundFile *pSndFile = pModDoc->GetSoundFile(); PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItem]; @@ -1263,7 +1266,7 @@ CVstPlugin *pVstPlugin = (CVstPlugin *)pPlugin->pMixPlugin; pVstPlugin->ToggleEditor(); }*/ - pModDoc->TogglePluginEditor(dwItem); + pModDoc->TogglePluginEditor(modItemID); } return TRUE; @@ -1280,7 +1283,7 @@ CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); if (pMainFrm) { - if ((qwItemType & 0xFFFF) == MODITEM_INSLIB_INSTRUMENT) + if (modItemType == MODITEM_INSLIB_INSTRUMENT) { pMainFrm->PlaySoundFile(&m_SongFile, n, 0, nParam); } else @@ -1298,34 +1301,34 @@ break; case MODITEM_MIDIPERCUSSION: - dwItem |= 0x80; + modItemID |= 0x80; case MODITEM_MIDIINSTRUMENT: { LPMIDILIBSTRUCT lpMidiLib = CTrackApp::GetMidiLibrary(); - if ((lpMidiLib) && (dwItem < 256) && (lpMidiLib->MidiMap[dwItem])) + if ((lpMidiLib) && (modItemID < 256) && (lpMidiLib->MidiMap[modItemID])) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[dwItem], nParam); + if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[modItemID], nParam); } } break; default: - if (qwItemType & 0x8000) + if (modItemType & 0x8000) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - UINT bank = (qwItemType & 0x3F000000) >> 24; + UINT bank = (modItem & 0x3F000000) >> 24; if ((bank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[bank]) && (pMainFrm)) { CDLSBank *pDLSBank = CTrackApp::gpDLSBanks[bank]; - UINT rgn = 0, instr = (qwItemType & 0x00007FFF); + UINT rgn = 0, instr = (modItem & 0x00007FFF); // Drum - if (qwItemType & 0x80000000) + if (modItem & 0x80000000) { - rgn = (qwItemType & 0x007F0000) >> 16; + rgn = (modItem & 0x007F0000) >> 16; } else // Melodic - if (qwItemType & 0x40000000) + if (modItem & 0x40000000) { if ((!nParam) || (nParam > NOTE_MAX)) nParam = NOTE_MIDDLEC; rgn = pDLSBank->GetRegionFromKey(instr, nParam-1); @@ -1379,63 +1382,65 @@ BOOL CModTree::DeleteTreeItem(HTREEITEM hItem) //-------------------------------------------- { - uint64 qwItemType = GetModItem(hItem); - DWORD dwItem = (DWORD)(qwItemType >> 16); + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : nullptr; CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr; - switch(qwItemType & 0xFFFF) + switch(modItemType) { case MODITEM_SEQUENCE: if (pModDoc && pSndFile) { - pSndFile->Order.RemoveSequence((SEQUENCEINDEX)(dwItem & 0xFFFF)); + pSndFile->Order.RemoveSequence((SEQUENCEINDEX)(modItemID & 0xFFFF)); pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, NULL); } break; case MODITEM_ORDER: - if ((pModDoc) && (pModDoc->RemoveOrder((SEQUENCEINDEX)(dwItem >> 16), (ORDERINDEX)(dwItem & 0xFFFF)))) + if ((pModDoc) && (pModDoc->RemoveOrder((SEQUENCEINDEX)(modItemID >> 16), (ORDERINDEX)(modItemID & 0xFFFF)))) { pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, NULL); } break; case MODITEM_PATTERN: - if ((pModDoc) && (pModDoc->RemovePattern((PATTERNINDEX)dwItem))) + if ((pModDoc) && (pModDoc->RemovePattern((PATTERNINDEX)modItemID))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_PATTERNDATA|HINT_PATNAMES); - pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES); + pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES); } break; case MODITEM_SAMPLE: - if ((pModDoc) && (pModDoc->RemoveSample((SAMPLEINDEX)dwItem))) + if ((pModDoc) && (pModDoc->RemoveSample((SAMPLEINDEX)modItemID))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); - pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); + pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); } break; case MODITEM_INSTRUMENT: - if ((pModDoc) && (pModDoc->RemoveInstrument((INSTRUMENTINDEX)dwItem))) + if ((pModDoc) && (pModDoc->RemoveInstrument((INSTRUMENTINDEX)modItemID))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); - pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); + pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); } break; case MODITEM_MIDIINSTRUMENT: - SetMidiInstrument(dwItem, ""); + SetMidiInstrument(modItemID, ""); RefreshMidiLibrary(); break; case MODITEM_MIDIPERCUSSION: - SetMidiPercussion(dwItem, ""); + SetMidiPercussion(modItemID, ""); RefreshMidiLibrary(); break; case MODITEM_DLSBANK_FOLDER: - CTrackApp::RemoveDLSBank(dwItem); + CTrackApp::RemoveDLSBank(modItemID); RefreshDlsBanks(); break; @@ -1463,12 +1468,11 @@ BOOL CModTree::OpenTreeItem(HTREEITEM hItem) //------------------------------------------ { - uint64 qwItemType = GetModItem(hItem); - //DWORD dwItem = dwItemType >> 16; - //PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; - //CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + //const uint32 modItemID = GetModItemID(modItem); - switch(qwItemType & 0xFFFF) + switch(modItemType) { case MODITEM_INSLIB_SONG: { @@ -1908,9 +1912,9 @@ PMODTREEDOCINFO pInfo = DocInfo[m_nDragDocNdx]; pdropinfo->pModDoc = (pInfo) ? pInfo->pModDoc : NULL; pdropinfo->dwDropType = DRAGONDROP_NOTHING; - pdropinfo->dwDropItem = (DWORD)(m_qwItemDrag >> 16); + pdropinfo->dwDropItem = GetModItemID(m_qwItemDrag); pdropinfo->lDropParam = 0; - switch(m_qwItemDrag & 0xFFFF) + switch(GetModItemType(m_qwItemDrag)) { case MODITEM_ORDER: pdropinfo->dwDropType = DRAGONDROP_ORDER; @@ -1991,27 +1995,29 @@ BOOL CModTree::CanDrop(HTREEITEM hItem, BOOL bDoDrop) //--------------------------------------------------- { - uint64 qwItemDrop = GetModItem(hItem); - DWORD dwItemDrag = (DWORD)(m_qwItemDrag >> 16); - DWORD dwDragType = m_qwItemDrag & 0xFFFF; - DWORD dwDropType = (DWORD)(qwItemDrop & 0xFFFF); + const uint64 modItemDrop = GetModItem(hItem); + const uint32 modItemDropType = GetModItemType(modItemDrop); + const uint32 modItemDropID = GetModItemID(modItemDrop); + + const uint32 modItemDragType = GetModItemType(m_qwItemDrag); + const uint32 modItemDragID = GetModItemID(m_qwItemDrag); + PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - qwItemDrop >>= 16; - switch(dwDropType) + switch(modItemDropType) { case MODITEM_ORDER: case MODITEM_SEQUENCE: - if ((dwDragType == MODITEM_ORDER) && (pModDoc) && (m_nDocNdx == m_nDragDocNdx)) + if ((modItemDragType == MODITEM_ORDER) && (pModDoc) && (m_nDocNdx == m_nDragDocNdx)) { if (bDoDrop) { - SEQUENCEINDEX nSeqFrom = (SEQUENCEINDEX)(dwItemDrag >> 16), nSeqTo = (SEQUENCEINDEX)(qwItemDrop >> 16); - ORDERINDEX nOrdFrom = (ORDERINDEX)(dwItemDrag & 0xFFFF), nOrdTo = (ORDERINDEX)(qwItemDrop & 0xFFFF); - if(dwDropType == MODITEM_SEQUENCE) + SEQUENCEINDEX nSeqFrom = (SEQUENCEINDEX)(modItemDragID >> 16), nSeqTo = (SEQUENCEINDEX)(modItemDropID >> 16); + ORDERINDEX nOrdFrom = (ORDERINDEX)(modItemDragID & 0xFFFF), nOrdTo = (ORDERINDEX)(modItemDropID & 0xFFFF); + if(modItemDropType == MODITEM_SEQUENCE) { // drop on sequence -> attach - nSeqTo = (SEQUENCEINDEX)(qwItemDrop & 0xFFFF); + nSeqTo = (SEQUENCEINDEX)(modItemDropID & 0xFFFF); nOrdTo = pModDoc->GetSoundFile()->Order.GetSequence(nSeqTo).GetLengthTailTrimmed(); } @@ -2033,16 +2039,16 @@ case MODITEM_MIDIINSTRUMENT: case MODITEM_MIDIPERCUSSION: - if ((dwDragType == MODITEM_INSLIB_SAMPLE) || (dwDragType == MODITEM_INSLIB_INSTRUMENT)) + if ((modItemDragType == MODITEM_INSLIB_SAMPLE) || (modItemDragType == MODITEM_INSLIB_INSTRUMENT)) { if (bDoDrop) { CHAR szFullPath[_MAX_PATH] = ""; InsLibGetFullPath(m_hItemDrag, szFullPath); - if (dwDropType == MODITEM_MIDIINSTRUMENT) - SetMidiInstrument((DWORD)qwItemDrop, szFullPath); + if (modItemDropType == MODITEM_MIDIINSTRUMENT) + SetMidiInstrument((DWORD)modItemDropID, szFullPath); else - SetMidiPercussion((DWORD)qwItemDrop, szFullPath); + SetMidiPercussion((DWORD)modItemDropID, szFullPath); } return TRUE; } @@ -2171,7 +2177,7 @@ } m_qwItemDrag = GetModItem(m_hItemDrag); m_nDragDocNdx = m_nDocNdx; - switch(m_qwItemDrag & 0xFFFF) + switch(GetModItemType(m_qwItemDrag)) { case MODITEM_ORDER: case MODITEM_PATTERN: @@ -2281,13 +2287,13 @@ { UINT nDefault = 0; BOOL bSep = FALSE; - uint64 qwItemType; - qwItemType = GetModItem(hItem); - const DWORD dwItemNo = (DWORD)(qwItemType >> 16); - qwItemType &= 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + SelectItem(hItem); - switch(qwItemType) + switch(modItemType) { case MODITEM_COMMENTS: nDefault = ID_MODTREE_EXECUTE; @@ -2299,12 +2305,19 @@ nDefault = ID_MODTREE_EXECUTE; AppendMenu(hMenu, MF_STRING, nDefault, "&Edit Pattern"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, - (qwItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern"); + (modItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern"); break; case MODITEM_SEQUENCE: - //nDefault = ID_MODTREE_EXECUTE; // don't do it, double-clicking sequences shouldn't switch to the automatically! - //AppendMenu(hMenu, MF_STRING, nDefault, "&Switch to Seqeuence"); + { + CModDoc *pModDoc = GetDocumentFromItem(hItem); + CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr; + if(pModDoc && pSndFile && (pModDoc->GetModType() == MOD_TYPE_MPT) && pSndFile->Order.GetSequence((SEQUENCEINDEX)modItemID).GetLength() == 0) + { + nDefault = ID_MODTREE_SWITCHTO; + } + } + AppendMenu(hMenu, MF_STRING, ID_MODTREE_SWITCHTO, "&Switch to Seqeuence"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_INSERT, "&Insert Sequence"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_DUPLICATE, "D&uplicate Sequence"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, "&Delete Sequence"); @@ -2334,7 +2347,7 @@ if ((pModDoc) && (!pModDoc->GetNumInstruments())) { AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); - AppendMenu(hMenu, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample"); + AppendMenu(hMenu, (pModDoc->IsSampleMuted((SAMPLEINDEX)modItemID) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Sample"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all"); } @@ -2351,7 +2364,7 @@ if ((pModDoc) && (pModDoc->GetNumInstruments())) { AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); - AppendMenu(hMenu, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument"); + AppendMenu(hMenu, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)modItemID) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Instrument"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all"); // -> CODE#0023 @@ -2372,7 +2385,7 @@ CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; if (pSndFile) { - PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo]; + PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[modItemID]; if (pPlugin) { bool bypassed = ((pPlugin->Info.dwInputRouting&MIXPLUG_INPUTF_BYPASS) != 0); AppendMenu(hMenu, (bypassed?MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Bypass"); @@ -2431,7 +2444,7 @@ break; default: - if (qwItemType & 0x8000) + if (modItemType & 0x8000) { nDefault = ID_MODTREE_PLAY; AppendMenu(hMenu, MF_STRING, ID_MODTREE_PLAY, "&Play Instrument"); @@ -2439,9 +2452,9 @@ break; } if (nDefault) SetMenuDefaultItem(hMenu, nDefault, FALSE); - if ((qwItemType == MODITEM_INSLIB_FOLDER) - || (qwItemType == MODITEM_INSLIB_SONG) - || (qwItemType == MODITEM_HDR_INSTRUMENTLIB)) + if ((modItemType == MODITEM_INSLIB_FOLDER) + || (modItemType == MODITEM_INSLIB_SONG) + || (modItemType == MODITEM_HDR_INSTRUMENTLIB)) { if ((bSep) || (nDefault)) AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); AppendMenu(hMenu, (m_bShowAllFiles) ? (MF_STRING|MF_CHECKED) : MF_STRING, ID_MODTREE_SHOWALLFILES, "Show All Files"); @@ -2470,8 +2483,11 @@ HTREEITEM hItem = HitTest(pt, &flags); if (hItem != NULL) { - uint64 qwItem = GetModItem(hItem); - switch(qwItem & 0xFFFF) + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + + switch(modItemType) { case MODITEM_INSLIB_FOLDER: case MODITEM_INSLIB_SONG: @@ -2486,8 +2502,8 @@ if (pFrame) { pFrame->SendMessage(WM_MOD_INSTRSELECTED, - ((qwItem & 0xffff) == MODITEM_INSTRUMENT) ? TRUE : FALSE, - (LPARAM)(qwItem >> 16)); + (modItemType == MODITEM_INSTRUMENT) ? TRUE : FALSE, + (LPARAM)modItemID); } } break; @@ -2717,32 +2733,32 @@ //----------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType; CModDoc *pModDoc; - qwItemType = GetModItem(hItem); - const DWORD dwItemNo = (DWORD)(qwItemType >> 16); - qwItemType &= 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { - if ((qwItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments())) + if ((modItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments())) { - pModDoc->MuteSample((SAMPLEINDEX)dwItemNo, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo)) ? false : true); + pModDoc->MuteSample((SAMPLEINDEX)modItemID, (pModDoc->IsSampleMuted((SAMPLEINDEX)modItemID)) ? false : true); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SMPNAMES | HINT_SAMPLEINFO); } else - if ((qwItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments())) + if ((modItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments())) { - pModDoc->MuteInstrument((INSTRUMENTINDEX)dwItemNo, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo)) ? false : true); + pModDoc->MuteInstrument((INSTRUMENTINDEX)modItemID, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)modItemID)) ? false : true); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_INSNAMES | HINT_INSTRUMENT); } - if ((qwItemType == MODITEM_EFFECT)) + if ((modItemType == MODITEM_EFFECT)) { CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; if (pSndFile) { - PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo]; + PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[modItemID]; if (pPlugin) { CVstPlugin *pVstPlugin = (CVstPlugin *)pPlugin->pMixPlugin; if (pVstPlugin) pVstPlugin->Bypass(); @@ -2758,29 +2774,29 @@ //----------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType; CModDoc *pModDoc; - qwItemType = GetModItem(hItem); - const DWORD dwItemNo = (DWORD)(qwItemType >> 16); - qwItemType &= 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { INSTRUMENTINDEX nInstruments = pModDoc->GetNumInstruments(); - if ((qwItemType == MODITEM_SAMPLE) && (!nInstruments)) + if ((modItemType == MODITEM_SAMPLE) && (!nInstruments)) { for (SAMPLEINDEX nSmp = 1; nSmp <= pModDoc->GetNumSamples(); nSmp++) { - pModDoc->MuteSample(nSmp, (nSmp == dwItemNo) ? false : true); + pModDoc->MuteSample(nSmp, (nSmp == modItemID) ? false : true); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SMPNAMES | HINT_SAMPLEINFO); } } else - if ((qwItemType == MODITEM_INSTRUMENT) && (nInstruments)) + if ((modItemType == MODITEM_INSTRUMENT) && (nInstruments)) { for (INSTRUMENTINDEX nIns = 1; nIns <= nInstruments; nIns++) { - pModDoc->MuteInstrument(nIns, (nIns == dwItemNo) ? false : true); + pModDoc->MuteInstrument(nIns, (nIns == modItemID) ? false : true); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_INSNAMES | HINT_INSTRUMENT); } } @@ -2792,14 +2808,16 @@ //---------------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType; CModDoc *pModDoc; - qwItemType = GetModItem(hItem) & 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + //const uint32 modItemID = GetModItemID(modItem); + pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { - if ((qwItemType == MODITEM_SAMPLE) || (qwItemType == MODITEM_INSTRUMENT)) + if ((modItemType == MODITEM_SAMPLE) || (modItemType == MODITEM_INSTRUMENT)) { for (SAMPLEINDEX nSmp = 1; nSmp <= pModDoc->GetNumSamples(); nSmp++) { @@ -2820,19 +2838,18 @@ //---------------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType; CModDoc *pModDoc; - qwItemType = GetModItem(hItem); - const DWORD dwItemNo = (DWORD)(qwItemType >> 16); - qwItemType &= 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr; - if (pModDoc && pSndFile && ((qwItemType == MODITEM_SEQUENCE) || (qwItemType == MODITEM_HDR_ORDERS))) + if (pModDoc && pSndFile && ((modItemType == MODITEM_SEQUENCE) || (modItemType == MODITEM_HDR_ORDERS))) { - pSndFile->Order.SetSequence((SEQUENCEINDEX)dwItemNo); + pSndFile->Order.SetSequence((SEQUENCEINDEX)modItemID); pSndFile->Order.AddSequence(true); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SEQNAMES|HINT_MODSEQUENCE); pModDoc->UpdateAllViews(NULL, HINT_SEQNAMES|HINT_MODSEQUENCE); @@ -2844,15 +2861,16 @@ //------------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType; CModDoc *pModDoc; - qwItemType = GetModItem(hItem) & 0xFFFF; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + //const uint32 modItemID = GetModItemID(modItem); pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr; - if (pModDoc && pSndFile && ((qwItemType == MODITEM_SEQUENCE) || (qwItemType == MODITEM_HDR_ORDERS))) + if (pModDoc && pSndFile && ((modItemType == MODITEM_SEQUENCE) || (modItemType == MODITEM_HDR_ORDERS))) { pSndFile->Order.AddSequence(false); UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SEQNAMES|HINT_MODSEQUENCE); @@ -2860,21 +2878,39 @@ } } +void CModTree::OnSwitchToTreeItem() +//--------------------------------- +{ + HTREEITEM hItem = GetSelectedItem(); + CModDoc *pModDoc; + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + + pModDoc = GetDocumentFromItem(hItem); + + if (pModDoc && (modItemType == MODITEM_SEQUENCE)) + { + pModDoc->ActivateView(IDD_CONTROL_PATTERNS, (modItemID << 16) | 0x8000); + } +} + // -> CODE#0023 // -> DESC="IT project files (.itp)" void CModTree::OnSetItemPath() //---------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType = GetModItem(hItem); - DWORD dwItem = (DWORD)(qwItemType >> 16); - qwItemType &= 0xFFFF; CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; - if(pSndFile && dwItem){ + const uint64 modItem = GetModItem(hItem); + //const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + if(pSndFile && modItemID){ + CHAR pszFileNames[_MAX_PATH]; CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_FORCESHOWHIDDEN, @@ -2887,7 +2923,7 @@ dlg.m_ofn.nMaxFile = _MAX_PATH; if(dlg.DoModal() == IDOK){ - strcpy(pSndFile->m_szInstrumentPath[dwItem-1], pszFileNames); + strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames); OnRefreshTree(); } @@ -2900,15 +2936,16 @@ //------------------------- { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType = GetModItem(hItem); - const DWORD dwItem = HIWORD(qwItemType); - qwItemType &= 0xFFFF; CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; - if(pSndFile && dwItem){ + const uint64 modItem = GetModItem(hItem); + //const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); - if(pSndFile->m_szInstrumentPath[dwItem-1][0] == '\0'){ + if(pSndFile && modItemID){ + + if(pSndFile->m_szInstrumentPath[modItemID - 1][0] == '\0'){ CHAR pszFileNames[_MAX_PATH]; CFileDialog dlg(FALSE, (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) ? "iti" : "xi", NULL, @@ -2924,23 +2961,23 @@ dlg.m_ofn.lpstrFile = pszFileNames; dlg.m_ofn.nMaxFile = _MAX_PATH; - if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[dwItem - 1], pszFileNames); + if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames); dlg.m_ofn.lpstrFile = NULL; dlg.m_ofn.nMaxFile = 0; } - if(pSndFile->m_szInstrumentPath[dwItem - 1][0] != '\0'){ - int size = strlen(pSndFile->m_szInstrumentPath[dwItem - 1]); - BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-3],"iti") == 0; - BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-2],"xi") == 0; + if(pSndFile->m_szInstrumentPath[modItemID - 1][0] != '\0'){ + int size = strlen(pSndFile->m_szInstrumentPath[modItemID - 1]); + BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[modItemID - 1][size-3],"iti") == 0; + BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[modItemID - 1][size-2],"xi") == 0; if(iti || (!iti && !xi && pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))) - pSndFile->SaveITIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]); + pSndFile->SaveITIInstrument((INSTRUMENTINDEX)modItemID, pSndFile->m_szInstrumentPath[modItemID - 1]); if(xi || (!xi && !iti && pSndFile->m_nType == MOD_TYPE_XM)) - pSndFile->SaveXIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]); + pSndFile->SaveXIInstrument((INSTRUMENTINDEX)modItemID, pSndFile->m_szInstrumentPath[modItemID - 1]); - pSndFile->instrumentModified[dwItem - 1] = FALSE; + pSndFile->instrumentModified[modItemID - 1] = FALSE; } if(pModDoc) pModDoc->UpdateAllViews(NULL, HINT_MODTYPE); @@ -2999,8 +3036,12 @@ { UINT flags; HTREEITEM hItem = HitTest(point, &flags); - uint64 qwItemType = GetModItem(hItem); - switch(qwItemType & 0xFFFF) + + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + //const uint32 modItemID = GetModItemID(modItem); + + switch(modItemType) { case MODITEM_MIDIINSTRUMENT: case MODITEM_MIDIPERCUSSION: @@ -3010,7 +3051,7 @@ EnsureVisible(hItem); } m_hItemDrag = hItem; - m_qwItemDrag = qwItemType; + m_qwItemDrag = modItem; return DROPEFFECT_LINK; // Folders: case MODITEM_HDR_MIDILIB: @@ -3118,10 +3159,14 @@ //------------------------------------ { HTREEITEM hItem = GetSelectedItem(); - uint64 qwItemType = GetModItem(hItem); - if ((qwItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER) + + const uint64 modItem = GetModItem(hItem); + const uint32 modItemType = GetModItemType(modItem); + const uint32 modItemID = GetModItemID(modItem); + + if ((modItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER) { - UINT nBank = (UINT)(qwItemType >> 16); + UINT nBank = modItemID; if ((nBank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[nBank])) { CSoundBankProperties dlg(CTrackApp::gpDLSBanks[nBank], this); Modified: trunk/OpenMPT/mptrack/View_tre.h =================================================================== --- trunk/OpenMPT/mptrack/View_tre.h 2009-12-01 18:43:53 UTC (rev 431) +++ trunk/OpenMPT/mptrack/View_tre.h 2009-12-04 19:30:31 UTC (rev 432) @@ -142,6 +142,8 @@ VOID EmptyInstrumentLibrary(); VOID FillInstrumentLibrary(); uint64 GetModItem(HTREEITEM hItem); + inline uint32 GetModItemType(const uint64 modItem) {return static_cast<uint32>(modItem & 0xFFFF);}; // return "item type" part of mod item variable ( & 0xFFFF ) + inline uint32 GetModItemID(const uint64 modItem) {return static_cast<uint32>(modItem >> 16);}; // return "item ID" part of mod item variable ( >> 16 ) BOOL SetMidiInstrument(UINT nIns, LPCSTR lpszFileName); BOOL SetMidiPercussion(UINT nPerc, LPCSTR lpszFileName); BOOL ExecuteItem(HTREEITEM hItem); @@ -206,6 +208,7 @@ afx_msg void OnUnmuteAllTreeItem(); afx_msg void OnDuplicateTreeItem(); afx_msg void OnInsertTreeItem(); + afx_msg void OnSwitchToTreeItem(); // hack for sequence items to avoid double-click action // -> CODE#0023 // -> DESC="IT project files (.itp)" Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2009-12-01 18:43:53 UTC (rev 431) +++ trunk/OpenMPT/mptrack/resource.h 2009-12-04 19:30:31 UTC (rev 432) @@ -1155,6 +1155,7 @@ #define ID_EDIT_PASTEFLOOD 59235 #define ID_MODTREE_DUPLICATE 59236 #define ID_MODTREE_INSERT 59237 +#define ID_MODTREE_SWITCHTO 59238 // Next default values for new objects // @@ -1162,7 +1163,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 523 -#define _APS_NEXT_COMMAND_VALUE 59238 +#define _APS_NEXT_COMMAND_VALUE 59239 #define _APS_NEXT_CONTROL_VALUE 2412 #define _APS_NEXT_SYMED_VALUE 901 #endif Added: trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb =================================================================== --- trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb (rev 0) +++ trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb 2009-12-04 19:30:31 UTC (rev 432) @@ -0,0 +1,327 @@ +//-------- OpenMPT key binding definition file ------- +//-Format is: - +//- Context:Command ID:Modifiers:Key:KeypressEventType //Comments - +//---------------------------------------------------------------------- +version:1 + +//----( Global Context (0) )------------ +0:1347:2:78:1 //File/New: Ctrl+N (KeyDown) +0:1346:2:79:1 //File/Open: Ctrl+O (KeyDown) +0:1348:2:87:1 //File/Close: Ctrl+W (KeyDown) +0:1349:2:83:1 //File/Save: Ctrl+S (KeyDown) +0:1350:3:83:1 //File/Save As: Shift+Ctrl+S (KeyDown) +0:1693:6:37:1 //Previous Document: Ctrl+Alt+GAUCHE (KeyDown) +0:1694:6:39:1 //Next Document: Ctrl+Alt+DROITE (KeyDown) +0:1030:0:114:1 //Play song/Pause song: F3 (KeyDown) +0:1375:0:27:1 //Stop Song: ECHAP (KeyDown) +0:1026:0:115:1 //Play pattern from cursor: F4 (KeyDown) +0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown) +0:1360:2:88:1 //Cut: Ctrl+X (KeyDown) +0:1361:2:67:1 //Copy: Ctrl+C (KeyDown) +0:1361:2:45:1 //Copy: Ctrl+INS (KeyDown) +0:1362:2:86:1 //Paste: Ctrl+V (KeyDown) +0:1362:1:45:1 //Paste: Shift+INS (KeyDown) +0:1363:6:86:1 //Mix Paste: Ctrl+Alt+V (KeyDown) +0:1793:7:86:1 //Paste Flood: Shift+Ctrl+Alt+V (KeyDown) +0:1364:2:53:1 //SelectAll: Ctrl+( (KeyDown) +0:1365:2:70:1 //Find: Ctrl+F (KeyDown) +0:1366:6:70:1 //Find Next: Ctrl+Alt+F (KeyDown) +0:1021:0:116:1 //View General: F5 (KeyDown) +0:1022:0:117:1 //View Pattern: F6 (KeyDown) +0:1023:0:118:1 //View Samples: F7 (KeyDown) +0:1024:0:119:1 //View Instruments: F8 (KeyDown) +0:1025:0:120:1 //View Comments: F9 (KeyDown) +0:1769:1:121:1 //View Graph: Shift+F10 (KeyDown) +0:1367:6:87:1 //Toggle Main View: Ctrl+Alt+W (KeyDown) +0:1368:0:112:1 //Toggle Tree View: F1 (KeyDown) +0:1369:2:112:1 //View Options: Ctrl+F1 (KeyDown) +0:1670:2:116:1 //View Channel Manager: Ctrl+F5 (KeyDown) +0:1669:2:117:1 //View Plugin Manager: Ctrl+F6 (KeyDown) +0:1775:6:112:1 //Show song properties window: Ctrl+Alt+F1 (KeyDown) +0:1032:2:38:1 //Previous instrument: Ctrl+HAUT (KeyDown) +0:1033:2:40:1 //Next instrument: Ctrl+BAS (KeyDown) +0:1036:0:122:1 //Previous octave: F11 (KeyDown) +0:1037:0:123:1 //Next octave: F12 (KeyDown) +0:1034:2:37:5 //Previous order: Ctrl+GAUCHE (KeyDown|KeyHold) +0:1035:2:39:5 //Next order: Ctrl+DROITE (KeyDown|KeyHold) + +//----( General Context [bottom] (1) )------------ + +//----( Pattern Context [bottom] (2) )------------ +2:1017:0:34:1 //Jump down by measure: PG.SUIV (KeyDown) +2:1018:0:33:1 //Jump up by measure: PG.PREC (KeyDown) +2:1338:4:34:1 //Jump down by beat: Alt+PG.SUIV (KeyDown) +2:1339:4:33:1 //Jump up by beat: Alt+PG.PREC (KeyDown) +2:1340:6:34:5 //Snap down to beat: Ctrl+Alt+PG.SUIV (KeyDown|KeyHold) +2:1341:6:33:5 //Snap up to beat: Ctrl+Alt+PG.PREC (KeyDown|KeyHold) +2:1038:0:40:5 //Navigate down by 1 row: BAS (KeyDown|KeyHold) +2:1039:0:38:5 //Navigate up by 1 row: HAUT (KeyDown|KeyHold) +2:1691:4:167:5 //Navigate down by spacing: Alt+ (KeyDown|KeyHold) +2:1692:4:166:5 //Navigate up by spacing: Alt+ (KeyDown|KeyHold) +2:1040:0:37:5 //Navigate left: GAUCHE (KeyDown|KeyHold) +2:1041:0:39:5 //Navigate right: DROITE (KeyDown|KeyHold) +2:1042:0:9:1 //Navigate to next channel: TAB (KeyDown) +2:1042:0:167:1 //Navigate to next channel: (KeyDown) +2:1043:1:9:1 //Navigate to previous channel: Shift+TAB (KeyDown) +2:1043:0:166:1 //Navigate to previous channel: (KeyDown) +2:1044:2:36:1 //Go to first channel: Ctrl+ORIGINE (KeyDown) +2:1045:0:36:1 //Go to first row: ORIGINE (KeyDown) +2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+ORIGINE (KeyDown) +2:1047:2:35:1 //Go to last channel: Ctrl+FIN (KeyDown) +2:1048:0:35:1 //Go to last row: FIN (KeyDown) +2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+FIN (KeyDown) +2:1050:1:16:1 //Selection key: Shift+MAJ (KeyDown) +2:1011:2:76:1 //Select channel / Select all: Ctrl+L (KeyDown) +2:1663:0:32:1 //Toggle follow song: ESPACE (KeyDown) +2:1003:0:13:1 //Quick copy: ENTREE (KeyDown) +2:1004:1:13:1 //Quick paste: Shift+ENTREE (KeyDown) +2:1001:2:32:1 //Enable recording: Ctrl+ESPACE (KeyDown) +2:1002:2:13:5 //Play row: Ctrl+ENTREE (KeyDown|KeyHold) +2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown) +2:1685:2:9:1 //Switch to order list: Ctrl+TAB (KeyDown) +2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown) +2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown) +2:1062:0:255:1 //Show note properties: (KeyDown) +2:1776:4:32:1 //Toggle loop pattern: Alt+ESPACE (KeyDown) +2:1006:0:113:1 //Solo current channel: F2 (KeyDown) +2:1778:2:113:1 //Unmute all channels on pattern transition: Ctrl+F2 (KeyDown) +2:1779:1:113:1 //Solo channel on pattern transition: Shift+F2 (KeyDown) +2:1007:2:65:5 //Transpose +1: Ctrl+A (KeyDown|KeyHold) +2:1008:2:81:1 //Transpose -1: Ctrl+Q (KeyDown) +2:1009:6:65:5 //Transpose +12: Ctrl+Alt+A (KeyDown|KeyHold) +2:1010:6:81:5 //Transpose -12: Ctrl+Alt+Q (KeyDown|KeyHold) +2:1012:2:77:1 //Amplify selection: Ctrl+M (KeyDown) +2:1014:2:74:1 //Interpolate volume: Ctrl+J (KeyDown) +2:1015:2:75:1 //Interpolate effect: Ctrl+K (KeyDown) +2:1016:4:66:1 //Open effect visualizer: Alt+B (KeyDown) +2:1013:2:73:1 //Apply current instrument: Ctrl+I (KeyDown) +2:1660:4:69:5 //Grow selection: Alt+E (KeyDown|KeyHold) +2:1661:4:68:5 //Shrink selection: Alt+D (KeyDown|KeyHold) +2:1057:2:46:1 //Clear row: Ctrl+SUPPR (KeyDown) +2:1058:1:46:1 //Clear field: Shift+SUPPR (KeyDown) +2:1664:0:46:1 //Clear field (IT Style): SUPPR (KeyDown) +2:1059:3:46:1 //Clear row and step: Shift+Ctrl+SUPPR (KeyDown) +2:1061:0:8:1 //Delete rows: RET.ARR (KeyDown) +2:1377:4:8:5 //Delete all rows: Alt+RET.ARR (KeyDown|KeyHold) +2:1378:0:45:1 //Insert Row: INS (KeyDown) +2:1379:4:45:1 //Insert All Rows: Alt+INS (KeyDown) +2:1055:2:166:5 //Previous pattern: Ctrl+ (KeyDown|KeyHold) +2:1054:2:167:5 //Next pattern: Ctrl+ (KeyDown|KeyHold) + +//----( Pattern Context [bottom] - Note Col (3) )------------ +3:1064:0:65:1 //Base octave C: A (KeyDown) +3:1065:0:90:1 //Base octave C#: Z (KeyDown) +3:1066:0:69:1 //Base octave D: E (KeyDown) +3:1067:0:82:1 //Base octave D#: R (KeyDown) +3:1068:0:84:1 //Base octave E: T (KeyDown) +3:1069:0:89:1 //Base octave F: Y (KeyDown) +3:1070:0:85:1 //Base octave F#: U (KeyDown) +3:1071:0:73:1 //Base octave G: I (KeyDown) +3:1072:0:79:1 //Base octave G#: O (KeyDown) +3:1073:0:80:1 //Base octave A: P (KeyDown) +3:1074:0:221:1 //Base octave A#: ACCENT CIRCONFLEXE (KeyDown) +3:1075:0:186:1 //Base octave B: $ (KeyDown) +3:1076:0:81:1 //Base octave +1 C: Q (KeyDown) +3:1077:0:83:1 //Base octave +1 C#: S (KeyDown) +3:1078:0:68:1 //Base octave +1 D: D (KeyDown) +3:1079:0:70:1 //Base octave +1 D#: F (KeyDown) +3:1080:0:71:1 //Base octave +1 E: G (KeyDown) +3:1081:0:72:1 //Base octave +1 F: H (KeyDown) +3:1082:0:74:1 //Base octave +1 F#: J (KeyDown) +3:1083:0:75:1 //Base octave +1 G: K (KeyDown) +3:1084:0:76:1 //Base octave +1 G#: L (KeyDown) +3:1085:0:77:1 //Base octave +1 A: M (KeyDown) +3:1086:0:192:1 //Base octave +1 A#: \xF9 (KeyDown) +3:1087:0:220:1 //Base octave +1 B: * (KeyDown) +3:1088:0:87:1 //Base octave +2 C: W (KeyDown) +3:1089:0:88:1 //Base octave +2 C#: X (KeyDown) +3:1090:0:67:1 //Base octave +2 D: C (KeyDown) +3:1091:0:86:1 //Base octave +2 D#: V (KeyDown) +3:1092:0:66:1 //Base octave +2 E: B (KeyDown) +3:1093:0:78:1 //Base octave +2 F: N (KeyDown) +3:1094:0:188:1 //Base octave +2 F#: , (KeyDown) +3:1095:0:190:1 //Base octave +2 G: ; (KeyDown) +3:1096:0:191:1 //Base octave +2 G#: : (KeyDown) +3:1097:0:223:1 //Base octave +2 A: ! (KeyDown) +3:1212:0:48:1 //Set octave 0: \xE0 (KeyDown) +3:1212:0:96:1 //Set octave 0: 0 (PAVE NUM.) (KeyDown) +3:1213:0:49:1 //Set octave 1: & (KeyDown) +3:1214:0:50:1 //Set octave 2: \xE9 (KeyDown) +3:1215:0:51:1 //Set octave 3: " (KeyDown) +3:1216:0:52:1 //Set octave 4: ' (KeyDown) +3:1217:0:53:1 //Set octave 5: ( (KeyDown) +3:1218:0:54:1 //Set octave 6: - (KeyDown) +3:1219:0:55:1 //Set octave 7: \xE8 (KeyDown) +3:1220:0:56:1 //Set octave 8: _ (KeyDown) +3:1221:0:57:1 //Set octave 9: \xE7 (KeyDown) +3:1316:1:16:1 //Chord Modifier: Shift+MAJ (KeyDown) +3:1200:1:219:1 //Note Cut: Shift+) (KeyDown) +3:1201:1:187:1 //Note Off: Shift+= (KeyDown) +3:1791:3:219:1 //Note Fade: Shift+Ctrl+) (KeyDown) +3:1667:0:219:1 //Note Cut (don't remember instrument): ) (KeyDown) +3:1668:0:187:1 //Note Off (don't remember instrument): = (KeyDown) +3:1792:2:219:1 //Note Fade (don't remember instrument): Ctrl+) (KeyDown) +3:1788:0:222:1 //Parameter control(MPTm only): \xB2 (KeyDown) +3:1789:1:222:1 //Parameter control(smooth)(MPTm only): Shift+\xB2 (KeyDown) + +//----( Pattern Context [bottom] - Ins Col (4) )------------ +4:1202:0:96:1 //Set instrument digit 0: 0 (PAVE NUM.) (KeyDown) +4:1202:0:48:1 //Set instrument digit 0: \xE0 (KeyDown) +4:1203:0:97:1 //Set instrument digit 1: 1 (PAVE NUM.) (KeyDown) +4:1203:0:49:1 //Set instrument digit 1: & (KeyDown) +4:1204:0:98:1 //Set instrument digit 2: 2 (PAVE NUM.) (KeyDown) +4:1204:0:50:1 //Set instrument digit 2: \xE9 (KeyDown) +4:1205:0:99:1 //Set instrument digit 3: 3 (PAVE NUM.) (KeyDown) +4:1205:0:51:1 //Set instrument digit 3: " (KeyDown) +4:1206:0:100:1 //Set instrument digit 4: 4 (PAVE NUM.) (KeyDown) +4:1206:0:52:1 //Set instrument digit 4: ' (KeyDown) +4:1207:0:101:1 //Set instrument digit 5: 5 (PAVE NUM.) (KeyDown) +4:1207:0:53:1 //Set instrument digit 5: ( (KeyDown) +4:1208:0:102:1 //Set instrument digit 6: 6 (PAVE NUM.) (KeyDown) +4:1208:0:54:1 //Set instrument digit 6: - (KeyDown) +4:1209:0:103:1 //Set instrument digit 7: 7 (PAVE NUM.) (KeyDown) +4:1209:0:55:1 //Set instrument digit 7: \xE8 (KeyDown) +4:1210:0:104:1 //Set instrument digit 8: 8 (PAVE NUM.) (KeyDown) +4:1211:0:105:1 //Set instrument digit 9: 9 (PAVE NUM.) (KeyDown) +4:1211:0:57:1 //Set instrument digit 9: \xE7 (KeyDown) + +//----( Pattern Context [bottom] - Vol Col (5) )------------ +5:1222:0:48:1 //Set volume digit 0: \xE0 (KeyDown) +5:1222:0:96:1 //Set volume digit 0: 0 (PAVE NUM.) (KeyDown) +5:1223:0:49:1 //Set volume digit 1: & (KeyDown) +5:1223:0:97:1 //Set volume digit 1: 1 (PAVE NUM.) (KeyDown) +5:1224:0:50:1 //Set volume digit 2: \xE9 (KeyDown) +5:1224:0:98:1 //Set volume digit 2: 2 (PAVE NUM.) (KeyDown) +5:1225:0:51:1 //Set volume digit 3: " (KeyDown) +5:1225:0:99:1 //Set volume digit 3: 3 (PAVE NUM.) (KeyDown) +5:1226:0:52:1 //Set volume digit 4: ' (KeyDown) +5:1226:0:100:1 //Set volume digit 4: 4 (PAVE NUM.) (KeyDown) +5:1227:0:53:1 //Set volume digit 5: ( (KeyDown) +5:1227:0:101:1 //Set volume digit 5: 5 (PAVE NUM.) (KeyDown) +5:1228:0:54:1 //Set volume digit 6: - (KeyDown) +5:1228:0:102:1 //Set volume digit 6: 6 (PAVE NUM.) (KeyDown) +5:1229:0:55:1 //Set volume digit 7: \xE8 (KeyDown) +5:1229:0:103:1 //Set volume digit 7: 7 (PAVE NUM.) (KeyDown) +5:1230:0:56:1 //Set volume digit 8: _ (KeyDown) +5:1231:0:57:1 //Set volume digit 9: \xE7 (KeyDown) +5:1231:0:105:1 //Set volume digit 9: 9 (PAVE NUM.) (KeyDown) +5:1232:0:86:1 //Vol command - volume: V (KeyDown) +5:1233:0:80:1 //Vol command - pan: P (KeyDown) +5:1234:0:67:1 //Vol command - vol slide up: C (KeyDown) +5:1235:0:68:1 //Vol command - vol slide down: D (KeyDown) +5:1236:0:65:1 //Vol command - vol fine slide up: A (KeyDown) +5:1237:0:66:1 //Vol command - vol fine slide down: B (KeyDown) +5:1238:0:85:1 //Vol command - vibrato speed: U (KeyDown) +5:1239:0:72:1 //Vol command - vibrato: H (KeyDown) +5:1240:0:76:1 //Vol command - XM pan left: L (KeyDown) +5:1241:0:82:1 //Vol command - XM pan right: R (KeyDown) +5:1242:0:71:1 //Vol command - Portamento: G (KeyDown) +5:1243:0:70:1 //Vol command - Portamento Up: F (KeyDown) +5:1244:0:69:1 //Vol command - Portamento Down: E (KeyDown) +5:1245:1:186:1 //Vol command - Velocity: Shift+$ (KeyDown) +5:1246:0:79:1 //Vol command - Offset: O (KeyDown) + +//----( Pattern Context [bottom] - FX Col (6) )------------ +6:1294:0:220:1 //FX midi macro slide: * (KeyDown) +6:1295:1:186:1 //FX pseudo-velocity (experimental): Shift+$ (KeyDown) +6:1666:6:51:1 //FX parameter extension command: Ctrl+Alt+" (KeyDown) + +//----( Pattern Context [bottom] - Param Col (7) )------------ +7:1247:0:48:1 //FX Param digit 0: \xE0 (KeyDown) +7:1247:0:96:1 //FX Param digit 0: 0 (PAVE NUM.) (KeyDown) +7:1248:0:49:1 //FX Param digit 1: & (KeyDown) +7:1248:0:97:1 //FX Param digit 1: 1 (PAVE NUM.) (KeyDown) +7:1249:0:50:1 //FX Param digit 2: \xE9 (KeyDown) +7:1249:0:98:1 //FX Param digit 2: 2 (PAVE NUM.) (KeyDown) +7:1250:0:51:1 //FX Param digit 3: " (KeyDown) +7:1250:0:99:1 //FX Param digit 3: 3 (PAVE NUM.) (KeyDown) +7:1251:0:52:1 //FX Param digit 4: ' (KeyDown) +7:1251:0:100:1 //FX Param digit 4: 4 (PAVE NUM.) (KeyDown) +7:1252:0:53:1 //FX Param digit 5: ( (KeyDown) +7:1252:0:101:1 //FX Param digit 5: 5 (PAVE NUM.) (KeyDown) +7:1253:0:54:1 //FX Param digit 6: - (KeyDown) +7:1253:0:102:1 //FX Param digit 6: 6 (PAVE NUM.) (KeyDown) +7:1254:0:55:1 //FX Param digit 7: \xE8 (KeyDown) +7:1254:0:103:1 //FX Param digit 7: 7 (PAVE NUM.) (KeyDown) +7:1255:0:56:1 //FX Param digit 8: _ (KeyDown) +7:1255:0:104:1 //FX Param digit 8: 8 (PAVE NUM.) (KeyDown) +7:1256:0:57:1 //FX Param digit 9: \xE7 (KeyDown) +7:1256:0:105:1 //FX Param digit 9: 9 (PAVE NUM.) (KeyDown) +7:1257:0:65:1 //FX Param digit A: A (KeyDown) +7:1258:0:66:1 //FX Param digit B: B (KeyDown) +7:1259:0:67:1 //FX Param digit C: C (KeyDown) +7:1260:0:68:1 //FX Param digit D: D (KeyDown) +7:1261:0:69:1 //FX Param digit E: E (KeyDown) +7:1262:0:70:1 //FX Param digit F: F (KeyDown) + +//----( Sample Context [bottom] (8) )------------ +8:1673:4:79:1 //Load a Sample: Alt+O (KeyDown) +8:1674:4:83:1 //Save Sample: Alt+S (KeyDown) +8:1675:4:78:1 //New Sample: Alt+N (KeyDown) +8:1380:2:84:1 //Trim sample around loop points: Ctrl+T (KeyDown) +8:1383:0:8:1 //Silence sample selection: RET.ARR (KeyDown) +8:1385:3:65:1 //Amplify Sample: Shift+Ctrl+A (KeyDown) +8:1381:3:82:1 //Reverse sample: Shift+Ctrl+R (KeyDown) +8:1382:0:46:1 //Delete sample selection: SUPPR (KeyDown) +8:1386:0:33:1 //Zoom Out: PG.PREC (KeyDown) +8:1387:0:34:1 //Zoom In: PG.SUIV (KeyDown) +8:1790:6:68:1 //Remove DC Offset: Ctrl+Alt+D (KeyDown) + +//----( Instrument Context [bottom] (9) )------------ + +//----( Comments Context [bottom] (10) )------------ + +//----( Unknown Context (11) )------------ + +//----( Unknown Context (12) )------------ + +//----( Plugin GUI Context (13) )------------ +13:1763:0:166:1 //Previous plugin preset: (KeyDown) +13:1764:0:167:1 //Next plugin preset: (KeyDown) +13:1782:2:166:1 //Plugin preset backward jump: Ctrl+ (KeyDown) +13:1783:2:167:1 //Plugin preset forward jump: Ctrl+ (KeyDown) +13:1765:6:82:1 //Randomize plugin parameters: Ctrl+Alt+R (KeyDown) + +//----( General Context [top] (14) )------------ + +//----( Pattern Context [top] (15) )------------ + +//----( Sample Context [top] (16) )------------ + +//----( Instrument Context [top] (17) )------------ + +//----( Comments Context [top] (18) )------------ + +//----( Orderlist (19) )------------ +19:1802:0:46:5 //Delete Order: SUPPR (KeyDown|KeyHold) +19:1803:0:45:5 //Insert Order: INS (KeyDown|KeyHold) +19:1804:0:13:5 //Edit Pattern: ENTREE (KeyDown|KeyHold) +19:1805:0:9:5 //Switch to pattern editor: TAB (KeyDown|KeyHold) +19:1794:0:37:5 //Previous Order: GAUCHE (KeyDown|KeyHold) +19:1795:0:39:5 //Next Order: DROITE (KeyDown|KeyHold) +19:1796:0:36:5 //First Order: ORIGINE (KeyDown|KeyHold) +19:1797:0:35:5 //Last Order: FIN (KeyDown|KeyHold) +19:1807:0:48:5 //Pattern index digit 0: \xE0 (KeyDown|KeyHold) +19:1807:0:96:5 //Pattern index digit 0: 0 (PAVE NUM.) (KeyDown|KeyHold) +19:1808:0:49:5 //Pattern index digit 1: & (KeyDown|KeyHold) +19:1808:0:97:5 //Pattern index digit 1: 1 (PAVE NUM.) (KeyDown|KeyHold) +19:1809:0:50:5 //Pattern index digit 2: \xE9 (KeyDown|KeyHold) +19:1809:0:98:5 //Pattern index digit 2: 2 (PAVE NUM.) (KeyDown|KeyHold) +19:1810:0:51:5 //Pattern index digit 3: " (KeyDown|KeyHold) +19:1810:0:99:5 //Pattern index digit 3: 3 (PAVE NUM.) (KeyDown|KeyHold) +19:1811:0:52:5 //Pattern index digit 4: ' (KeyDown|KeyHold) +19:1811:0:100:5 //Pattern index digit 4: 4 (PAVE NUM.) (KeyDown|KeyHold) +19:1812:0:53:5 //Pattern index digit 5: ( (KeyDown|KeyHold) +19:1812:0:101:5 //Pattern index digit 5: 5 (PAVE NUM.) (KeyDown|KeyHold) +19:1813:0:54:5 //Pattern index digit 6: - (KeyDown|KeyHold) +19:1813:0:102:5 //Pattern index digit 6: 6 (PAVE NUM.) (KeyDown|KeyHold) +19:1814:0:55:5 //Pattern index digit 7: \xE8 (KeyDown|KeyHold) +19:1814:0:103:5 //Pattern index digit 7: 7 (PAVE NUM.) (KeyDown|KeyHold) +19:1815:0:56:5 //Pattern index digit 8: _ (KeyDown|KeyHold) +19:1815:0:104:5 //Pattern index digit 8: 8 (PAVE NUM.) (KeyDown|KeyHold) +19:1816:0:57:5 //Pattern index digit 9: \xE7 (KeyDown|KeyHold) +19:1816:0:105:5 //Pattern index digit 9: 9 (PAVE NUM.) (KeyDown|KeyHold) +19:1817:0:38:5 //Increase pattern index : HAUT (KeyDown|KeyHold) +19:1817:0:187:5 //Increase pattern index : = (KeyDown|KeyHold) +19:1818:0:40:5 //Decrease pattern index: BAS (KeyDown|KeyHold) +19:1818:0:189:5 //Decrease pattern index: (KeyDown|KeyHold) Added: trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb =================================================================== --- trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb (rev 0) +++ trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb 2009-12-04 19:30:31 UTC (rev 432) @@ -0,0 +1,325 @@ +//-------- OpenMPT key binding definition file ------- +//-Format is: - +//- Context:Command ID:Modifiers:Key:KeypressEventType //Comments - +//---------------------------------------------------------------------- +version:1 + +//----( Global Context (0) )------------ +0:1347:2:78:1 //File/New: Ctrl+N (KeyDown) +0:1346:2:79:1 //File/Open: Ctrl+O (KeyDown) +0:1349:2:83:1 //File/Save: Ctrl+S (KeyDown) +0:1350:3:83:1 //File/Save As: Shift+Ctrl+S (KeyDown) +0:1351:3:87:1 //File/Save as Wave: Shift+Ctrl+W (KeyDown) +0:1693:3:9:1 //Previous Document: Shift+Ctrl+TAB (KeyDown) +0:1030:0:116:1 //Play song/Pause song: F5 (KeyDown) +0:1031:0:119:1 //Pause song: F8 (KeyDown) +0:1375:0:27:1 //Stop Song: ESC (KeyDown) +0:1029:0:117:1 //Play song from start: F6 (KeyDown) +0:1027:0:118:5 //Play pattern from start: F7 (KeyDown|KeyHold) +0:1026:2:118:5 //Play pattern from cursor: Ctrl+F7 (KeyDown|KeyHold) +0:1374:3:84:1 //Estimate Song Length: Shift+Ctrl+T (KeyDown) +0:1376:0:120:1 //Toggle Midi Record: F9 (KeyDown) +0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown) +0:1360:2:88:1 //Cut: Ctrl+X (KeyDown) +0:1361:2:67:1 //Copy: Ctrl+C (KeyDown) +0:1362:2:86:1 //Paste: Ctrl+V (KeyDown) +0:1362:1:45:1 //Paste: Shift+INS (KeyDown) +0:1364:2:53:1 //SelectAll: Ctrl+5 (KeyDown) +0:1365:2:70:1 //Find: Ctrl+F (KeyDown) +0:1366:0:114:1 //Find Next: F3 (KeyDown) +0:1021:4:71:1 //View General: Alt+G (KeyDown) +0:1022:4:80:1 //View Pattern: Alt+P (KeyDown) +0:1023:4:83:1 //View Samples: Alt+S (KeyDown) +0:1024:4:78:1 //View Instruments: Alt+N (KeyDown) +0:1025:1:120:1 //View Comments: Shift+F9 (KeyDown) +0:1368:2:113:1 //Toggle Tree View: Ctrl+F2 (KeyDown) +0:1369:2:112:1 //View Options: Ctrl+F1 (KeyDown) +0:1370:0:112:1 //Help (to do): F1 (KeyDown) +0:1032:2:111:5 //Previous instrument: Ctrl+NUM/ (KeyDown|KeyHold) +0:1032:2:38:5 //Previous instrument: Ctrl+PIL OPP (KeyDown|KeyHold) +0:1033:2:106:5 //Next instrument: Ctrl+NUM* (KeyDown|KeyHold) +0:1033:2:40:5 //Next instrument: Ctrl+PIL NED (KeyDown|KeyHold) +0:1036:0:111:1 //Previous octave: NUM/ (KeyDown) +0:1037:0:106:1 //Next octave: NUM* (KeyDown) +0:1034:2:37:5 //Previous order: Ctrl+PIL VENSTRE (KeyDown|KeyHold) +0:1035:2:39:5 //Next order: Ctrl+PIL H\xD8YRE (KeyDown|KeyHold) + +//----( General Context [bottom] (1) )------------ + +//----( Pattern Context [bottom] (2) )------------ +2:1017:0:34:5 //Jump down by measure: PGDN (KeyDown|KeyHold) +2:1018:0:33:5 //Jump up by measure: PGUP (KeyDown|KeyHold) +2:1338:4:34:5 //Jump down by beat: Alt+PGDN (KeyDown|KeyHold) +2:1339:4:33:5 //Jump up by beat: Alt+PGUP (KeyDown|KeyHold) +2:1340:6:34:5 //Snap down to beat: Ctrl+Alt+PGDN (KeyDown|KeyHold) +2:1341:6:33:5 //Snap up to beat: Ctrl+Alt+PGUP (KeyDown|KeyHold) +2:1038:0:40:5 //Navigate down by 1 row: PIL NED (KeyDown|KeyHold) +2:1039:0:38:5 //Navigate up by 1 row: PIL OPP (KeyDown|KeyHold) +2:1691:4:40:5 //Navigate down by spacing: Alt+PIL NED (KeyDown|KeyHold) +2:1692:4:38:5 //Navigate up by spacing: Alt+PIL OPP (KeyDown|KeyHold) +2:1040:0:37:5 //Navigate left: PIL VENSTRE (KeyDown|KeyHold) +2:1041:0:39:5 //Navigate right: PIL H\xD8YRE (KeyDown|KeyHold) +2:1042:0:9:5 //Navigate to next channel: TAB (KeyDown|KeyHold) +2:1043:1:9:5 //Navigate to previous channel: Shift+TAB (KeyDown|KeyHold) +2:1044:0:36:1 //Go to first channel: HOME (KeyDown) +2:1045:2:36:1 //Go to first row: Ctrl+HOME (KeyDown) +2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+HOME (KeyDown) +2:1047:0:35:1 //Go to last channel: END (KeyDown) +2:1048:2:35:1 //Go to last row: Ctrl+END (KeyDown) +2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+END (KeyDown) +2:1050:1:16:1 //Selection key: Shift+SKIFT (KeyDown) +2:1051:2:17:1 //Copy select key: Ctrl (KeyDown) +2:1011:2:65:1 //Select channel / Select all: Ctrl+A (KeyDown) +2:1663:0:122:1 //Toggle follow song: F11 (KeyDown) +2:1003:0:13:5 //Quick copy: ENTER (KeyDown|KeyHold) +2:1004:0:32:5 //Quick paste: MELLOMROM (KeyDown|KeyHold) +2:1001:2:32:1 //Enable recording: Ctrl+MELLOMROM (KeyDown) +2:1002:2:13:5 //Play row: Ctrl+ENTER (KeyDown|KeyHold) +2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown) +2:1685:2:9:1 //Switch to order list: Ctrl+TAB (KeyDown) +2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown) +2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown) +2:1062:0:93:1 //Show note properties: Program (KeyDown) +2:1005:0:121:5 //Mute current channel: F10 (KeyDown|KeyHold) +2:1006:2:121:5 //Solo current channel: Ctrl+F10 (KeyDown|KeyHold) +2:1007:2:81:5 //Transpose +1: Ctrl+Q (KeyDown|KeyHold) +2:1009:3:81:5 //Transpose +12: Shift+Ctrl+Q (KeyDown|KeyHold) +2:1010:3:65:5 //Transpose -12: Shift+Ctrl+A (KeyDown|KeyHold) +2:1012:2:77:1 //Amplify selection: Ctrl+M (KeyDown) +2:1014:2:74:1 //Interpolate volume: Ctrl+J (KeyDown) +2:1015:2:75:1 //Interpolate effect: Ctrl+K (KeyDown) +2:1016:4:66:1 //Open effect visualizer: Alt+B (KeyDown) +2:1766:2:71:1 //Go to row/channel/...: Ctrl+G (KeyDown) +2:1013:2:73:1 //Apply current instrument: Ctrl+I (KeyDown) +2:1660:4:69:5 //Grow selection: Alt+E (KeyDown|KeyHold) +2:1661:4:68:5 //Shrink selection: Alt+D (KeyDown|KeyHold) +2:1058:0:46:1 //Clear field: DEL (KeyDown) +2:1664:1:190:1 //Clear field (IT Style): Shift+. (KeyDown) +2:1059:2:46:1 //Clear row and step: Ctrl+DEL (KeyDown) +2:1665:1:46:5 //Clear field and step (IT Style): Shift+DEL (KeyDown|KeyHold) +2:1061:0:8:5 //Delete rows: TILBAKE (KeyDown|KeyHold) +2:1377:2:8:5 //Delete all rows: Ctrl+TILBAKE (KeyDown|KeyHold) +2:1378:0:45:1 //Insert Row: INS (KeyDown) +2:1379:2:45:1 //Insert All Rows: Ctrl+INS (KeyDown) +2:1055:0:109:5 //Previous pattern: NUM MINUS (KeyDown|KeyHold) +2:1054:0:107:5 //Next pattern: NUM PLUSS (KeyDown|KeyHold) + +//----( Pattern Context [bottom] - Note Col (3) )------------ +3:1064:0:81:1 //Base octave C: Q (KeyDown) +3:1065:0:87:1 //Base octave C#: W (KeyDown) +3:1066:0:69:1 //Base octave D: E (KeyDown) +3:1067:0:82:1 //Base octave D#: R (KeyDown) +3:1068:0:84:1 //Base octave E: T (KeyDown) +3:1069:0:89:1 //Base octave F: Y (KeyDown) +3:1070:0:85:1 //Base octave F#: U (KeyDown) +3:1071:0:73:1 //Base octave G: I (KeyDown) +3:1072:0:79:1 //Base octave G#: O (KeyDown) +3:1074:0:221:1 //Base octave A#: \xE5 (KeyDown) +3:1075:0:186:1 //Base octave B: T\xD8DLER (KeyDown) +3:1076:0:65:1 //Base octave +1 C: A (KeyDown) +3:1077:0:83:1 //Base octave +1 C#: S (KeyDown) +3:1078:0:68:1 //Base octave +1 D: D (KeyDown) +3:1079:0:70:1 //Base octave +1 D#: F (KeyDown) +3:1080:0:71:1 //Base octave +1 E: G (KeyDown) +3:1081:0:72:1 //Base octave +1 F: H (KeyDown) +3:1082:0:74:1 //Base octave +1 F#: J (KeyDown) +3:1083:0:75:1 //Base octave +1 G: K (KeyDown) +3:1084:0:76:1 //Base octave +1 G#: L (KeyDown) +3:1085:0:192:1 //Base octave +1 A: \xF8 (KeyDown) +3:1086:0:222:1 //Base octave +1 A#: \xE6 (KeyDown) +3:1087:0:191:1 //Base octave +1 B: ' (KeyDown) +3:1088:0:90:1 //Base octave +2 C: Z (KeyDown) +3:1089:0:88:1 //Base octave +2 C#: X (KeyDown) +3:1090:0:67:1 //Base octave +2 D: C (KeyDown) +3:1091:0:86:1 //Base octave +2 D#: V (KeyDown) +3:1092:0:66:1 //Base octave +2 E: B (KeyDown) +3:1093:0:78:1 //Base octave +2 F: N (KeyDown) +3:1094:0:77:1 //Base octave +2 F#: M (KeyDown) +3:1095:0:188:1 //Base octave +2 G: , (KeyDown) +3:1096:0:190:1 //Base octave +2 G#: . (KeyDown) +3:1212:0:48:1 //Set octave 0: 0 (KeyDown) +3:1212:0:96:1 //Set octave 0: NUM 0 (KeyDown) +3:1213:0:49:1 //Set octave 1: 1 (KeyDown) +3:1213:0:97:1 //Set octave 1: NUM 1 (KeyDown) +3:1214:0:50:1 //Set octave 2: 2 (KeyDown) +3:1214:0:98:1 //Set octave 2: NUM 2 (KeyDown) +3:1215:0:51:1 //Set octave 3: 3 (KeyDown) +3:1215:0:99:1 //Set octave 3: NUM 3 (KeyDown) +3:1216:0:52:1 //Set octave 4: 4 (KeyDown) +3:1216:0:100:1 //Set octave 4: NUM 4 (KeyDown) +3:1217:0:53:1 //Set octave 5: 5 (KeyDown) +3:1217:0:101:1 //Set octave 5: NUM 5 (KeyDown) +3:1218:0:54:1 //Set octave 6: 6 (KeyDown) +3:1218:0:102:1 //Set octave 6: NUM 6 (KeyDown) +3:1219:0:55:1 //Set octave 7: 7 (KeyDown) +3:1219:0:103:1 //Set octave 7: NUM 7 (KeyDown) +3:1220:0:56:1 //Set octave 8: 8 (KeyDown) +3:1220:0:104:1 //Set octave 8: NUM 8 (KeyDown) +3:1221:0:57:1 //Set octave 9: 9 (KeyDown) +3:1221:0:105:1 //Set octave 9: NUM 9 (KeyDown) +3:1316:1:16:1 //Chord Modifier: Shift+SKIFT (KeyDown) +3:1667:0:219:1 //Note Cut (don't remember instrument): \ (KeyDown) +3:1668:0:187:1 //Note Off (don't remember instrument): + (KeyDown) +3:1792:0:226:1 //Note Fade (don't remember instrument): < (KeyDown) + +//----( Pattern Context [bottom] - Ins Col (4) )------------ +4:1202:0:96:1 //Set instrument digit 0: NUM 0 (KeyDown) +4:1202:0:48:1 //Set instrument digit 0: 0 (KeyDown) +4:1203:0:97:1 //Set instrument digit 1: NUM 1 (KeyDown) +4:1203:0:49:1 //Set instrument digit 1: 1 (KeyDown) +4:1204:0:98:1 //Set instrument digit 2: NUM 2 (KeyDown) +4:1204:0:50:1 //Set instrument digit 2: 2 (KeyDown) +4:1205:0:99:1 //Set instrument digit 3: NUM 3 (KeyDown) +4:1205:0:51:1 //Set instrument digit 3: 3 (KeyDown) +4:1206:0:100:1 //Set instrument digit 4: NUM 4 (KeyDown) +4:1206:0:52:1 //Set instrument digit 4: 4 (KeyDown) +4:1207:0:101:1 //Set instrument digit 5: NUM 5 (KeyDown) +4:1207:0:53:1 //Set instrument digit 5: 5 (KeyDown) +4:1208:0:102:1 //Set instrument digit 6: NUM 6 (KeyDown) +4:1208:0:54:1 //Set instrument digit 6: 6 (KeyDown) +4:1209:0:103:1 //Set instrument digit 7: NUM 7 (KeyDown) +4:1209:0:55:1 //Set instrument digit 7: 7 (KeyDown) +4:1210:0:56:1 //Set instrument digit 8: 8 (KeyDown) +4:1211:0:105:1 //Set instrument digit 9: NUM 9 (KeyDown) +4:1211:0:57:1 //Set instrument digit 9: 9 (KeyDown) + +//----( Pattern Context [bottom] - Vol Col (5) )------------ +5:1222:0:48:1 //Set volume digit 0: 0 (KeyDown) +5:1222:0:96:1 //Set volume digit 0: NUM 0 (KeyDown) +5:1223:0:49:1 //Set volume digit 1: 1 (KeyDown) +5:1223:0:97:1 //Set volume digit 1: NUM 1 (KeyDown) +5:1224:0:50:1 //Set volume digit 2: 2 (KeyDown) +5:1224:0:98:1 //Set volume digit 2: NUM 2 (KeyDown) +5:1225:0:51:1 //Set volume digit 3: 3 (KeyDown) +5:1225:0:99:1 //Set volume digit 3: NUM 3 (KeyDown) +5:1226:0:52:1 //Set volume digit 4: 4 (KeyDown) +5:1226:0:100:1 //Set volume digit 4: NUM 4 (KeyDown) +5:1227:0:53:1 //Set volume digit 5: 5 (KeyDown... [truncated message content] |