dingsir的个人博客分享 http://blog.sciencenet.cn/u/dingsir

博文

自定义ChemDraw的快捷键

已有 1564 次阅读 2021-10-22 13:07 |个人分类:软件杂谈|系统分类:教学心得

ChemDraw的快捷键是在hotkeys.xml文件中定义的,通常放在ChemDraw Items目录下。这个文件在ChemDraw的帮助中没有充分讲清楚(之前我也有篇博文讲这个,但为了讲清楚XML和DTD的概念,过于复杂,效果不太好),为了方便使用,通过实验,我找出了一些选项的意义,补充了一些注释以方便查看,修订如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Objects SYSTEM "hotkeys.dtd">
<Objects>
     <Object type="Atom">
     <!-- 以下描述选中对象为原子时,所规定的快捷键命令 -->
      <Commands>
      <!-- 这里除了描述,其它都不能修改或增删。 -->
         <Command id="LABELTEXT"  description="设置原子的文本标签"/>
         <Command id="SPROUT"  description="给原子增加键"/>
         <Command id="CHARGE"  description="改变原子的电荷数"/>
         <Command id="FREE_SITE"  description="增/减原子的自由位点数"/>
         <Command id="UPTO_SITE"  description="增/减原子的最大取代基数"/>
         <Command id="EXACT_SITE"  description="增/减原子的取代基数"/>
         <Command id="ATOMNUMBER"  description="显示或隐藏原子编号"/>
         <Command id="ATTACHMENTPOINT"  description="设置连接位点的数值"/>
      </Commands>

      <Hotkeys>
       <!-- 注意,同一个对象的Hotkeys组内的快捷键不能重复,否则会有命令被覆盖了而不能正常执行。
       value值除了LABELTEXT命令中可以比较随意,在其它命令中都只能选自已经定义的值,不能随意选。-->
         
      <!-- LABELTEXT命令比较简单,当选中原子时,按下key指定的键,则当前原子变成value指定的键,注意是key区分大小写的 -->
         <Hotkey key="a" command="LABELTEXT" value="A" description=""/>
         <Hotkey key="A" command="LABELTEXT" value="Ac"  description=""/>
         <Hotkey key="b" command="LABELTEXT" value="B"  description=""/>
         <Hotkey key="B" command="LABELTEXT" value="Br" description=""/>
         <Hotkey key="c" command="LABELTEXT" value="C"  description=""/>
         <Hotkey key="C" command="LABELTEXT" value="CN"  description="输入大写的C来输入氰基"/>
         <Hotkey key="d" command="LABELTEXT" value="D"  description=""/>
         <Hotkey key="e" command="LABELTEXT" value="Et" description=""/>
         <Hotkey key="E" command="LABELTEXT" value="EC" description="大写E定义为自定义标签EC"/>
         <Hotkey key="f" command="LABELTEXT" value="F" description=""/>
         <Hotkey key="F" command="LABELTEXT" value="CF3"  description="大写F定义为标签 三氟甲基"/>
         <Hotkey key="h" command="LABELTEXT" value="H" description=""/>
         <Hotkey key="i" command="LABELTEXT" value="I" description=""/>
         <Hotkey key="k" command="LABELTEXT" value="K+"  description=""/>
         <Hotkey key="l" command="LABELTEXT" value="Li+"  description=""/>
         <Hotkey key="m" command="LABELTEXT" value="Me" description=""/>
         <Hotkey key="M" command="LABELTEXT" value="OMe" description="大写M -->甲氧基OMe"/>
         <Hotkey key="n" command="LABELTEXT" value="N" description=""/>
         <Hotkey key="N" command="LABELTEXT" value="Na+" description=""/>
         <Hotkey key="o" command="LABELTEXT" value="O" description=""/>
         <Hotkey key="p" command="LABELTEXT" value="P" description=""/>
         <Hotkey key="P" command="LABELTEXT" value="Ph" description=""/>
         <Hotkey key="q" command="LABELTEXT" value="Q" description=""/>
         <Hotkey key="r" command="LABELTEXT" value="R" description=""/>
         <Hotkey key="s" command="LABELTEXT" value="S" description=""/>
         <Hotkey key="S" command="LABELTEXT" value="Si" description="AtomLabeling"/>
         <Hotkey key="t" command="LABELTEXT" value="Tf" description="Tf,三氟甲基磺酰基"/>
         <Hotkey key="T" command="LABELTEXT" value="TMS" description="TMS 三甲基硅基"/>
         <Hotkey key="x" command="LABELTEXT" value="X" description="原子标签"/>
         <Hotkey key="6" command="LABELTEXT" value="Ph" description="原子标签: Ph"/>
         <!-- SPROUT命令下 Value不同值对应的操作:
         key 指定在选中原子时,按下这个键调用以下Value对应的操作。区分大小写的。            
         ?输入一个符号并伸出这个符号形成的基团, 很灵活的。
         0 伸出一根单键  
         1 伸出一根单键
         2 伸出=O
         3 伸出一个苯基
         4 伸出实心楔形键
         5 伸出虚线楔形键
         6 构建环己烷(当前原子为环上一点)
         7 构建环戊烷(当前原子为环上一点)
         8 伸出一根双键,末端为碳
         9 伸出二根单键
         10 伸出一个炔基
         11 构建环丙烷(当前原子为环上一点)
         12 构建环丁烷(当前原子为环上节点)
         13 伸出一虚一实的楔形单键(共二根)
         14 当前原子变成S,并伸出两根=O(很适合画砜基或硫酸酯)
         15 ~更高  尚未定义   -->
         <Hotkey key="?" command="SPROUT" value="?"   description=""/>
         <Hotkey key="1" command="SPROUT" value="1" description=""/>
         <Hotkey key="2" command="SPROUT" value="9"   description=""/>
         <Hotkey key="3" command="SPROUT" value="14"  description=""/>
         <Hotkey key="4" command="SPROUT" value="3"  description=""/>              
         <Hotkey key="-" command="CHARGE" value="-" description="减少原子的电荷"/>
         <Hotkey key="=" command="CHARGE" value="+" description="加号不方便,改为=号"/>
         <Hotkey key="." command="ATTACHMENTPOINT" value="True" description="增加连接位点"/>
      </Hotkeys>
     </Object>
