public ChainOfResponsibility() { // Alt has been substituted for LeftShift due to Alt being masked as Key.System some of the time. // Key combinations that are a subset of bigger combinations were changed, as entering the smaller combo would // result in that combo being accepted before you had time to type the bigger combo you meant to type. // The special operations 'undo' and 'redo' use LeftShift, as Ctrl-Z/Ctrl-Y already activate Windows' undo/redo. // Shift-T-(number) was changed to Shift-(number), because for some reason extra numbers are not registered after Shift-T. List <ChainElement> allElements = new List <ChainElement>() { new ChainElement("undo", new List <Key>() { Key.LeftShift, Key.Z }), new ChainElement("redo", new List <Key>() { Key.LeftShift, Key.Y }), new ChainElement("savelily", new List <Key>() { Key.LeftCtrl, Key.S, Key.L }), new ChainElement("savepdf", new List <Key>() { Key.LeftCtrl, Key.S, Key.P }), new ChainElement("open", new List <Key>() { Key.LeftCtrl, Key.O }), new ChainElement("treble", new List <Key>() { Key.LeftShift, Key.C }), new ChainElement("tempo120", new List <Key>() { Key.LeftShift, Key.S }), new ChainElement("time4", new List <Key>() { Key.LeftShift, Key.T }), new ChainElement("time4", new List <Key>() { Key.LeftShift, Key.D4 }), new ChainElement("time3", new List <Key>() { Key.LeftShift, Key.D3 }), new ChainElement("time6", new List <Key>() { Key.LeftShift, Key.D6 }), new ChainElement("repeat", new List <Key>() { Key.LeftShift, Key.R }), new ChainElement("alternative", new List <Key>() { Key.LeftShift, Key.A }), }; for (int i = 0; i < allElements.Count - 1; i++) { if (i == 0) { first = allElements[i]; } allElements[i].nextElement = allElements[i + 1]; } }