diff options
Diffstat (limited to 'share')
| -rw-r--r-- | share/extensions/measure.inx | 7 | ||||
| -rwxr-xr-x | share/extensions/measure.py | 87 | ||||
| -rw-r--r-- | share/icons/Makefile.am | 1 | ||||
| -rw-r--r-- | share/keys/inkscape.xml | 144 |
4 files changed, 196 insertions, 43 deletions
diff --git a/share/extensions/measure.inx b/share/extensions/measure.inx index cfbc3fce7..8fae020e0 100644 --- a/share/extensions/measure.inx +++ b/share/extensions/measure.inx @@ -9,6 +9,7 @@ <param name="type" type="enum" _gui-text="Measurement Type: "> <_item value="length">Length</_item> <_item msgctxt="measure extension" value="area">Area</_item> + <_item msgctxt="measure extension" value="cofm">Center of Mass</_item> </param> <param name="format" type="enum" _gui-text="Text Orientation: "> <_item msgctxt="measure extension" value="textonpath">Text On Path</_item> @@ -32,9 +33,9 @@ </param> </page> <page name="desc" _gui-text="Help"> - <_param name="measurehelp" type="description" xml:space="preserve">This effect measures the length, or area, of the selected paths and adds it as a text object with the selected units. - - * Display format can be either Text-On-Path, or stand-alone text at a specified angle. + <_param name="measurehelp" type="description" xml:space="preserve">This effect measures the length, area, or center-of-mass of the selected paths. Length and area are added as a text object with the selected units. Center-of-mass is shown as a cross symbol. + + * Text display format can be either Text-On-Path, or stand-alone text at a specified angle. * The number of significant digits can be controlled by the Precision field. * The Offset field controls the distance from the text to the path. * The Scale factor can be used to make measurements in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the real world, Scale must be set to 250. diff --git a/share/extensions/measure.py b/share/extensions/measure.py index ca471816f..edcd2e92f 100755 --- a/share/extensions/measure.py +++ b/share/extensions/measure.py @@ -1,8 +1,9 @@ #!/usr/bin/env python ''' This extension module can measure arbitrary path and object length -It adds a text to the selected path containing the length in a -given unit. +It adds text to the selected path containing the length in a given unit. +Area and Center of Mass calculated using Green's Theorem: +http://mathworld.wolfram.com/GreensTheorem.html Copyright (C) 2010 Alvin Penner Copyright (C) 2006 Georg Wiora @@ -30,10 +31,31 @@ TODO: 2. check direction >90 or <-90 Degrees 3. rotate by 180 degrees around text center ''' -import inkex, simplestyle, simplepath, simpletransform, sys, cubicsuperpath, bezmisc, locale -# Set current system locale +# standard library +import locale +# local library +import inkex +import simplestyle +import simpletransform +import cubicsuperpath +import bezmisc + +inkex.localize() locale.setlocale(locale.LC_ALL, '') +# third party +try: + import numpy +except: + inkex.errormsg(_("Failed to import the numpy modules. These modules are required by this extension. Please install them and try again. On a Debian-like system this can be done with the command, sudo apt-get install python-numpy.")) + exit() + +mat_area = numpy.matrix([[ 0, 2, 1, -3],[ -2, 0, 1, 1],[ -1, -1, 0, 2],[ 3, -1, -2, 0]]) +mat_cofm_0 = numpy.matrix([[ 0, 35, 10,-45],[-35, 0, 12, 23],[-10,-12, 0, 22],[ 45,-23,-22, 0]]) +mat_cofm_1 = numpy.matrix([[ 0, 15, 3,-18],[-15, 0, 9, 6],[ -3, -9, 0, 12],[ 18, -6,-12, 0]]) +mat_cofm_2 = numpy.matrix([[ 0, 12, 6,-18],[-12, 0, 9, 3],[ -6, -9, 0, 15],[ 18, -3,-15, 0]]) +mat_cofm_3 = numpy.matrix([[ 0, 22, 23,-45],[-22, 0, 12, 10],[-23,-12, 0, 35],[ 45,-10,-35, 0]]) + def numsegs(csp): return sum([len(p)-1 for p in csp]) def interpcoord(v1,v2,p): @@ -69,20 +91,37 @@ def csplength(csp): for i in xrange(1,len(sp)): l = cspseglength(sp[i-1],sp[i]) lengths[-1].append(l) - total += l + total += l return lengths, total def csparea(csp): area = 0.0 for sp in csp: + if len(sp) < 2: continue for i in range(len(sp)): # calculate polygon area area += 0.5*sp[i-1][1][0]*(sp[i][1][1] - sp[i-2][1][1]) for i in range(1, len(sp)): # add contribution from cubic Bezier - bezarea = ( 0.0*sp[i-1][1][1] + 2.0*sp[i-1][2][1] + 1.0*sp[i][0][1] - 3.0*sp[i][1][1])*sp[i-1][1][0] - bezarea += (-2.0*sp[i-1][1][1] + 0.0*sp[i-1][2][1] + 1.0*sp[i][0][1] + 1.0*sp[i][1][1])*sp[i-1][2][0] - bezarea += (-1.0*sp[i-1][1][1] - 1.0*sp[i-1][2][1] + 0.0*sp[i][0][1] + 2.0*sp[i][1][1])*sp[i][0][0] - bezarea += ( 3.0*sp[i-1][1][1] - 1.0*sp[i-1][2][1] - 2.0*sp[i][0][1] + 0.0*sp[i][1][1])*sp[i][1][0] - area += 0.15*bezarea - return abs(area) + vec_x = numpy.matrix([sp[i-1][1][0], sp[i-1][2][0], sp[i][0][0], sp[i][1][0]]) + vec_y = numpy.matrix([sp[i-1][1][1], sp[i-1][2][1], sp[i][0][1], sp[i][1][1]]) + area += 0.15*(vec_x*mat_area*vec_y.T)[0,0] + return -area # require positive area for CCW +def cspcofm(csp): + area = csparea(csp) + xc = 0.0 + yc = 0.0 + if abs(area) < 1.e-8: + inkex.errormsg(_("Area is zero, cannot calculate Center of Mass")) + return 0, 0 + for sp in csp: + for i in range(len(sp)): # calculate polygon moment + xc += sp[i-1][1][1]*(sp[i-2][1][0] - sp[i][1][0])*(sp[i-2][1][0] + sp[i-1][1][0] + sp[i][1][0])/6 + yc += sp[i-1][1][0]*(sp[i][1][1] - sp[i-2][1][1])*(sp[i-2][1][1] + sp[i-1][1][1] + sp[i][1][1])/6 + for i in range(1, len(sp)): # add contribution from cubic Bezier + vec_x = numpy.matrix([sp[i-1][1][0], sp[i-1][2][0], sp[i][0][0], sp[i][1][0]]) + vec_y = numpy.matrix([sp[i-1][1][1], sp[i-1][2][1], sp[i][0][1], sp[i][1][1]]) + vec_t = numpy.matrix([(vec_x*mat_cofm_0*vec_y.T)[0,0], (vec_x*mat_cofm_1*vec_y.T)[0,0], (vec_x*mat_cofm_2*vec_y.T)[0,0], (vec_x*mat_cofm_3*vec_y.T)[0,0]]) + xc += (vec_x*vec_t.T)[0,0]/280 + yc += (vec_y*vec_t.T)[0,0]/280 + return -xc/area, -yc/area def appendSuperScript(node, text): super = inkex.etree.SubElement(node, inkex.addNS('tspan', 'svg'), {'style': 'font-size:65%;baseline-shift:super'}) super.text = text @@ -133,12 +172,13 @@ class Length(inkex.Effect): self.OptionParser.add_option("--measurehelp", action="store", type="string", dest="measurehelp", default="", - help="dummy") - + help="dummy") + def effect(self): # get number of digits prec = int(self.options.precision) - self.options.offset *= self.unittouu('1px') + scale = self.unittouu('1px') # convert to document units + self.options.offset *= scale factor = 1.0 doc = self.document.getroot() if doc.get('viewBox'): @@ -150,16 +190,22 @@ class Length(inkex.Effect): # loop over all selected paths for id, node in self.selected.iteritems(): if node.tag == inkex.addNS('path','svg'): - self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg')) - a =[] mat = simpletransform.composeParents(node, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) p = cubicsuperpath.parsePath(node.get('d')) simpletransform.applyTransformToPath(mat, p) - factor *= self.unittouu('1px')/self.unittouu('1'+self.options.unit) + factor *= scale/self.unittouu('1'+self.options.unit) if self.options.type == "length": slengths, stotal = csplength(p) - else: + self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg')) + elif self.options.type == "area": stotal = csparea(p)*factor*self.options.scale + self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg')) + else: + xc, yc = cspcofm(p) + self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('path','svg')) + self.group.set('id', 'MassCenter_' + node.get('id')) + self.addCross(self.group, xc, yc, scale) + continue # Format the length as string lenstr = locale.format("%(len)25."+str(prec)+"f",{'len':round(stotal*factor*self.options.scale,prec)}).strip() if self.options.format == 'textonpath': @@ -173,6 +219,11 @@ class Length(inkex.Effect): else: self.addTextWithTspan(self.group, p[0][0][1][0], p[0][0][1][1], lenstr+' '+self.options.unit+'^2', id, 'start', -int(self.options.angle), -self.options.offset + self.options.fontsize/2) + def addCross(self, node, x, y, scale): + l = 3*scale # 3 pixels in document units + node.set('d', 'm %s,%s %s,0 %s,0 m %s,%s 0,%s 0,%s' % (str(x-l), str(y), str(l), str(l), str(-l), str(-l), str(l), str(l))) + node.set('style', 'stroke:#000000;fill:none;stroke-width:%s' % str(0.5*scale)) + def addTextOnPath(self, node, x, y, text, id, anchor, startOffset, dy = 0): new = inkex.etree.SubElement(node,inkex.addNS('textPath','svg')) s = {'text-align': 'center', 'vertical-align': 'bottom', diff --git a/share/icons/Makefile.am b/share/icons/Makefile.am index 6053cd71c..5830f1254 100644 --- a/share/icons/Makefile.am +++ b/share/icons/Makefile.am @@ -46,6 +46,7 @@ icons_DATA = \ \ icons.svg \ tango_icons.svg \ + symbolic_icons.svg \ \ inkscape.file.svg \ inkscape.file.png \ diff --git a/share/keys/inkscape.xml b/share/keys/inkscape.xml index d39441f22..07192cb37 100644 --- a/share/keys/inkscape.xml +++ b/share/keys/inkscape.xml @@ -44,6 +44,9 @@ override) the bindings in the main default.xml. <bind key="n" modifiers="Ctrl" action="FileNew" display="true" /> <bind key="N" modifiers="Ctrl" action="FileNew" /> + <bind key="n" modifiers="Ctrl,Alt" action="FileTemplates" display="true" /> + <bind key="N" modifiers="Ctrl,Alt" action="FileTemplates" /> + <bind key="o" modifiers="Ctrl" action="FileOpen" display="true" /> <bind key="O" modifiers="Ctrl" action="FileOpen" /> @@ -64,16 +67,16 @@ override) the bindings in the main default.xml. <bind key="i" modifiers="Ctrl" action="FileImport" display="true" /> <bind key="I" modifiers="Ctrl" action="FileImport" /> - <bind key="e" modifiers="Ctrl,Shift" action="FileExport" display="true" /> - <bind key="E" modifiers="Ctrl,Shift" action="FileExport" /> + <bind key="e" modifiers="Ctrl,Shift" action="DialogExport" display="true" /> + <bind key="E" modifiers="Ctrl,Shift" action="DialogExport" /> <bind action="FileVacuum" /> <bind key="w" modifiers="Ctrl" action="FileClose" display="true" /> - <bind key="W" modifiers="Ctrl" action="FileClose" display="true" /> + <bind key="W" modifiers="Ctrl" action="FileClose" /> <bind key="q" modifiers="Ctrl" action="FileQuit" display="true" /> - <bind key="Q" modifiers="Ctrl" action="FileQuit" display="true" /> + <bind key="Q" modifiers="Ctrl" action="FileQuit" /> <!-- Tools --> @@ -119,6 +122,11 @@ override) the bindings in the main default.xml. <bind action="ArcPrefs" /> + <bind key="m" action="ToolMeasure" /> + <bind key="M" action="ToolMeasure" display="true" /> + + <bind action="MeasurePrefs" /> + <bind key="F9" modifiers="Shift" action="ToolStar" /> <bind key="asterisk" modifiers="Shift" action="ToolStar" /> <bind key="asterisk" action="ToolStar" /> @@ -190,7 +198,6 @@ override) the bindings in the main default.xml. <bind action="SprayPrefs" /> - <!-- Zoom --> <bind key="plus" action="ZoomIn" display="true" /> @@ -230,48 +237,64 @@ override) the bindings in the main default.xml. <bind key="grave" modifiers="Shift" action="ZoomNext" display="true" /> <!-- ` --> <bind key="asciitilde" modifiers="Shift" action="ZoomNext" /> <!-- ~ --> + <bind key="KP_9" action="ZoomNext" /> <bind key="grave" action="ZoomPrev" display="true" /> <!-- ` --> - + <bind key="KP_8" action="ZoomPrev" /> + <!-- View --> <bind key="F11" action="FullScreen" display="true" /> <bind key="F11" action="FocusToggle" modifiers="Shift" display="true" /> + <bind key="F11" action="FullScreenFocus" modifiers="Ctrl" display="true" /> <bind key="Tab" modifiers="Ctrl" action="NextWindow" display="true" /> <bind key="ISO_Left_Tab" modifiers="Ctrl" action="NextWindow" /> <bind key="Tab" modifiers="Ctrl,Shift" action="PrevWindow" display="true" /> <bind key="ISO_Left_Tab" modifiers="Ctrl,Shift" action="PrevWindow" /> + <bind key="numbersign" modifiers="Shift" action="ToggleGrid" /> <!-- # --> + <bind key="numbersign" action="ToggleGrid" display="true" /> + + <bind key="bar" modifiers="Shift" action="ToggleGuides" /> <!-- | --> + <bind key="bar" action="ToggleGuides" display="true" /> + + <bind key="percent" action="ToggleSnapGlobal" display="true" /> <!-- % --> + <bind key="percent" modifiers="Shift" action="ToggleSnapGlobal" /> + + <bind action="ToggleCommandsToolbar" /> + <bind action="ToggleSnapToolbar" /> + <bind action="ToggleToolToolbar" /> + <bind action="ToggleToolbox" /> + <bind key="r" modifiers="Ctrl" action="ToggleRulers" display="true" /> <bind key="R" modifiers="Ctrl" action="ToggleRulers" /> <bind key="b" modifiers="Ctrl" action="ToggleScrollbars" display="true" /> <bind key="B" modifiers="Ctrl" action="ToggleScrollbars" /> - <bind key="bar" modifiers="Shift" action="ToggleGuides" /> <!-- | --> - <bind key="bar" action="ToggleGuides" display="true" /> + <bind key="p" modifiers="Shift,Alt" action="TogglePalette" display="true" /> + <bind key="P" modifiers="Shift,Alt" action="TogglePalette" /> - <bind key="numbersign" modifiers="Shift" action="ToggleGrid" /> <!-- # --> - <bind key="numbersign" action="ToggleGrid" display="true" /> + <bind action="ToggleStatusbar" /> - <bind key="percent" action="ToggleSnapGlobal" display="true" /> <!-- % --> - <bind key="percent" modifiers="Shift" action="ToggleSnapGlobal" /> - <bind action="ViewNew" /> <bind action="ViewNewPreview" /> <bind action="ViewIconPreview" /> + <bind key="KP_5" modifiers="Ctrl" action="ViewModeToggle" display="true" /> + <bind key="KP_Begin" modifiers="Ctrl" action="ViewModeToggle" /> + <bind action="ViewModeNormal" /> + <bind action="ViewModeNoFilters" /> <bind action="ViewModeOutline" /> - <bind action="ViewColorModeNormal" /> - <bind action="ViewColorModeGrayscale" /> - <bind key="KP_5" modifiers="Ctrl" action="ViewModeToggle" display="true" /> - <bind key="KP_Begin" modifiers="Ctrl" action="ViewModeToggle" /> <bind key="KP_5" modifiers="Shift" action="ViewColorModeToggle" display="true" /> -<!-- Edit --> + <bind action="ViewColorModeNormal" /> + <bind action="ViewColorModeGrayscale" /> +<!-- Edit --> + <bind key="z" modifiers="Ctrl" action="EditUndo" display="true" /> <bind key="Z" modifiers="Ctrl" action="EditUndo" /> <bind key="y" modifiers="Ctrl,Shift" action="EditUndo" /> @@ -283,16 +306,19 @@ override) the bindings in the main default.xml. <bind key="Y" modifiers="Ctrl" action="EditRedo" /> <bind key="h" modifiers="Ctrl,Shift" action="DialogUndoHistory" display="true" /> - <bind key="H" modifiers="Ctrl,Shift" action="DialogUndoHistory" display="true" /> + <bind key="H" modifiers="Ctrl,Shift" action="DialogUndoHistory" /> <bind key="x" modifiers="Ctrl" action="EditCut" display="true" /> <bind key="X" modifiers="Ctrl" action="EditCut" /> - + <bind key="Delete" modifiers="Shift" action="EditCut"/> + <bind key="c" modifiers="Ctrl" action="EditCopy" display="true" /> <bind key="C" modifiers="Ctrl" action="EditCopy" /> + <bind key="Insert" modifiers="Ctrl" action="EditCopy"/> <bind key="v" modifiers="Ctrl" action="EditPaste" display="true" /> <bind key="V" modifiers="Ctrl" action="EditPaste" /> + <bind key="Insert" modifiers="Shift" action="EditPaste"/> <bind key="v" modifiers="Ctrl,Shift" action="EditPasteStyle" display="true" /> <bind key="V" modifiers="Ctrl,Shift" action="EditPasteStyle" /> @@ -320,9 +346,13 @@ override) the bindings in the main default.xml. <bind key="d" modifiers="Alt,Shift" action="EditUnlinkClone" display="true" /> <bind key="D" modifiers="Alt,Shift" action="EditUnlinkClone" /> + <bind action="EditRelinkClone" /> + <bind key="d" modifiers="Shift" action="EditCloneSelectOriginal" display="true" /> <bind key="D" modifiers="Shift" action="EditCloneSelectOriginal" /> + <bind action="EditCloneOriginalPathLPE" /> + <bind key="a" modifiers="Ctrl" action="EditSelectAll" display="true" /> <bind key="A" modifiers="Ctrl" action="EditSelectAll" /> @@ -331,6 +361,14 @@ override) the bindings in the main default.xml. <bind key="a" modifiers="Ctrl,Alt" action="EditSelectAllInAllLayers" display="true" /> <bind key="A" modifiers="Ctrl,Alt" action="EditSelectAllInAllLayers" /> + <bind action="EditSelectSameFillStroke" /> + <bind action="EditSelectSameFillColor" /> + <bind action="EditSelectSameStrokeColor" /> + <bind action="EditSelectSameStrokeStyle" /> + + <bind key="a" modifiers="Shift,Alt" action="EditSelectSameObjectType" display="true" /> + <bind key="A" modifiers="Shift,Alt" action="EditSelectSameObjectType" /> + <bind key="exclam" action="EditInvert" display="true" /> <bind key="exclam" modifiers="Shift" action="EditInvert" /> @@ -382,6 +420,8 @@ override) the bindings in the main default.xml. <bind key="b" modifiers="Alt,Shift" action="SelectionTrace" display="true" /> <bind key="B" modifiers="Alt,Shift" action="SelectionTrace" /> + <bind action="SelectionPixelArt" /> + <bind key="i" modifiers="Alt" action="ObjectsToPattern" display="true" /> <bind key="I" modifiers="Alt" action="ObjectsToPattern" /> @@ -403,6 +443,10 @@ override) the bindings in the main default.xml. <bind action="ObjectRemoveTransform" /> + <bind action="FitCanvasToSelection" /> + <bind action="FitCanvasToDrawing" /> + <bind action="FitCanvasToSelectionOrDrawing" /> + <!-- Path --> <bind key="c" modifiers="Ctrl,Shift" action="ObjectToPath" display="true" /> @@ -521,9 +565,25 @@ override) the bindings in the main default.xml. <bind key="Page_Down" modifiers="Shift" action="LayerMoveToPrev" display="true" /> <bind key="KP_Page_Down" modifiers="Shift" action="LayerMoveToPrev" /> + <bind action="LayerMoveTo" /> + <bind key="l" modifiers="Ctrl,Shift" action="DialogLayers" display="true" /> <bind key="L" modifiers="Ctrl,Shift" action="DialogLayers" /> + <bind action="LayerDuplicate" /> + <bind action="LayerDelete" /> + + <bind action="LayerHideAll" /> + <bind action="LayerSolo" /> + <bind action="LayerShowAll" /> + + <bind action="LayerLockAll" /> + <bind action="LayerLockOthers" /> + <bind action="LayerUnlockAll" /> + + <bind action="LayerToggleHide" /> + <bind action="LayerToggleLock" /> + <!-- Dialogs --> <bind key="x" modifiers="Ctrl,Shift" action="DialogXMLEditor" display="true" /> @@ -553,9 +613,14 @@ override) the bindings in the main default.xml. <bind key="o" modifiers="Ctrl,Shift" action="DialogObjectProperties" display="true" /> <bind key="O" modifiers="Ctrl,Shift" action="DialogObjectProperties" /> + <bind action="DialogObjectAttributes" /> + <bind key="w" modifiers="Ctrl,Shift" action="DialogSwatches" display="true" /> <bind key="W" modifiers="Ctrl,Shift" action="DialogSwatches" /> + <bind key="y" modifiers="Ctrl,Shift" action="DialogSymbols" display="true" /> + <bind key="Y" modifiers="Ctrl,Shift" action="DialogSymbols" /> + <bind key="ampersand" modifiers="Ctrl,Shift" action="DialogLivePathEffect" /> <bind key="7" modifiers="Ctrl,Shift" action="DialogLivePathEffect" display="true" /> @@ -572,6 +637,27 @@ override) the bindings in the main default.xml. <bind key="F12" action="DialogsToggle" display="true" /> + <bind key="h" modifiers="Ctrl,Alt" action="AlignHorizontalCenter" display="true" /> + <bind key="H" modifiers="Ctrl,Alt" action="AlignHorizontalCenter" /> + + <bind key="t" modifiers="Ctrl,Alt" action="AlignVerticalCenter" display="true" /> + <bind key="T" modifiers="Ctrl,Alt" action="AlignVerticalCenter" /> + + <bind key="KP_2" modifiers="Ctrl,Alt" action="AlignVerticalBottom" display="true" /> + <bind key="KP_2" modifiers="Ctrl,Alt" action="AlignVerticalBottom" /> + + <bind key="KP_4" modifiers="Ctrl,Alt" action="AlignHorizontalLeft" display="true" /> + <bind key="KP_4" modifiers="Ctrl,Alt" action="AlignHorizontalLeft" /> + + <bind key="KP_5" modifiers="Ctrl,Alt" action="AlignVerticalHorizontalCenter" display="true" /> + <bind key="KP_5" modifiers="Ctrl,Alt" action="AlignVerticalHorizontalCenter" /> + + <bind key="KP_6" modifiers="Ctrl,Alt" action="AlignHorizontalRight" display="true" /> + <bind key="KP_6" modifiers="Ctrl,Alt" action="AlignHorizontalRight" /> + + <bind key="KP_8" modifiers="Ctrl,Alt" action="AlignVerticalTop" display="true" /> + <bind key="KP_8" modifiers="Ctrl,Alt" action="AlignVerticalTop" /> + <!-- Help --> <bind action="HelpAboutExtensions" /> @@ -582,10 +668,24 @@ override) the bindings in the main default.xml. <!-- Effects --> - <bind action="EffectLast" /> - <bind action="EffectLastPref" /> + <bind key="q" modifiers="Alt" action="EffectLast" display="true" /> + <bind key="Q" modifiers="Alt" action="EffectLast" /> + <bind key="q" modifiers="Shift,Alt" action="EffectLastPref" display="true" /> + <bind key="Q" modifiers="Shift,Alt" action="EffectLastPref" /> + <!-- You can also assign keys to individual effects. The action should be set to he effect id from the .inx file, for example "org.ekips.filter.addnodes" for the Add Nodes effect. --> + <bind key="g" modifiers="Ctrl,Alt" action="org.inkscape.typography.newglyphlayer" display="true"/> + <bind key="G" modifiers="Ctrl,Alt" action="org.inkscape.typography.newglyphlayer"/> + +<!-- + <bind key="h" modifiers="Ctrl,Alt" action="org.inkscape.typography.previousglyphlayer" display="true"/> + <bind key="H" modifiers="Ctrl,Alt" action="org.inkscape.typography.previousglyphlayer"/> + --> + + <bind key="j" modifiers="Ctrl,Alt" action="org.inkscape.typography.nextglyphlayer" display="true"/> + <bind key="J" modifiers="Ctrl,Alt" action="org.inkscape.typography.nextglyphlayer"/> + </keys> |