<!-- ------------------------- 我是分隔线------------------------- -->
     <Object type="Bond">
      <!-- 以下描述选中对象为原子时,所规定的快捷键命令 -->
      <Commands>
         <Command id="BONDORDER" description="Sets the Bond Order"/>
         <Command id="BONDDISPLAY" description="Sets the Bond Display"/>
         <Command id="BONDPOSITION" description="Sets the Position of Bonds"/>
         <Command id="BONDDOUBLEPOSITION"  description="Sets the Alignment for Double Bonds"/>
         <Command id="FUSERING" description="Fuses a ring to a bond"/>
      </Commands>

      <Hotkeys>
         <Hotkey key="f" command="BONDPOSITION" value="FRONT" description="键显示在前面"/>
         <Hotkey key="l" command="BONDDOUBLEPOSITION" value="LEFT" description="双键左对齐"/>
         <Hotkey key="r" command="BONDDOUBLEPOSITION" value="RIGHT" description="双键右对齐"/>
         <Hotkey key="c" command="BONDDOUBLEPOSITION" value="CENTER" description="双键居中对齐"/>
         <!-- BONDORDER 命令最简单,将选中的键设置单键/双键/叁键 -->
         <Hotkey key="1" command="BONDORDER" value="1" description="设为单键"/>
         <Hotkey key="2" command="BONDORDER" value="2" description="设为双键"/>
         <Hotkey key="3" command="BONDORDER" value="3" description="设为叁键"/>
         
         <!-- FUSERING命令比较好记,value指定的数字为
            1 并上茂环(环戊二烯)
            2 并上苯环
            3~8 并上与数字相当的多元环 (注意设置3时可能与设置叁键的快捷键冲突,建议用其它字母指令并3元环).
            9~10 并上椅式环已烷(两者方向稍有差异)
            11~ 未定义
         -->
         <Hotkey key="4" command="FUSERING" value="4" description="Fuse 4 membered ring"/>
         <Hotkey key="5" command="FUSERING" value="5" description="Fuse 5 membered ring"/>
         <Hotkey key="6" command="FUSERING" value="6" description="Fuse 6 membered ring"/>
         <Hotkey key="7" command="FUSERING" value="7" description="Fuse 7 membered ring"/>
         <Hotkey key="8" command="FUSERING" value="8" description="Fuse 8 membered ring"/>
         <Hotkey key="a" command="FUSERING" value="2"  description=""/>
         <Hotkey key="z" command="FUSERING" value="12"  description=""/>
         
         <!-- 设置键的不同展示形式,如虚线键、波浪键等  -->
         <Hotkey key="d" command="BONDDISPLAY" value="DASHED" description="Display a Bond as Dashed"/>
         <Hotkey key="D" command="BONDDISPLAY" value="TAUTOMERIC" description="Display a Bond as DoubleDashed"/>
         <Hotkey key="H" command="BONDDISPLAY" value="HASHED" description="Display a Bond as Hashed"/>
         <Hotkey key="h" command="BONDDISPLAY" value="HASHEDWEDGED" description="Display a Bond as HashWedged"/>
         <Hotkey key="W" command="BONDDISPLAY" value="HASHEDWEDGED" description="Display a Bond as HashWedged"/>
         <Hotkey key="B" command="BONDDISPLAY" value="DOUBLEBOLD" description="Display a Bond as Bold"/>
         <Hotkey key="b" command="BONDDISPLAY" value="BOLD" description="Display a Bond as Bold"/>
         <Hotkey key="w" command="BONDDISPLAY" value="WEDGED" description="Display a Bond as Wedged"/>
         <Hotkey key="y" command="BONDDISPLAY" value="WAVY" description="Display a Bond as Wavy"/>
      </Hotkeys>
     </Object>
