diff --git a/doc/xschem_man/commands.html b/doc/xschem_man/commands.html
index 8a1f55ac..1c79e308 100644
--- a/doc/xschem_man/commands.html
+++ b/doc/xschem_man/commands.html
@@ -57,7 +57,6 @@ p{padding: 15px 30px 10px;}
This list is available in XSCHEM in the Help menu
-
XSCHEM MOUSE BINDINGS
----------------------------------------------------------------------
LeftButton Clear selection and select a graphic object
@@ -129,9 +128,13 @@ ctrl Enter Confirm closing dialog boxes
- Up Move up
ctrl Left Previous tab (if tabbed interface enabled)
ctrl Right Next tab (if tabbed interface enabled)
+- ':' Toggle flat netlist
- '\' Toggle fullscreen
- '!' Break selected wires at any wire or component pin
connection
+shift '<' Show all layers
+shift '>' Show only current set layer
+- '/' Show fullscreen image of bindkeys
- ' ' Pan schematic
- ' ' When drawing lines or wires toggle between
manhattan H-V, manhattan V-H or oblique path.
@@ -264,7 +267,6 @@ ctrl '+' Test mode: change line width
ctrl '=' Toggle fill rectangles
- '$' Toggle pixmap saving
ctrl '$' Toggle use XCopyArea vs drawing primitives for drawing the screen
-- ':' Toggle flat netlist
KEYBIND CUSTOMIZATION
diff --git a/src/callback.c b/src/callback.c
index 54f424c2..25f5f2d9 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -3255,7 +3255,7 @@ static void handle_key_press(int event, KeySym key, int state, int rstate, int m
}
else if(rstate == ControlMask) { /* clear schematic */
if(xctx->semaphore >= 2) break;
- tcleval("xschem clear SCHEMATIC");
+ tcleval("xschem clear schematic");
}
break;
@@ -3300,7 +3300,7 @@ static void handle_key_press(int event, KeySym key, int state, int rstate, int m
}
else if(rstate == ControlMask ) { /* clear symbol */
if(xctx->semaphore >= 2) break;
- tcleval("xschem clear SYMBOL");
+ tcleval("xschem clear symbol");
}
break;
@@ -4045,15 +4045,24 @@ static void handle_key_press(int event, KeySym key, int state, int rstate, int m
case '>':
if(xctx->semaphore >= 2) break;
if(xctx->draw_single_layer< cadlayers-1) xctx->draw_single_layer++;
+ xctx->draw_single_layer = xctx->rectcolor;
draw();
break;
case '<':
if(xctx->semaphore >= 2) break;
- if(xctx->draw_single_layer>=0 ) xctx->draw_single_layer--;
+ xctx->draw_single_layer = -1;
draw();
break;
+ case '?':
+ if(xctx->semaphore >= 2) break;
+ tcleval("textwindow \"${XSCHEM_SHAREDIR}/xschem.help\"");
+ break;
+ case XK_slash:
+ if(xctx->semaphore >= 2) break;
+ tcleval("show_bindkeys");
+ break;
/* toggle flat netlist (only spice) */
case ':':
if(!tclgetboolvar("flat_netlist")) {
diff --git a/src/draw.c b/src/draw.c
index a91b821b..58671b90 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -676,9 +676,10 @@ void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot,
draw_texts:
- if(xctx->inst[n].flags & PIN_OR_LABEL) c_for_text = TEXTWIRELAYER;
- if(xctx->sym_txt && !(xctx->inst[n].flags & PIN_OR_LABEL)) c_for_text = TEXTLAYER;
if( !(xctx->inst[n].flags & HIDE_SYMBOL_TEXTS) && (layer == cadlayers - 1)) {
+ if(xctx->inst[n].flags & PIN_OR_LABEL) c_for_text = TEXTWIRELAYER;
+ if(xctx->sym_txt && !(xctx->inst[n].flags & PIN_OR_LABEL)) c_for_text = TEXTLAYER;
+ if(c != layer) c_for_text = c;
for(j=0;j< symptr->texts; ++j)
{
double xscale, yscale;
@@ -702,6 +703,7 @@ void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot,
}
}
if(textlayer < 0 || textlayer >= cadlayers) textlayer = c_for_text;
+ if(xctx->draw_single_layer != -1 && textlayer != xctx->draw_single_layer) continue;
/* display PINLAYER colored instance texts even if PINLAYER disabled */
if(xctx->inst[n].color == -PINLAYER || xctx->enable_layer[textlayer]) {
char *txtptr = NULL;
@@ -4983,14 +4985,14 @@ void draw(void)
}
dbg(3, "draw(): check4\n");
for(c=0;cdraw_single_layer!=-1 && c != xctx->draw_single_layer) continue;
+ int draw_layer = (xctx->draw_single_layer == -1 || c == xctx->draw_single_layer);
cc = c; if(xctx->only_probes) cc = GRIDLAYER;
- if(xctx->enable_layer[c]) for(i=0;ilines[c]; ++i) {
+ if(draw_layer && xctx->enable_layer[c]) for(i=0;ilines[c]; ++i) {
xLine *l = &xctx->line[c][i];
if(l->bus) drawline(cc, THICK, l->x1, l->y1, l->x2, l->y2, l->dash, NULL);
else drawline(cc, ADD, l->x1, l->y1, l->x2, l->y2, l->dash, NULL);
}
- if(xctx->enable_layer[c]) for(i=0;irects[c]; ++i) {
+ if(draw_layer && xctx->enable_layer[c]) for(i=0;irects[c]; ++i) {
xRect *r = &xctx->rect[c][i];
#if HAS_CAIRO==1
if(c != GRIDLAYER || !(r->flags & (1 + 1024)))
@@ -5002,12 +5004,12 @@ void draw(void)
if(r->fill) filledrect(cc, ADD, r->x1, r->y1, r->x2, r->y2, r->fill, r->ellipse_a, r->ellipse_b);
}
}
- if(xctx->enable_layer[c]) for(i=0;iarcs[c]; ++i) {
+ if(draw_layer && xctx->enable_layer[c]) for(i=0;iarcs[c]; ++i) {
xArc **arc = xctx->arc;
drawarc(cc, ADD, arc[c][i].x, arc[c][i].y, arc[c][i].r, arc[c][i].a, arc[c][i].b,
arc[c][i].fill, arc[c][i].dash);
}
- if(xctx->enable_layer[c]) for(i=0;ipolygons[c]; ++i) {
+ if(draw_layer && xctx->enable_layer[c]) for(i=0;ipolygons[c]; ++i) {
int bezier;
xPoly *p = &xctx->poly[c][i];
bezier = 2 + !strboolcmp(get_tok_value(p->prop_ptr, "bezier", 0), "true");
@@ -5034,7 +5036,9 @@ void draw(void)
symptr->polygons[c] ||
((c==cadlayers - 1) && symptr->texts) )
{
- draw_symbol(ADD, cc, i,c, 0, 0, 0.0, 0.0); /* ... then draw current layer */
+ if(c == 0 || c == cadlayers - 1 || draw_layer) {
+ draw_symbol(ADD, cc, i,c, 0, 0, 0.0, 0.0); /* ... then draw current layer */
+ }
}
}
filledrect(cc, END, 0.0, 0.0, 0.0, 0.0, 2, -1, -1); /* fill parameter must be 2! */
@@ -5067,56 +5071,55 @@ void draw(void)
filledrect(cc, END, 0.0, 0.0, 0.0, 0.0, 2, -1, -1); /* fill parameter must be 2! */
drawline(cc, END, 0.0, 0.0, 0.0, 0.0, 0, NULL);
}
- if(xctx->draw_single_layer ==-1 || xctx->draw_single_layer==TEXTLAYER) {
- for(i=0;itexts; ++i)
- {
- const char *txt_ptr;
- textlayer = xctx->text[i].layer;
- if(!xctx->show_hidden_texts && (xctx->text[i].flags & HIDE_TEXT)) continue;
- if(xctx->only_probes) textlayer = GRIDLAYER;
- else if(textlayer < 0 || textlayer >= cadlayers) textlayer = TEXTLAYER;
- #if HAS_CAIRO==1
- if(!xctx->enable_layer[textlayer]) continue;
- textfont = xctx->text[i].font;
- if( (textfont && textfont[0]) ||
- (xctx->text[i].flags & (TEXT_BOLD | TEXT_OBLIQUE | TEXT_ITALIC))) {
- cairo_font_slant_t slant;
- cairo_font_weight_t weight;
- textfont = (xctx->text[i].font && xctx->text[i].font[0]) ?
- xctx->text[i].font : tclgetvar("cairo_font_name");
- weight = ( xctx->text[i].flags & TEXT_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL;
- slant = CAIRO_FONT_SLANT_NORMAL;
- if(xctx->text[i].flags & TEXT_ITALIC) slant = CAIRO_FONT_SLANT_ITALIC;
- if(xctx->text[i].flags & TEXT_OBLIQUE) slant = CAIRO_FONT_SLANT_OBLIQUE;
+ for(i=0;itexts; ++i)
+ {
+ const char *txt_ptr;
+ textlayer = xctx->text[i].layer;
+ if(!xctx->show_hidden_texts && (xctx->text[i].flags & HIDE_TEXT)) continue;
+ if(xctx->only_probes) textlayer = GRIDLAYER;
+ else if(textlayer < 0 || textlayer >= cadlayers) textlayer = TEXTLAYER;
+ #if HAS_CAIRO==1
+ if(!xctx->enable_layer[textlayer]) continue;
+ if(xctx->draw_single_layer != -1 && xctx->draw_single_layer != textlayer) continue;
+ textfont = xctx->text[i].font;
+ if( (textfont && textfont[0]) ||
+ (xctx->text[i].flags & (TEXT_BOLD | TEXT_OBLIQUE | TEXT_ITALIC))) {
+ cairo_font_slant_t slant;
+ cairo_font_weight_t weight;
+ textfont = (xctx->text[i].font && xctx->text[i].font[0]) ?
+ xctx->text[i].font : tclgetvar("cairo_font_name");
+ weight = ( xctx->text[i].flags & TEXT_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL;
+ slant = CAIRO_FONT_SLANT_NORMAL;
+ if(xctx->text[i].flags & TEXT_ITALIC) slant = CAIRO_FONT_SLANT_ITALIC;
+ if(xctx->text[i].flags & TEXT_OBLIQUE) slant = CAIRO_FONT_SLANT_OBLIQUE;
- cairo_save(xctx->cairo_ctx);
- cairo_save(xctx->cairo_save_ctx);
- xctx->cairo_font =
- cairo_toy_font_face_create(textfont, slant, weight);
- cairo_set_font_face(xctx->cairo_ctx, xctx->cairo_font);
- cairo_set_font_face(xctx->cairo_save_ctx, xctx->cairo_font);
- cairo_font_face_destroy(xctx->cairo_font);
- }
- #endif
- txt_ptr = get_text_floater(i);
- dbg(1, "draw(): drawing string %d = %s\n",i, txt_ptr);
- draw_string(textlayer, ADD, txt_ptr,
- xctx->text[i].rot, xctx->text[i].flip, xctx->text[i].hcenter, xctx->text[i].vcenter,
- xctx->text[i].x0,xctx->text[i].y0,
- xctx->text[i].xscale, xctx->text[i].yscale);
- #if HAS_CAIRO==1
- if( (textfont && textfont[0]) ||
- (xctx->text[i].flags & (TEXT_BOLD | TEXT_OBLIQUE | TEXT_ITALIC))) {
- cairo_restore(xctx->cairo_ctx);
- cairo_restore(xctx->cairo_save_ctx);
- }
- #endif
- #if HAS_CAIRO!=1
- drawrect(textlayer, END, 0.0, 0.0, 0.0, 0.0, 0, -1, -1);
- drawline(textlayer, END, 0.0, 0.0, 0.0, 0.0, 0, NULL);
- #endif
- } /* for(i=0;itexts; ++i) */
- } /* if(xctx->draw_single_layer ==-1 || xctx->draw_single_layer==TEXTLAYER) */
+ cairo_save(xctx->cairo_ctx);
+ cairo_save(xctx->cairo_save_ctx);
+ xctx->cairo_font =
+ cairo_toy_font_face_create(textfont, slant, weight);
+ cairo_set_font_face(xctx->cairo_ctx, xctx->cairo_font);
+ cairo_set_font_face(xctx->cairo_save_ctx, xctx->cairo_font);
+ cairo_font_face_destroy(xctx->cairo_font);
+ }
+ #endif
+ txt_ptr = get_text_floater(i);
+ dbg(1, "draw(): drawing string %d = %s\n",i, txt_ptr);
+ draw_string(textlayer, ADD, txt_ptr,
+ xctx->text[i].rot, xctx->text[i].flip, xctx->text[i].hcenter, xctx->text[i].vcenter,
+ xctx->text[i].x0,xctx->text[i].y0,
+ xctx->text[i].xscale, xctx->text[i].yscale);
+ #if HAS_CAIRO==1
+ if( (textfont && textfont[0]) ||
+ (xctx->text[i].flags & (TEXT_BOLD | TEXT_OBLIQUE | TEXT_ITALIC))) {
+ cairo_restore(xctx->cairo_ctx);
+ cairo_restore(xctx->cairo_save_ctx);
+ }
+ #endif
+ #if HAS_CAIRO!=1
+ drawrect(textlayer, END, 0.0, 0.0, 0.0, 0.0, 0, -1, -1);
+ drawline(textlayer, END, 0.0, 0.0, 0.0, 0.0, 0, NULL);
+ #endif
+ } /* for(i=0;itexts; ++i) */
if(xctx->only_probes) build_colors(1.0, 0);
if(xctx->only_probes) {
xctx->save_lw = xctx->lw;
diff --git a/src/keys.help b/src/keys.help
index 0a34e615..58d48e98 100644
--- a/src/keys.help
+++ b/src/keys.help
@@ -69,9 +69,13 @@ ctrl Enter Confirm closing dialog boxes
- Up Move up
ctrl Left Previous tab (if tabbed interface enabled)
ctrl Right Next tab (if tabbed interface enabled)
+- ':' Toggle flat netlist
- '\' Toggle fullscreen
- '!' Break selected wires at any wire or component pin
connection
+shift '<' Show all layers
+shift '>' Show only current set layer
+- '/' Show fullscreen image of bindkeys
- ' ' Pan schematic
- ' ' When drawing lines or wires toggle between
manhattan H-V, manhattan V-H or oblique path.
@@ -204,4 +208,3 @@ ctrl '+' Test mode: change line width
ctrl '=' Toggle fill rectangles
- '$' Toggle pixmap saving
ctrl '$' Toggle use XCopyArea vs drawing primitives for drawing the screen
-- ':' Toggle flat netlist
diff --git a/src/xinit.c b/src/xinit.c
index 7cdf1b3f..4498d0ae 100644
--- a/src/xinit.c
+++ b/src/xinit.c
@@ -1242,7 +1242,7 @@ int preview_window(const char *what, const char *win_path, const char *fname)
}
}
else if(!strcmp(what, "draw") ) {
- int i;
+ int i, save_grid = tclgetboolvar("draw_grid");
for(i = 0; i < 10; i++) {
if(Tk_NameToWindow(interp, win_path, mainwindow) == tkpre_window[i] && tkpre_window[i]) break;
}
@@ -1269,7 +1269,9 @@ int preview_window(const char *what, const char *win_path, const char *fname)
} else {
if(xctx) resetwin(1, 1, 0, 0, 0); /* resetwin(create_pixmap, clear_pixmap, force) */
}
+ Tcl_SetVar(interp, "draw_grid", "0", TCL_GLOBAL_ONLY);
zoom_full(1, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97); /* draw */
+ Tcl_SetVar(interp, "draw_grid", save_grid ? "1" : "0", TCL_GLOBAL_ONLY);
xctx = save_xctx;
result = 1;
}
diff --git a/src/xschem.tcl b/src/xschem.tcl
index ab490100..8761f00d 100644
--- a/src/xschem.tcl
+++ b/src/xschem.tcl
@@ -8530,6 +8530,28 @@ proc switch_window {parent topwin event window} {
}
}
}
+proc show_bindkeys {} {
+ global dark_colorscheme dim_value dim_bg
+ if {[winfo exists .bk]} {return}
+ toplevel .bk -bg {}
+ wm attributes .bk -fullscreen 1
+
+ set save $dark_colorscheme
+ set dark_colorscheme 0
+ set dim_value 0.0
+ set dim_bg 0.0
+ xschem build_colors
+
+ xschem preview_window create .bk
+ xschem preview_window draw .bk [abs_sym_path bindkeys_cheatsheet.sym]
+
+ set dark_colorscheme $save
+ xschem build_colors
+
+ bind .bk {xschem preview_window destroy .bk }
+ bind .bk {xschem preview_window destroy .bk }
+ bind .bk {xschem preview_window draw .bk }
+}
proc set_bindings {topwin} {
global env has_x OS autofocus_mainwindow
@@ -8584,17 +8606,6 @@ global env has_x OS autofocus_mainwindow
bind $topwin "xschem callback %W %T %x %y 0 %b 0 %s"
#### test: show keybindings
- # bind $topwin "
- # if {!\[info exists bindkeys\]} {
- # set bindkeys 1
- # xschem preview_window create $topwin
- # xschem preview_window draw $topwin [abs_sym_path bindkeys_cheatsheet.sym]
- # } else {
- # unset bindkeys
- # xschem preview_window $topwin close
- # xschem redraw
- # }
- # "
bind $topwin "
if {{%K} eq {Escape}} { destroy .ctxmenu }
xschem callback %W %T %x %y %N 0 0 %s"
@@ -8618,7 +8629,6 @@ global env has_x OS autofocus_mainwindow
"
}
bind $topwin " wm withdraw .infotext; set show_infowindow 0 "
- bind $topwin "?" {textwindow "${XSCHEM_SHAREDIR}/xschem.help"}
# on Windows Alt key mask is reported as 131072 (1<<17) so build masks manually with values passed from C code
if {$OS == "Windows" } {
@@ -8811,6 +8821,7 @@ proc build_widgets { {topwin {} } } {
$topwin.menubar.help add command -label "Help" -command "textwindow \"${XSCHEM_SHAREDIR}/xschem.help\" ro" \
-accelerator {?}
$topwin.menubar.help add command -label "Keys" -command "textwindow \"${XSCHEM_SHAREDIR}/keys.help\" ro"
+ $topwin.menubar.help add command -label "Show Keybindings" -command "show_bindkeys"
$topwin.menubar.help add command -label "About XSCHEM" -command "about"
$topwin.menubar.file add command -label "Clear Schematic" -accelerator Ctrl+N\
diff --git a/xschem_library/devices/bindkeys_cheatsheet.sym b/xschem_library/devices/bindkeys_cheatsheet.sym
index 47ae27b2..d74845a5 100644
--- a/xschem_library/devices/bindkeys_cheatsheet.sym
+++ b/xschem_library/devices/bindkeys_cheatsheet.sym
@@ -109,8 +109,7 @@ T {F11} 882.5 -477.5 0 0 0.4 0.4 {lock=0}
T {F12} 962.5 -477.5 0 0 0.4 0.4 {lock=0}
T {Ins} 1042.5 -477.5 0 0 0.4 0.4 {lock=0}
T {Del} 1122.5 -477.5 0 0 0.4 0.4 {lock=0}
-T {~
-\\} 2.5 -397.5 0 0 0.4 0.4 {lock=0}
+T {`} 2.5 -397.5 0 0 0.4 0.4 {lock=0}
T {Q} 122.5 -317.5 0 0 0.4 0.4 {lock=0}
T {W} 202.5 -317.5 0 0 0.4 0.4 {lock=0}
T {E} 282.5 -317.5 0 0 0.4 0.4 {lock=0}
@@ -120,12 +119,9 @@ T {U} 602.5 -317.5 0 0 0.4 0.4 {lock=0}
T {I} 682.5 -317.5 0 0 0.4 0.4 {lock=0}
T {O} 762.5 -317.5 0 0 0.4 0.4 {lock=0}
T {P} 842.5 -317.5 0 0 0.4 0.4 {lock=0}
-T {\{
-[} 922.5 -317.5 0 0 0.4 0.4 {lock=0}
-T {\}
-]} 1002.5 -317.5 0 0 0.4 0.4 {lock=0}
-T {|
-\\} 1082.5 -317.5 0 0 0.4 0.4 {lock=0}
+T {\{} 922.5 -317.5 0 0 0.4 0.4 {lock=0}
+T {\}} 1002.5 -317.5 0 0 0.4 0.4 {lock=0}
+T {\\} 1082.5 -317.5 0 0 0.4 0.4 {lock=0}
T {Tab} 2.5 -317.5 0 0 0.4 0.4 {lock=0}
T {Caps Lock} 2.5 -237.5 0 0 0.4 0.4 {lock=0}
T {A} 162.5 -237.5 0 0 0.4 0.4 {lock=0}
@@ -137,10 +133,8 @@ T {H} 562.5 -237.5 0 0 0.4 0.4 {lock=0}
T {J} 642.5 -237.5 0 0 0.4 0.4 {lock=0}
T {K} 722.5 -237.5 0 0 0.4 0.4 {lock=0}
T {L} 802.5 -237.5 0 0 0.4 0.4 {lock=0}
-T {:
-;} 882.5 -237.5 0 0 0.4 0.4 {lock=0}
-T {"
-'} 962.5 -237.5 0 0 0.4 0.4 {lock=0}
+T {;} 882.5 -237.5 0 0 0.4 0.4 {lock=0}
+T {'} 962.5 -237.5 0 0 0.4 0.4 {lock=0}
T {Enter} 1042.5 -237.5 0 0 0.4 0.4 {lock=0}
T {Shift} 2.5 -157.5 0 0 0.4 0.4 {layer=12
lock=0}
@@ -151,12 +145,9 @@ T {V} 442.5 -157.5 0 0 0.4 0.4 {lock=0}
T {B} 522.5 -157.5 0 0 0.4 0.4 {lock=0}
T {N} 602.5 -157.5 0 0 0.4 0.4 {lock=0}
T {M} 682.5 -157.5 0 0 0.4 0.4 {lock=0}
-T {<
-,} 762.5 -157.5 0 0 0.4 0.4 {lock=0}
-T {>
-.} 842.5 -157.5 0 0 0.4 0.4 {lock=0}
-T {?
-/} 922.5 -157.5 0 0 0.4 0.4 {lock=0}
+T {,} 762.5 -157.5 0 0 0.4 0.4 {lock=0}
+T {.} 842.5 -157.5 0 0 0.4 0.4 {lock=0}
+T {/} 922.5 -157.5 0 0 0.4 0.4 {lock=0}
T {Shift} 1002.5 -157.5 0 0 0.4 0.4 {layer=12
lock=0}
T {Ctrl} 2.5 -77.5 0 0 0.4 0.4 {layer=4
@@ -181,10 +172,8 @@ T {7} 562.5 -397.5 0 0 0.4 0.4 {lock=0}
T {8} 642.5 -397.5 0 0 0.4 0.4 {lock=0}
T {9} 722.5 -397.5 0 0 0.4 0.4 {lock=0}
T {0} 802.5 -397.5 0 0 0.4 0.4 {lock=0}
-T {_
--} 882.5 -397.5 0 0 0.4 0.4 {lock=0}
-T {+
-=} 962.5 -397.5 0 0 0.4 0.4 {lock=0}
+T {-} 882.5 -397.5 0 0 0.4 0.4 {lock=0}
+T {=} 962.5 -397.5 0 0 0.4 0.4 {lock=0}
T {Backspace} 1042.5 -397.5 0 0 0.4 0.4 {lock=0}
T {Abort oper.} 2.5 -415 0 0 0.18 0.18 {}
T {Select all} 162.5 -195 0 0 0.18 0.18 {layer=4}
@@ -348,7 +337,7 @@ T {Set layer 1} 82.5 -355 0 0 0.18 0.18 {layer=4}
T {Break wires} 82.5 -343.75 0 0 0.18 0.18 {layer=12}
T {Set logic to 1} 82.5 -332.5 0 0 0.18 0.18 {}
T {-} 82.5 -366.25 0 0 0.18 0.18 {layer=7}
-T {-} 82.5 -377.5 0 0 0.18 0.18 {layer=6}
+T {Brk & rm wires} 82.5 -377.5 0 0 0.18 0.18 {layer=6}
T {Set layer 2} 162.5 -355 0 0 0.18 0.18 {layer=4}
T {-} 162.5 -343.75 0 0 0.18 0.18 {layer=12}
T {Set logic to X} 162.5 -332.5 0 0 0.18 0.18 {}
@@ -384,11 +373,11 @@ T {-} 722.5 -343.75 0 0 0.18 0.18 {layer=12}
T {-} 722.5 -332.5 0 0 0.18 0.18 {}
T {-} 722.5 -366.25 0 0 0.18 0.18 {layer=7}
T {-} 722.5 -377.5 0 0 0.18 0.18 {layer=6}
-T {-} 1102.5 -275 0 0 0.18 0.18 {layer=4}
-T {Reserved} 1102.5 -263.75 0 0 0.18 0.18 {layer=12}
-T {Toggle fullscreen} 1102.5 -252.5 0 0 0.18 0.18 {}
-T {-} 1102.5 -286.25 0 0 0.18 0.18 {layer=7}
-T {-} 1102.5 -297.5 0 0 0.18 0.18 {layer=6}
+T {-} 1082.5 -275 0 0 0.18 0.18 {layer=4}
+T {Reserved} 1082.5 -263.75 0 0 0.18 0.18 {layer=12}
+T {Toggle fullscreen} 1082.5 -252.5 0 0 0.18 0.18 {}
+T {-} 1082.5 -286.25 0 0 0.18 0.18 {layer=7}
+T {-} 1082.5 -297.5 0 0 0.18 0.18 {layer=6}
T {-} 412.5 -35 0 0 0.18 0.18 {layer=4}
T {-} 412.5 -23.75 0 0 0.18 0.18 {layer=12}
T {Toggle manhattan drawing / pan schematic} 412.5 -12.5 0 0 0.18 0.18 {}
@@ -405,12 +394,12 @@ T {Del selection} 1122.5 -412.5 0 0 0.18 0.18 {}
T {-} 1122.5 -446.25 0 0 0.18 0.18 {layer=7}
T {-} 1122.5 -457.5 0 0 0.18 0.18 {layer=6}
T {Help} 922.5 -103.75 0 0 0.18 0.18 {layer=12}
-T {-} 922.5 -92.5 0 0 0.18 0.18 {}
+T {Show bindkeys} 922.5 -92.5 0 0 0.18 0.18 {}
T {Flat netlist} 882.5 -183.75 0 0 0.18 0.18 {layer=12}
T {Reserved} 882.5 -172.5 0 0 0.18 0.18 {}
-T {Incr line width} 962.5 -355 0 0 0.18 0.18 {layer=4}
+T {Toggle fill style} 962.5 -355 0 0 0.18 0.18 {layer=4}
T {-} 962.5 -343.75 0 0 0.18 0.18 {layer=12}
-T {Toggle fill style} 962.5 -332.5 0 0 0.18 0.18 {}
+T {-} 962.5 -332.5 0 0 0.18 0.18 {}
T {Decr line width} 882.5 -355 0 0 0.18 0.18 {layer=4}
T {Change line w.} 882.5 -343.75 0 0 0.18 0.18 {layer=12}
T {-} 882.5 -332.5 0 0 0.18 0.18 {}
@@ -423,4 +412,36 @@ T {-} 1042.5 -446.25 0 0 0.18 0.18 {layer=7}
T {-} 1042.5 -457.5 0 0 0.18 0.18 {layer=6}
T {Reserved} 2.5 -343.75 0 0 0.18 0.18 {layer=12}
T {-} 2.5 -332.5 0 0 0.18 0.18 {}
-T {BINDKEYS CHEATSHEET} 0 -630 0 0 2 2 {}
+T {BINDKEYS CHEATSHEET} 250 -560 0 0 1.2 1.2 {}
+T {~} 77.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {[} 997.5 -317.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {]} 1077.5 -317.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {|} 1157.5 -317.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {:} 957.5 -237.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {"} 1037.5 -237.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {<} 837.5 -157.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {>} 917.5 -157.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {?} 997.5 -157.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {!} 157.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {@} 237.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {#} 317.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {$} 397.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {%} 477.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {^} 557.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {&} 637.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {*} 717.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {(} 797.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {)} 877.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {_} 957.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {+} 1037.5 -397.5 0 1 0.4 0.4 {lock=0 layer=12}
+T {-} 762.5 -115 0 0 0.18 0.18 {layer=4}
+T {Draw all layers} 762.5 -103.75 0 0 0.18 0.18 {layer=12}
+T {-} 762.5 -92.5 0 0 0.18 0.18 {}
+T {-} 762.5 -126.25 0 0 0.18 0.18 {layer=7}
+T {-} 762.5 -137.5 0 0 0.18 0.18 {layer=6}
+T {-} 842.5 -115 0 0 0.18 0.18 {layer=4}
+T {Draw cur. layer} 842.5 -103.75 0 0 0.18 0.18 {layer=12}
+T {-} 842.5 -92.5 0 0 0.18 0.18 {}
+T {-} 842.5 -126.25 0 0 0.18 0.18 {layer=7}
+T {-} 842.5 -137.5 0 0 0.18 0.18 {layer=6}
+T {Incr line width} 962.5 -366.25 0 0 0.18 0.18 {layer=6}