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

博文

chemdraw 修改Hotkeys.xml 自定义快捷键--update1

已有 4592 次阅读 2020-3-4 17:02 |个人分类:软件杂谈|系统分类:教学心得| ChemDraw, 快捷键, 自定义, xml文件, ChemDraw

原博客页面由于新的安全措施(发表超过48小时)不能修改,因此重新修订(删除一些难懂的内容与啰嗦的话)重新发布。2020-3-4

ChemDraw是一个非常强大的化学绘图软件,功能丰富.不过我最喜欢的是它的自定义快捷键的能力,如果和别名定义结合起来,简直是如虎添翼. 自定义快捷键的好处非常明显,你可以根据自己的习惯来设定怎么操作,可以显著提升绘制效率。

比如在订制的快捷键设定下, 选中一个原子(鼠标移过时选中即可),按下2即可以伸出2个单键. 如果要绘制碳酸乙烯酯的衍生物,选中原子,键盘输入E,就可以得到EC这个自定义的标签,再点击按 Expand Label菜单命令就可以变为EC的结构了(EC的别名要先定义一下,一两分钟就可以搞定). 非常快.


修改前的准备

虽然ChemDraw为用户提供了自定义快捷键的能力, 但这种自定义是通过修订文件间接提供的,没有在交互界面上直接提供.通过修改hotkeys.xml文件,你可以达到设定快捷键的目的. 操作很简单:查找hotkeys.xml文件,它在chemdraw items目录下。通过搜索来找它比较方便.可能会有同名的文件,注意它的目录名称即可.用文本编辑器之类软件(如Notepad,Notepad2,UltraEdit等)打开这个文件.

注意事项:

xml文件对格式的要求严格, 在XML文件中稍有差错设置就无法生效.因此要注意

1)使用(UTF-8 with BOM)编码来保存hotkeys.xml文件.文件内容中第一行就规定了用UTF-8编码。用记事本等软件编辑此文件时不要修改编码即可。UTF-8编码有两种,一种是带BOM,也就是第一个字节是特殊字符,另一种是没有特殊字符的,应该都可以用。但不能用ANSI编码或其它编码保存,有一回我不小心用了ANSI编码保存, ChemDraw无法正确读取文件内容,快捷键设定没有生效。找了半天才发现是编码格式的问题。

2)注意语法正确。比较稳妥的做法是在现成的有效文件上进行修改.修改之前做好备份。有一次我的hotkey的设定有一行末尾的 /> 少写了一个/,变成了>, 结果下面的全部设定都无效,查了很久才发现这处错误, 修改之后马上就好了.

3) 注意,xml文件是区分严格大小写的。

当然,如果你有专门的xml编辑器,可以进行格式检查。


XML文件的结构

hotkeys.xml文件的结构形式上是这样子的。

文件基本信息 2

<Objects>

<Object Type=XXX>

<Commands>

                           <Command id="预设命令1"  description="描述1"/>

                         <Command id="预设命令2"  description="描述2 "/>

            …若干条类似的规定

  </Commands>

                  <Hotkeys>

<Hotkey key="快捷键1" command="预设命令a" value="允许值a"  description="描述1"/>

                           <Hotkey key="快键键2" command="预设命令b" value="允许值b"  description="描述2"/>

                    …若干条类似的规定

                   </Hotkeys>

      </Object>

      ...其它Object的类似规定

</Objects>

在每个Object类型下面,有Commands和Hotkeys两类,前者是这类对象可用命令集,后者是快捷键集合(所以带s)。

快捷键的规定在<Hotkeys> </Hotkeys>这对标签的包含范围之内。


ChemDraw中,快捷键的作用与当时选中的对象是什么是密切相关的,因此快捷键的规定也是分列在不同的对象下面。选中的对象(Object)有Atom(原子),Bond(键),Generic(通用,用于绘图模板,对话框等)等类型。因此,比如想修订针对选择对象为原子的快捷键,应选择在<Object type="Atom"> </Object>标签内进行查找。<Hotkeys> </Hotkeys> 里面的每一行<Hotkey key="xxx"..> </Hotkey>定义的就是一个快捷键。


快捷键如何修改

  Hotkey的描述方法

既然我们修改的重点在Hotkey这个对象,我们来仔细看一下Hotkey对象是怎么描述的取一行来作为麻雀来解剖一下.

<Hotkey key="m"  command="LABELTEXT"  value="Me"  description="AtomLabeling"/>

快捷键描述的这一行,有四个部分Key, command, value, description都是用来说明Hotkey这个对象的特征,称为Hotkey的属性. 先简述如下:

1)Key=”m” 说明快捷键的按键为字母m;  

2)command="LABELTEXT" 说明执行的动作是设置文本标签,也就是原子或基团的符号. 可用的Command与所属的对象紧密相关,见表1的规定.

3)value="Me" 规定,设置的符号为Me,也就是甲基的缩写. 这个Value除了是元素符号外,还可以是缩写(如Me,Et, MeO等)或者用户自定义的别名.表1中也列出了一部分可选的值范围。

4)description="Atom Labeling" 说明这个快捷键是干什么的.本例中只是非常简单的说是 设置原子的标签文本,可以随便修改,不要破坏双引号就行.


Hotkey的属性详解

针对上面4个部分,再详述如下 

1.   Key的设置

Key=后面跟的就是快键键符号,可以根据你需要用哪个键来修改.注意的是

a)     硬编码的键如功能键Fn,回车键,空格键,退格键,箭头键不能用作自定义快捷键, 除此之外的其它任何键都可以用作快捷键.