<!-- ------------------------- 我是分隔线------------------------- -->
     <Object type="Generic">
     <!--通用对象,指未选择键或原子时的情况  -->
      <Commands>
         <Command id="DIALOG" description="Display a Dialog"/>
         <Command id="TOOLMODE" description="Changes the Current Tool"/>
      </Commands>

      <Hotkeys>
       <!--  调出对话框命令DIALOG,value直接指定了对应的对话框,比较简单。 -->
         <Hotkey key="\" command="DIALOG" value="CHOOSENICKNAME" description="调出别名定义"/>
         <Hotkey key="w" command="TOOLMODE" value="SNAKINGCHAIN" description="w形象代表蛇形链"/>
         <Hotkey key="d" command="TOOLMODE" value="SOLIDBOND" description="d代表启用单实线键"/>
         <Hotkey key="5" command="TOOLMODE" value="CYCLOPENTANE" description="5启用环戊烷"/>
         <Hotkey key="6" command="TOOLMODE" value="CYCLOHEXANE" description="6启用环已烷"/>
         <Hotkey key="p" command="TOOLMODE" value="BENZENE" description="p代表Phenyl, 启用苯环"/>
         <Hotkey key="e" command="TOOLMODE" value="ERASER" description="e代表Eraser,启用橡皮擦"/>
         <Hotkey key="l" command="TOOLMODE" value="LASSO" description="L代表Lasso,启用套索"/>
         <Hotkey key="m" command="TOOLMODE" value="MARQUEE" description="M代表Marquee,启用框选"/>
         <Hotkey key="j" command="TOOLMODE" value="ARROW" description="J代表Jiantou,表示启用箭头"/>
         <Hotkey key="/" command="DIALOG" value="PROPERTIES" description="Displays the Properties Dialog"/>
      </Hotkeys>
     </Object>
</Objects>


图片版(in oxygen xml editor)

Hotkeys.png

其中比较重要的是选中原子时的快捷键操作,特别是SPROUT命令的选项比较多,帮助文档中没有做太多的说明,而且之前还被重新定义过功能,估计是官方还不太想固定下来。


源文件如下,供自己备用。如果你也希望如法炮制,请注意XML文件的格式要求很严,特别是标签的完整性和规范性,一般修改保存后就可以生效,甚至都不需要重新启动ChemDraw. 如果发现保存后没有效果,请检查是不是XML格式被破坏,或是快捷键冲突了。

hotkeys.rar




https://blog.sciencenet.cn/blog-1213210-1308990.html

上一篇:分享一个计算分子量的Python小工具
下一篇:用各种不同的语言实现天干地支的计算

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-12-3 06:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部