Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e5aa76e
Add Keyboard Shortcut Remapper
Cadlaxa May 3, 2026
13766a8
left out string
Cadlaxa May 3, 2026
a14684c
translate more oem symbols
Cadlaxa May 3, 2026
78d18cd
fix oem key mismatch for other platforms
Cadlaxa May 3, 2026
797e5e8
more fixes
Cadlaxa May 3, 2026
8c1346b
load external batch edits and legacy plugins to the shortcut list
Cadlaxa May 5, 2026
e5c6395
include built-in batch note, lyrics, reset functions and add dynamic …
Cadlaxa May 5, 2026
7465b6e
reworked shortcuts design
Cadlaxa May 5, 2026
bd55d65
fix ghost data
Cadlaxa May 5, 2026
d6508d2
fix ghost data and write missing default shortcuts
Cadlaxa May 6, 2026
cbb273d
fix macos cmd key
Cadlaxa May 7, 2026
b138477
Merge https://github.com/stakira/OpenUtau into keyboard-sc-remapper
Cadlaxa May 8, 2026
28c21e4
Fix key translator
Cadlaxa May 8, 2026
1f8ec55
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa May 20, 2026
fc6a82d
Fix tag location got lost
Cadlaxa May 20, 2026
53aec44
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa May 23, 2026
28ed133
Fixes to Macos keybinds
Cadlaxa May 23, 2026
e77d982
Fix Shortcut Key (wip)
maiko3tattun May 24, 2026
43495be
Fix Shortct Key (wip2)
maiko3tattun May 24, 2026
ca434d4
Support multiple key, add, delete
May 25, 2026
b3fefb8
support external batch edit
May 31, 2026
674ffb4
fix mac key name
May 31, 2026
6b6d6a5
Apply key binding to Main Window
May 31, 2026
eb7b942
support legacy plugin
May 31, 2026
b7fcfb2
fix key event
May 31, 2026
a0195df
Merge pull request #6 from maiko3tattun/260524_FixShortcut
Cadlaxa Jun 4, 2026
463fe93
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa Jun 4, 2026
bae9d2c
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa Jun 6, 2026
788666c
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa Jun 14, 2026
ea6c17b
Merge branch 'master' of https://github.com/stakira/OpenUtau into key…
Cadlaxa Jun 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions OpenUtau.Core/Util/Preferences.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,15 @@ public static class Preferences {
static Preferences() {
Load();
}
public class ShortcutBinding {
public string ActionId { get; set; }
public string[] Shortcuts { get; set; }

public ShortcutBinding(string actionId, string[] shortcuts) {
ActionId = actionId;
Shortcuts = shortcuts;
}
}
public static void Save() {
try {
File.WriteAllText(PathManager.Inst.PrefsFilePath,
Expand Down Expand Up @@ -216,6 +224,8 @@ public class SerializablePreferences {
public bool LockUnselectedNotesPitch = true;
public bool LockUnselectedNotesVibrato = true;
public bool LockUnselectedNotesExpressions = true;
public ShortcutBinding[] Shortcuts = [];
public ShortcutBinding[] PluginShortcuts = [];
public bool LyricLivePreview = true;
public bool LyricApplySelectionOnly = true;
public bool VoicebankPublishUseIgnore = true;
Expand Down
422 changes: 333 additions & 89 deletions OpenUtau/Controls/PianoRoll.axaml

Large diffs are not rendered by default.

756 changes: 192 additions & 564 deletions OpenUtau/Controls/PianoRoll.axaml.cs

Large diffs are not rendered by default.

132 changes: 110 additions & 22 deletions OpenUtau/Strings/Strings.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ Warning: this option removes custom presets.</system:String>
<system:String x:Key="pianoroll.menu.notes.reset.pitchbends">Reset pitch bends</system:String>
<system:String x:Key="pianoroll.menu.notes.reset.vibratos">Reset vibratos</system:String>
<system:String x:Key="pianoroll.menu.part">Part</system:String>
<system:String x:Key="pianoroll.menu.part.legacypluginexp">Legacy Plugin (Experimental)</system:String>
<system:String x:Key="pianoroll.menu.part.legacypluginexp">Legacy Plugin</system:String>
<system:String x:Key="pianoroll.menu.part.singer">Singer and Oto settings</system:String>
<system:String x:Key="pianoroll.menu.plugin.openfolder">Open folder</system:String>
<system:String x:Key="pianoroll.menu.plugin.reload">Reload</system:String>
Expand All @@ -501,53 +501,54 @@ Warning: this option removes custom presets.</system:String>
<system:String x:Key="pianoroll.menu.searchnote.prev">Prev</system:String>
<system:String x:Key="pianoroll.menu.searchnote.searchalias">Search Alias</system:String>
<system:String x:Key="pianoroll.snapdiv">Snap Division</system:String>
<system:String x:Key="pianoroll.toggle.finalpitch">View Final Pitch to Render (R)</system:String>
<system:String x:Key="pianoroll.toggle.noteparams">View Note Parameters (\)</system:String>
<system:String x:Key="pianoroll.toggle.phoneme">View Phonemes (O)</system:String>
<system:String x:Key="pianoroll.toggle.pitch">View Pitch Bend (I)</system:String>
<system:String x:Key="pianoroll.toggle.snap">Toggle Snap (P)</system:String>
<system:String x:Key="pianoroll.toggle.finalpitch">View Final Pitch to Render</system:String>
<system:String x:Key="pianoroll.toggle.noteparams">View Note Parameters</system:String>
<system:String x:Key="pianoroll.toggle.phoneme">View Phonemes</system:String>
<system:String x:Key="pianoroll.toggle.pitch">View Pitch Bend</system:String>
<system:String x:Key="pianoroll.toggle.snap">Toggle Snap</system:String>
<system:String x:Key="pianoroll.toggle.snap.auto">Auto</system:String>
<system:String x:Key="pianoroll.toggle.snap.autotriplet">Auto (triplet)</system:String>
<system:String x:Key="pianoroll.toggle.phonemizer">View Phonemizer Tags</system:String>
<system:String x:Key="pianoroll.toggle.tips">View Tips (T)</system:String>
<system:String x:Key="pianoroll.toggle.tone">Toggle Note Tone (Y)</system:String>
<system:String x:Key="pianoroll.toggle.vibrato">View Vibrato (U)</system:String>
<system:String x:Key="pianoroll.toggle.waveform">View Waveform (W)</system:String>
<system:String x:Key="pianoroll.toggle.expressions">View Expressions (L)</system:String>
<system:String x:Key="pianoroll.tool.drawlinepitch">Line Draw Pitch Tool (5)
<system:String x:Key="pianoroll.toggle.tips">View Tips</system:String>
<system:String x:Key="pianoroll.toggle.tone">Toggle Note Tone</system:String>
<system:String x:Key="pianoroll.toggle.vibrato">View Vibrato</system:String>
<system:String x:Key="pianoroll.toggle.waveform">View Waveform</system:String>
<system:String x:Key="pianoroll.toggle.expressions">View Expressions</system:String>
<system:String x:Key="pianoroll.tool.drawlinepitch">Line Draw Pitch Tool
Left click to draw (draw straight line)
Right click to reset
Hold Ctrl to select
Hold Alt to smoothen</system:String>
<system:String x:Key="pianoroll.tool.drawpitch">Draw Pitch Tool (4)
<system:String x:Key="pianoroll.tool.drawpitch">Draw Pitch Tool
Left click to draw
Right click to reset
Hold Ctrl to select
Hold Alt to smoothen</system:String>
<system:String x:Key="pianoroll.tool.eraser">Eraser Tool (3)</system:String>
<system:String x:Key="pianoroll.tool.knife">Knife Tool (5)</system:String>
<system:String x:Key="pianoroll.tool.overwritepitch">Overwrite Pitch Tool (4)
<system:String x:Key="pianoroll.tool.eraser">Eraser Tool</system:String>
<system:String x:Key="pianoroll.tool.knife">Knife Tool</system:String>
<system:String x:Key="pianoroll.tool.overwritepitch">Overwrite Pitch Tool
Left click to draw (overwrites vibrato or mod+)
Right click to reset
Hold Ctrl to select
Hold Alt to smoothen</system:String>
<system:String x:Key="pianoroll.tool.overwritelinepitch">Overwrite Line Pitch Tool (5)
<system:String x:Key="pianoroll.tool.overwritelinepitch">
Line Draw Pitch Tool
Left click to draw
(draw straight line overwrites the vibrato or mod+)
Hold Ctrl to draw sine curve
Hold Alt + Shift to tune S-curve
Hold Alt to draw S-curve
Right click to reset
Hold Ctrl to select
Hold Alt to smoothen</system:String>
<system:String x:Key="pianoroll.tool.penplus">Pen Plus Tool (Ctrl + 2)
Hold Alt to smoothen
</system:String>
<system:String x:Key="pianoroll.tool.penplus">Pen Plus Tool
Left click to draw
Right click to delete
Hold Ctrl to select</system:String>
<system:String x:Key="pianoroll.tool.penv2">Pen Tool (2)
<system:String x:Key="pianoroll.tool.penv2">Pen Tool
Left click to draw
Hold Ctrl to select</system:String>
<system:String x:Key="pianoroll.tool.selectionv2">Selection Tool (1)</system:String>
<system:String x:Key="pianoroll.tool.selectionv2">Selection Tool</system:String>
<system:String x:Key="pianoroll.tooltip.attack">Attack time delta</system:String>
<system:String x:Key="pianoroll.tooltip.overlap">Overlap</system:String>
<system:String x:Key="pianoroll.tooltip.preutter">Preutter</system:String>
Expand All @@ -563,6 +564,93 @@ Warning: this option removes custom presets.</system:String>
<system:String x:Key="prefs.advanced.stable">Stable</system:String>
<system:String x:Key="prefs.advanced.vlabelerpath">vLabeler Path</system:String>
<system:String x:Key="prefs.advanced.winepath">Wine Path (set to enable wine for compatibility)</system:String>

<system:String x:Key="prefs.shortcuts">Keyboard Shortcuts</system:String>
<system:String x:Key="prefs.shortcuts.listening">Press keys...</system:String>
<system:String x:Key="shortcut.PlayOrPause">Play / Pause</system:String>
<system:String x:Key="shortcut.PlaySelection">Play Selection</system:String>
<system:String x:Key="shortcut.ClearSelection">Clear Selection</system:String>
<system:String x:Key="shortcut.SelectAll">Select All</system:String>
<system:String x:Key="shortcut.DeselectAll">Deselect All</system:String>
<system:String x:Key="shortcut.CloseWindow">Close Window</system:String>
<system:String x:Key="shortcut.OpenPluginMenu">Open Plugin Menu</system:String>
<system:String x:Key="shortcut.EditLyrics">Edit Lyrics</system:String>
<system:String x:Key="shortcut.ToolSelect1">Selection Tool</system:String>
<system:String x:Key="shortcut.ToolSelect2Main">Pen Tool</system:String>
<system:String x:Key="shortcut.ToolSelect2Alt">Pen Tool (Alt)</system:String>
<system:String x:Key="shortcut.ToolSelect3">Eraser Tool</system:String>
<system:String x:Key="shortcut.ToolSelect4Main">Draw Pitch Tool</system:String>
<system:String x:Key="shortcut.ToolSelect4Overwrite">Overwrite Pitch Tool</system:String>
<system:String x:Key="shortcut.ToolSelect4Line">Draw Line Pitch Tool</system:String>
<system:String x:Key="shortcut.ToolSelect4LineOverwrite">Overwrite Line Pitch Tool</system:String>
<system:String x:Key="shortcut.ToolSelect5">Knife Tool</system:String>
<system:String x:Key="shortcut.ExpSelect1">Select Expression 1</system:String>
<system:String x:Key="shortcut.ExpSelect2">Select Expression 2</system:String>
<system:String x:Key="shortcut.ExpSelect3">Select Expression 3</system:String>
<system:String x:Key="shortcut.ExpSelect4">Select Expression 4</system:String>
<system:String x:Key="shortcut.ExpSelect5">Select Expression 5</system:String>
<system:String x:Key="shortcut.ExpSelect6">Select Expression 6</system:String>
<system:String x:Key="shortcut.ExpSelect7">Select Expression 7</system:String>
<system:String x:Key="shortcut.ExpSelect8">Select Expression 8</system:String>
<system:String x:Key="shortcut.ExpSelect9">Select Expression 9</system:String>
<system:String x:Key="shortcut.ExpSelect10">Select Expression 10</system:String>
<system:String x:Key="shortcut.ToggleFinalPitch">Toggle Final Pitch View</system:String>
<system:String x:Key="shortcut.ToggleTips">Toggle Tips View</system:String>
<system:String x:Key="shortcut.ToggleVibrato">Toggle Vibrato View</system:String>
<system:String x:Key="shortcut.TogglePitch">Toggle Pitch View</system:String>
<system:String x:Key="shortcut.TogglePhoneme">Toggle Phoneme View</system:String>
<system:String x:Key="shortcut.ToggleExpressions">Toggle Expressions View</system:String>
<system:String x:Key="shortcut.ToggleSnap">Toggle Snap</system:String>
<system:String x:Key="shortcut.OpenSnapMenu">Open Snap Menu</system:String>
<system:String x:Key="shortcut.ToggleNoteParams">Toggle Note Parameters View</system:String>
<system:String x:Key="shortcut.TogglePlayTone">Toggle Play Tone</system:String>
<system:String x:Key="shortcut.ToggleWaveform">Toggle Waveform View</system:String>
<system:String x:Key="shortcut.TransposeUp">Transpose Up</system:String>
<system:String x:Key="shortcut.TransposeOctaveUp">Transpose Octave Up</system:String>
<system:String x:Key="shortcut.TransposeDown">Transpose Down</system:String>
<system:String x:Key="shortcut.TransposeOctaveDown">Transpose Octave Down</system:String>
<system:String x:Key="shortcut.MoveCursorLeft">Move Cursor Left</system:String>
<system:String x:Key="shortcut.ResizeNotesLeft">Resize Notes Left</system:String>
<system:String x:Key="shortcut.MoveNotesLeft">Move Notes Left</system:String>
<system:String x:Key="shortcut.ExtendSelectionLeft">Extend Selection Left</system:String>
<system:String x:Key="shortcut.MoveCursorRight">Move Cursor Right</system:String>
<system:String x:Key="shortcut.ResizeNotesRight">Resize Notes Right</system:String>
<system:String x:Key="shortcut.MoveNotesRight">Move Notes Right</system:String>
<system:String x:Key="shortcut.ExtendSelectionRight">Extend Selection Right</system:String>
<system:String x:Key="shortcut.PastePlain">Paste as Plain Notes</system:String>
<system:String x:Key="shortcut.PasteParameters">Paste Parameters</system:String>
<system:String x:Key="shortcut.InsertNote">Insert Note</system:String>
<system:String x:Key="shortcut.MergeNotes">Merge Selected Notes</system:String>
<system:String x:Key="shortcut.PlayheadHome">Move Playhead to Start</system:String>
<system:String x:Key="shortcut.SelectToStart">Extend Selection to Start</system:String>
<system:String x:Key="shortcut.PlayheadEnd">Move Playhead to End</system:String>
<system:String x:Key="shortcut.SelectToEnd">Extend Selection to End</system:String>
<system:String x:Key="shortcut.PlayheadLeft">Move Playhead Left</system:String>
<system:String x:Key="shortcut.PlayheadToSelectionStart">Move Playhead to Selection Start</system:String>
<system:String x:Key="shortcut.PlayheadToViewStart">Move Playhead to View Start</system:String>
<system:String x:Key="shortcut.PlayheadRight">Move Playhead Right</system:String>
<system:String x:Key="shortcut.PlayheadToSelectionEnd">Move Playhead to Selection End</system:String>
<system:String x:Key="shortcut.PlayheadToViewEnd">Move Playhead to View End</system:String>
<system:String x:Key="shortcut.ScrollLeft">Scroll Left</system:String>
<system:String x:Key="shortcut.ScrollRight">Scroll Right</system:String>
<system:String x:Key="shortcut.ScrollUp">Scroll Up</system:String>
<system:String x:Key="shortcut.ScrollDown">Scroll Down</system:String>
<system:String x:Key="shortcut.ZoomIn">Zoom In</system:String>
<system:String x:Key="shortcut.ZoomOut">Zoom Out</system:String>
<system:String x:Key="shortcut.SaveProject">Save Project</system:String>
<system:String x:Key="shortcut.SaveProjectAs">Save Project As</system:String>
<system:String x:Key="shortcut.NewProject">New Project</system:String>
<system:String x:Key="shortcut.OpenProject">Open Project</system:String>
<system:String x:Key="shortcut.SoloTrack">Solo Track</system:String>
<system:String x:Key="shortcut.MuteTrack">Mute Track</system:String>
<system:String x:Key="shortcut.FocusSelection">Focus Selection</system:String>
<system:String x:Key="shortcut.SearchNote">Search Note</system:String>
<system:String x:Key="shortcut.MoveToNextPart">Move to Next Track's Part</system:String>
<system:String x:Key="shortcut.MoveToPrevPart">Move to Previous Track's Part</system:String>
<system:String x:Key="prefs.shortcut.tooltip">Left click to change. Right click to reset.</system:String>
<system:String x:Key="prefs.shortcut.search.watermark">Search by name or key...</system:String>
<system:String x:Key="prefs.shortcuts.duplicate">The shortcut '{0}' is already assigned to '{1}'.</system:String>

<system:String x:Key="prefs.appearance">Appearance</system:String>
<system:String x:Key="prefs.appearance.degree">Scale degree display style</system:String>
<system:String x:Key="prefs.appearance.degree.numbered">Numbered (1 2 3 4 5 6 7)</system:String>
Expand Down
Loading
Loading