diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs index 83b5b83cb5..dcdf394d54 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs @@ -208,6 +208,7 @@ this.DisassemblerView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.Address, this.Instruction}); + this.DisassemblerView.FullRowSelect = true; this.DisassemblerView.GridLines = true; this.DisassemblerView.ItemCount = 0; this.DisassemblerView.Location = new System.Drawing.Point(6, 39); @@ -221,6 +222,7 @@ this.DisassemblerView.View = System.Windows.Forms.View.Details; this.DisassemblerView.Scroll += new System.Windows.Forms.ScrollEventHandler(this.DisassemblerView_Scroll); this.DisassemblerView.SizeChanged += new System.EventHandler(this.DisassemblerView_SizeChanged); + this.DisassemblerView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.DisassemblerView_KeyDown); // // Address // diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Disassembler.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Disassembler.cs index c7d080fb1d..b48baa89ae 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Disassembler.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Disassembler.cs @@ -160,5 +160,33 @@ namespace BizHawk.Client.EmuHawk SetDisassemblerItemCount(); Disassemble(); } + + private void DisassemblerView_KeyDown(object sender, KeyEventArgs e) + { + if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.C) // Ctrl + C + { + CopySelectedDisassembler(); + } + } + + private void CopySelectedDisassembler() + { + var indices = DisassemblerView.SelectedIndices; + + if (indices.Count > 0) + { + var blob = new StringBuilder(); + foreach (int index in indices) + { + blob.Append(DisassemblyLines[index].Address) + .Append(" ") + .Append(DisassemblyLines[index].Mnemonic) + .AppendLine(); + } + + blob.Remove(blob.Length - 2, 2); // Lazy way to not have a line break at the end + Clipboard.SetDataObject(blob.ToString()); + } + } } }