···130130131131 public override IEnumerable<KeyBinding> PlatformKeyBindings => new[]
132132 {
133133- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.X), new PlatformAction(PlatformActionType.Cut)),
134134- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.C), new PlatformAction(PlatformActionType.Copy)),
135135- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.V), new PlatformAction(PlatformActionType.Paste)),
136136- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.A), new PlatformAction(PlatformActionType.SelectAll)),
137137- new KeyBinding(InputKey.Left, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Move)),
138138- new KeyBinding(InputKey.Right, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Move)),
139139- new KeyBinding(InputKey.BackSpace, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
140140- new KeyBinding(InputKey.Delete, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Delete)),
141141- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Select)),
142142- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Select)),
143143- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
144144- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Delete), new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Delete)),
145145- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Move)),
146146- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Move)),
147147- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.BackSpace), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Delete)),
148148- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Delete), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Delete)),
149149- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Select)),
150150- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Select)),
151151- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Left), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Move)),
152152- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Right), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Move)),
153153- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.BackSpace), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Delete)),
154154- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Delete), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Delete)),
155155- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Select)),
156156- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Select)),
157157- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Left), new PlatformAction(PlatformActionType.DocumentPrevious)),
158158- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Right), new PlatformAction(PlatformActionType.DocumentNext)),
159159- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentNext)),
160160- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentPrevious)),
133133+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.X), PlatformAction.Cut),
134134+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.C), PlatformAction.Copy),
135135+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.V), PlatformAction.Paste),
136136+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.A), PlatformAction.SelectAll),
137137+ new KeyBinding(InputKey.Left, PlatformAction.MoveBackwardChar),
138138+ new KeyBinding(InputKey.Right, PlatformAction.MoveForwardChar),
139139+ new KeyBinding(InputKey.BackSpace, PlatformAction.DeleteBackwardChar),
140140+ new KeyBinding(InputKey.Delete, PlatformAction.DeleteForwardChar),
141141+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardChar),
142142+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardChar),
143143+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), PlatformAction.DeleteBackwardChar),
144144+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Delete), PlatformAction.DeleteForwardChar),
145145+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Left), PlatformAction.MoveBackwardWord),
146146+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Right), PlatformAction.MoveForwardWord),
147147+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.BackSpace), PlatformAction.DeleteBackwardWord),
148148+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Delete), PlatformAction.DeleteForwardWord),
149149+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardWord),
150150+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardWord),
151151+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Left), PlatformAction.MoveBackwardLine),
152152+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Right), PlatformAction.MoveForwardLine),
153153+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.BackSpace), PlatformAction.DeleteBackwardLine),
154154+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Delete), PlatformAction.DeleteForwardLine),
155155+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardLine),
156156+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardLine),
157157+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Left), PlatformAction.DocumentPrevious),
158158+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Right), PlatformAction.DocumentNext),
159159+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), PlatformAction.DocumentNext),
160160+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), PlatformAction.DocumentPrevious),
161161+ new KeyBinding(new KeyCombination(InputKey.Delete), PlatformAction.Delete),
161162 };
162163 }
163164}
+2-2
osu.Framework/Game.cs
···359359360360 public virtual bool OnPressed(PlatformAction action)
361361 {
362362- switch (action.ActionType)
362362+ switch (action)
363363 {
364364- case PlatformActionType.Exit:
364364+ case PlatformAction.Exit:
365365 Host.Window?.Close();
366366 return true;
367367 }
···9797 public bool SelectFirstTabByDefault { get; set; } = true;
98989999 /// <summary>
100100- /// When true, tabs can be switched back and forth using <see cref="PlatformActionType.DocumentPrevious"/> and <see cref="PlatformActionType.DocumentNext"/> respectively.
100100+ /// When true, tabs can be switched back and forth using <see cref="PlatformAction.DocumentPrevious"/> and <see cref="PlatformAction.DocumentNext"/> respectively.
101101 /// </summary>
102102 public bool IsSwitchable { get; set; }
103103···408408 {
409409 if (IsSwitchable)
410410 {
411411- switch (action.ActionType)
411411+ switch (action)
412412 {
413413- case PlatformActionType.DocumentNext:
413413+ case PlatformAction.DocumentNext:
414414 SwitchTab(1);
415415 return true;
416416417417- case PlatformActionType.DocumentPrevious:
417417+ case PlatformAction.DocumentPrevious:
418418 SwitchTab(-1);
419419 return true;
420420 }
+136-78
osu.Framework/Graphics/UserInterface/TextBox.cs
···161161162162 public virtual bool OnPressed(PlatformAction action)
163163 {
164164- int? amount = null;
165165-166164 if (!HasFocus)
167165 return false;
168166169169- if (!HandleLeftRightArrows &&
170170- action.ActionMethod == PlatformActionMethod.Move &&
171171- (action.ActionType == PlatformActionType.CharNext || action.ActionType == PlatformActionType.CharPrevious))
167167+ if (!HandleLeftRightArrows && (action == PlatformAction.MoveBackwardChar || action == PlatformAction.MoveForwardChar))
172168 return false;
173169174174- switch (action.ActionType)
170170+ switch (action)
175171 {
176172 // Clipboard
177177- case PlatformActionType.Cut:
178178- case PlatformActionType.Copy:
173173+ case PlatformAction.Cut:
174174+ case PlatformAction.Copy:
179175 if (string.IsNullOrEmpty(SelectedText) || !AllowClipboardExport) return true;
180176181177 clipboard?.SetText(SelectedText);
182178183183- if (action.ActionType == PlatformActionType.Cut)
184184- {
185185- string removedText = removeSelection();
186186- OnUserTextRemoved(removedText);
187187- }
179179+ if (action == PlatformAction.Cut)
180180+ DeleteBy(0);
188181189182 return true;
190183191191- case PlatformActionType.Paste:
184184+ case PlatformAction.Paste:
192185 //the text may get pasted into the hidden textbox, so we don't need any direct clipboard interaction here.
193186 string pending = textInput?.GetPendingText();
194187···198191 InsertString(pending);
199192 return true;
200193201201- case PlatformActionType.SelectAll:
194194+ case PlatformAction.SelectAll:
202195 selectionStart = 0;
203196 selectionEnd = text.Length;
204197 cursorAndLayout.Invalidate();
205198 return true;
206199207200 // Cursor Manipulation
208208- case PlatformActionType.CharNext:
209209- amount = 1;
210210- break;
201201+ case PlatformAction.MoveBackwardChar:
202202+ MoveCursorBy(-1);
203203+ return true;
211204212212- case PlatformActionType.CharPrevious:
213213- amount = -1;
214214- break;
205205+ case PlatformAction.MoveForwardChar:
206206+ MoveCursorBy(1);
207207+ return true;
215208216216- case PlatformActionType.LineEnd:
217217- amount = text.Length;
218218- break;
209209+ case PlatformAction.MoveBackwardWord:
210210+ MoveCursorBy(GetBackwardWordAmount());
211211+ return true;
219212220220- case PlatformActionType.LineStart:
221221- amount = -text.Length;
222222- break;
213213+ case PlatformAction.MoveForwardWord:
214214+ MoveCursorBy(GetForwardWordAmount());
215215+ return true;
223216224224- case PlatformActionType.WordNext:
225225- if (!AllowWordNavigation)
226226- amount = 1;
227227- else
228228- {
229229- int searchNext = Math.Clamp(selectionEnd, 0, Math.Max(0, Text.Length - 1));
230230- while (searchNext < Text.Length && text[searchNext] == ' ')
231231- searchNext++;
232232- int nextSpace = text.IndexOf(' ', searchNext);
233233- amount = (nextSpace >= 0 ? nextSpace : text.Length) - selectionEnd;
234234- }
217217+ case PlatformAction.MoveBackwardLine:
218218+ MoveCursorBy(GetBackwardLineAmount());
219219+ return true;
235220236236- break;
221221+ case PlatformAction.MoveForwardLine:
222222+ MoveCursorBy(GetForwardLineAmount());
223223+ return true;
237224238238- case PlatformActionType.WordPrevious:
239239- if (!AllowWordNavigation)
240240- amount = -1;
241241- else
242242- {
243243- int searchPrev = Math.Clamp(selectionEnd - 2, 0, Math.Max(0, Text.Length - 1));
244244- while (searchPrev > 0 && text[searchPrev] == ' ')
245245- searchPrev--;
246246- int lastSpace = text.LastIndexOf(' ', searchPrev);
247247- amount = lastSpace > 0 ? -(selectionEnd - lastSpace - 1) : -selectionEnd;
248248- }
225225+ // Deletion
226226+ case PlatformAction.DeleteBackwardChar:
227227+ DeleteBy(-1);
228228+ return true;
249229250250- break;
251251- }
230230+ case PlatformAction.DeleteForwardChar:
231231+ DeleteBy(1);
232232+ return true;
252233253253- if (amount.HasValue)
254254- {
255255- switch (action.ActionMethod)
256256- {
257257- case PlatformActionMethod.Move:
258258- resetSelection();
259259- moveSelection(amount.Value, false);
260260- break;
234234+ case PlatformAction.DeleteBackwardWord:
235235+ DeleteBy(GetBackwardWordAmount());
236236+ return true;
261237262262- case PlatformActionMethod.Select:
263263- moveSelection(amount.Value, true);
264264- break;
238238+ case PlatformAction.DeleteForwardWord:
239239+ DeleteBy(GetForwardWordAmount());
240240+ return true;
265241266266- case PlatformActionMethod.Delete:
267267- if (selectionLength == 0)
268268- selectionEnd = Math.Clamp(selectionStart + amount.Value, 0, text.Length);
242242+ case PlatformAction.DeleteBackwardLine:
243243+ DeleteBy(GetBackwardLineAmount());
244244+ return true;
269245270270- if (selectionLength > 0)
271271- {
272272- string removedText = removeSelection();
273273- OnUserTextRemoved(removedText);
274274- }
246246+ case PlatformAction.DeleteForwardLine:
247247+ DeleteBy(GetForwardLineAmount());
248248+ return true;
249249+250250+ // Expand selection
251251+ case PlatformAction.SelectBackwardChar:
252252+ ExpandSelectionBy(-1);
253253+ return true;
254254+255255+ case PlatformAction.SelectForwardChar:
256256+ ExpandSelectionBy(1);
257257+ return true;
275258276276- break;
277277- }
259259+ case PlatformAction.SelectBackwardWord:
260260+ ExpandSelectionBy(GetBackwardWordAmount());
261261+ return true;
278262279279- return true;
263263+ case PlatformAction.SelectForwardWord:
264264+ ExpandSelectionBy(GetForwardWordAmount());
265265+ return true;
266266+267267+ case PlatformAction.SelectBackwardLine:
268268+ ExpandSelectionBy(GetBackwardLineAmount());
269269+ return true;
270270+271271+ case PlatformAction.SelectForwardLine:
272272+ ExpandSelectionBy(GetForwardLineAmount());
273273+ return true;
280274 }
281275282276 return false;
···286280 {
287281 }
288282289289- internal override void UpdateClock(IFrameBasedClock clock)
283283+ /// <summary>
284284+ /// Find the word boundary in the backward direction, then return the negative amount of characters.
285285+ /// </summary>
286286+ protected int GetBackwardWordAmount()
287287+ {
288288+ if (!AllowWordNavigation)
289289+ return -1;
290290+291291+ int searchPrev = Math.Clamp(selectionEnd - 2, 0, Math.Max(0, Text.Length - 1));
292292+ while (searchPrev > 0 && text[searchPrev] == ' ')
293293+ searchPrev--;
294294+ int lastSpace = text.LastIndexOf(' ', searchPrev);
295295+ return lastSpace > 0 ? -(selectionEnd - lastSpace - 1) : -selectionEnd;
296296+ }
297297+298298+ /// <summary>
299299+ /// Find the word boundary in the forward direction, then return the positive amount of characters.
300300+ /// </summary>
301301+ protected int GetForwardWordAmount()
290302 {
291291- base.UpdateClock(clock);
292292- textUpdateScheduler.UpdateClock(Clock);
303303+ if (!AllowWordNavigation)
304304+ return 1;
305305+306306+ int searchNext = Math.Clamp(selectionEnd, 0, Math.Max(0, Text.Length - 1));
307307+ while (searchNext < Text.Length && text[searchNext] == ' ')
308308+ searchNext++;
309309+ int nextSpace = text.IndexOf(' ', searchNext);
310310+ return (nextSpace >= 0 ? nextSpace : text.Length) - selectionEnd;
293311 }
294312295295- private void resetSelection()
313313+ // Currently only single line is supported and line length and text length are the same.
314314+ protected int GetBackwardLineAmount() => -text.Length;
315315+316316+ protected int GetForwardLineAmount() => text.Length;
317317+318318+ /// <summary>
319319+ /// Move the current cursor by the signed <paramref name="amount"/>.
320320+ /// </summary>
321321+ protected void MoveCursorBy(int amount)
296322 {
297323 selectionStart = selectionEnd;
298324 cursorAndLayout.Invalidate();
325325+ moveSelection(amount, false);
326326+ }
327327+328328+ /// <summary>
329329+ /// Expand the current selection by the signed <paramref name="amount"/>.
330330+ /// </summary>
331331+ protected void ExpandSelectionBy(int amount)
332332+ {
333333+ moveSelection(amount, true);
334334+ }
335335+336336+ /// <summary>
337337+ /// If there is a selection, delete the selected text.
338338+ /// Otherwise, delete characters from the cursor position by the signed <paramref name="amount"/>.
339339+ /// A negative amount represents a backward deletion, and a positive amount represents a forward deletion.
340340+ /// </summary>
341341+ protected void DeleteBy(int amount)
342342+ {
343343+ if (selectionLength == 0)
344344+ selectionEnd = Math.Clamp(selectionStart + amount, 0, text.Length);
345345+346346+ if (selectionLength > 0)
347347+ {
348348+ string removedText = removeSelection();
349349+ OnUserTextRemoved(removedText);
350350+ }
351351+ }
352352+353353+ internal override void UpdateClock(IFrameBasedClock clock)
354354+ {
355355+ base.UpdateClock(clock);
356356+ textUpdateScheduler.UpdateClock(Clock);
299357 }
300358301359 protected override void Dispose(bool isDisposing)
+47
osu.Framework/Input/PlatformAction.cs
···11+// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
22+// See the LICENCE file in the repository root for full licence text.
33+44+namespace osu.Framework.Input
55+{
66+ public enum PlatformAction
77+ {
88+ Cut,
99+ Copy,
1010+ Paste,
1111+ Delete,
1212+ SelectAll,
1313+ Save,
1414+ Undo,
1515+ Redo,
1616+ Exit,
1717+ MoveToListStart,
1818+ MoveToListEnd,
1919+ DocumentPrevious,
2020+ DocumentNext,
2121+ DocumentClose,
2222+ TabNew,
2323+ TabRestore,
2424+2525+ // Text edit specific actions
2626+ MoveBackwardChar,
2727+ MoveForwardChar,
2828+ DeleteBackwardChar,
2929+ DeleteForwardChar,
3030+ SelectBackwardChar,
3131+ SelectForwardChar,
3232+3333+ MoveBackwardWord,
3434+ MoveForwardWord,
3535+ DeleteBackwardWord,
3636+ DeleteForwardWord,
3737+ SelectBackwardWord,
3838+ SelectForwardWord,
3939+4040+ MoveBackwardLine,
4141+ MoveForwardLine,
4242+ DeleteBackwardLine,
4343+ DeleteForwardLine,
4444+ SelectBackwardLine,
4545+ SelectForwardLine,
4646+ }
4747+}
···10011001 /// </summary>
10021002 public virtual IEnumerable<KeyBinding> PlatformKeyBindings => new[]
10031003 {
10041004- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.X), new PlatformAction(PlatformActionType.Cut)),
10051005- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.C), new PlatformAction(PlatformActionType.Copy)),
10061006- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.V), new PlatformAction(PlatformActionType.Paste)),
10071007- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.A), new PlatformAction(PlatformActionType.SelectAll)),
10081008- new KeyBinding(InputKey.Left, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Move)),
10091009- new KeyBinding(InputKey.Right, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Move)),
10101010- new KeyBinding(InputKey.BackSpace, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
10111011- new KeyBinding(InputKey.Delete, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Delete)),
10121012- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Select)),
10131013- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Select)),
10141014- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
10151015- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Move)),
10161016- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Move)),
10171017- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.BackSpace), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Delete)),
10181018- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Delete), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Delete)),
10191019- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Select)),
10201020- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Select)),
10211021- new KeyBinding(InputKey.Home, new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Move)),
10221022- new KeyBinding(InputKey.End, new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Move)),
10231023- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Home), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Select)),
10241024- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.End), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Select)),
10251025- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.PageUp), new PlatformAction(PlatformActionType.DocumentPrevious)),
10261026- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.PageDown), new PlatformAction(PlatformActionType.DocumentNext)),
10271027- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentNext)),
10281028- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentPrevious)),
10291029- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.W), new PlatformAction(PlatformActionType.DocumentClose)),
10301030- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.F4), new PlatformAction(PlatformActionType.DocumentClose)),
10311031- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.T), new PlatformAction(PlatformActionType.TabNew)),
10321032- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.T), new PlatformAction(PlatformActionType.TabRestore)),
10331033- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.S), new PlatformAction(PlatformActionType.Save)),
10341034- new KeyBinding(InputKey.Home, new PlatformAction(PlatformActionType.ListStart, PlatformActionMethod.Move)),
10351035- new KeyBinding(InputKey.End, new PlatformAction(PlatformActionType.ListEnd, PlatformActionMethod.Move)),
10361036- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Z), new PlatformAction(PlatformActionType.Undo)),
10371037- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Z), new PlatformAction(PlatformActionType.Redo)),
10041004+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.X), PlatformAction.Cut),
10051005+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.C), PlatformAction.Copy),
10061006+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.V), PlatformAction.Paste),
10071007+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.A), PlatformAction.SelectAll),
10081008+ new KeyBinding(InputKey.Left, PlatformAction.MoveBackwardChar),
10091009+ new KeyBinding(InputKey.Right, PlatformAction.MoveForwardChar),
10101010+ new KeyBinding(InputKey.BackSpace, PlatformAction.DeleteBackwardChar),
10111011+ new KeyBinding(InputKey.Delete, PlatformAction.DeleteForwardChar),
10121012+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardChar),
10131013+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardChar),
10141014+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), PlatformAction.DeleteBackwardChar),
10151015+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Left), PlatformAction.MoveBackwardWord),
10161016+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Right), PlatformAction.MoveForwardWord),
10171017+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.BackSpace), PlatformAction.DeleteBackwardWord),
10181018+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Delete), PlatformAction.DeleteForwardWord),
10191019+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardWord),
10201020+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardWord),
10211021+ new KeyBinding(InputKey.Home, PlatformAction.MoveBackwardLine),
10221022+ new KeyBinding(InputKey.End, PlatformAction.MoveForwardLine),
10231023+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Home), PlatformAction.SelectBackwardLine),
10241024+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.End), PlatformAction.SelectForwardLine),
10251025+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.PageUp), PlatformAction.DocumentPrevious),
10261026+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.PageDown), PlatformAction.DocumentNext),
10271027+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), PlatformAction.DocumentNext),
10281028+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), PlatformAction.DocumentPrevious),
10291029+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.W), PlatformAction.DocumentClose),
10301030+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.F4), PlatformAction.DocumentClose),
10311031+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.T), PlatformAction.TabNew),
10321032+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.T), PlatformAction.TabRestore),
10331033+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.S), PlatformAction.Save),
10341034+ new KeyBinding(InputKey.Home, PlatformAction.MoveToListStart),
10351035+ new KeyBinding(InputKey.End, PlatformAction.MoveToListEnd),
10361036+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Z), PlatformAction.Undo),
10371037+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Z), PlatformAction.Redo),
10381038+ new KeyBinding(InputKey.Delete, PlatformAction.Delete),
10381039 };
1039104010401041 /// <summary>
+37-36
osu.Framework/Platform/MacOS/MacOSGameHost.cs
···73737474 public override IEnumerable<KeyBinding> PlatformKeyBindings => new[]
7575 {
7676- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.X), new PlatformAction(PlatformActionType.Cut)),
7777- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.C), new PlatformAction(PlatformActionType.Copy)),
7878- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.V), new PlatformAction(PlatformActionType.Paste)),
7979- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.A), new PlatformAction(PlatformActionType.SelectAll)),
8080- new KeyBinding(InputKey.Left, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Move)),
8181- new KeyBinding(InputKey.Right, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Move)),
8282- new KeyBinding(InputKey.BackSpace, new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
8383- new KeyBinding(InputKey.Delete, new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Delete)),
8484- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Select)),
8585- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Select)),
8686- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), new PlatformAction(PlatformActionType.CharPrevious, PlatformActionMethod.Delete)),
8787- new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Delete), new PlatformAction(PlatformActionType.CharNext, PlatformActionMethod.Delete)),
8888- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Move)),
8989- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Move)),
9090- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.BackSpace), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Delete)),
9191- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Delete), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Delete)),
9292- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.WordPrevious, PlatformActionMethod.Select)),
9393- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.WordNext, PlatformActionMethod.Select)),
9494- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Left), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Move)),
9595- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Right), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Move)),
9696- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.BackSpace), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Delete)),
9797- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Delete), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Delete)),
9898- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Left), new PlatformAction(PlatformActionType.LineStart, PlatformActionMethod.Select)),
9999- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Right), new PlatformAction(PlatformActionType.LineEnd, PlatformActionMethod.Select)),
100100- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Left), new PlatformAction(PlatformActionType.DocumentPrevious)),
101101- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Right), new PlatformAction(PlatformActionType.DocumentNext)),
102102- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.W), new PlatformAction(PlatformActionType.DocumentClose)),
103103- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.T), new PlatformAction(PlatformActionType.TabNew)),
104104- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.T), new PlatformAction(PlatformActionType.TabRestore)),
105105- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentNext)),
106106- new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), new PlatformAction(PlatformActionType.DocumentPrevious)),
107107- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.S), new PlatformAction(PlatformActionType.Save)),
108108- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Up), new PlatformAction(PlatformActionType.ListStart, PlatformActionMethod.Move)),
109109- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Down), new PlatformAction(PlatformActionType.ListEnd, PlatformActionMethod.Move)),
110110- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Z), new PlatformAction(PlatformActionType.Undo)),
111111- new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Z), new PlatformAction(PlatformActionType.Redo)),
7676+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.X), PlatformAction.Cut),
7777+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.C), PlatformAction.Copy),
7878+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.V), PlatformAction.Paste),
7979+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.A), PlatformAction.SelectAll),
8080+ new KeyBinding(InputKey.Left, PlatformAction.MoveBackwardChar),
8181+ new KeyBinding(InputKey.Right, PlatformAction.MoveForwardChar),
8282+ new KeyBinding(InputKey.BackSpace, PlatformAction.DeleteBackwardChar),
8383+ new KeyBinding(InputKey.Delete, PlatformAction.DeleteForwardChar),
8484+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardChar),
8585+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardChar),
8686+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.BackSpace), PlatformAction.DeleteBackwardChar),
8787+ new KeyBinding(new KeyCombination(InputKey.Shift, InputKey.Delete), PlatformAction.DeleteForwardChar),
8888+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Left), PlatformAction.MoveBackwardWord),
8989+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Right), PlatformAction.MoveForwardWord),
9090+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.BackSpace), PlatformAction.DeleteBackwardWord),
9191+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Delete), PlatformAction.DeleteForwardWord),
9292+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardWord),
9393+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardWord),
9494+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Left), PlatformAction.MoveBackwardLine),
9595+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Right), PlatformAction.MoveForwardLine),
9696+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.BackSpace), PlatformAction.DeleteBackwardLine),
9797+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Delete), PlatformAction.DeleteForwardLine),
9898+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Left), PlatformAction.SelectBackwardLine),
9999+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Right), PlatformAction.SelectForwardLine),
100100+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Left), PlatformAction.DocumentPrevious),
101101+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.Super, InputKey.Right), PlatformAction.DocumentNext),
102102+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.W), PlatformAction.DocumentClose),
103103+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.T), PlatformAction.TabNew),
104104+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.T), PlatformAction.TabRestore),
105105+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Tab), PlatformAction.DocumentNext),
106106+ new KeyBinding(new KeyCombination(InputKey.Control, InputKey.Shift, InputKey.Tab), PlatformAction.DocumentPrevious),
107107+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.S), PlatformAction.Save),
108108+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Up), PlatformAction.MoveToListStart),
109109+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Down), PlatformAction.MoveToListEnd),
110110+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Z), PlatformAction.Undo),
111111+ new KeyBinding(new KeyCombination(InputKey.Super, InputKey.Shift, InputKey.Z), PlatformAction.Redo),
112112+ new KeyBinding(new KeyCombination(InputKey.Delete), PlatformAction.Delete),
112113 };
113114 }
114115}
+1-1
osu.Framework/Platform/Windows/WindowsGameHost.cs
···66666767 public override IEnumerable<KeyBinding> PlatformKeyBindings => base.PlatformKeyBindings.Concat(new[]
6868 {
6969- new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.F4), new PlatformAction(PlatformActionType.Exit))
6969+ new KeyBinding(new KeyCombination(InputKey.Alt, InputKey.F4), PlatformAction.Exit)
7070 }).ToList();
71717272 protected override void Dispose(bool isDisposing)