b)   不同对象之间的Key允许重复.因为Hotkey是放在一个组织严密的数据层级里的各级之间有明确的归属关系.区分了不同的对象类型, 所以不会冲突.

c)    字母类的快捷键是区分大小写的. 这样也好,对同一个字母按键可以利用2次,比如我就喜欢用大写的S作为快捷键来输入Si,小写的s作为快捷键来输入S. 小写的e用来输入乙基(Et),大写的E来输入(EC基,自定义的一个别名).

d)    如果同一快捷键(大小写一样)设定在文件内或对象类型出现不止一次,只有最接近文件末尾出现的定义生效。这个很好理解,读设置时从上到下,实际上就是前面的设定被后面的覆盖了,只有后面的生效。这种现象当然要避免。

2.   Command的范围.

          必须交代的是,针对不同的对象, 配套可以使用的command是不同的, 比如Atom对象只能设置8种命令, Bond对象只能设置5种命令, Generic对象只有2种选择.如下表1规定:


3.  Command 与 Value联合决定了动作的含义

在选中对象明确之后,程序内部决定了 某一command 与某一value联合起来执行特定的动作,这个是不能修订而是固化了的。比如 command为SPROUT,Value为2时,程序会从当前原子伸出两个单键,这个动作是程序绑定好的。我们能够修改的,只不过是设定Key的值,以指定的key来激活这个动作。比如,用key=2来指定这个快捷键。

在老的版本中,Command为SPROUT, value为3 对应的动作就是伸出三个单键。但新的版本中这一功能被修改掉了,变成了伸出一个苯环。因此即使你指定快捷键为3, 执行的动作也不是伸出三个单键,而是伸出苯环,就是这个意思。不过这一修改我觉得颇不方便,其实苯环指定给Command=SPROUT 与 value=6更容易记住一些。

同样的,对于选中的对象是“Bond”,有一条用2做快捷键的设定:

             <Hotkey key="2"command="BONDORDER" value="2"  description="Set Bond to Double"/>

这个快捷键的规定说, 按下2,执行的的动作是[设定键阶(BONDORDER), value为2], 实际效果是将选中的键设定为双键.

         类似的,如果命令是LABELTEXT, 这个value就是要设置的原子或基团的文本. 这个文本的选择自由度比较大,可以是元素符号、离子如 Ca2+; 缩写如 OMe等; 还可以是别名,如自己定义的某个特定结构的名字(Nickname).  本质上,ChemDraw并不管你输入的是什么,这一步只负责根据快捷键输入一个文本标签. 化学上正确与否是下一步其它过程的事情.

         如果命令是BONDDISPLAY, 这个value就是化学键显示的形式. 如果是AUTONUMBER,则这个value只能设置为True 或False.等等。

      value的选择范围与命令(command)密切相关. 比如,你可以尝试下把sprout命令对应的value设置为5看看,它不会执行的! 要知道每个命令可以设置哪些值,才能相应的在文件中作出规定,上面的表格1中展示了一些可用的值,我是根据现在的信息和一些测试总结的,可能不全面. ChemDraw的帮助并没有明确给出每个Command允许的选值范围. 

   

    4.预定义的工具(Command为TOOLMODE时,可用的Value值)

    这里值得一提就是Generic对象(通用工具)的设置中,有一个命令TOOLMODE,用于快速切换绘图工具. 它对应的value选择比较丰富,翻译如下:

(括号内为解释,不要复制).

     比如末尾的示例中,在Generic对象下面有这样2行

<Hotkey  key="m" command="TOOLMODE" value="MARQUEE" description="M代表Marquee,启用框选"/>

<Hotkey  key="l" command="TOOLMODE" value="LASSO"  description="L代表Lasso,启用套索"/>

它表示,当选中的对象不是键或原子时(实际就是没有选中这两种对象时),如果按下m,则鼠标对应的工具自行切换为Marqee模式,也就是框选模式. 如果按下l键,则鼠标对应的工具切换为套索模式,这样通过键盘按键就能方便的切换工具了,是不是很方便?

 总之,在某一特定的对象(如Atom,Bond,Generic等)下面,有可执行的命令清单,每个命令可以选择的参数值value,也不是随意设定的。详见上面表格1的解释。具体的动作含义,由程序内部规定用户并不能修改,但用户可以指定key作为快捷键来启动它。key有一定的自由度,也区分大小写。


5.   Description 部分

这个部分不太重要, 却是必需的.这部分只是描述一下命令的目的用途,主要是方便识别命令的用途. 比如把描述翻译成了中文,或者解释为什么这么设置.


讲到这里,快捷键设定的方式讲完了,你所要做的就是,你想设定什么键来指定什么操作.想好之后,先找出适用的对象(找表格1的第1列),再找出对应的操作属于什么命令(找表格1的第2列), 再确定快捷键的取值, 基本上在哪里改,怎么改(或增删)就很清楚了. 修改之后保存一下,工作就完成了.以后如果需要,只要把这个hotkeys.xml文件备份一下就成.


最后附上我的电脑上用的样本,供参考.



样本 hotkeys.xml

修改过的Hotkeys.xml 2017-8-25.rar


update:小修改for 新版本 hotkeys.xml  for ChemDraw.rar

 2018-5-22




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

上一篇:用Python对EP蒸气压数据进行回归
下一篇:chemdraw 的hotkeys.xml格式再解析,简单说说它的DTD(文档类型定义)
收藏 IP: 122.224.86.*| 热度|

0

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

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

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

GMT+8, 2024-4-24 04:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部