原博客页面由于新的安全措施(发表超过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行
…若干条类似的规定
…若干条类似的规定
...其它Object的类似规定
在每个Object类型下面,有Commands和Hotkeys两类,前者是这类对象可用命令集,后者是快捷键集合(所以带s)。
快捷键的规定在
ChemDraw中,快捷键的作用与当时选中的对象是什么是密切相关的,因此快捷键的规定也是分列在不同的对象下面。选中的对象(Object)有Atom(原子),Bond(键),Generic(通用,用于绘图模板,对话框等)等类型。因此,比如想修订针对选择对象为原子的快捷键,应选择在标签内进行查找。
快捷键如何修改
Hotkey的描述方法
既然我们修改的重点在Hotkey这个对象,我们来仔细看一下Hotkey对象是怎么描述的. 取一行来作为麻雀来解剖一下.
快捷键描述的这一行,有四个部分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做快捷键的设定:
这个快捷键的规定说, 按下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行
它表示,当选中的对象不是键或原子时(实际就是没有选中这两种对象时),如果按下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