|  | # | 
|  | # Cadence-compatibility bindings except where marked. | 
|  | # | 
|  | macro f  "view"	     ;# zoom to fit window | 
|  | macro ^z "zoom 0.5"  ;# zoom in | 
|  | macro Z  "zoom 2"    ;# zoom out | 
|  | macro B  "popstack"  ;# up hierarchy | 
|  | macro X  {pushstack [cellname list self]}	;# down hierarchy | 
|  | macro x  "edit"		;# down hierarchy, edit-in-place | 
|  | macro b  "select top cell ; edit"  ;# up hierarchy from edit-in-place | 
|  | macro p  "tool wire; magic::trackwire %W pick"	;# path | 
|  | macro ^r "redraw" | 
|  | macro ^f "unexpand" | 
|  | macro F  "expand" | 
|  | macro ^a "select area" | 
|  | macro ^d "select clear" | 
|  | macro k  "magic::measure" | 
|  | macro K  "magic::unmeasure" | 
|  | macro i  "magic::promptload getcell" | 
|  | macro l  "magic::update_texthelper ; wm deiconify .texthelper ; raise .texthelper" | 
|  | macro O  "magic::clock" | 
|  | macro <del> "magic::delete" | 
|  |  | 
|  | # Toolkit parameter dialog | 
|  | macro q "magic::gencell {} ; raise .params" | 
|  | # | 
|  | # The following should be already implemented as existing Magic bindings | 
|  | # | 
|  | macro u "undo" | 
|  | macro U "redo" | 
|  | macro m "move" | 
|  | macro c "copy" | 
|  | # | 
|  | # Compatibility with Electric;  Cadence bindings are on function keys and | 
|  | # do not work through the VNC. | 
|  | macro ^s "magic::promptsave magic"	;# save dialog menu | 
|  |  | 
|  | # | 
|  | # Bertrand's bindings follow except where marked. | 
|  | # | 
|  | macro < sideways | 
|  | macro ^ upsidedown | 
|  | # | 
|  | # Set grid at 1 micron | 
|  | # | 
|  | macro 0  "grid on ; grid 1l"	;# Grid at 0.5um (1 lambda) | 
|  | # macro ^f "feedback clear"	;# conflicts with Cadence binding | 
|  | # | 
|  | # Paint/Erase macros | 
|  | # | 
|  | macro 1 "paint m1" | 
|  | macro ! "erase m1" | 
|  | macro 2 "paint m2" | 
|  | macro @ "erase m2" | 
|  | macro 3 "paint m3" | 
|  | macro # "erase m3" | 
|  | #ifdef METAL4 | 
|  | macro 4 "paint mtp" | 
|  | macro $ "erase mtp" | 
|  | #endif | 
|  | #ifdef METAL5 | 
|  | macro 4 "paint m4" | 
|  | macro $ "erase m4" | 
|  | macro 5 "paint mtp" | 
|  | macro % "erase mtp" | 
|  | #endif | 
|  | #ifdef METAL6 | 
|  | macro 4 "paint m4" | 
|  | macro $ "erase m4" | 
|  | macro 5 "paint m5" | 
|  | macro % "erase m5" | 
|  | macro 6 "paint mtp" | 
|  | macro ^ "erase mtp" | 
|  | #endif | 
|  |  | 
|  | macro 7 "paint poly" | 
|  | # macro & "erase poly" | 
|  | # macro p "paint pdiff" | 
|  | macro n "paint ndiff" | 
|  | # macro l "erase labels" | 
|  | macro P "erase pdiff" | 
|  | macro N "erase ndiff" | 
|  | macro y "drc check; drc why" | 
|  | macro ? "select area; what" | 
|  |  | 
|  | macro / "expand toggle" | 
|  | macro ^w "writeall force" | 
|  | macro ^e "edit" | 
|  | # macro ^x "quit" | 
|  |  | 
|  | macro z "findbox zoom" | 
|  | # "f" conflicts with Cadence "full view", so use control-i to select cells. | 
|  | # macro f "select cell" | 
|  | macro ^i "select cell" | 
|  |  | 
|  | # Leave keypad bindings as-is, further down.  However, keypad | 
|  | # keys generally don't translate through the VNC session, so | 
|  | # use the following arrow key bindings: | 
|  | # | 
|  | #                         no shift  shift | 
|  | # arrows only -> Pan       10%      100% | 
|  | # with alt    -> Move      1 lambda 1 grid | 
|  | # with ctrl   -> Stretch   1 lambda 1 grid | 
|  | # | 
|  | # Pan 10 percent of the window size with arrows | 
|  | # macro XK_Left  "scroll l .1 w" | 
|  | # macro XK_Up    "scroll u .1 w" | 
|  | # macro XK_Right "scroll r .1 w" | 
|  | # macro XK_Down  "scroll d .1 w" | 
|  |  | 
|  | # Pan 100 percent of the window size with arrows | 
|  | # macro Shift_XK_Left  "scroll l 1 w" | 
|  | # macro Shift_XK_Up    "scroll u 1 w" | 
|  | # macro Shift_XK_Right "scroll r 1 w" | 
|  | # macro Shift_XK_Down  "scroll d 1 w" | 
|  |  | 
|  | # move 0.05um with arrows | 
|  | # macro Alt_XK_Left          "move l 1l" | 
|  | # macro Alt_XK_Right         "move r 1l" | 
|  | # macro Alt_XK_Up            "move u 1l" | 
|  | # macro Alt_XK_Down          "move d 1l" | 
|  |  | 
|  | # move 1 grid unit with arrows | 
|  | # macro Alt_Shift_XK_Left  "move l 1g" | 
|  | # macro Alt_Shift_XK_Right "move r 1g" | 
|  | # macro Alt_Shift_XK_Up    "move u 1g" | 
|  | # macro Alt_Shift_XK_Down  "move d 1g" | 
|  |  | 
|  | # stretch 0.05um with arrows | 
|  | # macro Control_XK_Left          "stretch l 1l" | 
|  | # macro Control_XK_Right         "stretch r 1l" | 
|  | # macro Control_XK_Up            "stretch u 1l" | 
|  | # macro Control_XK_Down          "stretch d 1l" | 
|  |  | 
|  | # stretch 1 grid unit with arrows | 
|  | # macro Control_Shift_XK_Left  "stretch l 1g" | 
|  | # macro Control_Shift_XK_Right "stretch r 1g" | 
|  | # macro Control_Shift_XK_Up    "stretch u 1g" | 
|  | # macro Control_Shift_XK_Down  "stretch d 1g" | 
|  |  | 
|  | # shift mouse wheel bindings for right-left shift | 
|  | macro Shift_XK_Pointer_Button4 "scroll r .05 w" | 
|  | macro Shift_XK_Pointer_Button5 "scroll l .05 w" | 
|  |  | 
|  | # control mouse wheel bindings for zoom in/out | 
|  | macro Control_XK_Pointer_Button4 "zoom 0.70711" | 
|  | macro Control_XK_Pointer_Button5 "zoom 1.41421" | 
|  |  | 
|  | # Bertrand's original arrow macros | 
|  | # move 1 grid unit with arrows | 
|  | macro XK_Left          "move l 1g" | 
|  | macro XK_Right         "move r 1g" | 
|  | macro XK_Up            "move u 1g" | 
|  | macro XK_Down          "move d 1g" | 
|  |  | 
|  | # move 0.05um with arrows | 
|  | macro Control_XK_Left  "move l 1l" | 
|  | macro Control_XK_Right "move r 1l" | 
|  | macro Control_XK_Up    "move u 1l" | 
|  | macro Control_XK_Down  "move d 1l" | 
|  |  | 
|  | # stretch 1 grid unit with arrows | 
|  | macro Shift_XK_Left          "stretch l 1g" | 
|  | macro Shift_XK_Right         "stretch r 1g" | 
|  | macro Shift_XK_Up            "stretch u 1g" | 
|  | macro Shift_XK_Down          "stretch d 1g" | 
|  |  | 
|  | # stretch 0.05um with arrows | 
|  | macro Control_Shift_XK_Left  "stretch l 1l" | 
|  | macro Control_Shift_XK_Right "stretch r 1l" | 
|  | macro Control_Shift_XK_Up    "stretch u 1l" | 
|  | macro Control_Shift_XK_Down  "stretch d 1l" | 
|  |  | 
|  | # Restore pan function on Alt-key | 
|  | # Pan 10 percent of the window size with arrows | 
|  | macro Alt_XK_Left  "scroll l .1 w" | 
|  | macro Alt_XK_Up    "scroll u .1 w" | 
|  | macro Alt_XK_Right "scroll r .1 w" | 
|  | macro Alt_XK_Down  "scroll d .1 w" | 
|  |  | 
|  | # Pan 100 percent of the window size with arrows | 
|  | macro Alt_Shift_XK_Left  "scroll l 1 w" | 
|  | macro Alt_Shift_XK_Up    "scroll u 1 w" | 
|  | macro Alt_Shift_XK_Right "scroll r 1 w" | 
|  | macro Alt_Shift_XK_Down  "scroll d 1 w" | 
|  |  |