Index: trunk/src/pcb-menu-lesstif.lht =================================================================== --- trunk/src/pcb-menu-lesstif.lht (nonexistent) +++ trunk/src/pcb-menu-lesstif.lht (revision 1462) @@ -0,0 +1,425 @@ +ha:{ + li:mouse { + li:left { + li:press = { Mode(Notify) } + li:release = { Mode(Release) } + } + li:right { + li:press = { Mode(Save); Mode(Rotate); Mode(Notify); Mode(Release); Mode(Restore); } + li:press-ctrl = { Display(CycleCrosshair) } + } + li:middle { + li:press = { Pan(1) } + li:release = { Pan(0) } + li:press-ctrl = { Pan(thumb,1) } + li:release-ctrl = { Pan(thumb,0) } + } + li:up { + li:press = { Zoom(0.8) } + } + li:down { + li:press = { Zoom(1.25) } + } + #If you want zoom to center, do this instead. + #in up: + #li:press = {Zoom(0.8); Center()} + #in down: + #li:perss = {Zoom(1.25); Center()} + } + + li:main_menu { + ha:File = { + li:submenu { + ha:About... = { action=About() } + ha:Save layout = { m=S; a=Ctrls; action=Save(Layout) } + ha:Save layout as... = { m=A; a=Shift Ctrls; action=Save(LayoutAs) } + ha:Revert = { action=Load(Revert,none) } + ha:Import Schematics = { action=Import() } + ha:Load layout = { action=Load(Layout) } + ha:Load element data to paste-buffer = { li:action={PasteBuffer(Clear); Load(ElementTobuffer)} } + ha:Load layout data to paste-buffer = { li:action={PasteBuffer(Clear); Load(LayoutTobuffer)} } + ha:Load netlist file = { action=Load(Netlist) } + ha:Load vendor resource file = { action=LoadVendor() } + ha:Print layout... = { action=Print() } + ha:Export layout... = { action=Export() } + ha:Calibrate Printer... = { action=PrintCalibrate() } + - + ha:Save connection data of... = { foreground=grey50; sensitive=false } + ha: a single element = { li:action={GetXY(Click to set the element mark <>); Save(ElementConnections)} } + ha: all elements = { action=Save(AllConnections) } + ha: unused pins = { action=Save(AllUnusedPins) } + - + ha:Start new layout = { a=Ctrln; action=New() } + - + ha:Quit Program = { m=Q; a=Ctrlq; action=Quit() } + } + } # File + + ha:View { + li:submenu { + ha:Flip up/down = { checked=flip_y; a=Tab; action=SwapSides(V) } + ha:Flip left/right = { checked=flip_x; a=ShiftTab; action=SwapSides(H) } + ha:Spin 180° = { a=CtrlTab; action=SwapSides(R) } + ha:Swap Sides = { a=Ctrl ShiftTab; action=SwapSides() } + ha:Center cursor = { a=c; action=Center() } + ha:Show soldermask = { checked=showmask; action=Display(ToggleMask) } + - + ha:Displayed element-name... = { foreground=grey50; sensitive=false } + ha:Description = { checked=elementname,1; action=Display(Description) } + ha:Reference Designator = { checked=elementname,2; action=Display(NameOnPCB) } + ha:Value = { checked=elementname,3; action=Display(Value) } + ha:Lock Names = { checked=locknames; action=Display(ToggleLockNames) } + ha:Only Names = { checked=onlynames; action=Display(ToggleOnlyNames) } + ha:Hide Names = { checked=hidenames; action=Display(ToggleHideNames) } + - + ha:Pinout shows number = { checked=shownumber; action=Display(ToggleName) } + ha:Open pinout menu = { a=Shiftd; action=Display(Pinout) } + ha:Zoom { + li:submenu { + ha:Zoom In 2X = { action=Zoom(-2) } + ha:Zoom In 20% = { m=Z; a=z; action=Zoom(-1.2) } + ha:Zoom Out 20% = { m=O; a=Shiftz; action=Zoom(+1.2); } + ha:Zoom Out 2X = { action=Zoom(+2) } + ha:Zoom Max = { m=M; a=v; action=Zoom() } + ha:Zoom Toggle = { a=`; action=Zoom(Toggle) } + - + ha:Zoom to 0.1mil\/px = { action={Zoom(=0.1mil)} } + ha:Zoom to 0.01mm\/px = { action={Zoom(=0.01mil)} } + ha:Zoom to 1mil\/px = { action={Zoom(=1mil)} } + ha:Zoom to 0.05mm\/px = { action={Zoom(=0.05mm)} } + ha:Zoom to 2.5mil\/px = { action={Zoom(=2.5mil)} } + ha:Zoom to 0.1mm\/px = { action={Zoom(=0.1mm)} } + ha:Zoom to 10mil\/px = { action={Zoom(=10mil)} } + } + } + ha:Grid { + li:submenu { + ha:mil = { checked=grid_units_mil,1; action=SetUnits(mil) } + ha:mm = { checked=grid_units_mm,1; action=SetUnits(mm) } + ha:Display grid = { checked=drawgrid; action=Display(Grid) } + ha:Realign grid = { li:action={GetXY(Click to set the grid origin); Display(ToggleGrid)} } + ha:No Grid = { checked=grid,0; action=SetValue(Grid,1) } + - + ha:0.1 mil = { checked=gridsize,0.1mil; li:action={SetUnits(mil); SetValue(Grid,0.1mil)} } + ha:1 mil = { checked=gridsize,1mil; li:action={SetUnits(mil); SetValue(Grid,1mil)} } + ha:5 mil = { checked=gridsize,5mil; li:action={SetUnits(mil); SetValue(Grid,5mil)} } + ha:10 mil = { checked=gridsize,10mil; li:action={SetUnits(mil); SetValue(Grid,10mil)} } + ha:25 mil = { checked=gridsize,25mil; li:action={SetUnits(mil); SetValue(Grid,25mil)} } + ha:50 mil = { checked=gridsize,50mil; li:action={SetUnits(mil); SetValue(Grid,50mil)} } + ha:100 mil = { checked=gridsize,100mil; li:action={SetUnits(mil); SetValue(Grid,100mil)} } + - + ha:0.01 mm = { checked=gridsize,0.01mm; li:action={SetUnits(mm); SetValue(Grid,0.01mm)} } + ha:0.05 mm = { checked=gridsize,0.05mm; li:action={SetUnits(mm); SetValue(Grid,0.05mm)} } + ha:0.1 mm = { checked=gridsize,0.10mm; li:action={SetUnits(mm); SetValue(Grid,0.1mm)} } + ha:0.25 mm = { checked=gridsize,0.25mm; li:action={SetUnits(mm); SetValue(Grid,0.25mm)} } + ha:0.5 mm = { checked=gridsize,0.50mm; li:action={SetUnits(mm); SetValue(Grid,0.5mm)} } + ha:1 mm = { checked=gridsize,1mm; li:action={SetUnits(mm); SetValue(Grid,1mm)} } + - + ha:Grid -5mil = { a=Shiftg; action=SetValue(Grid,-5,mil) } + ha:Grid +5mil = { a=g; action=SetValue(Grid,+5,mil) } + ha:Grid -0.05mm = { a=Shift Ctrlg; action=SetValue(Grid,-0.05,mm) } + ha:Grid +0.05mm = { a=Ctrlg; action=SetValue(Grid,+0.05,mm) } + } + } + - + ha:Shown Layers { + li:submenu { + @layerview + - + ha:Edit Layer Groups = { action=EditLayerGroups() } + } + } + ha:Current Layer { + li:submenu { + @layerpick + - + ha:Delete current layer = { action=MoveLayer(c,-1) } + ha:Add new layer = { action=MoveLayer(-1,c) } + ha:Move current layer up = { action=MoveLayer(c,up) } + ha:Move current layer down = { action=MoveLayer(c,down) } + } + } + } + } # View + + ha:Edit { + li:submenu { + ha:Undo last operation = { a=u; action=Undo() } + ha:Redo last undone operation = { a=Shiftr; action=Redo() } + ha:Clear undo-buffer = { a=Shift Ctrlu; action=Undo(ClearList); } + - + ha:Cut selection to buffer = { a=Ctrlx; li:action={GetXY(Click to set the snap point for this buffer); PasteBuffer(Clear); PasteBuffer(AddSelected); RemoveSelected(); Mode(PasteBuffer)} } + ha:Copy selection to buffer = { a=Ctrlc; li:action={GetXY(Click to set the snap point for this buffer); PasteBuffer(Clear); PasteBuffer(AddSelected); Mode(PasteBuffer)} } + ha:Paste buffer to layout = { a=Ctrlv; action=Mode(PasteBuffer) } + - + ha:Unselect all = { a=Shift Alta; action=Unselect(All) } + ha:Select all visible = { a=Alta; action=Select(All) } + - + ha:Edit Names... = { foreground=grey50; sensitive=false } + ha: Change text on layout = { a=n; action=ChangeName(Object) } + ha: Change text on layout = { a=Shift Ctrln; action=ChangeName(Object, Number) } + ha: Edit name of layout = { action=ChangeName(Layout) } + ha: Edit name of active layer = { action=ChangeName(Layer) } + ha:Edit Attributes... = { foreground=grey50; sensitive=false } + ha: Layout = { action=Attributes(Layout) } + ha: CurrentLayer = { action=Attributes(Layer) } + ha: Element = { action=Attributes(Element) } + - + ha:Board Sizes = { action=AdjustSizes() } + ha:Route Styles { + li:submenu { + @routestyles + - + ha:Edit... = { action=AdjustStyle(0) } + } + } + } + } # Edit + + ha:Tools { + li:submenu { + ha:None = { checked=nomode,1; action=Mode(None) } + ha:Via = { checked=viamode,1; a=F1; action=Mode(Via) } + ha:Line = { checked=linemode,1; a=F2; action=Mode(Line) } + ha:Arc = { checked=arcmode,1; a=F3; action=Mode(Arc) } + ha:Text = { checked=textmode,1; a=F4; action=Mode(Text) } + ha:Rectangle = { checked=rectanglemode,1; a=F5; action=Mode(Rectangle) } + ha:Polygon = { checked=polygonmode,1; a=F6; action=Mode(Polygon) } + ha:Polygon Hole = { checked=polygonholemode,1; action=Mode(PolygonHole); } + ha:Buffer = { checked=pastebuffermode,1; a=F7; action=Mode(PasteBuffer) } + ha:Remove = { checked=removemode,1; a=F8; action=Mode(Remove) } + ha:Rotate = { checked=rotatemode,1; a=F9; action=Mode(Rotate) } + ha:Thermal = { checked=thermalmode,1; a=F10; action=Mode(Thermal) } + ha:Arrow = { checked=arrowmode,1; a=F11; action=Mode(Arrow) } + ha:Insert Point = { checked=insertpointmode,1; a=Insert; action=Mode(InsertPoint) } + ha:Move = { checked=movemode,1; action=Mode(Move) } + ha:Copy = { checked=copymode,1; action=Mode(Copy) } + ha:Lock = { checked=lockmode,1; a=F12; action=Mode(Lock) } + ha:Cancel = { a=Escape; action=Mode(Cancel) } + ha:Command = { a={:}; action=Command() } + } + } # Tools + + ha:Settings { + li:submenu { + ha:Layer groups = { foreground=grey50; sensitive=false } + ha:Edit layer groupings = { action=EditLayerGroups() } + ha:'All-direction' lines = { checked=alldirection; a=.; action=Display(Toggle45Degree) } + ha:Auto swap line start angle = { checked=swapstartdir; action=Display(ToggleStartDirection) } + ha:Orthogonal moves = { checked=orthomove; action=Display(ToggleOrthoMove) } + ha:Crosshair snaps to pins and pads = { checked=snappin; action=Display(ToggleSnapPin) } + ha:Crosshair snaps to off-grid points on lines = { checked=snapoffgridline; action=Display(ToggleSnapOffGridLine) } + ha:Crosshair shows DRC clearance = { checked=showdrc; action=Display(ToggleShowDRC) } + ha:Auto enforce DRC clearance = { checked=autodrc; action=Display(ToggleAutoDRC) } + ha:Rubber band mode = { checked=rubberband; action=Display(ToggleRubberBandMode) } + ha:Require unique element names = { checked=uniquename; action=Display(ToggleUniqueNames) } + ha:Auto-zero delta measurements = { checked=localref; action=Display(ToggleLocalRef) } + ha:New lines, arcs clear polygons = { checked=clearnew; action=Display(ToggleClearLine) } + ha:New polygons are full ones = { checked=newfullpoly; action=Display(ToggleFullPoly) } + ha:Show autorouter trials = { checked=liveroute; action=Display(ToggleLiveRoute) } + ha:Highlighting on line, arc points = { checked=highlightonpoint; action=Display(ToggleHighlightOnPoint) } + ha:Thin draw = { checked=thindraw; a=|; action=Display(ToggleThindraw) } + ha:Thin draw poly = { checked=thindrawpoly; a=Ctrl Shiftp; action=Display(ToggleThindrawPoly) } + ha:Check polygons = { checked=checkplanes; action=Display(ToggleCheckPlanes) } + ha:Pinout shows number = { checked=shownumber; action=Display(ToggleName) } + ha:Pins/Via show Name/Number = { a=d; action=Display(PinOrPadName) } + ha:Enable vendor drill mapping = { checked=VendorMapOn; action=ToggleVendor() } + ha:Import Settings { + li:submenu { + ha:New elements added at... = { foreground=grey50; sensitive=false } + ha: Center = { action=Import(setnewpoint,center) } + ha: Mark = { action=Import(setnewpoint,mark) } + ha: Crosshair = { action=Import(setnewpoint) } + ha:Set Dispersion = { action=Import(setdisperse) } + } + } + } + } # Settings + + ha:Select { + li:submenu { + ha:Select all visible objects = { action=Select(All) } + ha:Select all connected objects = { action=Select(Connection) } + ha:Unselect all objects = { action=Unselect(All) } + ha:unselect all connected objects = { action=Unselect(Connection) } + ha:Select by name = { foreground=grey50; sensitive=false } + ha:All objects = { active=have_regex; action=Select(ObjectByName) } + ha:Elements = { active=have_regex; action=Select(ElementByName) } + ha:Pads = { active=have_regex; action=Select(PadByName) } + ha:Pins = { active=have_regex; action=Select(PinByName) } + ha:Text Objects = { active=have_regex; action=Select(TextByName) } + ha:Vias = { active=have_regex; action=Select(ViaByName) } + ha:Auto-place selected elements = { a=Ctrlp; action=AutoPlaceSelected() } + ha:Disperse all elements = { action=DisperseElements(All) } + ha:Move selected elements to other side = { a=Shiftb; action=Flip(SelectedElements) } + ha:Move selected to current layer = { a=Shiftm; action=MoveToCurrentLayer(Selected) } + ha:Delete selected objects = { a=Delete; action=Delete(Selected) } + ha:Convert selection to element = { action=Select(Convert) } + ha:Optimize selected rats = { li:action={DeleteRats(SelectedRats); AddRats(SelectedRats)} } + ha:Auto-route selected rats = { a=Altr; action=AutoRoute(SelectedRats) } + ha:Rip up selected auto-routed tracks = { action=RipUp(Selected) } + ha:Change size of selected objects = { foreground=grey50; sensitive=false } + ha:ChangeSizes to Route style = { a=Shifty; action=ChangeSizes(Object,style,mil); } + ha:Lines -10 mil = { li:action={ChangeSize(SelectedLines,-10,mil); ChangeSize(SelectedArcs,-10,mil)} } + ha:Lines +10 mil = { li:action={ChangeSize(SelectedLines,+10,mil); ChangeSize(SelectedArcs,+10,mil)} } + ha:Pads -10 mil = { action=ChangeSize(SelectedPads,-10,mil) } + ha:Pads +10 mil = { action=ChangeSize(SelectedPads,+10,mil) } + ha:Pins -10 mil = { action=ChangeSize(SelectedPins,-10,mil) } + ha:Pins +10 mil = { action=ChangeSize(SelectedPins,+10,mil) } + ha:Texts -10 mil = { action=ChangeSize(SelectedTexts,-10,mil) } + ha:Texts +10 mil = { action=ChangeSize(SelectedTexts,+10,mil) } + ha:Vias -10 mil = { action=ChangeSize(SelectedVias,-10,mil) } + ha:Vias +10 mil = { action=ChangeSize(SelectedVias,+10,mil) } + ha:Change drilling hole of selected objects = { foreground=grey50; sensitive=false } + ha:Vias -10 mil = { action=ChangeDrillSize(SelectedVias,-10,mil) } + ha:Vias +10 mil = { action=ChangeDrillSize(SelectedVias,+10,mil) } + ha:Pins -10 mil = { action=ChangeDrillSize(SelectedPins,-10,mil) } + ha:Pins +10 mil = { action=ChangeDrillSize(SelectedPins,+10,mil) } + ha:Change square-flag of selected objects = { foreground=grey50; sensitive=false } + ha:Elements = { action=ChangeSquare(SelectedElements) } + ha:Pins = { action=ChangeSquare(SelectedPins) } + } + } # Select + + + ha:Buffer { + li:submenu { + ha:Copy selection to buffer = { li:action={GetXY(Click to set the snap point for this buffer); PasteBuffer(Clear); PasteBuffer(AddSelected); Mode(PasteBuffer)} } + ha:Cut selection to buffer = { li:action={GetXY(Click to set the snap point for this buffer); PasteBuffer(Clear); PasteBuffer(AddSelected); RemoveSelected(); Mode(PasteBuffer)} } + ha:Paste buffer to layout = { action=Mode(PasteBuffer) } + ha:Rotate buffer 90 deg CCW = { a=ShiftF7; li:action={Mode(PasteBuffer); PasteBuffer(Rotate,1)} } + ha:Rotate buffer 90 deg CW = { li:action={Mode(PasteBuffer); PasteBuffer(Rotate,3)} } + ha:Arbitrarily Rotate Buffer = { li:action={Mode(PasteBuffer); FreeRotateBuffer()} } + ha:Mirror buffer (up/down) = { li:action={Mode(PasteBuffer); PasteBuffer(Mirror)} } + ha:Mirror buffer (left/right) = { li:action={Mode(PasteBuffer); PasteBuffer(Rotate,1); PasteBuffer(Mirror); PasteBuffer(Rotate,3)} } + ha:Clear buffer = { action=PasteBuffer(Clear) } + ha:Convert buffer to element = { action=PasteBuffer(Convert) } + ha:Break buffer elements to pieces = { action=PasteBuffer(Restore) } + ha:Save buffer elements to file = { action=Save(PasteBuffer) } + ha:Select current buffer = { foreground=grey50; sensitive=false } + ha:\#1 = { checked=buffer,1; a=Shift1; action=PasteBuffer(1) } + ha:\#2 = { checked=buffer,2; a=Shift2; action=PasteBuffer(2) } + ha:\#3 = { checked=buffer,3; a=Shift3; action=PasteBuffer(3) } + ha:\#4 = { checked=buffer,4; a=Shift4; action=PasteBuffer(4) } + ha:\#5 = { checked=buffer,5; a=Shift5; action=PasteBuffer(5) } + } + } # Buffer + + + ha:Connects { + li:submenu { + ha:Lookup connection to object = { a=Ctrlf; li:action={GetXY(Click on the object); Connection(Find)} } + ha:Reset scanned pads/pins/vias = { li:action={Connection(ResetPinsViasAndPads); Display(Redraw)} } + ha:Reset scanned lines/polygons = { li:action={Connection(ResetLinesAndPolygons); Display(Redraw)} } + ha:Reset all connections = { a=Shiftf; li:action={Connection(Reset); Display(Redraw)} } + ha:Optimize rats-nest = { a=o; li:action={Atomic(Save); DeleteRats(AllRats); Atomic(Restore); AddRats(AllRats); Atomic(Block)} } + ha:Erase rats-nest = { a=e; action=DeleteRats(AllRats) } + ha:Erase selected rats = { a=Shifte; action=DeleteRats(SelectedRats) } + ha:Auto-route selected rats = { action=AutoRoute(Selected) } + ha:Auto-route all rats = { action=AutoRoute(AllRats) } + ha:Rip up all auto-routed tracks = { action=RipUp(All) } + ha:Auto-Optimize = { a={Shift=}; action=djopt(auto) } + ha:Debumpify = { action=djopt(debumpify) } + ha:Unjaggy = { action=djopt(unjaggy) } + ha:Vianudge = { action=djopt(vianudge) } + ha:Viatrim = { action=djopt(viatrim) } + ha:Orthopull = { action=djopt(orthopull) } + ha:SimpleOpts = { a={=}; action=djopt(simple) } + ha:Miter = { action=djopt(miter) } + ha:Puller = { a=y; action=Puller() } + ha:Global Puller = { + li:submenu { + ha:Selected = { action=GlobalPuller(selected) } + ha:Found = { action=GlobalPuller(found) } + ha:All = { action=GlobalPuller() } + } + } + ha:Only autorouted nets = { checked=optautoonly; action=OptAutoOnly() } + ha:Design Rule Checker = { action=DRC() } + ha:Apply vendor drill mapping = { action=ApplyVendor() } + } + } # Connects + + ha:Plugins = { + li:submenu { + ha:Manage plugins... = { a=Altp; action=ManagePlugins() } + } + } # Plugins + + + ha:Info { + li:submenu { + ha:Generate object report = { a=Ctrlr; action=ReportObject() } + ha:Generate drill summary = { action=Report(DrillReport) } + ha:Report found pins/pads = { action=Report(FoundPins) } + ha:Report net length = { a=r; action=Report(NetLength) } + ha:Key Bindings { + li:submenu { + ha:Remove = { a=BackSpace; action=Delete(Selected) } + ha:Remove Connected = { a=ShiftBackSpace; li:action={Atomic(Save); Connection(Reset); Atomic(Restore); Unselect(All); Atomic(Restore); Connection(Find); Atomic(Restore); Select(Connection); Atomic(Restore); RemoveSelected(); Atomic(Restore); Connection(Reset); Atomic(Restore); Unselect(All); Atomic(Block)} } + ha:Remove Connected = { a=ShiftDelete; li:action={Atomic(Save); Connection(Reset); Atomic(Restore); Unselect(All); Atomic(Restore); Connection(Find); Atomic(Restore); Select(Connection); Atomic(Restore); RemoveSelected(); Atomic(Restore); Connection(Reset); Atomic(Restore); Unselect(All); Atomic(Block)} } + ha:Set Same = { a=a; action=SetSame() } + ha:Flip Object = { a=b; action=Flip(Object) } + ha:Find Connections = { a=f; li:action={Connection(Reset); Connection(Find)} } + ha:ToggleHideName Object = { a=h; action=ToggleHideName(Object) } + ha:ToggleHideName SelectedElement = { a=Shifth; action=ToggleHideName(SelectedElements) } + ha:ChangeHole Object = { a=Ctrlh; action=ChangeHole(Object) } + ha:ChangeJoin Object = { a=j; action=ChangeJoin(Object) } + ha:ChangeJoin SelectedObject = { a=Shiftj; action=ChangeJoin(SelectedObjects) } + ha:Clear Object +2 mil = { a=k; action=ChangeClearSize(Object,+2,mil) } + ha:Clear Object -2 mil = { a=Shiftk; action=ChangeClearSize(Object,-2,mil) } + ha:Clear Selected +2 mil = { a=Ctrlk; action=ChangeClearSize(SelectedObjects,+2,mil) } + ha:Clear Selected -2 mil = { a=Shift Ctrlk; action=ChangeClearSize(SelectedObjects,-2,mil) } + ha:Line Tool size +5 mil = { a=l; action=SetValue(LineSize,+5,mil) } + ha:Line Tool size -5 mil = { a=Shiftl; action=SetValue(LineSize,-5,mil) } + ha:Move Object to current layer = { a=m; action=MoveToCurrentLayer(Object) } + ha:MarkCrosshair = { a=Ctrlm; action=MarkCrosshair() } + ha:Select shortest rat = { a=Shiftn; action=AddRats(Close) } + ha:AddRats to selected pins = { a=Shifto; li:action={Atomic(Save); DeleteRats(AllRats); Atomic(Restore); AddRats(SelectedRats); Atomic(Block)} } + ha:ChangeOctagon Object = { a=Ctrlo; action=ChangeOctagon(Object) } + ha:Polygon PreviousPoint = { a=p; action=Polygon(PreviousPoint) } + ha:Polygon Close = { a=Shiftp; action=Polygon(Close) } + ha:ChangeSquare Object = { a=q; action=ChangeSquare(Object) } + ha:ChangeSize +5 mil = { a=s; action=ChangeSize(Object,+5,mil) } + ha:ChangeSize -5 mil = { a=Shifts; action=ChangeSize(Object,-5,mil) } + ha:ChangeDrill +5 mil = { a=Alts; action=ChangeDrillSize(Object,+5,mil) } + ha:ChangeDrill -5 mil = { a=Alt Shifts; action=ChangeDrillSize(Object,-5,mil) } + ha:Text Tool scale +10 mil = { a=t; action=SetValue(TextScale,+10,mil) } + ha:Text Tool scale -10 mil = { a=Shiftt; action=SetValue(TextScale,-10,mil) } + ha:Via Tool size +5 mil = { a=Shiftv; action=SetValue(ViaSize,+5,mil) } + ha:Via Tool size -5 mil = { a=Shift Ctrlv; action=SetValue(ViaSize,-5,mil) } + ha:Via Tool drill +5 mil = { a=Altv; action=SetValue(ViaDrillingHole,+5,mil) } + ha:Via Tool drill -5 mil = { a=Alt Shiftv; action=SetValue(ViaDrillingHole,-5,mil) } + ha:AddRats Selected = { a=Shiftw; action=AddRats(SelectedRats) } + ha:Add All Rats = { a=w; action=AddRats(AllRats) } + ha:Undo = { a=Altz; action=Undo() } + ha:Cycle Clip = { a=/; action=Display(CycleClip) } + ha:Arrow = { a=space; checked=arrowmode,1; action=Mode(Arrow) } + ha:Temp Arrow ON = { a=[; li:action={Mode(Save); Mode(Arrow); Mode(Notify)} } + ha:Temp Arrow OFF = { a=]; li:action={Mode(Release); Mode(Restore)} } + ha:Step Up = { a=Up; action=Cursor(Warp,0,1,grid) } + ha:Step Down = { a=Down; action=Cursor(Warp,0,-1,grid) } + ha:Step Left = { a=Left; action=Cursor(Warp,-1,0,grid) } + ha:Step Right = { a=Right; action=Cursor(Warp,1,0,grid) } + ha:Step +Up = { a=ShiftUp; action=Cursor(Pan,0,50,view) } + ha:Step +Down = { a=ShiftDown; action=Cursor(Pan,0,-50,view) } + ha:Step +Left = { a=ShiftLeft; action=Cursor(Pan,-50,0,view) } + ha:Step +Right = { a=ShiftRight; action=Cursor(Pan,50,0,view) } + ha:"Click" = { a=Enter; li:action={Mode(Notify); Mode(Release)} } + } + } # Key Bindings + } + } # Info + + ha:Window { + li:submenu { + ha:Board Layout = { action=DoWindows(Layout) } + ha:Library = { action=DoWindows(Library) } + ha:Message Log = { action=DoWindows(Log) } + ha:Netlist = { action=DoWindows(Netlist) } + ha:Pinout = { a=Shiftd; action=Display(Pinout) } + } + } # Window + + } # main_menu +} #root