Initial commit of public repository open_pdks.
diff --git a/common/pdk.bindkeys b/common/pdk.bindkeys new file mode 100644 index 0000000..1b502db --- /dev/null +++ b/common/pdk.bindkeys
@@ -0,0 +1,186 @@ +# +# 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" +