65
75
/*--------------------------------------------------------------*/
67
static char *function_names[NUM_FUNCTIONS] = {
77
static char *function_names[NUM_FUNCTIONS + 1] = {
68
78
"Page", "Justify", "Superscript", "Subscript", "Normalscript",
69
79
"Nextfont", "Boldfont", "Italicfont", "Normalfont", "Underline",
70
"Overline", "ISO Encoding", "Return", "Halfspace", "Quarterspace",
80
"Overline", "ISO Encoding", "Halfspace", "Quarterspace",
71
81
"Special", "Tab Stop", "Tab Forward", "Tab Backward",
72
82
"Text Return", "Text Delete", "Text Right", "Text Left",
73
83
"Text Up", "Text Down", "Text Split",
74
"Text Home", "Text End", "Return Char", "Parameter",
84
"Text Home", "Text End", "Linebreak", "Parameter",
75
85
"Parameterize Point", "Break at Point", "Delete Point", "Insert Point",
76
"Next Point", "Attach", "Next Library", "Library Directory",
86
"Append Point", "Next Point", "Attach", "Next Library", "Library Directory",
77
87
"Library Move", "Library Copy", "Library Edit", "Library Delete",
78
88
"Library Duplicate", "Library Hide", "Library Virtual Copy",
79
"Page Directory ", "Library Pop",
89
"Page Directory", "Library Pop", "Virtual Copy",
80
90
"Help", "Redraw", "View", "Zoom In", "Zoom Out", "Pan",
81
"Double Snap", "Halve Snap", "Pan Left", "Pan Right", "Pan Up",
82
"Pan Down", "Write", "Rotate", "Flip X", "Flip Y", "Snap", "Snap To",
91
"Double Snap", "Halve Snap", "Write", "Rotate", "Flip X",
92
"Flip Y", "Snap", "Snap To",
83
93
"Pop", "Push", "Delete", "Select", "Box", "Arc", "Text",
84
"Exchange", "Copy", "Join", "Unjoin", "Spline", "Edit",
85
"Undelete", "Select Save", "Unselect", "Dashed", "Dotted",
86
"Solid", "Prompt", "Dot", "Wire", "Start", "Finish", "Cancel",
90
"Netlist", "Swap", "Pin Label", "Pin Global", "Info Label",
91
"Connectivity", "Sim", "SPICE", "PCB", "SPICE Flat",
94
"Exchange", "Copy", "Move", "Join", "Unjoin", "Spline", "Edit",
95
"Undo", "Redo", "Select Save", "Unselect", "Dashed", "Dotted",
96
"Solid", "Prompt", "Dot", "Wire", "Cancel", "Nothing", "Exit",
97
"Netlist", "Swap", "Pin Label", "Pin Global", "Info Label", "Graphic",
98
"Rescale", "Select Box", "Connectivity", "Continue Copy",
99
"Continue Element", "Finish Copy", "Finish Element", "Finish",
100
"Cancel Segment", "Sim", "SPICE", "PCB", "SPICE Flat", "Text Delete Param",
94
101
NULL /* sentinel */
512
554
add_vbinding(XK_9, XCF_Page, 9);
513
555
add_vbinding(XK_0, XCF_Page, 10);
515
add_vbinding(SHIFT | XK_KP_1, XCF_Justify, 0);
516
add_vbinding(SHIFT | XK_KP_2, XCF_Justify, 1);
517
add_vbinding(SHIFT | XK_KP_3, XCF_Justify, 2);
518
add_vbinding(SHIFT | XK_KP_4, XCF_Justify, 3);
519
add_vbinding(SHIFT | XK_KP_5, XCF_Justify, 4);
520
add_vbinding(SHIFT | XK_KP_6, XCF_Justify, 5);
521
add_vbinding(SHIFT | XK_KP_7, XCF_Justify, 6);
522
add_vbinding(SHIFT | XK_KP_8, XCF_Justify, 7);
523
add_vbinding(SHIFT | XK_KP_9, XCF_Justify, 8);
557
add_vbinding(XK_KP_1, XCF_Justify, 0);
558
add_vbinding(XK_KP_2, XCF_Justify, 1);
559
add_vbinding(XK_KP_3, XCF_Justify, 2);
560
add_vbinding(XK_KP_4, XCF_Justify, 3);
561
add_vbinding(XK_KP_5, XCF_Justify, 4);
562
add_vbinding(XK_KP_6, XCF_Justify, 5);
563
add_vbinding(XK_KP_7, XCF_Justify, 6);
564
add_vbinding(XK_KP_8, XCF_Justify, 7);
565
add_vbinding(XK_KP_9, XCF_Justify, 8);
525
567
add_vbinding(XK_KP_End, XCF_Justify, 0);
526
568
add_vbinding(XK_KP_Down, XCF_Justify, 1);
592
638
add_binding(XK_v, XCF_View);
593
639
add_binding(XK_Z, XCF_Zoom_In);
594
640
add_binding(XK_z, XCF_Zoom_Out);
595
add_binding(XK_p, XCF_Pan);
641
add_vbinding(XK_p, XCF_Pan, 0);
596
642
add_binding(XK_plus, XCF_Double_Snap);
597
643
add_binding(XK_minus, XCF_Halve_Snap);
598
add_binding(XK_Left, XCF_Pan_Left);
599
add_binding(XK_Right, XCF_Pan_Right);
600
add_binding(XK_Up, XCF_Pan_Up);
601
add_binding(XK_Down, XCF_Pan_Down);
644
add_vbinding(XK_Left, XCF_Pan, 1);
645
add_vbinding(XK_Right, XCF_Pan, 2);
646
add_vbinding(XK_Up, XCF_Pan, 3);
647
add_vbinding(XK_Down, XCF_Pan, 4);
602
648
add_binding(XK_W, XCF_Write);
603
649
add_vbinding(XK_O, XCF_Rotate, -5);
604
650
add_vbinding(XK_o, XCF_Rotate, 5);
633
679
add_binding(XK_period, XCF_Dot);
634
680
add_binding(BUTTON1, XCF_Wire);
635
681
add_binding(XK_w, XCF_Wire);
636
add_binding(BUTTON3, XCF_Nothing);
637
682
add_binding(CTRL | ALT | XK_q, XCF_Exit);
638
add_binding(BUTTON1, XCF_Start);
639
add_binding(SHIFT | BUTTON1, XCF_Finish);
640
add_binding(BUTTON2, XCF_Finish);
641
add_binding(BUTTON3, XCF_Cancel);
683
add_binding(HOLD | BUTTON1, XCF_Move);
684
add_binding(BUTTON1, XCF_Continue_Element);
685
add_binding(BUTTON1, XCF_Continue_Copy);
686
add_binding(BUTTON1, XCF_Finish);
687
add_binding(XK_Escape, XCF_Cancel);
688
add_binding(ALT | XK_r, XCF_Rescale);
642
689
add_binding(ALT | XK_s, XCF_SnapTo);
645
690
add_binding(ALT | XK_q, XCF_Netlist);
646
691
add_binding(XK_slash, XCF_Swap);
647
692
add_binding(XK_T, XCF_Pin_Label);
648
693
add_binding(XK_G, XCF_Pin_Global);
649
694
add_binding(XK_I, XCF_Info_Label);
650
695
add_binding(ALT | XK_w, XCF_Connectivity);
651
add_binding(ALT | XK_d, XCF_Sim);
652
add_binding(ALT | XK_a, XCF_SPICE);
653
add_binding(ALT | XK_f, XCF_SPICEflat);
654
add_binding(ALT | XK_p, XCF_PCB);
697
/* These are for test purposes only. Menu selection is */
700
/* add_binding(ALT | XK_d, XCF_Sim); */
701
/* add_binding(ALT | XK_a, XCF_SPICE); */
702
/* add_binding(ALT | XK_f, XCF_SPICEflat); */
703
/* add_binding(ALT | XK_p, XCF_PCB); */
705
/* 2-button vs. 3-button mouse bindings (set with -2 */
706
/* commandline option; 3-button bindings default) */
709
add_binding(BUTTON3, XCF_Text_Return);
710
add_binding(BUTTON3, XCF_Select);
711
add_binding(HOLD | BUTTON3, XCF_SelectBox);
712
add_binding(BUTTON3, XCF_Finish_Element);
713
add_binding(BUTTON3, XCF_Finish_Copy);
715
add_binding(XK_BackSpace, XCF_Cancel_Last);
716
add_binding(XK_BackSpace, XCF_Cancel);
719
add_binding(BUTTON2, XCF_Text_Return);
720
add_binding(SHIFT | BUTTON1, XCF_Text_Return);
721
add_binding(BUTTON2, XCF_Select);
722
add_binding(SHIFT | BUTTON1, XCF_Select);
723
add_binding(HOLD | BUTTON2, XCF_SelectBox);
724
add_binding(SHIFT | HOLD | BUTTON1, XCF_SelectBox);
725
add_binding(BUTTON2, XCF_Finish_Element);
726
add_binding(SHIFT | BUTTON1, XCF_Finish_Element);
727
add_binding(BUTTON2, XCF_Finish_Copy);
728
add_binding(SHIFT | BUTTON1, XCF_Finish_Copy);
729
add_binding(BUTTON3, XCF_Cancel_Last);
730
add_binding(BUTTON3, XCF_Cancel);
735
/*----------------------------------------------*/
736
/* Mode-setting rebindings (non-Tcl version) */
737
/*----------------------------------------------*/
739
static int button1mode = XCF_Wire;
741
/*--------------------------------------------------------------*/
742
/* Re-bind BUTTON1 to the indicated function and optional value */
743
/*--------------------------------------------------------------*/
745
void mode_rebinding(int newmode, int newvalue)
747
remove_binding(BUTTON1, button1mode);
748
add_vbinding(BUTTON1, newmode, (short)newvalue);
749
button1mode = newmode;
753
/*--------------------------------------------------------------*/
754
/* Execute the function associated with the indicated BUTTON1 */
755
/* mode, but return the keybinding to its previous state. */
756
/*--------------------------------------------------------------*/
758
void mode_tempbinding(int newmode, int newvalue)
763
if (isnbound(BUTTON1, button1mode, &saveval)) {
764
remove_binding(BUTTON1, button1mode);
765
add_vbinding(BUTTON1, newmode, (short)newvalue);
767
eventdispatch(BUTTON1, (int)cpos.x, (int)cpos.y);
768
remove_binding(BUTTON1, newmode);
769
add_vbinding(BUTTON1, button1mode, saveval);
772
fprintf(stderr, "Error: No such button1 binding %s\n",
773
func_to_string(button1mode));
776
#endif /* TCL_WRAPPER */