Capture 'Alt' key when linking

Hi,
I have just inherited maintenance of a product built using the Northwoods.Go version 2.1.2.1. I think I have a general idea of how things work, but I can not figure out how to capture any additional key clicks when a link is being created. For example, I want to create a different kind of link when the user has the ‘Alt’ key pressed.
I need to create different links based upon whether any of the normal mouse modifier keys are pressed (Ctrl, Alt, Shift), or not.
What is the best way to do this.
Thanks.

Replace the standard linking tool with a custom one that overrides the GoToolLinking.DoNewLink method that does what you want. For example:
[Serializable]
public class CustomLinkingNewTool : GoToolLinkingNew {
public CustomLinkingNewTool(GoView view) : base(view) {}
public override void DoNewLink(IGoPort fromPort, IGoPort toPort) {
IGoLink link = null;
if (this.LastInput.Alt) { // create a CustomLink
CustomLink l = new CustomLink();
l.FromPort = fromPort;
l.ToPort = toPort;
this.View.Document.Add(l);
link = l;
} else { // create a link the usual way
link = this.View.CreateLink(fromPort, toPort);
}
if (link != null) { // success, and raise a GoView.LinkCreated event
this.TransactionResult = GoUndoManager.NewLinkName;
this.View.RaiseLinkCreated(link.GoObject);
} else {
this.TransactionResult = null;
}
}
}
// install new linking tool:
goView1.ReplaceMouseTool(typeof(GoToolLinkingNew), new CustomLinkingNewTool(goView1));