1 //========================================================= 2 // MusE 3 // Linux Music Editor 4 // $Id: ./muse/shortcuts.h $ 5 // 6 // Copyright (C) 1999-2011 by Werner Schweer and others 7 // 8 // Author: Mathias Lundgren <lunar_shuttle@users.sourceforge.net>, (C) 2003 9 // 10 // Copyright: Mathias Lundgren (lunar_shuttle@users.sourceforge.net) (C) 2003 11 // 12 // 13 // This program is free software; you can redistribute it and/or 14 // modify it under the terms of the GNU General Public License 15 // as published by the Free Software Foundation; version 2 of 16 // the License, or (at your option) any later version. 17 // 18 // This program is distributed in the hope that it will be useful, 19 // but WITHOUT ANY WARRANTY; without even the implied warranty of 20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 // GNU General Public License for more details. 22 // 23 // You should have received a copy of the GNU General Public License 24 // along with this program; if not, write to the Free Software 25 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 26 // 27 //========================================================= 28 // 29 // C++ Interface: shortcuts 30 // 31 // Description: 32 // Datastructures and declaration of shortcuts used in the application 33 // 34 35 #ifndef __SHORTCUTS_H__ 36 #define __SHORTCUTS_H__ 37 38 #include <list> 39 #include "xml.h" 40 41 // 42 // Shortcut categories 43 // 44 #define PROLL_SHRT 1 // Pianoroll shortcut 45 #define DEDIT_SHRT 2 // Drumedit shortcut 46 #define LEDIT_SHRT 4 // Listedit shortcut 47 #define SCORE_SHRT 8 // Score shortcut 48 #define ARRANG_SHRT 16 // Arranger shortcut 49 #define TRANSP_SHRT 32 // Transport shortcut 50 #define WAVE_SHRT 64 // Waveedit shortcut 51 #define GLOBAL_SHRT 128 // Global shortcuts 52 #define LMEDIT_SHRT 256 // List masteredit 53 #define MEDIT_SHRT 512 // Master editor 54 #define MIXER_SHRT 1024 // Mixer 55 #define ALL_SHRT 2047 // All shortcuts 56 #define INVIS_SHRT 2048 // Shortcuts not shown in the config-dialog. Hard-coded. To avoid conflicts 57 58 #define SHRT_NUM_OF_CATEGORIES 10 //Number of shortcut categories 59 60 namespace MusEGui { 61 62 struct shortcut 63 { 64 int key; 65 const char* descr; 66 const char* xml; //xml-tag for config-file 67 int type; shortcutshortcut68 shortcut() : key(0), descr(nullptr), xml(nullptr), type(0) { } 69 }; 70 71 struct shortcut_cg 72 { 73 int id_flag; 74 const char* name; 75 }; 76 77 QString shrtToStr(long int shrt); 78 79 typedef struct shortcut ShortCut ; 80 81 enum { 82 //Transport/Positioning 83 SHRT_PLAY_SONG, //Enter 84 SHRT_PLAY_TOGGLE, //Space 85 SHRT_REC_RESTART, //Ctrl+Space 86 SHRT_REC_RESTART_MULTI, //Shift+Space 87 SHRT_STOP, //Insert 88 SHRT_GOTO_START, // W 89 SHRT_GOTO_END, // Ctrl+W 90 91 SHRT_GOTO_LEFT, //End-keypad 92 SHRT_GOTO_RIGHT, //Cursordown-keypad 93 SHRT_POS_INC, // Plus 94 SHRT_POS_DEC, // Minus 95 SHRT_TOGGLE_LOOP, // Slash 96 SHRT_TOGGLE_METRO, // C 97 SHRT_START_REC, // *(keypad) 98 SHRT_REC_ARM_TRACK, // Shift+A 99 SHRT_REC_CLEAR, // backspace 100 SHRT_FULLSCREEN, 101 SHRT_TABBED_WIN, 102 SHRT_TOGGLE_DOCKS, 103 SHRT_TOGGLE_REWINDONSTOP, 104 SHRT_ARRANGER, 105 106 //Main + Drumeditor 107 SHRT_NEW, //Ctrl+N 108 SHRT_NEW_FROM_TEMPLATE, //Ctrl+Shift+N 109 SHRT_OPEN, //Ctrl+O 110 SHRT_SAVE, //Ctrl+S 111 112 //Used throughout the app: 113 SHRT_UNDO, //Ctrl+Z 114 SHRT_REDO, //Ctrl+Y 115 SHRT_COPY, //Ctrl+C 116 SHRT_COPY_RANGE, //Ctrl+Shift+C 117 SHRT_CUT, //Ctrl+X 118 SHRT_PASTE, //Ctrl+V 119 SHRT_PASTE_TO_CUR_PART, //CTRL+Key_B 120 SHRT_PASTE_CLONE, //CTRL+Shift+V 121 SHRT_PASTE_TO_TRACK, //CTRL+Key_B 122 SHRT_PASTE_CLONE_TO_TRACK, //CTRL+SHIFT+Key_B 123 SHRT_PASTE_DIALOG, //Ctrl+G 124 SHRT_DELETE,//Delete 125 126 127 //Main: 128 SHRT_SAVE_AS, //Default: undefined 129 SHRT_SAVE_AS_NEW_PROJECT, 130 SHRT_SAVE_REVISION, 131 SHRT_SAVE_AS_TEMPLATE, 132 SHRT_OPEN_RECENT, //Ctrl+1 133 SHRT_LOAD_TEMPLATE, //Default: undefined 134 SHRT_CONFIG_PRINTER, //Ctrl+P 135 SHRT_IMPORT_MIDI, //Default: undefined 136 SHRT_EXPORT_MIDI, //Default: undefined 137 SHRT_IMPORT_PART, //!< Import midi part to current track & location, Default: undefined 138 SHRT_IMPORT_AUDIO, //Default: undefined 139 SHRT_QUIT, //Default: Ctrl+Q 140 141 SHRT_DESEL_PARTS, //Ctrl+B 142 SHRT_RENAME_PART, // Default: undefined 143 SHRT_SELECT_PRTSTRACK, //Default: undefined 144 SHRT_OPEN_PIANO, //Ctrl+E 145 SHRT_OPEN_SCORE, //Ctrl+R 146 SHRT_OPEN_DRUMS, //Ctrl+D 147 SHRT_OPEN_LIST, //Ctrl+L 148 SHRT_OPEN_WAVE, //Ctrl+W 149 SHRT_OPEN_GRAPHIC_MASTER, //Ctrl+M 150 SHRT_OPEN_LIST_MASTER, //Ctrl+Shift+M 151 SHRT_OPEN_MIDI_TRANSFORM, //Ctrl+T 152 SHRT_OPEN_PLUGIN_GUI, 153 154 SHRT_OPEN_PIANO_NEW, //Ctrl+Alt+E 155 SHRT_OPEN_DRUMS_NEW, //Ctrl+Alt+D 156 SHRT_OPEN_LIST_NEW, //Ctrl+Alt+L 157 SHRT_OPEN_WAVE_NEW, //Ctrl+Alt+W 158 159 SHRT_GLOBAL_CUT, //Default: undefined 160 SHRT_GLOBAL_INSERT, //Default: undefined 161 SHRT_GLOBAL_SPLIT, //Default: undefined 162 SHRT_CUT_EVENTS, //Default: undefined 163 164 SHRT_OPEN_TRANSPORT, //F11 165 SHRT_OPEN_BIGTIME, //F12 166 SHRT_OPEN_MIXER, //Ctrl+* 167 SHRT_OPEN_MIXER2, //Ctrl+* 168 SHRT_OPEN_MARKER, // F9 169 SHRT_HIDE_MIXER_STRIP, // F3 170 SHRT_OPEN_CLIPS, //Default: undefined 171 172 SHRT_FOLLOW_JUMP, //Default: undefined 173 SHRT_FOLLOW_NO, //Default: undefined 174 SHRT_FOLLOW_CONTINUOUS, //Default: undefined 175 176 SHRT_GLOBAL_CONFIG, //Default: undefined 177 SHRT_CONFIG_SHORTCUTS, //Default: Ctrl+K 178 SHRT_CONFIG_METRONOME, //Default: undefined 179 SHRT_CONFIG_MIDISYNC, //Default: undefined 180 SHRT_MIDI_FILE_CONFIG, //Default: undefined 181 SHRT_APPEARANCE_SETTINGS, //Default: undefined 182 SHRT_CONFIG_MIDI_PORTS, //Default: undefined 183 SHRT_CONFIG_AUDIO_PORTS, //Default: undefined 184 //SHRT_SAVE_GLOBAL_CONFIG, //Default: undefined 185 186 SHRT_MIDI_EDIT_INSTRUMENTS, //Default: undefined 187 SHRT_MIDI_INPUT_TRANSFORM, //Default: undefined 188 SHRT_MIDI_INPUT_FILTER, //Default: undefined 189 SHRT_MIDI_INPUT_TRANSPOSE, //Default: undefined 190 SHRT_MIDI_REMOTE_CONTROL, //Default: undefined 191 SHRT_RANDOM_RHYTHM_GENERATOR, //Default: undefined 192 SHRT_MIDI_RESET, //Default: undefined 193 SHRT_MIDI_INIT, //Default: undefined 194 SHRT_MIDI_LOCAL_OFF, //Default: undefined 195 196 SHRT_AUDIO_BOUNCE_TO_TRACK, //Default: undefined 197 SHRT_AUDIO_BOUNCE_TO_FILE, //Default: undefined 198 SHRT_AUDIO_RESTART, //Default: undefined 199 200 // REMOVE Tim. automation. 201 // Deprecated. MusEGlobal::automation is now fixed TRUE 202 // for now until we decide what to do with it. 203 // Must keep this enum for proper ordering. 204 SHRT_MIXER_AUTOMATION, //Default: undefined 205 206 SHRT_MIXER_SNAPSHOT, //Default: undefined 207 SHRT_MIXER_AUTOMATION_CLEAR, //Default: undefined 208 209 SHRT_ADD_MIDI_TRACK, //Default: Ctrl+J 210 SHRT_ADD_DRUM_TRACK, //Default: Ctrl+k 211 // SHRT_ADD_NEW_STYLE_DRUM_TRACK, //Default: undefined 212 SHRT_ADD_SYNTH_TRACK, 213 SHRT_ADD_WAVE_TRACK, //Default: undefined 214 SHRT_ADD_AUDIO_OUTPUT, //Default: undefined 215 SHRT_ADD_AUDIO_GROUP, //Default: undefined 216 SHRT_ADD_AUDIO_INPUT, //Default: undefined 217 SHRT_ADD_AUDIO_AUX, //Default: undefined 218 219 SHRT_INSERT_MIDI_TRACK, //Default: undefined 220 SHRT_INSERT_DRUM_TRACK, //Default: undefined 221 // SHRT_INSERT_NEW_STYLE_DRUM_TRACK, //Default: undefined 222 SHRT_INSERT_SYNTH_TRACK, 223 SHRT_INSERT_WAVE_TRACK, //Default: undefined 224 SHRT_INSERT_AUDIO_OUTPUT, //Default: undefined 225 SHRT_INSERT_AUDIO_GROUP, //Default: undefined 226 SHRT_INSERT_AUDIO_INPUT, //Default: undefined 227 SHRT_INSERT_AUDIO_AUX, //Default: undefined 228 229 SHRT_RESET_MIDI, //Ctrl+Alt+Z 230 231 SHRT_OPEN_HELP, //F1 232 SHRT_START_WHATSTHIS, //Shift-F1 233 234 //Arranger, parts: 235 SHRT_EDIT_PART, //Enter 236 SHRT_SEL_ABOVE, //Up 237 SHRT_SEL_ABOVE_ADD, //move up and add to selection 238 SHRT_SEL_BELOW, //Down 239 SHRT_SEL_BELOW_ADD, //move down and add to selection 240 241 SHRT_INSERTMEAS, //Ctrl+Shift+M - insert measures 242 SHRT_DUPLICATE_TRACK, // Ctrl+Shift+D 243 SHRT_MOVEUP_TRACK, 244 SHRT_MOVEDOWN_TRACK, 245 SHRT_MOVETOP_TRACK, 246 SHRT_MOVEBOTTOM_TRACK, 247 248 //Arranger tracks 249 SHRT_SEL_TRACK_BELOW, 250 SHRT_SEL_TRACK_ABOVE, 251 SHRT_EDIT_TRACK_NAME, 252 SHRT_MUTE_CURRENT_TRACKS, 253 SHRT_SOLO_CURRENT_TRACKS, 254 255 //To be in arranger, pianoroll & drumeditor. p4.0.10 now globally handled, too. 256 SHRT_SELECT_ALL, //Ctrl+A 257 SHRT_SELECT_NONE, //Ctrl+Shift+A 258 SHRT_SELECT_INVERT, //Ctrl+I 259 SHRT_SELECT_ILOOP, //Default: Undefined 260 SHRT_SELECT_OLOOP, //Default: Undefined 261 SHRT_SELECT_PREV_PART, // Ctrl+- 262 SHRT_SELECT_NEXT_PART, // Ctrl++ 263 SHRT_SEL_LEFT, //left 264 SHRT_SEL_LEFT_ADD, //move left and add to selection 265 SHRT_SEL_RIGHT, //Right 266 SHRT_SEL_RIGHT_ADD, //move right and add to selection 267 SHRT_INC_PITCH, 268 SHRT_DEC_PITCH, 269 SHRT_INC_POS, 270 SHRT_DEC_POS, 271 272 SHRT_STEP_RECORD, 273 SHRT_MIDI_INPUT, 274 SHRT_PLAY_EVENTS, 275 SHRT_INC_VELOCITY, 276 SHRT_DEC_VELOCITY, 277 278 SHRT_POS_INC_NOSNAP, 279 SHRT_POS_DEC_NOSNAP, 280 281 /* 282 SHRT_POS_INC_BAR, 283 SHRT_POS_DEC_BAR, 284 SHRT_POS_INC_BAR_NOSNAP, 285 SHRT_POS_DEC_BAR_NOSNAP, 286 287 SHRT_POS_INC_BEAT, 288 SHRT_POS_DEC_BEAT, 289 SHRT_POS_INC_BEAT_NOSNAP, 290 SHRT_POS_DEC_BEAT_NOSNAP, 291 292 SHRT_POS_INC_TICK, 293 SHRT_POS_DEC_TICK, 294 SHRT_POS_INC_TICK_NOSNAP, 295 SHRT_POS_DEC_TICK_NOSNAP, 296 297 SHRT_POS_INC_MINUTE, 298 SHRT_POS_DEC_MINUTE, 299 SHRT_POS_INC_MINUTE_NOSNAP, 300 SHRT_POS_DEC_MINUTE_NOSNAP, 301 302 SHRT_POS_INC_SECOND, 303 SHRT_POS_DEC_SECOND, 304 SHRT_POS_INC_SECOND_NOSNAP, 305 SHRT_POS_DEC_SECOND_NOSNAP, 306 307 SHRT_POS_INC_FRAME, 308 SHRT_POS_DEC_FRAME, 309 */ 310 311 SHRT_LOCATORS_TO_SELECTION, //Alt+P, currently in arranger & pianoroll 312 SHRT_INSERT_AT_LOCATION, //Shift+CrsrRight 313 SHRT_INCREASE_LEN, 314 SHRT_DECREASE_LEN, 315 316 //SHRT_TOOL_1,//Shift+1 Pointer 317 //SHRT_TOOL_2,//Shift+2 Pen 318 //SHRT_TOOL_3,//Shift+3 Rubber 319 //SHRT_TOOL_4,//Shift+4 320 //SHRT_TOOL_5,//Shift+5 321 //SHRT_TOOL_6,//Shift+6 322 SHRT_TRANSPOSE, //Default: undefined 323 324 //Shortcuts to be in pianoroll & drumeditor 325 SHRT_ZOOM_IN, // PgUp 326 SHRT_ZOOM_OUT, // PgDown 327 SHRT_GOTO_CPOS, // c 328 SHRT_SCROLL_LEFT, // h 329 SHRT_SCROLL_RIGHT, // l 330 SHRT_FIXED_LEN, //Alt+L, currently only drumeditor 331 SHRT_QUANTIZE, //q 332 SHRT_MODIFY_GATE_TIME, //Default: undefined 333 SHRT_MODIFY_VELOCITY, 334 SHRT_CRESCENDO, 335 SHRT_DELETE_OVERLAPS, 336 337 SHRT_THIN_OUT, 338 SHRT_ERASE_EVENT, 339 SHRT_NOTE_SHIFT, 340 SHRT_MOVE_CLOCK, 341 SHRT_COPY_MEASURE, 342 SHRT_ERASE_MEASURE, 343 SHRT_DELETE_MEASURE, 344 SHRT_CREATE_MEASURE, 345 SHRT_SET_QUANT_BAR, 346 SHRT_SET_QUANT_OFF, 347 SHRT_SET_QUANT_1, 348 SHRT_SET_QUANT_2, 349 SHRT_SET_QUANT_3, 350 SHRT_SET_QUANT_4, 351 SHRT_SET_QUANT_5, 352 SHRT_SET_QUANT_6, 353 SHRT_SET_QUANT_7, 354 SHRT_TOGGLE_TRIOL, 355 SHRT_TOGGLE_PUNCT, 356 SHRT_TOGGLE_PUNCT2, 357 358 SHRT_EVENT_COLOR, 359 360 SHRT_MOVE_PLAY_TO_NOTE, 361 362 SHRT_USE_LAST_EDITED_EVENT, 363 364 // Shortcuts for tools 365 // global 366 SHRT_TOOL_POINTER, // 367 SHRT_TOOL_PENCIL, 368 SHRT_TOOL_RUBBER, 369 SHRT_TOOL_PAN, 370 SHRT_TOOL_ZOOM, 371 372 // pianoroll and drum editor 373 SHRT_TOOL_LINEDRAW, 374 375 // drum editor 376 SHRT_TOOL_CURSOR, 377 SHRT_ADDNOTE_1, 378 SHRT_ADDNOTE_2, 379 SHRT_ADDNOTE_3, 380 SHRT_ADDNOTE_4, 381 SHRT_CURSOR_STEP_UP, 382 SHRT_CURSOR_STEP_DOWN, 383 SHRT_INSTRUMENT_STEP_DOWN, 384 SHRT_INSTRUMENT_STEP_UP, 385 386 // wave editor 387 SHRT_TOOL_RANGE, 388 389 // arranger 390 SHRT_TOOL_SCISSORS, 391 SHRT_TOOL_GLUE, 392 SHRT_TOOL_MUTE, 393 394 395 //Listeditor: 396 SHRT_LE_INS_NOTES, // N 397 SHRT_LE_INS_SYSEX, // S 398 SHRT_LE_INS_CTRL, // C 399 SHRT_LE_INS_META, // M 400 // unused 401 // SHRT_LE_INS_CHAN_AFTERTOUCH,//Ctrl+A 402 // SHRT_LE_INS_POLY_AFTERTOUCH,//Ctrl+P 403 404 //List master editor: 405 SHRT_LM_INS_TEMPO, // Ctrl+T 406 SHRT_LM_INS_SIG, // Ctrl+R 407 SHRT_LM_EDIT_BEAT, // Ctrl+Shift+E 408 SHRT_LM_EDIT_VALUE,// Ctrl+E 409 SHRT_LM_INS_KEY, // Ctrl+K 410 411 // Marker view 412 SHRT_NEXT_MARKER, 413 SHRT_PREV_MARKER, 414 415 // Arranger 416 SHRT_PART_NORMALIZE, // Alt+N 417 418 SHRT_TOOL_STRETCH, 419 SHRT_TOOL_SAMPLERATE, 420 421 // Mixer 422 SHRT_MIXER_SELECT_STRIP_LEFT, 423 SHRT_MIXER_SELECT_STRIP_RIGHT, 424 // TODO Feature marked as todo in AudioMixerApp::selectNextStrip(). 425 //SHRT_MIXER_MULTI_SELECT_STRIP_LEFT, 426 //SHRT_MIXER_MULTI_SELECT_STRIP_RIGHT, 427 SHRT_MIXER_STRIP_VOL_DOWN, 428 SHRT_MIXER_STRIP_VOL_UP, 429 SHRT_MIXER_STRIP_PAN_LEFT, 430 SHRT_MIXER_STRIP_PAN_RIGHT, 431 SHRT_MIXER_STRIP_VOL_DOWN_PAGE, 432 SHRT_MIXER_STRIP_VOL_UP_PAGE, 433 SHRT_MIXER_STRIP_PAN_LEFT_PAGE, 434 SHRT_MIXER_STRIP_PAN_RIGHT_PAGE, 435 436 //Last item: 437 SHRT_NUM_OF_ELEMENTS // must be last 438 }; 439 440 extern ShortCut shortcuts[SHRT_NUM_OF_ELEMENTS]; //size of last entry 441 extern void initShortCuts(); 442 extern void writeShortCuts(int level, MusECore::Xml& xml); 443 extern void readShortCuts (MusECore::Xml& xml); 444 extern const shortcut_cg shortcut_category[SHRT_NUM_OF_CATEGORIES]; 445 446 } // namespace MusEGui 447 448 #endif 449