; ; Init file for gschem ; ; ;'s are comments ; keywords are case sensitive (guile feature) ; mode strings are case sensitive ; colors are not case sensitive ; ; gschem-version string ; ; Specifies the version of this file. This number is used to make sure ; that the rc file is compatible with the version of gschem that is ; being run. The end user should *not* change this value. ; (gschem-version "20050313") ; Load up gafrc ; ; Contains paths needed for all gaf programs (define gedadata (getenv "GEDADATA")) (define gedadatarc (getenv "GEDADATARC")) (load (string-append gedadatarc "/system-gafrc")) ; ; Start of color section ; ; Load up a color scheme has a light (almost white) background ; Comment out the first line and comment in the second line for a ; dark (black) background. The dark background is the original look. ; (load (string-append gedadatarc "/gschem-darkbg")) ; dark background ;(load (string-append gedadatarc "/gschem-lightbg")) ; light background ; ; End of color section ; ; ; Start of mode related keywords ; ; toolbars string ; ; Controls if the toolbars are visible or not. ; (toolbars "enabled") ;(toolbars "disabled") ; handleboxes string ; ; Controls if the handleboxes (which contain the menu and toolbar) are ; visible or not. ; (handleboxes "enabled") ;(handleboxes "disabled") ; undo-control string ; ; Controls if the undo is enabled or not ; (undo-control "enabled") ;(undo-control "disabled") ; undo-levels number ; ; Determines the number of levels of undo. Basically this number decides ; how many backup schematics are saved on disk. ; (undo-levels 10) ; undo-type string ; ; Controls which kind of undo is used. The default is to use the disk as ; the storing medium (ie after every action the undo information is stored ; to disk). The other mechanism uses only memory. The disk mechanism is ; nice because you get undo-level number of backups of the schematic written ; to disk as backups so you should never lose a schematic due to a crash. ; (undo-type "disk") ;(undo-type "memory") ; draw-grips string ; ; Controls if the editing grips are drawn when selecting objects ; (draw-grips "enabled") ;(draw-grips "disabled") ; net-endpoint-mode string ; ; Not user changable. (net-endpoint-mode "filledbox") ; net-midpoint-mode string ; ; Not user changable. (net-midpoint-mode "filled") ; net-consolidate string ; ; Controls if the net consolidation code is used when schematics are read ; in, written to disk, and when nets are being drawn (does not consolidate ; when things are being copied or moved yet). Net consolidation is the ; connection of nets which can be combined into one. ; Comment out if you want the default mode ; (net-consolidate "enabled") ;(net-consolidate "disabled") ; net-style string ; ; Set to thin if you want thin nets. ; Set to thick if you want thick nets. ; This mode also determines what net style gets printed ; ;(net-style "thin") (net-style "thick") ; netconn-rubberband string ; ; Controls if net connections are maintained when you move a connecting ; component or net. ; (netconn-rubberband "enabled") ;(netconn-rubberband "disabled") ; bus-style string ; ; Set to thin if you want thin buses. ; Set to thick if you want thick buses. ; This mode also determines what bus style gets printed ; ;(bus-style "thin") (bus-style "thick") ; pin-style string ; ; Set to thin if you want thin pins ; Set to thick if you want thick pins. ; This mode also determines what pin style gets printed ; ;(pin-style "thin") (pin-style "thick") ; zoom-with-pan string ; ; Sets the zoom in and zoom out functions to pan the display and then zoom. ; Basically zoom in / out where the mouse pointer sits on the display. ; Comment out if you want the default mode. ; (zoom-with-pan "enabled") ;(zoom-with-pan "disabled") ; fast-mousepan string ; ; Controls if text is drawn properly or if a simplified version (a line which ; represents the text string) is drawn during mouse pan. Drawing a simple ; line speeds up mousepan a lot for big schematics (fast-mousepan "enabled") ;(fast-mousepan "disabled") ; action-feedback-mode string ; ; Set the default action feedback mode (for copy/move/component place). ; Set to outline to get an outline of the selection. ; Set to boundingbox to get a bounding box of the selection. ; For a fast machines with fast video use outline (it looks good). ; For a slow machine use boundingbox; it is much faster. ; Comment out if you want the default mode. ; (action-feedback-mode "outline") ;(action-feedback-mode "boundingbox") ; continue-component-place string ; ; If this enabled then multiple instances of the same component can be placed ; immediately without having to click on the name or Apply in the Component ; Place... dialog box. If this is disabled then only one component can be ; placed (the user must then press Apply in the dialog box to place multiple ; instances of the same component) ; (continue-component-place "enabled") ;(continue-component-place "disabled") ; sort-components-library string ; ; If this is enabled, then the component library will be sorted in alpha ; order. Enabling this will hide the search order for components, keep ; that in mind. ; (sort-component-library "disabled") ;(sort-component-library "enabled") ; text-feedback string ; ; Controls if text is drawn when doing an xor action (like copy/move) ; Comment out if you want the default mode. ; Not in production yet. ; (text-feedback "only-when-readable") ;(text-feedback "always") ; text-display-zoomfactor number ; ; Sets the zoomfactor number (~150 being the most zoomed out factor) ; (zoom factors get smaller as you zoom in) at which text is displayed ; completely (not a line). This is only valid if above is set to ; "only-when-readable" ; (text-display-zoomfactor 30) ; text-origin-marker string ; ; Controls if the text origin markers are displayed (or not) ; (text-origin-marker "enabled") ;(text-origin-marker "disabled") ; scrollbars string ; ; Controls if the scrollbars are displayed (enabled) or not (disabled) ; (scrollbars "enabled") ;(scrollbars "disabled") ; scrollbar-update string ; ; Specifies the behavior of the scrollbars in the main window. ; continuous - display is redrawn as you move the scrollbar ; delayed - display is redrawn once you stop moving the scrollbar ; Default is continuous ; (scrollbar-update "continuous") ;(scrollbar-update "delayed") ; raise-dialog-boxes-on-expose string ; ; Controls if dialog boxes are raised whenever an expose event happens ; Default is enabled ; (raise-dialog-boxes-on-expose "enabled") ;(raise-dialog-boxes-on-expose "disabled") ; object-clipping string ; ; Determines if the object clipping code is executed or not ; This code does speed up redraws a bit. ; Possible options: enabled or disabled ; Default is enabled, I do not recommend turning this off, since some X ; servers don't handle clipping correctly. ; (object-clipping "enabled") ;(object-clipping "disabled") ; embed-components string ; ; Determines if the newly placed components are embedded in the schematic ; or if only the filename is specified and the component is searched for ; instead. If it is enabled, then all new components will be embedded ; othewise they are not embedded. This can be controlled on the fly during ; runtime with the "Embed Component" checkbox on the select component dialog ; box ; ;(embed-components "enabled") (embed-components "disabled") ; attribute-promotion string ; ; This keyword controls if attribute promotion occurs when you instanciate a ; component. Attribute promotion basically means that any floating attribute ; (unattached) which is inside a symbol gets "promoted" or attached to the ; newly inserted component. This only occurs when the component is ; instanciated. ; (attribute-promotion "enabled") ;(attribute-promotion "disabled") ; promote-invisible string ; ; If attribute-promotion is enabled, then this controls if invisible floating ; attributes are promoted (attached to the outside of the component) if the ; text string is invisible. There are cases where it is undesirable, so the ; default is disabled. ; ;(promote-invisible "enabled") (promote-invisible "disabled") ; keep-invisible string ; ; If both attribute-promotion and promote-invisible are enabled, then this ; controls if invisible floating attributes are kept around in memory and ; NOT deleted. Having this enabled will keeps component slotting working. ; If attribute-promotion and promote-invisible are enabled and this ; keyword is disabled, then component slotting will NOT work (and maybe ; other functions which depend on hidden attributes, since those attributes ; are deleted from memory). ; ;(keep-invisible "disabled") (keep-invisible "enabled") ; logging string ; ; Determines if the logging mechanism is enabled or disabled ; Possible options: enabled or disabled ; Default is enabled. ; See below for the logging-destination keyword for control over ; where the messages go. ; (logging "enabled") ;(logging "disabled") ; log-window string ; ; Controls if the log message window is mapped when gschem is started up ; Possible options: ; startup - opened up when gschem starts ; later - NOT opened up when gschem starts ; (can be opened by Options/Show Log Window) ; (log-window "startup") ;(log-window "later") ; log-window-type string ; ; Controls if the log message window is a transient or if it is decorated ; as a normal window (this is dependant on the window manager doing decoration ; right) ; ; Possible options: ; decorated - log window is a normal decorated window ; transient - log window is a transient dialog box, typically ; not decorated by the window manager ; (log-window-type "decorated") ;(log-window-type "transient") ; logging-destination string ; ; Specifies where log message go during run time. ; Possible options are: ; log_window The log window (if it's visible) ; tty The stdout of the terminal where gschem was run from ; both Both of the above locations ; Message are always written to the log file (unless logging is disabled) ; by the above keyword ; ; Default is log_window ; (logging-destination "log_window") ;(logging-destination "tty") ;(logging-destination "both") ; text-size number ; ; Sets the default text size. ; (text-size 10) ; snap-size number ; ; Sets the default spacing which objects snap to. This is not the grid ; spacing (that's independent of this variable) ; (snap-size 100) ; text-caps-style string ; ; Sets the default caps style used for the input of text ; lower specifies that all inputed text is in lowercase ; upper specifies that all inputed text is in uppercase ; both specifies that all inputed text is used as is (no case conversion) ; (text-caps-style "both") ;(text-caps-style "lower") ;(text-caps-style "upper") ; file-preview string ; ; Controls if the preview area in the File Open/Save As and Component ; dialog boxes is enabled by default or not ; (file-preview "disabled") ;(file-preview "enabled") ; enforce-hierarchy string ; ; Controls if the movement between hierarchy levels (of the same underlying ; schematics) is allowed or not. ; If this is enabled, then the user cannot (without using the page manager) ; move between hierarchy levels otherwise, if enabled, the user sees all ; the hierarchy levels as being flat. ; (enforce-hierarchy "enabled") ;(enforce-hierarchy "disabled") ; default-series-name string ; ; Specify the default series name (of new schematics) ; Will probably be changed a runtime ; (default-series-name "untitled") ; untitled-name string ; ; Specify the default untitled basename (usually only used a startup time) ; And typically not changed at runtime ; (untitled-name "untitled") ; window-size width height ; ; Specifies the size of the drawing area window. The width and height ; are specified in pixels and do not include the three menu bars and ; scrollbars (so the window will be larger than the specified ; measurements). Try to keep an aspect ratio of 1.333333 if at all possible. ; These numbers are NOT the true size of the window, but of the drawing area. ; ;(window-size 650 487) ; Good size for 800x600 (window-size 900 650) ; Good size for 1024x768 ;(window-size 950 712) ; Good size for 1152x864 ;(window-size 1100 825) ; Good size for 1280x1024 ; world-size width height border ; ; Specifies the size of the world and a border (in world space units) ; Be sure all inputs are reals (floats/doubles) and don't try to reverse ; the values: to get a portrait mode. Code to support that needs to be added ; The code that implements this automatically transforms the dimensions into ; the proper aspect ratio. All units are in inches. ; This is not the paper size. That is specified elsewhere. End users should ; not change this at all. ; (world-size 120.0 90.0 1.0) ;(world-size 60.0 45.0 1.0) ; page-size width height ; ; Specifies the size of the default paper size ; Be sure all inputs are reals (floats/doubles) and don't try to reverse ; the values: to get a portrait mode. Code to support that needs to be added ; The code that implements this automatically transforms the dimensions into ; the proper aspect ratio. All units are in inches. (use output-orientation ; to get portrait mode) ; (paper-size 11.0 8.5) ; letter ;(paper-size 14.0 8.5) ; legal ;(paper-size 8.5 5.5) ; statement ;(paper-size 17.0 11.0) ; tabloid ;(paper-size 11.0 17.0) ; ledger ;(paper-size 13.0 8.5) ; folio ;(paper-size 10.833 8.472) ; quarto ;(paper-size 14 10) ; 10x14 ;(paper-size 10.0 7.5) ; executive ;(paper-size 11.0 8.5) ; A ;(paper-size 17.0 11.0) ; B ;(paper-size 22.0 17.0) ; C ;(paper-size 34.0 22.0) ; D ;(paper-size 44.0 34.0) ; E ;(paper-size 46.81 33.11) ; A0 ;(paper-size 33.11 23.39) ; A1 ;(paper-size 23.39 16.54) ; A2 ;(paper-size 16.54 11.69) ; A3 ;(paper-size 11.69 8.27) ; A4 ;(paper-size 8.27 5.83) ; A5 ;(paper-size 5.83 4.13) ; A6 ;(paper-size 4.13 2.91) ; A7 ;(paper-size 2.91 2.05) ; A8 ;(paper-size 2.05 1.46) ; A9 ;(paper-size 1.46 1.02) ; A10 ;(paper-size 1.02 0.71) ; A11 ;(paper-size 0.71 0.51) ; A12 ; paper-sizes string width height ; ; Specifies which paper sizes are available for printing. ; The width and height parameters are in the order for landscape printing, ; so reversing them for portrait won't work just yet. (and that will be ; implemented differently. ; The default paper size is set above. All units are in inches (forgiveness ; please). ; ; You MUST change this list in this file (gschem-systemrc) if you want ; any reordering changes to take effect. ; (paper-sizes "Letter : 8.5 in x 11 in" 11.0 8.5) (paper-sizes "Legal : 8.5 in x 14 in" 14.0 8.5) (paper-sizes "Statement : 5.5 in x 8.5 in" 8.5 5.5) (paper-sizes "Tabloid : 11 in x 17 in" 17.0 11.0) (paper-sizes "Ledger : 17 in x 11 in" 11.0 17.0) (paper-sizes "Folio : 8.5 in x 13 in" 13.0 8.5) (paper-sizes "Quarto : 8.472 in x 10.833 in" 10.833 8.472) (paper-sizes "10x14 : 10 in x 14 in " 14.0 10.0) (paper-sizes "Executive : 7.5 x 10" 10.0 7.5) (paper-sizes "A : 8.5 in x 11 in" 11.0 8.5) (paper-sizes "B : 11 in x 17 in" 17.0 11.0) (paper-sizes "C : 17 in x 22 in" 22.0 17.0) (paper-sizes "D : 22 in x 34 in" 34.0 22.0) (paper-sizes "E : 34 in x 44 in" 44.0 34.0) (paper-sizes "A0 84.10 cm x 118.90 cm" 46.81 33.11) (paper-sizes "A1 59.40 cm x 84.10 cm" 33.11 23.39) (paper-sizes "A2 42.00 cm x 59.40 cm" 23.39 16.54) (paper-sizes "A3 29.70 cm x 42.00 cm" 16.54 11.69) (paper-sizes "A4 21.00 cm x 29.70 cm" 11.69 8.27) (paper-sizes "A5 14.80 cm x 21.00 cm" 8.27 5.83) (paper-sizes "A6 10.50 cm x 14.80 cm" 5.83 4.13) (paper-sizes "A7 7.40 cm x 10.50 cm" 4.13 2.91) (paper-sizes "A8 5.20 cm x 7.40 cm" 2.91 2.05) (paper-sizes "A9 3.70 cm x 5.20 cm" 2.05 1.46) (paper-sizes "A10 2.60 cm x 3.70 cm" 1.46 1.02) (paper-sizes "A11 1.80 cm x 2.60 cm" 1.02 0.71) (paper-sizes "A12 1.30 cm x 1.80 cm" 0.71 0.51) ; output-text string ; ; Controls how text is rendered to postscript ; vector - the displayed vector font is rendered to the postscript file ; ps - an equivalent postscript font is rendered to the ps file ; vector rendering is *exactly* as the display is shown ; ps is close, but not perfect (yet) (ps rendering does NOT render 180 degree ; rotated text correctly yet) ; Also vector rendered text files are much much larger then ps files. ; ;(output-text "vector") (output-text "ps") ; output-vector-threshold ; ; Controls the threshold (in text lines) where multi-line text objects ; are outputted using the postscript font or the vector font. If the ; number of lines exceeds the specified threshold, then the whole multi-line ; text item is outputted using the vector font instead of the postscript ; font. If you want to disable this feature, then comment in the line with ; the large value. ; (output-vector-threshold 3) ;(output-vector-threshold 999999) ; output-type string ; ; Controls what is actually printed ; string is either "extents" or "extents no margins" or ; "current window" ; (output-type "extents") ;(output-type "extents no margins") ;(output-type "current window") ;;; (output-type "limits") "limits" is considered deprecated and should ;;; not be used. ; output-orientation string ; ; Controls which way the output page is layed out (landscape or portrait) ; ;(output-orientation "portrait") (output-orientation "landscape") ; output-color string ; ; Controls if output (postscript) is color (enabled) or black/white (disabled) ; (output-color "disabled") ;(output-color "enabled") ; output-capstyle string ; ; Controls the capstyle at the end of lines in the postscript output ; (output-capstyle "square") ;(output-capstyle "round") ;(output-capstyle "butt") ; setpagedevice-orientation string ; ; If enabled, puts a << /Orientation x >> setpagedevice into the postscript ; output. x is either 1 for landscape or 0 for portrait. ; (setpagedevice-orientation "disabled") ;(setpagedevice-orientation "enabled") ; setpagedevice-pagesize string ; ; If enabled, puts a << /PageSize XxY >> setpagedevice into the postscript ; output. XxY is the size of the paper in points. ; (setpagedevice-pagesize "disabled") ;(setpagedevice-pagesize "enabled") ; image-color string ; ; Controls if image (png) is color (enabled) or black/white (disabled) ; (image-color "enabled") ;(image-color "disabled") ; middle-button string ; ; Controls if the middle mouse button draws strokes, repeats the last ; command, or does an action (move and copy (holding down the ALT key) ; are supported) on a single objects. ; (middle-button "action") ;(middle-button "stroke") ;(middle-button "repeat") ; third-button string ; ; Controls if the third mouse button performs the popup ("popup") or ; if it does the mouse panning ("mousepan") ; (third-button "popup") ;(third-button "mousepan") ; warp-cursor string ; ; Controls if the cursor is warped (or moved) when you zoom in and out. ; Some people find this forced cursor movement annoying. ; (warp-cursor "enabled") ;(warp-cursor "disabled") ; Bus ripper controls ; The following keywords control the auto bus ripper addition code ; ; bus-ripper-size : Sets the size of the auto bus rippers. ; bus-ripper-type : Sets the bus ripper type either a "component" or ; plain "net" ; bus-ripper-syname : If above is set to component, specify the symbol name. ; The symbol must exist in a component library ; bus-ripper-rotation : Either "symmetric" or "non-symmetric". This deals ; with how the bus ripper symbol is rotated when it ; is auto added to a schematic. ; ; The default bus ripper (bus-ripper-size 200) (bus-ripper-type "component") (bus-ripper-symname "busripper-1.sym") (bus-ripper-rotation "non-symmetric") ; A symmetric alternative ;(bus-ripper-size 200) ;(bus-ripper-type "component") ;(bus-ripper-symname "busripper-2.sym") ;(bus-ripper-rotation "symmetric") ; A simple net ;(bus-ripper-size 200) ;(bus-ripper-type "net") ; Grid dot size ; The grid-dot-size keyword controls the size of the grid dots. The units ; are in pixels. The default (min) value of 1 is the best performing as the ; grid dot size is rendered as a single point and can be accelerated by ; the X server. Values of 2 and 3 are good values to try if the default ; grid dot size is too small for your tastes. Anything larger than 3 is ; probably too large. ; (grid-dot-size 1) ;(grid-dot-size 2) ;(grid-dot-size 3) ; force-boundingbox string ; ; Controls if the entire bounding box of a symbol is used when figuring out ; whichend of the pin is considered the active port. Enable this when ; gschem is guessing incorrectly. ; (force-boundingbox "disabled") ;(force-boundingbox "enabled") ; reset-componet-library ; ; When reset-component-library is executed, then all known component library ; paths are erased. This is useful if the user wants to override all the ; system provided paths and provide his/her own set. Normally this is not ; commented in. ; ; (reset-component-library) ; reset-source-library ; ; When reset-source-library is executed, then all known source library ; paths are erased. This is useful if the user wants to override all the ; system provided paths and provide his/her own set. Normally this is not ; commented in. ; ; (reset-source-library) ; ; End of mode related keywords ; ; ; Start of hooks ; ; ; Comment in this scheme code if you want automatic numbering when ; placing new component and copying components ; ;(load (string-append gedadatarc "/scheme/auto-uref.scm")) ;(add-hook! add-component-hook auto-uref) ;(add-hook! copy-component-hook auto-uref) ; ; End of hooks ; ; ; Start of path related keywords ; ; attribute-name string ; ; Specifies the default attributes which are presented to the user in the ; "Add Attribute" dialog box. ; The main purpose of this keyword is to allow the user to add any attributes ; which should be in this dialog box. ; Some of these names are specific for symbols while others are for general ; components or nets. The attribute names are case sensitive. (change this?) ; ; The order of the attribute-name keywords determines the order they ; are displayed. ; (attribute-name "netname") (attribute-name "refdes") (attribute-name "slot") (attribute-name "value") (attribute-name "net") (attribute-name "device") (attribute-name "pinnumber") (attribute-name "pinseq") (attribute-name "pintype") (attribute-name "pinlabel") (attribute-name "source") (attribute-name "numslots") (attribute-name "slot") (attribute-name "slotdef") (attribute-name "graphical") (attribute-name "footprint") (attribute-name "description") (attribute-name "documentation") (attribute-name "symversion") (attribute-name "comment") (attribute-name "file") (attribute-name "model-name") ; ; End of path related keywords ; ; ; Start of stroke related keywords ; ; ; This section defines associations between a stroke sequence and a ; guile function which is executed when the stroke is drawn in the ; gschem window ; ; Strokes are defined as follows: ; ; 1 2 3 ; ; 4 5 6 ; ; 7 8 9 ; ; The sequence of number such as "852" specify how the stroke is drawn. ; Sequence "852" happens to be a vertical line drawn from the bottom going ; up. ; ; Please see the libstroke documentation for further information on the ; stroke description. ; ; For the most part I went a little overboard on the stroke defs, you ; probably can get away with many less stroke defs, but I'm a very ; sloppy stroke drawing person. :-) Guess my teachers were always ; right-- my handwritting was/is awful. ; ; Be careful here, strokes is a rather large list, and make sure you maintain ; proper ( and )'s. ; (define strokes ; Letter L for line '(("14789" . add-line) ; Letter Z for zoom window ("125789" . view-zoom-box) ("1254789" . view-zoom-box) ("1235789" . view-zoom-box) ("2354789" .view-zoom-box) ("2324789" . view-zoom-box) ("12354789" . view-zoom-box) ("12324789" . view-zoom-box) ("12365789" . view-zoom-box) ("1232789" . view-zoom-box) ; line up for zoom out ("852" . view-zoom-out) ; line down for zoom in ("258" . view-zoom-in) ; Letter C for copy ("3214789" . edit-copy) ("214789" . edit-copy) ("21489" . edit-copy) ("32478" . edit-copy) ; Letter E for edit ("563214789" . edit-edit) ("53214789" . edit-edit) ("5321478" . edit-edit) ("5214789" . edit-edit) ("521478" . edit-edit) ("453214789" . edit-edit) ("45321478" . edit-edit) ("456321478" . edit-edit) ("456214789" . edit-edit) ("45621478" . edit-edit) ; Letter N for net ("415963" . add-net) ("7414863" . add-net) ("74148963" . add-net) ("74158963" . add-net) ("7415963" . add-net) ; Letter M for move ("741236963" . edit-move) ("7412572369" . edit-move) ("7412575369" . edit-move) ("741258369" . edit-move) ("74125852369" . edit-move) ("7412585369" . edit-move) ("74125863" . edit-move) ("74126963" . edit-move) ("741475369" . edit-move) ("7414785369" . edit-move) ("74148369" . edit-move) ("7414852369" . edit-move) ("741485369" . edit-move) ("74148669" . edit-move) ("741552369" . edit-move) ("741575369" . edit-move) ("7415852369" . edit-move) ("741585369" . edit-move) ("74185369" . edit-move) ("74255369" . edit-move) ("7425852369" . edit-move) ("742585369" . edit-move) ("7426963" . edit-move) ("74585369" . edit-move) ; Letter D for delete ("14786321" . edit-delete) ("14789621" . edit-delete) ("147896321" . edit-delete) ("15896321" . edit-delete) ("257896321" . edit-delete) ("25896321" . edit-delete) ("4789621" . edit-delete) ; Letter S for select ("2145987" . edit-select ) ("215987" . edit-select ) ("2156987" . edit-select ) ("21256987" . edit-select ) ("3215987" . edit-select ) ("32156987" . edit-select ) ("32148987" . edit-select ) ("32145987" . edit-select ))) ; ; End of stroke related keywords ; ; ; Start of keymapping related keywords ; ; Keymapping rules: ; ; - Everything is case sensitive ; - For a -- "a" ; - For Shift-A -- "Shift A" ; - For Control-a -- "Control a" ; - For Alt-a -- "Alt a" ; - At this point in time you can only have one modifier ; (shift, control, alt) at a time. ; - Keys must be unique in each keymap, especially the global one ; - Strings (without any modifers) are the same strings specified ; for the keys in the file /usr/lib/X11/XKeysymDB (at least on ; a linux box) ; ; All keys in this keymap *must* be unique (define file-keymap '(("w" . file-new-window) ("n" . file-new) ("o" . file-open) ("s" . file-save) ("e" . page-close) ; yes this is okay; reusing page-close ("a" . file-save-as) ("l" . file-save-all) ("p" . file-print) ("r" . page-revert) ; yes this is okay; resuing page-revert ("i" . file-image) ("t" . file-script) ("c" . file-close-window) ("q" . file-quit))) ; All keys in this keymap *must* be unique (define edit-keymap '(("Shift U" . edit-undo) ("Shift R" . edit-redo) ("s" . edit-select) ("c" . edit-copy-hotkey) ; This can also just be edit-copy and then ("e" . edit-edit) ; you must pick the anchor point ("x" . edit-text) ("m" . edit-move-hotkey) ; This can also just be edit-move ("d" . edit-delete) ("r" . edit-rotate-90-hotkey) ("i" . edit-mirror-hotkey) ("Shift S" . edit-slot) ("o" . edit-color) ("l" . edit-lock) ("Shift L" . edit-unlock) ("w" . edit-linetype) ("f" . edit-filltype) ("t" . edit-translate) ("b" . edit-embed) ("u" . edit-unembed) ("p" . edit-update) ("n" . edit-show-hidden) ("v" . edit-make-text-visible))) ;;; ("h" . edit-stretch-hotkey) Obsolete ; All keys in this keymap *must* be unique (define view-keymap '(("r" . view-redraw) ("b" . view-zoom-box-hotkey) ("f" . view-zoom-full) ("l" . view-zoom-extents) ("e" . view-zoom-extents) ("p" . view-pan-hotkey) ("u" . view-update-cues) ("o" . view-zoom-out-hotkey) ("i" . view-zoom-in-hotkey))) (define buffer-keymap '(("c" . buffer-copy1) ("u" . buffer-cut1) ("p" . buffer-paste1-hotkey))) ; All keys in this keymap *must* be unique (define page-keymap '(("m" . page-manager) ("n" . page-next) ("p" . page-prev) ("e" . page-new) ("r" . page-revert) ("c" . page-close) ("d" . page-discard) ("Shift P" . page-print))) ; All keys in this keymap *must* be unique (define add-keymap '(("c" . add-component) ("a" . add-attribute-hotkey) ("n" . add-net-hotkey) ("u" . add-bus-hotkey) ("t" . add-text) ("l" . add-line-hotkey) ("b" . add-box-hotkey) ("i" . add-circle-hotkey) ("r" . add-arc-hotkey) ("p" . add-pin-hotkey) ("g" . add-picture-hotkey))) ; All keys in this keymap *must* be unique (define hierarchy-keymap '(("d" . hierarchy-down-schematic) ("s" . hierarchy-down-symbol) ("u" . hierarchy-up) ("o" . hierarchy-documentation))) ; All keys in this keymap *must* be unique (define attributes-keymap '(("a" . attributes-attach) ("d" . attributes-detach) ("n" . attributes-show-name) ("v" . attributes-show-value) ("b" . attributes-show-both) ("t" . attributes-visibility-toggle) ("Shift F" . edit-find-text) ("h" . edit-hide-text) ("Shift H" . edit-show-text) ("u" . edit-autonumber))) ; All keys in this keymap *must* be unique (define options-keymap '(("t" . options-text-size) ("a" . options-action-feedback) ("g" . options-grid) ("s" . options-snap) ("r" . options-rubberband) ("Shift S" . options-snap-size) ("l" . options-show-log-window) ("c" . options-show-coord-window))) ; All keys in this keymap *must* be unique (define help-keymap '(("a" . help-about) ("m" . help-manual) ("h" . help-hotkeys) ("c" . hierarchy-documentation))) ; yes this is okay; reusing ; All keys in the global-keymap *must* be unique (define global-keymap '(("Escape" . cancel) ("a" . add-keymap) ("b" . add-box-hotkey) ("c" . edit-copy-hotkey) ("d" . edit-delete) ("e" . edit-keymap) ("f" . file-keymap) ("g" . no-action) ("h" . help-keymap) ("i" . add-component) ("j" . no-action) ("k" . no-action) ("l" . add-line-hotkey) ("m" . edit-move-hotkey) ("n" . add-net-hotkey) ("o" . options-keymap) ("p" . page-keymap) ("q" . no-action) ("r" . view-redraw) ("s" . edit-select) ("t" . attributes-keymap) ("u" . add-bus-hotkey) ("v" . view-keymap) ("w" . view-zoom-box-hotkey) ("x" . view-pan-hotkey) ("y" . buffer-keymap) ("z" . view-zoom-in-hotkey) ("period" . repeat-last-command) ("comma" . misc-misc) ("equal" . misc-misc2) ("Shift plus" . misc-misc3) ("Delete" . edit-delete) ("Shift greater" . page-next) ("Shift less" . page-prev) ("Alt q" . file-quit) ("Shift H" . hierarchy-keymap) ("Shift U" . edit-undo) ("Shift R" . edit-redo) ("Shift Z" . view-zoom-out-hotkey))) ; finally set the keymap point to the newly created datastructure (define current-keymap global-keymap) ; ; Here are the definitions for the top pull down menu bar ; ; The "menu item name" is the name of the item as it will appear in the menu ; The "menu action" is the scheme function which is executed when the item ; is selected off of the menu. And "menu hotkey function" is the scheme ; function which is executed when the hotkey is pressed. ; "menu hotkey function" has no real functionality in the menuing scheme other ; than providing the information as to what hotkey to display in the menu. ; "menu hotkey function" is not executed when you select an item off of the ; list. The hotkeys which are displayed are defined by the global-keymap. ; Actions can have several hotkeys, but the displayed keys are the last ; ones found. ; ; The SEPARATOR keyword is case sensitive and puts a seperator into the menu. ; (define file-menu-items ;; ;; menu item name menu action menu hotkey function ;; '( ("New Window" file-new-window file-new-window) ("New Page" file-new file-new) ("Open Page..." file-open file-open) ("Close Page" page-close page-close) ("Revert Page" page-revert page-revert) ("Save Page" file-save file-save) ("Save Page As..." file-save-as file-save-as) ("Save All" file-save-all file-save-all) ("Print..." file-print file-print) ("Write PNG..." file-image file-image) ("SEPARATOR" no-action no-action) ("Execute Script..." file-script file-script) ("SEPARATOR" no-action no-action) ("Close Window" file-close-window file-close-window) ("Quit" file-quit file-quit))) (define edit-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Undo" edit-undo edit-undo) ("Redo" edit-redo edit-redo) ("SEPARATOR" no-action no-action) ("Select Mode" edit-select edit-select) ("Edit..." edit-edit edit-edit) ("Edit Text..." edit-text edit-text) ("Copy Mode" edit-copy edit-copy-hotkey) ("Move Mode" edit-move edit-move-hotkey) ("Delete" edit-delete edit-delete) ("Rotate 90 Mode" edit-rotate-90 edit-rotate-90-hotkey) ("Mirror Mode" edit-mirror edit-mirror-hotkey) ("SEPARATOR" no-action no-action) ("Slot..." edit-slot edit-slot) ("Color..." edit-color edit-color) ("Lock" edit-lock edit-lock) ("Unlock" edit-unlock edit-unlock) ("Line Width & Type..." edit-linetype edit-linetype) ("Fill Type..." edit-filltype edit-filltype) ("Symbol Translate..." edit-translate edit-translate) ("Embed Component" edit-embed edit-embed) ("Unembed Component" edit-unembed edit-unembed) ("Update Component" edit-update edit-update) ("Show/Hide Inv Text" edit-show-hidden edit-show-hidden) ("Make Inv Text Vis" edit-make-text-visible edit-make-text-visible))) (define buffer-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Copy into 1" buffer-copy1 buffer-copy1) ("Copy into 2" buffer-copy2 buffer-copy2) ("Copy into 3" buffer-copy3 buffer-copy3) ("Copy into 4" buffer-copy4 buffer-copy4) ("Copy into 5" buffer-copy5 buffer-copy5) ("Cut into 1" buffer-cut1 buffer-cut1) ("Cut into 2" buffer-cut2 buffer-cut2) ("Cut into 3" buffer-cut3 buffer-cut3) ("Cut into 4" buffer-cut4 buffer-cut4) ("Cut into 5" buffer-cut5 buffer-cut5) ("Paste from 1" buffer-paste1 buffer-paste1-hotkey) ("Paste from 2" buffer-paste2 buffer-paste2-hotkey) ("Paste from 3" buffer-paste3 buffer-paste3-hotkey) ("Paste from 4" buffer-paste4 buffer-paste4-hotkey) ("Paste from 5" buffer-paste5 buffer-paste5-hotkey))) (define view-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Redraw" view-redraw view-redraw) ("Pan" view-pan view-pan-hotkey) ("Zoom Box" view-zoom-box view-zoom-box-hotkey) ("Zoom Extents" view-zoom-extents view-zoom-extents) ("Zoom In" view-zoom-in view-zoom-in-hotkey) ("Zoom Out" view-zoom-out view-zoom-out-hotkey) ("Zoom Full" view-zoom-full view-zoom-full))) (define page-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Manager..." page-manager page-manager) ("Next" page-next page-next) ("Previous" page-prev page-prev) ("New" page-new page-new) ("Revert" page-revert page-revert) ("Close" page-close page-close) ("SEPARATOR" no-action no-action) ("Discard" page-discard page-discard))) (define add-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Component..." add-component add-component) ("Net" add-net add-net-hotkey) ("Bus" add-bus add-bus-hotkey) ("Attribute..." add-attribute add-attribute-hotkey) ("Text..." add-text add-text) ("SEPARATOR" no-action no-action) ("Line" add-line add-line-hotkey) ("Box" add-box add-box-hotkey) ("Circle" add-circle add-circle-hotkey) ("Arc" add-arc add-arc-hotkey) ("Pin" add-pin add-pin-hotkey) ("Picture..." add-picture add-picture-hotkey))) (define hierarchy-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Down Schematic" hierarchy-down-schematic hierarchy-down-schematic) ("Down Symbol" hierarchy-down-symbol hierarchy-down-symbol) ("Up" hierarchy-up hierarchy-up) ("Documentation" hierarchy-documentation hierarchy-documentation))) (define attributes-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Attach" attributes-attach attributes-attach) ("Detach" attributes-detach attributes-detach) ("Show Value" attributes-show-value attributes-show-value) ("Show Name" attributes-show-name attributes-show-name) ("Show Both" attributes-show-both attributes-show-both) ("Toggle Visibility" attributes-visibility-toggle attributes-visibility-toggle) ("Find Specific Text..." edit-find-text edit-find-text) ("Hide Specific Text..." edit-hide-text edit-hide-text) ("Show Specific Text..." edit-show-text edit-show-text) ("Autonumber Text..." edit-autonumber edit-autonumber))) (define options-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("Text Size..." options-text-size options-text-size) ("Toggle Grid On/Off" options-grid options-grid) ("Toggle Snap On/Off" options-snap options-snap) ("Snap Grid Spacing..." options-snap-size options-snap-size) ("Toggle Outline/Box" options-action-feedback options-action-feedback) ("Toggle Net Rubberband" options-rubberband options-rubberband) ("Show Log Window..." options-show-log-window options-show-log-window) ("Show Coord Window..." options-show-coord-window options-show-coord-window))) (define help-menu-items ;; ;; menu item name menu action menu hotkey action ;; '( ("About..." help-about help-about) ("Manual..." help-manual help-manual) ("Hotkeys..." help-hotkeys help-hotkeys) ("Component..." hierarchy-documentation hierarchy-documentation))) ; ; Now actually add the menus. The order here defines the order in which ; the menus appear in the top menu bar. ; (add-menu "File" file-menu-items) (add-menu "Edit" edit-menu-items) (add-menu "Buffer" buffer-menu-items) (add-menu "View" view-menu-items) (add-menu "Page" page-menu-items) (add-menu "Add" add-menu-items) (add-menu "Hierarchy" hierarchy-menu-items) (add-menu "Attributes" attributes-menu-items) (add-menu "Options" options-menu-items) (add-menu "Help" help-menu-items) ; help is special it will be on the right ; ; End of keymapping related keywords ;