initial commit

This commit is contained in:
Dvel 2022-10-30 23:47:40 +08:00
commit 8c23525cfa
49 changed files with 1911964 additions and 0 deletions

17
.gitignore vendored Normal file
View File

@ -0,0 +1,17 @@
.DS_Store
**/.idea/
.vscode/
build/
*.userdb/
installation.yaml
user.yaml
Tool/scel2txt/out/*
Tool/scel2txt/scel/*
*private*
rime_console
rime_deployer
rime_patch

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

65
README.md Normal file
View File

@ -0,0 +1,65 @@
# 雾凇拼音
![demo](./others/demo.webp)
功能齐全,词库体验良好,长期更新修订。
## 基本套路
- 简体全拼
- 鼠须管 Squirrel 0.15.2
- 小狼毫 Weasel 0.14.3
- 主要功能
- [melt_eng](https://github.com/tumuyan/rime-melt) 英文输入
- [两分输入法](http://cheonhyeong.com/Simplified/download.html) 拼字
- 简繁切换
- 日期、时间、星期
- 自整理的 Emoji
- [以词定字](https://github.com/BlindingDark/rime-lua-select-character)
- [长词优先](https://github.com/tumuyan/rime-melt/blob/master/lua/melt.lua)
- 所有标点符号直接上屏,「/」模式改为「v」模式「/」直接上屏
- 增加了许多拼音纠错
- 简体字表、词库
- [《通用规范汉字表》的 8105 字字表](https://github.com/iDvel/The-Table-of-General-Standard-Chinese-Characters)
- [华宇野风系统词库](http://bbs.pinyin.thunisoft.com/forum.php?mod=viewthread&tid=30049)
- [清华大学开源词库](https://github.com/thunlp/THUOCL)
- [《现代汉语常用词表》](https://gist.github.com/indiejoseph/eae09c673460aa0b56db)
- [《现代汉语词典》](https://forum.freemdict.com/t/topic/12102)
- [《同义词词林》](https://forum.freemdict.com/t/topic/1211)
- [《新华成语大词典》](https://forum.freemdict.com/t/topic/11407)
- [腾讯词向量](https://ai.tencent.com/ailab/nlp/zh/download.html)
- 词库更新
- 校对了大量异形词、错别字、错误注音
- 长期对词库进行更新修订
<br>
## 使用说明
备份后删除配置目录下原有的配置文件,再将仓库所有文件复制粘贴进去就好了。
请先将 `pinyin_simp.dict.yaml` 中的 `- cn_dicts/private` 这行删除,这是我自己的私人词库(联系人之类的),否则鼠须管无法部署,小狼毫只能输入英文。
<br>
## 长期维护词库
基本所有时间都花在词库上了,精心调教了很多。既然找不到一份比较满意的简体词库,主流输入法又不公开自己的系统词库,干脆自己搞一个。
主要维护的词库:
- `8105` 字表。
- `base` 基础词库。
- `sogou` 搜狗流行词。
- `ext` 扩展词库,小词库。
- `tencent` 扩展词库,大词库。
维护内容主要是异形词、错别字的校对,错误注音的修正,缺失的常用词汇的增添,词频的调整。
欢迎在词库方面提 issue我会及时更新修正。
<br>
---
详细介绍:[雾凇拼音,我的 Rime 配置及新手指引](https://dvel.me/posts/my-rime/)

8557
cn_dicts/8105.dict.yaml Normal file

File diff suppressed because it is too large Load Diff

467084
cn_dicts/base.dict.yaml Normal file

File diff suppressed because it is too large Load Diff

143008
cn_dicts/ext.dict.yaml Normal file

File diff suppressed because it is too large Load Diff

280
cn_dicts/others.dict.yaml Normal file
View File

@ -0,0 +1,280 @@
# Rime dictionary
# encoding: utf-8
#
#
# https://github.com/iDvel/rime-ice
# ------- 一些杂项,按需选择 -------
#
#
---
name: others
version: "2022-10-03"
sort: by_weight
...
##### 容错词
# 「血xue、xie」「谁shui、shei」「露lu、lou」「熟shu、shou」「密钥yao、yue」已在 main 中实现
# ---
# 「馄饨」,正确是 tun北方口语是 dun
馄饨 hun tun
馄饨 hun dun
# 「主角」,正确是 jue港台是 jiao
主角 zhu jue
主角 zhu jiao
角色 jue se
角色 jiao se
# 「比萨」,正确是 biPizza 发音为 pi
比萨 bi sa
比萨 pi sa
比萨饼 bi sa bing
比萨饼 pi sa bing
吃比萨 chi bi sa
吃比萨 chi pi sa
超级至尊比萨 chao ji zhi zun bi sa
超级至尊比萨 chao ji zhi zun pi sa
至尊比萨 zhi zun bi sa
至尊比萨 zhi zun pi sa
大西洋珍鲑比萨 da xi yang zhen gui bi sa
大西洋珍鲑比萨 da xi yang zhen gui pi sa
海鲜比萨 hai xian bi sa
海鲜比萨 hai xian pi sa
蔬菜比萨 shu cai bi sa
蔬菜比萨 shu cai pi sa
做比萨 zuo bi sa
做比萨 zuo pi sa
可口的比萨 ke kou de bi sa
可口的比萨 ke kou de pi sa
烤比萨 kao bi sa
烤比萨 kao pi sa
美味的比萨 mei wei de bi sa
美味的比萨 mei wei de pi sa
# 「扑街」,正确是 jie口语是 gai
扑街 pu jie
扑街 pu gai
街溜子 jie liu zi
街溜子 gai liu zi
扑街仔 pu jie zai
扑街仔 pu gai zai
# 「说服」,正确是 shuo但「游说」「说客」仍然保留着 shui 的读音
说服 shuo fu
说服 shui fu
# 「坐骑」,正确是 qi《现汉7》只保留了 qi《现汉6》一些词组中是念 ji
坐骑 zuo qi
坐骑 zuo ji
一骑绝尘 yi qi jue chen
一骑绝尘 yi ji jue chen
一骑红尘妃子笑 yi qi hong chen fei zi xiao
一骑红尘妃子笑 yi ji hong chen fei zi xiao
千里走单骑 qian li zou dan qi
千里走单骑 qian li zou dan ji
# 「道行」,正确是 heng但「道行hang」比较流行
道行 dao heng
道行 dao hang
# 「模样」,正确是 mu口语常念 mo
模样 mu yang
模样 mo yang
有模有样 you mu you yang
有模有样 you mo you yang
一模一样 yi mu yi yang
一模一样 yi mo yi yang
装模作样 zhuang mu zuo yang
装模作样 zhuang mo zuo yang
# 「阿房宫」的注音争议比较大
阿房宫 e pang gong
阿房宫 a pang gong
阿房宫 e fang gong
阿房宫 a fang gong
阿房宫赋 e pang gong fu
阿房宫赋 a pang gong fu
阿房宫赋 e fang gong fu
阿房宫赋 a fang gong fu
# 「伯伯」方言
伯伯 bo bo
伯伯 bai bai
##### 叠字
# 数据来源https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8F%A0%E5%AD%97 https://zh.wikipedia.org/wiki/%E5%9B%9B%E5%8F%A0%E5%AD%97
# 三叠字
三个生
三个秦
三个若
三个雲 san ge yun
三个人
三个刀
三个十
三个力
三个原
三个厶 san ge si
三个厶 san ge mou
三个又
三个口
三个七
三个吉
三个土
三个士
三个女
三个子
三个小
三个心
三个手
三个日
三个木
三个止
三个毛
三个水
三个泉
三个火
三个牛
三个犬
三个田
三个白
三个目
三个直
三个石
三个羊
三个耳
三个舌
三个屮 san ge che
三个屮 san ge cao
三个虫
三个言
三个贝
三个車 san ge che
三个金
三个隹 san ge zhui
三个雷
三个風 san ge feng
三个飛 san ge fei
三个香
三个马
三个魚 san ge yu
三个鹿
三个龍 san ge long
三个个
三个丶 san ge zhu
三个丶 san ge dian
三个了
三个介
三个企
三个舍
三个圥 san ge lu
三个光
三个兔
三个全
三个𠙽 san ge kuai
三个𠧪 san ge tiao
三个𠧪 san ge you
三个㔾 san ge jie
三个厡 san ge yuan
三个可
三个因
三个夏
三个大
三个天
三个太
三个𦉼 san ge ku
三个宝
三个宜
三个客
三个寒
三个少
三个山
三个市
三个文
三个斗
三个朿 san ge ci
三个束
三个林
三个果
三个欠
三个𣥚 san ge zou
三个爪
三个妥
三个用
三个甲
三个百
三个盖
三个県 san ge xian
三个空
三个亇 san ge ge
三个竹
三个罒 san ge mu
三个羗 san ge qiang
三个老
三个月
三个至
三个興 san ge xing
三个足
三个㖖 san ge nie
三个門 san ge men
三个面
三个頁 san ge ye
三个鳥 san ge niao
三个男
三个立
三个九
三个也
三个加
三个動 san ge dong
三个千
三个方
三个朔
三个玉
三个申
三个𡿨 san ge quan
三个去
三个弓
三个䖝 san ge chong
三个丿 san ge pie
三个户
三个日
三个瓜
三个鸟
三个米
# 四叠字
四个乂 si ge yi
四个人
四个厶 si ge si
四个厶 si ge mou
四个又
四个匕
四个工
四个口
四个天
四个小
四个屮 si ge che
四个屮 si ge cao
四个火
四个牛
四个魚 si ge yu
四个月
四个日
四个曰
四个林
四个水
四个石
四个田
四个甲
四个且
四个囚
四个困
四个竹
四个老
四个朿 si ge ci
四个先
四个金
四个泉
四个言
四个門 si ge men
四个果
四个春
四个車 si ge che
四个風 si ge feng
四个雷
四个雲 si ge yun
四个興 si ge xing
四个龍 si ge long
四个土
# 其他。。。
男女男
女男女

34558
cn_dicts/sogou.dict.yaml Normal file

File diff suppressed because it is too large Load Diff

1136961
cn_dicts/tencent.dict.yaml Executable file

File diff suppressed because it is too large Load Diff

231
custom_phrase.txt Executable file
View File

@ -0,0 +1,231 @@
# Rime table
# coding: utf-8
#@/db_name custom_phrase.txt
#@/db_type tabledb
#
# 用於【朙月拼音】系列輸入方案
# 【小狼毫】0.9.21 以上
#
# 請將該文件以UTF-8編碼保存爲
# Rime用戶文件夾/custom_phrase.txt
#
# 碼表各字段以製表符Tab分隔
# 順序爲:文字、編碼、權重(決定重碼的次序、可選)
#
# 雖然文本碼表編輯較爲方便,但不適合導入大量條目
#
#
#
#
# 这个文件内的字词会占据最高权重(排在候选项的最前面)。
# 但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。
# 所以建议只固定非完整编码的字词「的de」应为「的d」「是shi」应为「是s」「仙剑xianjian」应为「仙剑xj」。
#
# 最下面的英文是因为一些常用单词的第一候选项被纠错覆盖了,
# 比如 Amazon 被纠错为「a ma zong 阿妈粽」,
# 期望的 Amazon 跑到第二个候选项了,所以这里给它固定死喽。
#
# version: "2022-10-31"
#
# 此行之后不能写注释
欻 chua
噷 hm
哼 hng
去 q 2
千 q 1
我 w 3
万 w 2
往 w 1
儿 r
他 t 4
她 t 3
它 t 2
祂 t 1
与 y 2
于 y 1
有 u 3
又 u 2
由 u 1
一 i 4
以 i 3
已 i 2
亦 i 1
哦 o 3
噢 o 2
喔 o 1
片 p 2
篇 p 1
是 s 4
时 s 3
使 s 2
式 s 1
的 d 3
地 d 2
得 d 1
发 f 2
分 f 1
个 g
和 h 2
或 h 1
及 j 5
将 j 4
即 j 3
既 j 2
继 j 1
可 k
了 l 3
啦 l 2
嘞 l 1
在 z 3
再 z 2
自 z 1
想 x 3
像 x 2
向 x 1
才 c 2
从 c 1
吧 b 3
百 b 2
呗 b 1
那 n 4
哪 n 3
拿 n 2
呐 n 1
吗 m 3
嘛 m 2
呣 m 1
我们 wm
我们 wom
我们 wmen
你们 nm
你们 nim
你们 nmen
人们 rm
人们 renm
人们 rmen
他的 td 3
她的 td 2
它的 td 1
他的 tad 3
她的 tad 2
它的 tad 1
他的 tde 3
她的 tde 2
它的 tde 1
他们 tm 3
她们 tm 2
它们 tm 1
他们 tam 3
她们 tam 2
它们 tam 1
他们 tmen 3
她们 tmen 2
它们 tmen 1
那儿 nr 2
哪儿 nr 1
那儿 nar 2
哪儿 nar 1
那个 ng 2
哪个 ng 1
那个 nag 2
哪个 nag 1
那些 nx 2
哪些 nx 1
那些 nax 2
哪些 nax 1
那里 nl 2
哪里 nl 1
那里 nal 2
哪里 nal 1
那边 nb 2
哪边 nb 1
那边 nab 2
哪边 nab 1
那位 nw 2
哪位 nw 1
那位 naw 2
哪位 naw 1
这 zh
一个 ig
有个 ug
是一个 sig
有一个 uig
有一个 uyig
有一个 uyige
有没有 umu
有没有 umeiu
又有 uu
又又又 uuu
又双叒叕 uuuu
等等 dd
的地得 ddd
等等等等 dddd
刚刚 gg
才刚刚 cgg
知道 zd
不知道 bzd
往往 ww
哈哈 hh
看看 kk
常常 cc
想想 xx 2
想象 xx 1
隐约 yy
因为 yw
什么 sm
所以 sy
为什么 wsm
是不是 sbs
没什么 msm
有时候 ysh
有时候 yshh
有时候 yshou
什么的 smd
什么是 sms
Go go
Golang golang
Hugo hugo
goto goto
domain domain
TODO todo
Dota dota
main main
Amazon amazon

232
default.custom.yaml Normal file
View File

@ -0,0 +1,232 @@
# Rime default settings
# encoding: utf-8
patch:
# 方案列表
schema_list:
- schema: rime_ice
# - schema: double_pinyin
# - schema: double_pinyin_flypy
# 候选词个数
menu/page_size: 5
# 方案选单相关
switcher:
caption: 「方案选单」
hotkeys: # 呼出方案选单的快捷键
# - Control+grave
- Control+Shift+grave
# - F4
# - Alt+grave
save_options: # 开关记忆,从方案选单(而非快捷键)切换时会记住的选项,需要记忆的开关不能设定 reset。
- full_shape
- ascii_punct
- traditionalization
- emoji
fold_options: false # 呼出时是否折叠,多方案时建议折叠,一个方案建议展开
abbreviate_options: true # 折叠时是否缩写选项
option_list_separator: ' / ' # 折叠时的选项分隔符
# 按键行为
# good_old_caps_lock: Caps 切换大小写或切换中英macOS 偏好设置的优先级更高:偏好设置 - 键盘 - 输入法 - 使用“中/英”键切换“ABC”输入模式。
# 打字打到一半时按下了 Caps 或 Shift 后:
# commit_code 上屏原始的编码,然后切换到英文
# commit_text 上屏拼出的词句,然后切换到英文
# clear 清除输入的内容,然后切换到英文
# noop 屏蔽快捷键,啥也不干,但不要屏蔽 Caps
ascii_composer/good_old_caps_lock: true # true | false
ascii_composer/switch_key:
Caps_Lock: commit_text # commit_code | commit_text | clear
Shift_L: noop # commit_code | commit_text | clear | noop
Shift_R: noop # macOS 不会区分左右 Shift只需要设置 Shift_L
Control_L: noop
Control_R: noop
Eisu_toggle: clear
# 以词定字(上屏当前词组的第一个或最后一个字)
key_binder/select_first_character:
key_binder/select_last_character: "grave"
# 快捷键
key_binder/bindings:
# 简繁切换
- {when: always, accept: "Control+Shift+4", toggle: traditionalization}
- {when: always, accept: "Control+Shift+F", toggle: traditionalization}
- {when: always, accept: "Control+slash", toggle: traditionalization}
# 切换中英文标点
- {when: always, accept: "Control+Shift+A", toggle: ascii_punct}
# emacs_editing:
# - { when: composing, accept: Control+p, send: Up }
# - { when: composing, accept: Control+n, send: Down }
# - { when: composing, accept: Control+b, send: Left }
# - { when: composing, accept: Control+f, send: Right }
- { when: composing, accept: Control+a, send: Home } # 光标跳转至行首
- { when: composing, accept: Control+e, send: End } # 光标跳转至行尾
# - { when: composing, accept: Control+d, send: Delete }
# - { when: composing, accept: Control+k, send: Shift+Delete }
# - { when: composing, accept: Control+h, send: BackSpace }
# - { when: composing, accept: Control+g, send: Escape }
# - { when: composing, accept: Control+bracketleft, send: Escape }
# - { when: composing, accept: Control+y, send: Page_Up }
# - { when: composing, accept: Alt+v, send: Page_Up }
# - { when: composing, accept: Control+v, send: Page_Down }
# move_by_word_with_tab: Tab/Shift+Tab 切换光标至下/上一个拼音
- { when: composing, accept: ISO_Left_Tab, send: Shift+Left }
- { when: composing, accept: Shift+Tab, send: Shift+Left }
- { when: composing, accept: Tab, send: Shift+Right }
# paging_with_minus_equal: 翻页:- =
- { when: has_menu, accept: minus, send: Page_Up }
- { when: has_menu, accept: equal, send: Page_Down }
# paging_with_comma_period: 翻页:, .
# - { when: paging, accept: comma, send: Page_Up }
# - { when: has_menu, accept: period, send: Page_Down }
# paging_with_brackets: 翻页:[ ]
# - { when: paging, accept: bracketleft, send: Page_Up }
# - { when: has_menu, accept: bracketright, send: Page_Down }
# numbered_mode_switch:
# - { when: always, accept: Control+Shift+1, select: .next }
# - { when: always, accept: Control+Shift+2, toggle: ascii_mode }
# - { when: always, accept: Control+Shift+3, toggle: full_shape }
# - { when: always, accept: Control+Shift+4, toggle: simplification }
# - { when: always, accept: Control+Shift+5, toggle: extended_charset }
# - { when: always, accept: Control+Shift+exclam, select: .next }
# - { when: always, accept: Control+Shift+at, toggle: ascii_mode }
# - { when: always, accept: Control+Shift+numbersign, toggle: full_shape }
# - { when: always, accept: Control+Shift+dollar, toggle: simplification }
# - { when: always, accept: Control+Shift+percent, toggle: extended_charset }
# windows_compatible_mode_switch:
# - { when: always, accept: Shift+space, toggle: full_shape }
# - { when: always, accept: Control+period, toggle: ascii_punct }
# optimized_mode_switch:
# - { when: always, accept: Control+Shift+space, select: .next }
# - { when: always, accept: Shift+space, toggle: ascii_mode }
# - { when: always, accept: Control+comma, toggle: full_shape }
# - { when: always, accept: Control+period, toggle: ascii_punct }
# - { when: always, accept: Control+slash, toggle: simplification }
# - { when: always, accept: Control+backslash, toggle: extended_charset }
# key_binder 按键速查 https://github.com/LEOYoon-Tsaw/Rime_collections/blob/master/Rime_description.md
# (没有 Command 键,不支持)
# accept 和 send 可用字段除 A-Za-z0-9 外,还包含以下键盘上实际有的键:
# BackSpace 退格
# Tab 水平定位符
# Linefeed 换行
# Clear 清除
# Return 回车
# Pause 暂停
# Sys_Req 印屏
# Escape 退出
# Delete 删除
# Home 原位
# Left 左箭头
# Up 上箭头
# Right 右箭头
# Down 下箭头
# Prior、Page_Up 上翻
# Next、Page_Down 下翻
# End 末位
# Begin 始位
# Shift_L 左Shift
# Shift_R 右Shift
# Control_L 左Ctrl
# Control_R 右Ctrl
# Meta_L 左Meta
# Meta_R 右Meta
# Alt_L 左Alt
# Alt_R 右Alt
# Super_L 左Super
# Super_R 右Super
# Hyper_L 左Hyper
# Hyper_R 右Hyper
# Caps_Lock 大写锁
# Shift_Lock 上档锁
# Scroll_Lock 滚动锁
# Num_Lock 小键板锁
# Select 选定
# Print 打印
# Execute 运行
# Insert 插入
# Undo 还原
# Redo 重做
# Menu 菜单
# Find 搜寻
# Cancel 取消
# Help 帮助
# Break 中断
# space
# exclam !
# quotedbl "
# numbersign #
# dollar $
# percent %
# ampersand &
# apostrophe '
# parenleft (
# parenright )
# asterisk *
# plus +
# comma ,
# minus -
# period .
# slash /
# colon :
# semicolon ;
# less <
# equal =
# greater >
# question ?
# at @
# bracketleft [
# backslash
# bracketright ]
# asciicircum ^
# underscore _
# grave `
# braceleft {
# bar |
# braceright }
# asciitilde ~
# KP_Space 小键板空格
# KP_Tab 小键板水平定位符
# KP_Enter 小键板回车
# KP_Delete 小键板删除
# KP_Home 小键板原位
# KP_Left 小键板左箭头
# KP_Up 小键板上箭头
# KP_Right 小键板右箭头
# KP_Down 小键板下箭头
# KP_Prior、KP_Page_Up 小键板上翻
# KP_Next、KP_Page_Down 小键板下翻
# KP_End 小键板末位
# KP_Begin 小键板始位
# KP_Insert 小键板插入
# KP_Equal 小键板等于
# KP_Multiply 小键板乘号
# KP_Add 小键板加号
# KP_Subtract 小键板减号
# KP_Divide 小键板除号
# KP_Decimal 小键板小数点
# KP_0 小键板0
# KP_1 小键板1
# KP_2 小键板2
# KP_3 小键板3
# KP_4 小键板4
# KP_5 小键板5
# KP_6 小键板6
# KP_7 小键板7
# KP_8 小键板8
# KP_9 小键板9

320
en_dicts/cn_en.dict.yaml Executable file
View File

@ -0,0 +1,320 @@
# Rime dictionary
# encoding: utf-8
#
#
# https://github.com/iDvel/rime-ice
# ------- 中英混输词库 -------
#
#
# 因书写习惯,中英文之间都加了空格
#
---
name: cn_en
version: "2022-10-27"
sort: by_weight
...
# 没有空格的为了Emoji映射。Emoji 里空格是分割符,没法映射,不知道怎么解决)
X光 xguang
X光片 xguangpian
X射线 xshexian
T恤 txu
T恤衫 txushan
# 有空格的
AD 钙奶 adgainai
UU 加速器 uujiasuqi
Cinity 厅 Cinity
Cinity 厅 Cinityting
Eul 的神圣法杖 eul
Eul 的神圣法杖 euldeshenshengfazhang
A 杖 azhang
红 Buff hongbuff
蓝 Buff lanbuff
老 Baby laobaby
小 Baby xiaobaby
艾 AA aiaa
炒 CP chaocp
嗑 CP kecp
U 盘 youpan
U 盘 upan
B 站 bzhan
B 站 bizhan
V 站 vzhan
P 站 pzhan
大 V dav
QQ 音乐 qqyinyue
QQ 拼音 qqpinyin
QQ 会员 qqhuiyuan
QQ 输入法 qqshurufa
Dock 栏 docklan
阿 Q 精神 aqjingshen
Win 版 winban
Win 版本 winbanben
Windows 版 windowsban
Windows 版本 windowsbanben
Mac 版 macban
Mac 版本 macbanben
macOS 版 macosban
macOS 版本 macosbanben
iOS 版 iosban
iOS 版本 iosbanben
Android 版 androidban
Android 版本 androidbanben
Web 版 webban
Web 版本 webbanben
PC 端 pcduan
Win 端 winduan
Windows 端 windowsduan
Mac 端 macduan
macOS 端 macosduan
Web 端 webduan
iOS 端 iosduan
Android 端 androidduan
e 招贷 ezhaodai
G 胖 gpang
Up 主 upzhu
BOSS 直聘 bosszhipin
P 社 pshe
V 社 vshe
Go 语言 goyuyan
维生素 A weishengsua
维生素 B weishengsub
维生素 C weishengsuc
维生素 D weishengsud
维生素 E weishengsue
维生素 K weishengsuk
维 E 乳 weieru
维生素 E 乳 weishengsueru
阿 Q aq
阿 Q 正传 aqzhengzhuan
单边 z 变换 danbianzbianhuan
逗 B doub
逗 B doubi
哆啦 A 梦 duolaameng
二 B erb
二 B erbi
卡拉 OK kalaok
牛 B niub
牛 B niubi
三 K 党 sankdang
三 K 党 sankeidang
傻 B shab
傻 B shabi
傻 X shax
智能 ABC zhinengabc
智能 ABC 输入法 zhinengabcshurufa
装 B zhuangb
装 B zhuangbi
A 股 agu
A 盘 apan
A 片 apian
AA 制 aazhi
ATM 机 atmji
B 超 bchao
B 股 bgu
B 淋巴细胞 blinbaxibao
B 盘 bpan
B 细胞 bxibao
C 盘 cpan
C 语言 cyuyan
D 盘 dpan
E 盘 epan
F 盘 fpan
G 点 gdian
G 盘 gpan
H 股 hgu
H 盘 hpan
I 盘 ipan
IP 地址 ipdizhi
IP 电话 ipdianhua
IP 卡 ipka
IP 地址 ipweizhi
J 盘 jpan
K 宝 kbao
K 宝 keibao
K 粉 kfen
K 粉 keifen
K 歌 kge
K 歌 keige
POS 机 posji
Q 币 qbi
QQ qq
QQ 号 qqhao
QQ 号码 qqhaoma
QQ 空间 qqkongjian
QQ 群 qqqun
QQ 邮箱 qqyouxiang
SIM 卡 simka
T 淋巴细胞 tlinbaxibao
T 细胞 txibao
T 型台 txingtai
U 盾 udun
U 形管 uxingguan
UIM 卡 uimka
USIM 卡 usimka
X 刀 xdao
X 染色体 xranseti
Y 染色体 yranseti
z 变换 zbianhuan
z 逆变换 znibianhuan
α 粒子 aerfalizi
α 射线 aerfashexian
β 粒子 beitalizi
β 射线 beitashexian
γ 刀 gamadao
γ 射线 gamashexian
D 之国 dzhiguo
D 之一族 dzhiyizu
Beta 版 betaban
Beta 版本 betabanben
AV 女优 avnvyou
X 战警 xzhanjing
A4 asi
A4 纸 asizhi
A4 纸 aszhi
A4 纸 aszh
A4 纸 asz
A4 腰 asiyao
A4 腰 asyao
A4 腰 asya
A4 腰 asy
N 多 nduo
N 多个 nduoge
N 次 nci
N 遍 nbian
蒙奇·D·路飞 mengqidlufei
蒙奇·D·龙 mengqidlong
乔治·R·R·马丁 qiaozhirrmading
哥尔·D·罗杰 geerdluojie
马歇尔·D·蒂奇 maxieerddiqi
X·德雷克 xdeleike
蒙奇·D·卡普 mengqidkapu
波特卡斯·D·艾斯 potekasidaisi
VIP 中 P vipzhongp
QQ 秀 qqxiu
Big 胆 bigdan
我叫 MT wojiaomt
谜拟 Q miniq
多边兽 Z duobianshouz
藤子·F·不二雄 tengzifbuerxiong
PC 版 pcban
PC 版本 pcbanben
A 塔 ata
平 A pinga
立 Flag liflag
C 罗 cluo
IE 浏览器 ieliulanqi
A 壳 ake
B 壳 bke
C 壳 cke
D 壳 dke
A 面 amian
B 面 bmian
C 面 cmian
D 面 dmian
Server 酱 serverjiang
P 图 ptu
P 个图 pgetu
P 一下 pyixia
芭比 Q babiq
芭比 Q 了 babiqle
S 级 sji
QQ 堂 qqtang
PIN 码 pinma
PUK 码 pukma
关底 BOSS guandiboss
AA 吧 aaba
喊 cut hancut
ASCII 码 asciima
Go 圣经 goshengjing
江南 Style jiangnanstyle
头文字 D touwenzid
三无 Marblue sanwumarblue
A 罩杯 azhaobei
B 罩杯 bzhaobei
C 罩杯 czhaobei
D 罩杯 dzhaobei
E 罩杯 ezhaobei
F 罩杯 fzhaobei
G 罩杯 gzhaobei
H 罩杯 hzhaobei
A 罩 azhao
B 罩 bzhao
C 罩 czhao
D 罩 dzhao
E 罩 ezhao
F 罩 fzhao
G 罩 gzhao
H 罩 hzhao
TV 版 tvban
TV 版本 tvbanben
芒果 TV mangguotv
V 字仇杀队 vzichoushadui
V 怪客 vguaike
V 煞 vsha
Q 弹 qtan
Steam 云 steamyun
M 系列 mxilie
阿 Sir asir
Pro 版 proban
Pro 版本 probanben
Lite 版 liteban
Lite 版本 litebanben
X 教授 xjiaoshou
Papi 酱 papijiang
MAC 地址 macdizhi
DNS 劫持 dnsjiechi
DNS 污染 dnswuran
OK 了 okle
OK 了吗 oklema
腾讯 QQ tengxunqq
公网 IP gongwangip
Web 开发 webkaifa
圈 X quanx
Switch 版 switchban
Switch 版本 switchbanben
A 型 axing
A 型血 axingxue
B 型 bxing
B 型血 bxingxue
AB 型 abxing
AB 型血 abxingxue
O 型 oxing
O 型血 oxingxue
IT 界 itjie
Fn 键 fnjian
Cmd 键 cmdjian
Command 键 commandjian
Ctrl 键 ctrljian
Control 键 controljian
Opt 键 optjian
Option 键 optionjian
Shift 键 shiftjian
Tab 键 tabjian
Caps 键 capsjian
CapsLock 键 capslockjian
Return 键 returnjian
Enter 键 enterjian
Space 键 spacejian
Backspace 键 backspacejian
Del 键 deljian
Delete 键 deletejian
Esc 键 escjian
Eject 键 ejectjian
J·K·罗琳 jkluolin
周刊少年 Jump zhoukanshaonianjump
ICP 备案 icpbeian
啥 Bug shabug
有 Bug youbug
没 Bug meibug
没有 Bug meiyoubug
卡 Bug kabug
J·R·R·托尔金 jrrtuoerjin
异维 A 酸 weiyiasuan
互 fo hufo
减 CD jiancd
随身 WiFi suishenwifi
U 型锁 uxingsuo
查 IP chaip
Go 程 gocheng
TG 群 tgqun
Telegram 群 telegramqun

6369
en_dicts/en.dict.yaml Executable file

File diff suppressed because it is too large Load Diff

1691
en_dicts/en_ext.dict.yaml Executable file

File diff suppressed because it is too large Load Diff

98811
liangfen.dict.yaml Normal file

File diff suppressed because it is too large Load Diff

84
liangfen.schema.yaml Normal file
View File

@ -0,0 +1,84 @@
# Rime schema
# vim: set sw=2 sts=2 et:
# encoding: utf-8
schema:
schema_id: liangfen
name: LiangFen
version: "5.0"
author:
- TianHeng <2417647441@qq.com>
description: |
Use《http://yedict.com/》
http://yedict.com/
Dict is from http://yedict.com/
switches:
- name: ascii_mode
reset: 0
states: [ Chi, Eng ]
- name: full_shape
states: [ Half, Full ]
- name: simplification
states: [ Trad, Simp ]
engine:
processors:
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
segmentors:
- ascii_segmentor
- matcher
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- punct_translator
- r10n_translator
- reverse_lookup_translator
filters:
- simplifier
- uniquifier
speller:
alphabet: zyxwvutsrqponmlkjihgfedcba
delimiter: " '"
algebra:
- abbrev/^([a-z]).+$/$1/
translator:
dictionary: liangfen
spelling_hints: 4
preedit_format:
- "xlit|v|ü|"
- xform/iü/iv/
comment_format:
- "xlit|v|ü|"
- xform/iü/iv/
reverse_lookup:
dictionary: luna_pinyin
prefix: "`"
tips: PinYin
preedit_format:
- xform/([nljqxy])v/$1ü/
punctuator:
import_preset: default
menu:
page_size: 6
key_binder:
import_preset: default
recognizer:
import_preset: default
patterns:
reverse_lookup: "`[a-z]*$"

14
melt_eng.dict.yaml Executable file
View File

@ -0,0 +1,14 @@
# Rime dictionary
# encoding: utf-8
#
# 挂载英文输入方案的词库
#
---
name: melt_eng
version: "1"
import_tables:
- en_dicts/en # 原装词库
- en_dicts/en_ext # 自己补充的词库
- en_dicts/cn_en # 中英混输词库
...

67
melt_eng.schema.yaml Executable file
View File

@ -0,0 +1,67 @@
# Rime schema
# vim: set sw=2 sts=2 et:
# encoding: utf-8
schema:
schema_id: melt_eng
name: Easy English Nano
version: "0.2.2"
author:
- Patrick <ipatrickmac@gmail.com>
- tumuyan <tumuyan@21cn.com>
description:
Easy English Nano只包含少量常用词汇方便中英文混合输入度方案调用。
switches:
- name: ascii_mode
reset: 0
states: [ ASCII-OFF, ASCII-ON ]
engine:
processors:
- ascii_composer
- key_binder
- speller
- recognizer
#關閉標點符號轉換對應symbols.yaml - punctuator
- selector
- navigator
- express_editor
segmentors:
- matcher
- ascii_segmentor
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- table_translator
- punct_translator
filters:
- uniquifier
speller:
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA-_
delimiter: " '"
algebra:
# 拼写规则的本质,是把字典按照规则改写,而不是把输入的按键码转写。
- derive/['\-_+,.]+//
# 把大小写混写的单词转写为全小写
- derive/^(.+)$/\L$1/
# 把小写的单词转写为全大写写
- derive/^([a-z].+)$/\U$1/
# 把单词转写为首字母大写
- derive/^([a-zA-Z])/\U$1/
# 把小写的单词转写为前2字母大写
- derive/^([a-z][a-z])/\U$1/
translator:
dictionary: melt_eng
spelling_hints: 9
key_binder:
import_preset: default
punctuator:
import_preset: default
recognizer:
import_preset: default

2009
opencc/emoji-map.txt Normal file

File diff suppressed because it is too large Load Diff

27
opencc/emoji.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "Chinese to Emoji",
"segmentation": {
"type": "mmseg",
"dict": {
"type": "text",
"file": "emoji.txt"
}
},
"conversion_chain": [
{
"dict": {
"type": "group",
"dicts": [
{
"type": "text",
"file": "emoji.txt"
},
{
"type": "text",
"file": "others.txt"
}
]
}
}
]
}

3947
opencc/emoji.txt Normal file

File diff suppressed because it is too large Load Diff

570
opencc/others.txt Normal file
View File

@ -0,0 +1,570 @@
一一一一一一一 version: "2022-10-30" 一一一一一一一
一一一一一一一 此文件中间不能有空行 一一一一一一一
一一一一一一一 格式为:输入内容<Tab>响应内容1<Space>响应内容2<Space>响应内容3。。。 一一一一一一一
一一一一一一一 最左侧的输入内容应该写入词库中 一一一一一一一
一一一一一一一 一一一一一一一 一一一一一一一
一一一一一一一 偏旁部首 一一一一一一一
厂部 厂部 厂 ⺁
偏厂 偏厂 厂
偏厂儿 偏厂儿 厂
厂字头 厂字头 厂
反字框 反字框 ⺁
匚部 匚部
区字框 区字框 匚
三框 三框 匚
三框儿 三框儿 匚
刀部 刀部 刂
立刀旁 立刀旁 刂
立刀 立刀 刂
冂部 冂部 冂 ⺆
同字框 同字框 冂 ⺆
单人旁 单人旁 亻
人字旁 人字旁 亻
单立人 单立人 亻
斜刀头 斜刀头 ⺈
负字头 负字头 ⺈
包字头 包字头 勹
风字头 风字头 𠘨
凤字框 凤字框 𠘨
几字头 几字头 𠘨
几字底 几字底 𠘨
亠部 亠部 亠
京字头 京字头 亠
冫部 冫部 冫
两点水 两点水 冫
冰字旁 冰字旁 冫
八部 八部 丷
倒八 倒八 丷
兰字头 兰字头 丷
八字头 八字头 丷
八字底 八字底 丷
倒八字 倒八字 丷
冖部 冖部 冖
秃宝盖 秃宝盖 冖
言部 言部 讠 訁
言字旁 言字旁 讠 訁
凶字框 凶字框 凵
凵部 凵部 凵
卩部 卩部 卩
耳刀旁 耳刀旁 卩 阝
单耳旁 单耳旁 卩
单耳刀 单耳刀 卩
单耳朵 单耳朵 卩
邑部 邑部 阝
阜部 阜部 阝
双耳旁 双耳旁 阝
双耳刀 双耳刀 阝
左耳刀 左耳刀 阝
右耳刀 右耳刀 阝
厶部 厶部 厶
私字旁 私字旁 厶
廴部 廴部 廴
建之旁 建之旁 廴
㔾部 㔾部 㔾
仓字底 仓字底 㔾
土部 土部 土
提土旁 提土旁 土
土字底 土字底 土
土字旁 土字旁 土
手部 手部 扌
提手旁 提手旁 扌
艸部 艸部 艹
草头 草头 艹
草字头 草字头 艹
廾部 廾部 廾
弄字底 弄字底 廾
尢部 尢部 尢
尤字旁 尤字旁 尢
国字框 国字框 囗
大口框 大口框 囗
方框 方框 囗
双人旁 双人旁 彳
双立人 双立人 彳
彳部 彳部 彳
彡部 彡部 彡
三撇 三撇 彡
三撇儿 三撇儿 彡
犬部 犬部 犭
反犬旁 反犬旁 犭
夂部 夂部 夂
折文 折文 夂
折文儿 折文儿 夂
折文旁 折文旁 夂
冬字头 冬字头 夂
食部 食部 饣
食字旁 食字旁 饣
爿部 爿部 丬 爿
将字旁 将字旁 丬 爿
广部 广部 广
广字旁 广字旁 广
水部 水部 氵
三点水 三点水 氵
心部 心部 忄
竖心 竖心 忄
竖心旁 竖心旁 忄
宀部 宀部 宀
宝盖 宝盖 宀
宝盖儿 宝盖儿 宀
宝盖头 宝盖头 宀
宝盖儿头 宝盖儿头 宀
辵部 辵部 辶
走之 走之 辶
走之旁 走之旁 辶
彐部 彐部 彐
雪字底 雪字底 彐
横山 横山 彐
子部 子部 子 孑
子字旁 子字旁 子 孑
糸部 糸部 纟 糹 糸
绞丝 绞丝 纟 糹 糸
绞丝旁 绞丝旁 纟 糹 糸
绞丝儿旁 绞丝儿旁 纟 糹 糸
乱绞丝 乱绞丝 纟 糹 糸
乱绞丝儿 乱绞丝儿 纟 糹 糸
绞丝底 绞丝底 纟 糹 糸
幺部 幺部 幺
幼字旁 幼字旁 幺
巛部 巛部 巛
三拐 三拐 巛
三拐儿 三拐儿 巛
玉部 玉部 王
王字旁 王字旁 王
斜玉旁 斜玉旁 王
老字头 老字头 耂
木字旁 木字旁 木
牛字旁 牛字旁 牜 ⺧
车字旁 车字旁 车
反文 反文 攵
反文旁 反文旁 攵
爪字头 爪字头 爫
火字旁 火字旁 火
四点底 四点底 灬
四点水 四点水 灬
示字旁 示字旁 礻
示补 示补 礻
示补儿 示补儿 礻
春字头 春字头 春
四字头 四字头 罒
扁四头 扁四头 罒
皿字底 皿字底 皿
皿墩 皿墩 皿
皿墩儿 皿墩儿 皿
金字旁 金字旁 钅
禾木旁 禾木旁 禾
病字头 病字头 疒
病字旁 病字旁 疒
病旁 病旁 疒
衣字旁 衣字旁 衤
衣补 衣补 衤
衣补儿 衣补儿 衤
登字头 登字头 癶
西字头 西字头 覀
虎字头 虎字头 虍
竹字头 竹字头 ⺮
羊字旁 羊字旁 ⺶ ⺷
羊字头 羊字头 ⺷ ⺶
卷字头 卷字头 龹
米字旁 米字旁 米
足字旁 足字旁 ⻊
髦字头 髦字头 髟
石字头 石字头 丆
一一一一一一一 著名表演艺术家 一一一一一一一
爱田飞鸟 爱田飞鸟 あいだ飛鳥
爱乃娜美 爱乃娜美 愛乃なみ
安斋拉拉 安斋拉拉 安齋拉拉
苍井空 苍井空 蒼井そら
长谷川理穗 长谷川理穗 長谷川リホ
彩美旬果 彩美旬果 あやみ旬果
春咲凉 春咲凉 春咲りょう
蒂亚 蒂亚 蒂亞
楪可怜 楪可怜 楪カレン
妃悠爱 妃悠爱 妃悠愛 长泽杏奈 長澤杏奈
长泽杏奈 长泽杏奈 長澤杏奈 妃悠爱 妃悠愛
枫可怜 枫可怜 楓カレン
枫花恋 枫花恋 楓カレン
宫下华奈 宫下华奈 宮下華奈
古川伊织 古川伊织 古川いおり
广濑里绪菜 广濑里绪菜 広瀬りおな
河北春菜 河北春菜 河北はるな
吉川莲 吉川莲 吉川蓮
吉泽明步 吉泽明步 吉沢明歩
铃村爱里 铃村爱里 鈴村あいり
凉森玲梦 凉森玲梦 涼森れむ
林由奈 林由奈 林ゆな
凛音桃花 凛音桃花 凛音とうか
里美尤利娅 里美尤利娅 里美ゆりあ
芦名尤莉亚 芦名尤莉亚 芦名ユリア
美雪爱莉丝 美雪爱莉丝 美雪ありす
目黑惠 目黑惠 目黒めぐみ
明里䌷 明里䌷 明里つむぎ
七海蒂娜 七海蒂娜 七海ティナ
天海翼 天海翼 天海つばさ
桃谷绘里香 桃谷绘里香 桃谷エリカ
辻井穗乃果 辻井穗乃果 辻井ほのか
桥本有菜 桥本有菜 橋本ありな
深田咏美 深田咏美 深田えいみ
三上悠亚 三上悠亚 三上悠亜
桃乃木香奈 桃乃木香奈 桃乃木かな
武藤绫香 武藤绫香 武藤あやか
希岛爱理 希岛爱理 希岛あいり
夏希栗 夏希栗 夏希まろん
希崎杰西卡 希崎杰西卡 希崎ジェシカ
小泽玛利亚 小泽玛利亚 小澤マリア
小岛南 小岛南 小島みなみ
相泽南 相泽南 相沢みなみ
星宫一花 星宫一花 星宮一花
星野景子 星野景子 ほしの景子
星野娜美 星野娜美 星野ナミ
篠田步美 篠田步美 篠田あゆみ
柚木蒂娜 柚木蒂娜 柚木ティナ
有贺由爱 有贺由爱 有賀ゆあ
乙白沙也加 乙白沙也加 乙白さやか
樱井步 樱井步 桜井あゆ
樱井彩 樱井彩 桜井彩
樱空桃 樱空桃 桜空もも
宇都宫紫苑 宇都宫紫苑 宇都宮しをん
一之濑亚美莉 一之濑亚美莉 一ノ瀬アメリ
樱木凛 樱木凛 桜木凛
园田美樱 园田美樱 園田みおん
永野司 永野司 永野つかさ
早川濑里奈 早川濑里奈 早川瀬里奈
椎名由奈 椎名由奈 椎名ゆな
竹内有纪 竹内有纪 竹内有紀
三宫椿 三宫椿 三宮つばき
蓝芽水月 蓝芽水月 藍芽みずき
星野明 星野明 星野あかり
莲实克蕾儿 莲实克蕾儿 蓮実クレア
香苗玲音 香苗玲音 香苗レノン
有原步美 有原步美 有原あゆみ
美谷朱里 美谷朱里 美谷あかり
水川堇 水川堇 水川スミレ
小宵虎南 小宵虎南 小宵こなん
新村晶 新村晶 新村あかり
森泽佳奈 森泽佳奈 森沢かな
朝日奈花恋 朝日奈花恋 朝日奈かれん
高桥圣子 高桥圣子 高橋しょう子
西宫梦 西宫梦 西宮ゆめ
藤森里穗 藤森里穗 藤森里穂
木村穗乃香 木村穗乃香 木村穂乃香
神宫寺奈绪 神宫寺奈绪 神宮寺ナオ
水卜樱 水卜樱 水卜櫻
爱音麻里亚 爱音麻里亚 愛音まりあ
良音荠 良音荠 良音なずな
本庄铃 本庄铃 本庄鈴
明日花绮罗 明日花绮罗 明日花キララ
大桥未久 大桥未久 大橋未久
濑名光莉 濑名光莉 瀬名きらり
栗山莉绪 栗山莉绪 栗山莉緒
纱纱原百合 纱纱原百合 紗々原ゆり
堀北湾 堀北湾 堀北わん
冲田杏梨 冲田杏梨 沖田杏梨
天使萌 天使萌 天使もえ
西条琉璃 西条琉璃 西條るり
君岛美绪 君岛美绪 君島みお
波多野结衣 波多野结衣 波多野結衣
松下纱荣子 松下纱荣子 松下紗栄子
山手梨爱 山手梨爱 山手梨愛
濑亚美莉 濑亚美莉 瀬アメリ
望月理沙 望月理沙 望月りさ
上原瑞穗 上原瑞穗 上原瑞穂
岬奈奈美 岬奈奈美 岬ななみ
神菜美舞 神菜美舞 神菜美まい
白桃花 白桃花 白桃はな
栗宫双叶 栗宫双叶 栗宮ふたば
飞鸟里伊奈 飞鸟里伊奈 飛鳥りいな
天音真比奈 天音真比奈 天音まひな
凰香奈芽 凰香奈芽 凰かなめ
一一一一一一一 生活大爆炸&老友记 一一一一一一一
谢耳朵 谢耳朵 Sheldon
谢尔顿 谢尔顿 Sheldon
Sheldon Sheldon 谢尔顿 谢耳朵
莱纳德 莱纳德 Leonard
Leonard Leonard 莱纳德
佩妮 佩妮 Penny
Penny Penny 佩妮
霍华德 霍华德 Howard
Howard Howard 霍华德
拉杰什 拉杰什 Rajesh
Rajesh Rajesh 拉杰什
瑞秋 瑞秋 Rachel
Rachel Rachel 瑞秋
莫妮卡 莫妮卡 Monica
Monica Monica 莫妮卡
乔伊 乔伊 Joey
Joey Joey 乔伊
罗斯 罗斯 Ross
Ross Ross 罗斯
钱德勒 钱德勒 Chandler
Chandler Chandler 钱德勒
菲比 菲比 Phoebe
Phoebe Phoebe 菲比
一一一一一一一 键盘符号 一一一一一一一
Cmd Cmd Command ⌘
Command Command ⌘
Ctrl Ctrl Control ⌃
Control Control ⌃
Opt Opt Option ⌥
Option Option ⌥
Shift Shift ⇧
Tab Tab ⇥
Caps Caps CapsLock ⇪
CapsLock CapsLock ⇪
Return Return ⏎
Enter Enter ⏎
Space Space ␣
Backspace Backspace ⌫
Del Del Delete ⌫
Delete Delete ⌫
Esc Esc Escape ⎋
Eject Eject ⏏
一一一一一一一 三叠字 一一一一一一一
三个生 三个生 㽓
三个秦 三个秦 䆐
三个若 三个若 䖃
三个雲 三个雲 䨺
三个人 三个人 众 㐺
三个刀 三个刀 刕
三个十 三个十 卉 𠦄
三个力 三个力 劦
三个原 三个原 厵
三个厶 三个厶 厽
三个又 三个又 叒
三个口 三个口 品 𠱠
三个七 三个七 㐂
三个吉 三个吉 嚞 𡕇
三个土 三个土 垚
三个士 三个士 壵
三个女 三个女 姦
三个子 三个子 孨 𡥦
三个小 三个小 尛 𡭯
三个心 三个心 惢
三个手 三个手 掱
三个日 三个日 晶 晿
三个木 三个木 森 𣓏
三个止 三个止 歮
三个毛 三个毛 毳
三个水 三个水 淼 㴇
三个泉 三个泉 灥
三个火 三个火 焱 㷋
三个牛 三个牛 犇
三个犬 三个犬 猋
三个田 三个田 畾
三个白 三个白 皛
三个目 三个目 瞐
三个直 三个直 矗
三个石 三个石 磊
三个羊 三个羊 羴
三个耳 三个耳 聶
三个舌 三个舌 舙 𦧵
三个屮 三个屮 芔
三个虫 三个虫 蟲
三个言 三个言 譶 𧭛
三个贝 三个贝 赑
三个車 三个車 轟
三个金 三个金 鑫
三个隹 三个隹 雥 雦
三个雷 三个雷 靐
三个風 三个風 飍
三个飛 三个飛 飝
三个香 三个香 馫
三个马 三个马 骉 𩧢
三个魚 三个魚 鱻
三个鹿 三个鹿 麤
三个龍 三个龍 龘
三个个 三个个 𠁭
三个丶 三个丶 𠁼
三个了 三个了 𠄕
三个介 三个介 𠌕
三个企 三个企 𠐰
三个舍 三个舍 𠑰
三个圥 三个圥 𠒶
三个光 三个光 𠓉
三个兔 三个兔 𠓗
三个全 三个全 𠓾
三个𠙽 三个𠙽 𠚛
三个𠧪 三个𠧪 𠨋
三个㔾 三个㔾 𠨕
三个厡 三个厡 𠫒
三个可 三个可 𠾳
三个因 三个因 𡈲
三个夏 三个夏 𡖃
三个大 三个大 𡘙
三个天 三个天 𡙎
三个太 三个太 𡙒
三个𦉼 三个𦉼 𡚤
三个宝 三个宝 𡬏
三个宜 三个宜 𡬐
三个客 三个客 𡬚
三个寒 三个寒 𡬜
三个少 三个少 𡮏
三个山 三个山 𡷈
三个市 三个市 𢅈
三个文 三个文 𣁕
三个斗 三个斗 𣁾
三个朿 三个朿 𣝯
三个束 三个束 𣠆
三个林 三个林 𣡕
三个果 三个果 𣡗
三个欠 三个欠 𣣓
三个𣥚 三个𣥚 𣦴
三个爪 三个爪 𤔙
三个妥 三个妥 𤕇
三个用 三个用 𤰌
三个甲 三个甲 𤳅
三个百 三个百 𤾩
三个盖 三个盖 𥃣
三个県 三个県 𥍙
三个空 三个空 𥩌
三个亇 三个亇 𥫮 𥫧
三个竹 三个竹 𥴒
三个罒 三个罒 𦋹
三个羗 三个羗 𦏱
三个老 三个老 𦓈
三个月 三个月 𦜳
三个至 三个至 𦥏
三个興 三个興 𦧅
三个足 三个足 𨆬
三个㖖 三个㖖 𨑂
三个門 三个門 𨷮
三个面 三个面 𩉖
三个頁 三个頁 𩖏
三个鳥 三个鳥 𪈼
三个男 三个男 𪟧
三个立 三个立 𫁪
三个九 三个九 𫡤
三个也 三个也 𫡩
三个加 三个加 𫦹
三个動 三个動 𫦿
三个千 三个千 𫧢
三个方 三个方 𬀉
三个朔 三个朔 𬂚
三个玉 三个玉 𬍼
三个申 三个申 𬏍
三个𡿨 三个𡿨 巛
三个去 三个去 𠬑
三个弓 三个弓 𢏝
三个䖝 三个䖝 𧔗
三个丿 三个丿 彡
三个户 三个户 𢩕
三个瓜 三个瓜 𤬑
三个鸟 三个鸟 𪉓
三个米 三个米 𥼬
一一一一一一一 四叠字 一一一一一一一
四个乂 四个乂 㸚
四个人 四个人 𠈌
四个厶 四个厶 𠫬
四个又 四个又 叕
四个匕 四个匕 𣬅
四个工 四个工 㠭
四个口 四个口 㗊
四个天 四个天 𡚌
四个小 四个小 𡮐
四个屮 四个屮 茻
四个火 四个火 燚
四个牛 四个牛 𤛭
四个魚 四个魚 䲜
四个月 四个月 朤
四个日 四个日 𣊫
四个曰 四个曰 𣊭
四个林 四个林 𣡽
四个水 四个水 㵘
四个石 四个石 𥗉
四个田 四个田 𤳳
四个甲 四个甲 𤳵
四个且 四个且 𠁠
四个囚 四个囚 𡈶
四个困 四个困 𡈹
四个竹 四个竹 𥷹
四个老 四个老 𦓋
四个朿 四个朿 𣡍
四个先 四个先 𠓙
四个金 四个金 𨰻
四个泉 四个泉 𤆁
四个言 四个言 𧮦
四个門 四个門 𨷾
四个果 四个果 𣡾
四个春 四个春 𣌠
四个車 四个車 𨏿
四个風 四个風 𩙡
四个雷 四个雷 䨻
四个雲 四个雲 𩇔
四个興 四个興 𠔻
四个龍 四个龍 𪚥
四个土 四个土 㙓
男女男 男女男 嬲
女男女 女男女 嫐
一一一一一一一 其他 一一一一一一一
Rime Rime 㞢
中州韵 中州韵 Rime
鼠须管 鼠须管 Squirrel
小狼毫 小狼毫 Weasel
平方 平方 ²
立方 立方 ³
平方米 平方米 m²
平方厘米 平方厘米 cm²
度 度 °
摄氏度 摄氏度 °C
华氏度 华氏度 °F
点 点 ·
间隔号 间隔号 ·
连接号 连接号 —
连接符 连接符 —
连字符 连字符
Apple Apple 
反问号 反问号 ¿
约等于 约等于 ≈
约等 约等 ≈
约等号 约等号 ≈
不等于 不等于 ≠
不等号 不等号 ≠
大于 大于 >
大于号 大于号 >
小于 小于 <
小于号 小于号 <
小于等于 小于等于 ≤
小于等于号 小于等于号 ≤
大于等于 大于等于 ≥
大于等于号 大于等于号 ≥
根号 根号 √
正负号 正负号 ±
正负 正负 ±
百分号 百分号 %
百分之 百分之 %
千分号 千分号 ‰
千分之 千分之 ‰
万分号 万分号 ‱
万分之 万分之 ‱
纳粹 纳粹 卐
无穷大 无穷大 ∞
无穷大符号 无穷大符号 ∞
正无穷 正无穷 +∞
负无穷 负无穷 -∞
圆周率 圆周率 π
进击的巨人 进击的巨人 進撃の巨人
中央电视台 中央电视台 装垫儿台
Geralt Geralt 杰洛特
杰洛特 杰洛特 Geralt
灭霸 灭霸 Thanos
Thanos Thanos 灭霸
皮卡丘 皮卡丘 Pikachu
Pikachu Pikachu 皮卡丘
Pokemon Pokemon Pokémon
德尔塔 德尔塔 Delta
Delta Delta 德尔塔
奥密克戎 奥密克戎 Omicron
Omicron Omicron 奥密克戎
恭喜发财 恭喜发财 恭喜發財
人上人 人上人 仌
二百 二百 皕
两百 两百 皕
英寸 英寸 吋
星巴克 星巴克 Starbucks
毫秒 毫秒 ms millisecond
微秒 微秒 μs microsecond
纳秒 纳秒 ns nanosecond
掀桌子 掀桌子 (╯'-')╯︵┻━┻ (╯°Д°)╯︵┻━┻
摆桌子 摆桌子 ┬─┬ノ('-')
车马炮 车马炮 車马炮
出车 出车 出車
安卓 安卓 Android
反引号 反引号 `

BIN
others/demo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

26
others/iRime/README.md Normal file
View File

@ -0,0 +1,26 @@
# iRime 方案
直接拖进去就是全键盘方案。
然后有两组补丁。
<br>
一组九宫格的:
九宫格和 iRime 自带的主要区别能输入英文即「43556」上屏「hello」。
九宫格体验:重码时不能选拼音,太难受了,要了命了。
<br>
一组全键盘的:
开启模糊拼音,输入单字时比较困扰,不过实在离不开这个功能。
单引号改为了删除自造词(下滑 L 键)。
调整了标点符号的键盘映射,一些上下滑时的操作,比如上滑是两个括号,下滑是单个括号。
「符」按钮直接跳转到「更多」那个页面。

View File

@ -0,0 +1,10 @@
# Rime schema
# vim: set sw=2 sts=2 et:
# encoding: utf-8
patch:
speller/alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA-_1234567890
speller/algebra/+:
- xlit/abcdefghijklmnopqrstuvwxyz/22233344455566677778889999/

View File

@ -0,0 +1,61 @@
# Rime schema
# encoding: utf-8
patch:
# 增加数字按键
speller/alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA1234567890
# 去掉电脑上打固顶字
fixed: ~
# 九宫格拼写映射,直接覆盖,放弃 26 键的纠错,否则重码太多了
speller/algebra:
- "xlit|12345|+_*^0|"
- xlit/abcdefghijklmnopqrstuvwxyz/22233344455566677778889999/
# 让输入框从数字变成字母
engine/filters/+:
- lua_filter@irime_t9_preedit
translator/+:
spelling_hints: 16
# 重写了,因为需要 @ 和 # 的映射,否则键盘上那俩按钮不起作用。
punctuator/half_shape:
',' : { commit: }
'.' : { commit: 。 }
'<' : [ 《, 〈, «, ]
'>' : [ 》, 〉, », ]
'/' : [ 、, '/', , ÷ ]
'?' : { commit: }
';' : { commit: }
':' : { commit: }
'''' : { pair: [ '', '' ] }
'"' : { pair: [ '“', '”' ] }
'\' : [ 、, '\', ]
'|' : [ ·, '|', , '§', '¦' ]
'`' : '`'
'~' : [ '~', ]
'!' : { commit: }
# '@' : [ 1,,,,,_, ]
'@' : [ 1,'@',,,、,……,, ]
'#' : [ 0,'#','$','%','^','&','*','(',')' ]
'%' : [ '%', , '°', '℃' ]
'$' : [ ¥, '$', '€', '£', '¥', '¢', '¤' ]
'^' : { commit: …… }
'&' : '&'
'*' : [ '*', , ·, ・, ×, ※, ❂ ]
'(' :
')' :
'-' : '-'
'_' : ——
'+' : '+'
'=' : '='
'[' : [ 「, 【, , ]
']' : [ 」, 】, , ]
'{' : [ 『, 〖, ]
'}' : [ 』, 〗, ]
sytle:
theme_name: T9

View File

@ -0,0 +1,18 @@
# Rime schema
# encoding: utf-8
patch:
# 中文键盘空格键上会显示方案名称
# (英文键盘的空格在主题的 `theme.yaml` 文件下的 `space: {label:` 处修改)
schema/name: Rime ice
# 智能纠错
translator/enable_correction: true
key_binder:
import_preset: default
bindings/+:
# 单引号(相应主题为下滑 L 键),改成删除自造词
- { when: composing, accept: "'", send: Shift+Delete }

View File

@ -0,0 +1,3 @@
Name: iPhone默认键盘_custom
Author: 筋斗云
SupportPlatform: iOS,iPadOS

View File

@ -0,0 +1,279 @@
# Trime default style settings
# encoding: utf-8
#
# 以 iRime 自带的「iPhone默认键盘」为模板修改了一些
#
# 按钮调换描述文字中文键盘显示为「中」英文键盘显示为「abc」。
#
# 修改键盘符号的映射,不调用 punctuator/half_shape直接输出指定标点。
# 一般是上滑为全角的,下滑改为半角的。
# / @ # - _ 永远是半角的,上下滑都一样。
# 右引号上滑为直角引号「」
# 括号下滑为输入单个括号,中文的输出全角,英文的输出半角。
#
# 取消符号键盘,点击「符」直接跳转到「更多」那个界面。
config_version: "0.9"
name: 默认键盘 #方案名称
author: 筋斗云#作者资讯
#键盘高度等
height:
1: &jpgd1 43.6 #符号键盘
2: &jpgd2 46 #主键盘
3: &jpgd3 41.5 #数字键盘
4: &jpgd4 12 #主键盘圆角
5: &jpgd5 36 #候选区高度
6: &jpgd6 0.5 #符号键盘行间距
7: &jpgd7 0.5 #符号键盘水平间距
8: &jpgd8 0.0 #符号键盘圆角
9: &jpgd9 11 #主键盘数字键盘行间距
10: &jpgd10 4 #主键盘数字键盘水平间距
style:
key_height: *jpgd2 #键高
keyboards: [default, number, .symbols, english, .number] #键盘配置,所有跳转键盘都需要在这里配置,不然会出错
text_size: 12 #编码字体大小 默认值为12
text_height: 20 #编码框高度 默认值为20
candidate_text_size: 24 #候选字体大小 默认值为24
candidate_view_height: 44 #候选高度 默认值为44
candidate_padding: 14 #候选间距 默认值为14
comment_text_size: 14 #逐码字体大小 默认值为14
comment_height: 16 #逐码高度 默认值为16
show_preview: true #是否显示气泡 默认显示
round_corner: 0 #值为0的话默认 iphone为4ipad为8
color_scheme: default #配色方案
#键盘布局
preset_keyboards:
default:
ascii_mode: 0
author: "筋斗云"
height: *jpgd2
horizontal_gap: *jpgd10
vertical_gap: *jpgd9
round_corner: *jpgd4
#现在只支持配置click,swipe_up,swipe_down键盘
keys:
- {click: q, label: Q, swipe_up: commit1, swipe_down: "一"}
- {click: w, label: W, swipe_up: commit2, swipe_down: "二"}
- {click: e, label: E, swipe_up: commit3, swipe_down: "三"}
- {click: r, label: R, swipe_up: commit4, swipe_down: "四"}
- {click: t, label: T, swipe_up: commit5, swipe_down: "五"}
- {click: y, label: Y, swipe_up: commit6, swipe_down: "六"}
- {click: u, label: U, swipe_up: commit7, swipe_down: "七"}
- {click: i, label: I, swipe_up: commit8, swipe_down: "八"}
- {click: o, label: O, swipe_up: commit9, swipe_down: "九"}
- {click: p, label: P, swipe_up: commit0, swipe_down: ""}
- {width: 5}
- {click: a, label: A, swipe_up: commit, swipe_down: commithalf}
- {click: s, label: S, swipe_up: commitgan, swipe_down: commitgan}
- {click: d, label: D, swipe_up: commit, swipe_down: commithalf}
- {click: f, label: F, swipe_up: commit, swipe_down: commithalf}
- {click: g, label: G, swipe_up: bracket3, swipe_down: commit}
- {click: h, label: H, swipe_up: commit, swipe_down: commit}
- {click: j, label: J, swipe_up: commit@, swipe_down: commit@}
- {click: k, label: K, swipe_up: quotationMarkFull2, swipe_down: '"'}
- {click: l, label: L, swipe_up: quotationMar「」, swipe_down: "'"}
- {width: 5}
- {click: Shift, width: 14}
- {width: 1}
- {click: z, label: Z, swipe_up: commit-, swipe_down: commit-}
- {click: x, label: X, swipe_up: commit_, swipe_down: commit_}
- {click: c, label: C, swipe_up: commitJin, swipe_down: commitJin}
- {click: v, label: V, swipe_up: commit, swipe_down: commithalf}
- {click: b, label: B, swipe_up: commit, swipe_down: commithalf}
- {click: n, label: N, swipe_up: commit, swipe_down: commaHalf}
- {click: m, label: M, swipe_up: commit。, swipe_down: periodHalf}
- {width: 1}
- {click: BackSpace, width: 14}
- {click: symbols, width: 14}
- {click: .number, width: 12}
- {click: space, width: 42}
- {click: english, width: 12}
- {click: Return, width: 20}
name: "默认键盘"
width: 10
english:
ascii_mode: 1
author: "筋斗云"
height: *jpgd2
horizontal_gap: *jpgd10
vertical_gap: *jpgd9
round_corner: *jpgd4
keys:
- {click: q, swipe_up: "1", swipe_down: "一"}
- {click: w, swipe_up: "2", swipe_down: "二"}
- {click: e, swipe_up: "3", swipe_down: "三"}
- {click: r, swipe_up: "4", swipe_down: "四"}
- {click: t, swipe_up: "5", swipe_down: "五"}
- {click: y, swipe_up: "6", swipe_down: "六"}
- {click: u, swipe_up: "7", swipe_down: "七"}
- {click: i, swipe_up: "8", swipe_down: "八"}
- {click: o, swipe_up: "9", swipe_down: "九"}
- {click: p, swipe_up: "0", swipe_down: ""}
- {width: 5}
- {click: a, swipe_up: "~", swipe_down: "~"}
- {click: s, swipe_up: "/", swipe_down: "/"}
- {click: d, swipe_up: ":", swipe_down: ":"}
- {click: f, swipe_up: ";", swipe_down: ";"}
- {click: g, swipe_up: bracket2, swipe_down: "("}
- {click: h, swipe_up: ")", swipe_down: ")"}
- {click: j, swipe_up: "@", swipe_down: "@"}
- {click: k, swipe_up: quotationMarkHalf2, swipe_down: '"'}
- {click: l, swipe_up: quotationMarkHalf1, swipe_down: "'"}
- {width: 5}
- {click: Shift, width: 14}
- {width: 1}
- {click: z, swipe_up: "-", swipe_down: "-"}
- {click: x, swipe_up: "_", swipe_down: "_"}
- {click: c, swipe_up: "#", swipe_down: "#"}
- {click: v, swipe_up: "?", swipe_down: "?"}
- {click: b, swipe_up: "!", swipe_down: "!"}
- {click: n, swipe_up: ",", swipe_down: ","}
- {click: m, swipe_up: ".", swipe_down: "."}
- {width: 1}
- {click: BackSpace, width: 14}
- {click: symbols, width: 14}
- {click: .number, width: 12}
- {click: ., swipe_up: ",", width: 10}
- {click: space, width: 34}
- {click: DefaultKeyboard2, width: 10}
- {click: Return, width: 20}
name: "英文键盘"
width: 10
number:
ascii_mode: 0
author: "筋斗云"
height: *jpgd2
horizontal_gap: *jpgd10
vertical_gap: *jpgd9
round_corner: *jpgd4
keys:
- {click: 1}
- {click: 2}
- {click: 3}
- {click: 4}
- {click: 5}
- {click: 6}
- {click: 7}
- {click: 8}
- {click: 9}
- {click: 0}
- {click: "-"}
- {click: "/"}
- {click: ":"}
- {click: semicolon}
- {click: bracket}
- {click: bracket1}
- {click: "¥"}
- {click: "@"}
- {click: quotationMarkFull}
- {click: quotationMarkFull1}
- {click: .symbols1, width: 14}
- {width: 3}
- {click: periodFull, width: 11}
- {click: commaFull, width: 11}
- {click: dunHalf, width: 11}
- {click: questionMark, width: 11}
- {click: point, width: 11}
- {click: ., width: 11}
- {width: 3}
- {click: BackSpace, width: 14}
- {click: DefaultKeyboard, width: 25}
- {click: space, width: 50}
- {click: Return, width: 25}
name: "苹果数字键盘"
width: 10
preset_color_schemes:
default:
back_color: 0xffffff
preset_keys:
# 键盘类型需要在这里跳转,目前只支持下面的配置。
# 只支持 Shift Return BackSpace space 特殊键盘配置
# 现在text的命令只支持:
# 1,Left(光标向左移动一格);
# 2,Right(光标向右移动一格)
# 3,跳转到指定键盘;
# 其它暂时不支持,具体看事例;
# 现在支持commit命令,直接上屏指定字符
#
Shift: {label: Shift, send: Shift_L}
Return: {label: Enter, send: Return}
BackSpace: {send: BackSpace}
space: {label: "␣", send: space}
number: {label: 123, send: Eisu_toggle, select: number}
# english: {label: "abc", send: Eisu_toggle, select: english}
# 修改:中文状态下显示「中」
english: {label: "中", send: Eisu_toggle, select: english}
# symbols: {label: "符", send: Eisu_toggle, select: number}
# 修改:直接跳到「更多」
symbols: {label: "符", send: Eisu_toggle, select: .symbols}
.symbols: {label: "更多", send: Eisu_toggle, select: .symbols} #默认的符号键盘
.symbols1: {label: "更多", text: "{.symbols}{DefaultKeyboard}"} #默认的符号键盘
.number: {label: 123, send: Eisu_toggle, select: .number} #默认的9宫格数据键盘
DefaultKeyboard: {label: 中, send: Eisu_toggle, select: default}
# DefaultKeyboard2: {label: 中, send: Eisu_toggle, select: default}
# 修改英文状态下显示「abc」
DefaultKeyboard2: {label: "abc", send: Eisu_toggle, select: default}
periodHalf: {label: ".", commit: "."} #直接上屏半角句号
periodFull: {label: "。", text: "。{DefaultKeyboard}"} #上屏全角句号再跳转到default键盘
commaHalf: {label: ",", commit: ","}
commaFull: {label: "", text: "{DefaultKeyboard}"}
dunHalf: {label: "、", text: "、{DefaultKeyboard}"}
questionMark: {label: "", text: "{DefaultKeyboard}"}
point: {label: "", text: "{DefaultKeyboard}"}
semicolon: {label: "", text: ";{DefaultKeyboard}"} #先上屏再跳转到default键盘
bracket: {label: "(", text: "(){Left}{DefaultKeyboard}"} #先上屏()光标往左移动一格再跳转到default键盘
bracket3: {label: "", text: "{Left}"} #先上屏()光标往左移动一格
bracket2: {label: "(", text: "(){Left}"} #先上屏()光标往左移动一格
bracket1: {label: ")", text: "){DefaultKeyboard}"} #先上屏)再跳转到default键盘
quotationMarkFull: {label: "〝", text: "〝〞{Left}{DefaultKeyboard}"}
quotationMarkFull1: {label: "〞", text: "〞"{Left}{DefaultKeyboard}"}
quotationMarkFull2: {label: "〝", text: "〝〞{Left}"}
quotationMar「」: {label: "「", text: "「」{Left}"}
quotationMarkHalf1: {label: "\"", text: "\""}
quotationMarkHalf2: {label: "\"", text: "\"\"{Left}"}
quotationMarkFull: {label: "\"", text: "{DefaultKeyboard}"}
commit1: {label: "1", commit: "1"}
commit2: {label: "2", commit: "2"}
commit3: {label: "3", commit: "3"}
commit4: {label: "4", commit: "4"}
commit5: {label: "5", commit: "5"}
commit6: {label: "6", commit: "6"}
commit7: {label: "7", commit: "7"}
commit8: {label: "8", commit: "8"}
commit9: {label: "9", commit: "9"}
commit0: {label: "0", commit: "0"}
commit: {label: "", commit: ""}
commithalf: {label: "~", commit: "~"}
commitgan: {label: "/", commit: "/"}
commit: {label: "", commit: ""}
commithalf: {label: ":", commit: ":"}
commit: {label: "", commit: ""}
commithalf: {label: ";", commit: ";"}
commit: {label: "", commit: ""}
commit: {label: "", commit: ""}
commit@: {label: "@", commit: "@"}
commit-: {label: "-", commit: "-"}
commit_: {label: "_", commit: "_"}
commitJin: {label: "#", commit: "#"}
commit: {label: "", commit: ""}
commithalf: {label: "?", commit: "?"}
commit: {label: "", commit: ""}
commithalf: {label: "!", commit: "!"}
commit: {label: "", commit: ""}
commithalf: {label: ",", commit: ","}
commit。: {label: "。", commit: "。"}
commit。half: {label: ".", commit: "."}
commit”: {label: "”", commit: "”"}
commit_single_quote: {label: "'", commit: "'"}

13
others/script/go.mod Normal file
View File

@ -0,0 +1,13 @@
module script
go 1.19
require github.com/deckarep/golang-set/v2 v2.1.0
require (
github.com/commander-cli/cmd v1.5.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/stretchr/testify v1.8.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

20
others/script/go.sum Normal file
View File

@ -0,0 +1,20 @@
github.com/commander-cli/cmd v1.5.0 h1:zuMGIdRxQb63R+0Wa9G/g7xtF1fwEERdn+fIIKj5ujI=
github.com/commander-cli/cmd v1.5.0/go.mod h1:y9HfHjaDNGRjzpOcMbK43A791NmESwKBkvCSDBCxJ94=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI=
github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

55
others/script/main.go Normal file
View File

@ -0,0 +1,55 @@
package main
import (
"fmt"
"log"
"os"
"script/rime"
"strings"
)
func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
// Emoji 检查和更新
rime.CheckEmoji()
rime.UpdateEmojiTXT()
fmt.Println("--------------------------------------------------")
// 更新搜狗流行词
rime.UpdateSogou()
fmt.Println("--------------------------------------------------")
// 为 sogou、ext、tencent 没权重的词条加上权重,有权重的改为下面设置的权重
rime.AddWeight(rime.SogouPath, rime.DefaultWeight)
rime.AddWeight(rime.ExtPath, rime.DefaultWeight)
rime.AddWeight(rime.TencentPath, rime.DefaultWeight)
fmt.Println("--------------------------------------------------")
// 通用检查
// flag: 1 只有汉字2 汉字+注音3 汉字+注音+权重4 汉字+权重。
go rime.Check(rime.HanziPath, 3)
go rime.Check(rime.MainPath, 3)
go rime.Check(rime.SogouPath, 3)
go rime.Check(rime.ExtPath, 4)
go rime.Check(rime.TencentPath, 4)
wait()
// 排序
rime.Sort(rime.HanziPath, 3)
rime.Sort(rime.MainPath, 3)
rime.Sort(rime.SogouPath, 3) // 对 main 中已经有的,去重
rime.Sort(rime.ExtPath, 4) // 对 main、sogou 中已经有的,去重
rime.Sort(rime.TencentPath, 4) // 对 main、sogou、ext 中已经有的,去重
}
func wait() {
fmt.Println("检查完成后输入 OK 以继续。。。")
var isOK string
_, _ = fmt.Scanf("%s", &isOK)
if strings.ToLower(isOK) != "ok" {
os.Exit(123)
}
fmt.Println("--------------------------------------------------")
}

View File

@ -0,0 +1,52 @@
package rime
import (
"log"
"os"
"path"
"strconv"
"strings"
"time"
)
func AddWeight(dictPath string, weight int) {
// 控制台输出
printlnTimeCost("加权重\t"+path.Base(dictPath), time.Now())
// 读取文件到 lines 数组
file, err := os.ReadFile(dictPath)
if err != nil {
log.Fatal(err)
}
lines := strings.Split(string(file), "\n")
// 逐行遍历,加上 weight
isMark := false
for i, line := range lines {
if !isMark {
if strings.Contains(line, mark) {
isMark = true
}
continue
}
// 过滤空行
if line == "" {
continue
}
// 修改权重为传入的 weight没有就加上
parts := strings.Split(line, "\t")
_, err := strconv.Atoi(parts[len(parts)-1])
if err != nil {
lines[i] = line + "\t" + strconv.Itoa(weight)
} else {
lines[i] = strings.Join(parts[:len(parts)-1], "\t") + "\t" + strconv.Itoa(weight)
}
}
// 重新写入
resultString := strings.Join(lines, "\n")
err = os.WriteFile(dictPath, []byte(resultString), 0644)
if err != nil {
log.Fatal(err)
}
}

231
others/script/rime/check.go Normal file
View File

@ -0,0 +1,231 @@
package rime
import (
"bufio"
"fmt"
mapset "github.com/deckarep/golang-set/v2"
"log"
"os"
"path"
"strconv"
"strings"
"time"
"unicode"
"unicode/utf8"
)
var specialWords = mapset.NewSet[string]() // 特殊词汇列表,不进行任何检查
var polyphoneWords = mapset.NewSet[string]() // 需要注音的多音字列表
var wrongWords = mapset.NewSet[string]() // 异形词、错别字列表
var filterWords = mapset.NewSet[string]() // 与异形词列表同时使用,过滤掉,一般是包含异形词但不是异形词的,比如「作爱」是错的,但「叫作爱」是正确的。
// 初始化特殊词汇列表、多音字列表、异形词列表
func init() {
fmt.Println("check.go init...")
// 特殊词汇列表
specialWords.Add("狄尔斯–阿尔德反应")
specialWords.Add("特里斯坦–达库尼亚")
specialWords.Add("特里斯坦–达库尼亚群岛")
specialWords.Add("茱莉亚·路易斯-德瑞弗斯")
specialWords.Add("科科斯(基林)群岛")
specialWords.Add("刚果(金)")
specialWords.Add("刚果(布)")
specialWords.Add("赛博朋克:边缘行者")
specialWords.Add("赛博朋克:边缘跑手")
specialWords.Add("赛博朋克:命运之轮")
// 需要注音的多音字列表
polyphoneFile, err := os.Open("rime/多音字.txt")
if err != nil {
log.Fatal(err)
}
defer polyphoneFile.Close()
sc := bufio.NewScanner(polyphoneFile)
for sc.Scan() {
line := sc.Text()
if strings.HasPrefix(line, "#") {
continue
}
polyphoneWords.Add(line)
}
// 异形词的两个列表
file, err := os.Open("rime/异形词.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
sc = bufio.NewScanner(file)
isMark := false
for sc.Scan() {
line := sc.Text()
if strings.Contains(line, "# -_-") {
isMark = true
continue
}
if !isMark {
wrongWords.Add(line)
} else {
filterWords.Add(line)
}
}
}
// Check 对传入的词库文件进行检查
func Check(dictPath string, flag int) {
// 控制台输出
defer printlnTimeCost("检查 "+path.Base(dictPath), time.Now())
// 打开文件
file, err := os.Open(dictPath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 开始检查!
lineNumber := 0
isMark := false
sc := bufio.NewScanner(file)
for sc.Scan() {
lineNumber++
line := sc.Text()
if !isMark {
if line == mark {
isMark = true
}
continue
}
// 忽略注释main 里有很多被注释了的词汇,暂时没有删除
if strings.HasPrefix(line, "#") {
continue
}
// 注释以"#"开头,但不是以"# "开头(没有空格)(强迫症晚期)
if strings.HasPrefix(line, "#") && !strings.HasPrefix(line, "# ") {
fmt.Println("has # but not #␣", line)
}
// 是否有空行
if strings.TrimSpace(line) == "" {
fmt.Println("空行,行号:", lineNumber)
}
// 开头结尾是否有空字符
if line != strings.TrimSpace(line) {
fmt.Printf("开头或结尾有空格:%q\n", line)
}
// +---------------------------------------------------------------
// | 通用检查分割为词汇text, 编码code, 权重weight
// +---------------------------------------------------------------
parts := strings.Split(line, "\t")
var text, code, weight string
if flag == 1 && len(parts) == 1 { // 一列,【汉字】:外部词库
text = parts[0]
} else if flag == 2 && len(parts) == 2 { // 两列,【汉字+注音】:外部词库
text, code = parts[0], parts[1]
} else if flag == 3 && len(parts) == 3 { // 三列,【汉字+注音+权重】:字表 main av sogou
text, code, weight = parts[0], parts[1], parts[2]
} else if flag == 4 && len(parts) == 2 { // 两列,【汉字+权重】ext tencent
text, weight = parts[0], parts[1]
} else {
log.Fatal("分割错误:", line)
}
// 检查weight 应该是纯数字
if weight != "" {
_, err := strconv.Atoi(weight)
if err != nil {
fmt.Println("weight 非数字:", line)
}
}
// 过滤特殊词条
if specialWords.Contains(text) {
continue
}
// 检查text 和 weight 不应该含有空格
if strings.Contains(text, " ") || strings.Contains(weight, " ") {
fmt.Println("text 和 weight 不应该含有空格:", line)
}
// 检查code 前后不应该含有空格
if strings.HasPrefix(code, " ") || strings.HasSuffix(code, " ") {
fmt.Println("code 前后不应该含有空格:", line)
}
// 检查code 是否含有非字母,或没有小写
for _, r := range code {
if string(r) != " " && !unicode.IsLower(r) {
fmt.Println("编码含有非字母或大写字母:", line)
break
}
}
// 检查text 是否含有非汉字内容
for _, c := range text {
if strings.Contains(text, "·") {
break
}
if !unicode.Is(unicode.Han, c) {
fmt.Println("含有非汉字内容:", line, c)
break
}
}
// 除了字表,其他词库不应该含有单个的汉字
if dictPath != HanziPath && utf8.RuneCountInString(text) == 1 {
fmt.Println("意外的单个汉字:", line)
}
// 除了 main ,其他词库不应该含有两个字的词汇
if dictPath != MainPath && utf8.RuneCountInString(text) == 2 {
fmt.Println("意外的两字词:", line)
}
// 汉字个数应该与拼音个数相等
if code != "" {
codeCount := len(strings.Split(code, " "))
textCount := utf8.RuneCountInString(text)
if strings.Contains(text, "·") {
textCount -= strings.Count(text, "·")
}
if strings.HasPrefix(text, "# ") {
textCount -= 2
}
if textCount != codeCount {
fmt.Println("汉字个数和拼音个数不相等:", text, code)
}
}
// +---------------------------------------------------------------
// | 比较耗时的检查
// +---------------------------------------------------------------
// 多音字注音问题检查
go func() {
if dictPath == ExtPath || dictPath == TencentPath {
for _, word := range polyphoneWords.ToSlice() {
if strings.Contains(text, word) {
fmt.Printf("多音字注音问题:%q\n", line)
}
}
}
}()
// 异形词检查
go func() {
if dictPath != HanziPath && !filterWords.Contains(text) {
for _, wrongWord := range wrongWords.ToSlice() {
if strings.Contains(text, wrongWord) {
fmt.Printf("异形词汇: %s - %s\n", wrongWord, text)
}
}
}
}()
}
}

132
others/script/rime/emoji.go Normal file
View File

@ -0,0 +1,132 @@
package rime
import (
"bufio"
mapset "github.com/deckarep/golang-set/v2"
"log"
"os"
"regexp"
"strings"
"time"
"unicode/utf8"
)
var emojiTXT = "/Users/dvel/Library/Rime/opencc/emoji.txt"
var mappingTXT = "/Users/dvel/Library/Rime/opencc/emoji-map.txt"
type OrderedMap struct {
keys []string
m map[string][]string
}
// CheckEmoji 检查 Emoji
// 检查 emoji-map.txt 格式书写问题
// 检查所有词条是否与 main+sogou+ext 词库存在差集
func CheckEmoji() {
// 控制台输出
defer printlnTimeCost("检查 Emoji 差集", time.Now())
// 打开文件
file, err := os.Open(EmojiPath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 将 Emoji 加入 set为检测差集做准备
emojiSet := mapset.NewSet[string]()
sc := bufio.NewScanner(file)
for sc.Scan() {
line := sc.Text()
// 过滤注释
if strings.Contains(line, "#") {
continue
}
// 检查是否包含 Tab
if strings.Contains(line, "\t") {
log.Fatal("❌ 此行包含 Tab", line)
}
// 开头结尾无效的空格
if strings.HasPrefix(line, " ") || strings.HasSuffix(line, " ") {
log.Fatal("❌ unexpected space:", line)
}
parts := strings.Split(line, " ")
if len(parts) < 2 {
log.Fatal("❌ invalid line:", line)
}
// 加入 emojiSet顺便用一个 tempSet 查重
tempSet := mapset.NewSet[string]()
for _, word := range parts[1:] {
emojiSet.Add(word)
if tempSet.Contains(word) {
log.Fatal("❌ 此行有重复映射:", line)
} else {
tempSet.Add(word)
}
}
}
// 检查 emoji 中的词条是否与 main+sogou+ext 词库存在差集
for _, word := range emojiSet.Difference(MainSet.Union(SogouSet).Union(ExtSet)).ToSlice() {
// 去除英文字母
if match, _ := regexp.MatchString(`[A-Za-z]+`, word); match {
continue
}
// 去除一个字的
if utf8.RuneCountInString(word) == 1 {
continue
}
log.Fatal("❌ Emoji 差集:", word)
}
}
// UpdateEmojiTXT 从 emoji-map.txt 生成或更新 emoji.txt
func UpdateEmojiTXT() {
// 控制台输出
defer printlnTimeCost("更新 emoji.txt", time.Now())
// 读取 emoji-map.txt
mappingFile, err := os.Open(mappingTXT)
if err != nil {
log.Fatal(err)
}
defer mappingFile.Close()
om := new(OrderedMap)
om.keys = make([]string, 0)
om.m = make(map[string][]string)
sc := bufio.NewScanner(mappingFile)
for sc.Scan() {
line := sc.Text()
if strings.HasPrefix(line, "#") {
continue
}
arr := strings.Split(line, " ")
for _, word := range arr[1:] {
if !contains(om.keys, word) {
om.keys = append(om.keys, word)
}
om.m[word] = append(om.m[word], arr[0])
}
}
// 写入 emoji.txt
emojiFile, err := os.OpenFile(emojiTXT, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
log.Fatalln(err)
}
defer emojiFile.Close()
for _, key := range om.keys {
line := key + "\t" + key + " " + strings.Join(om.m[key], " ") + "\n"
_, err := emojiFile.WriteString(line)
if err != nil {
log.Fatal(err)
}
}
if err := emojiFile.Sync(); err != nil {
log.Fatal(err)
}
}

164
others/script/rime/rime.go Normal file
View File

@ -0,0 +1,164 @@
package rime
import (
"bufio"
"crypto/sha1"
"encoding/hex"
"fmt"
mapset "github.com/deckarep/golang-set/v2"
"io"
"log"
"os"
"strings"
"time"
)
// 一个词条的组成部分
type lemma struct {
text string // 汉字
code string // 编码
weight int // 权重
}
const (
mark = "# +_+" // 词库中的标记符号,表示从开始检查或排序
HanziPath = "/Users/dvel/Library/Rime/cn_dicts/8105.dict.yaml"
MainPath = "/Users/dvel/Library/Rime/cn_dicts/base.dict.yaml"
SogouPath = "/Users/dvel/Library/Rime/cn_dicts/sogou.dict.yaml"
ExtPath = "/Users/dvel/Library/Rime/cn_dicts/ext.dict.yaml"
TencentPath = "/Users/dvel/Library/Rime/cn_dicts/tencent.dict.yaml"
EmojiPath = "/Users/dvel/Library/Rime/opencc/emoji-map.txt"
DefaultWeight = 100 // sogou、ext、tencet 词库中默认的权重数值
)
var (
MainSet mapset.Set[string]
SogouSet mapset.Set[string]
ExtSet mapset.Set[string]
TencentSet mapset.Set[string]
SogouSetWithCode mapset.Set[string]
)
func init() {
fmt.Println("rime.go init...")
MainSet = readAndSet(MainPath)
SogouSet = readAndSet(SogouPath)
ExtSet = readAndSet(ExtPath)
TencentSet = readAndSet(TencentPath)
}
// readAndSet 读取词库文件为 set
func readAndSet(dictPath string) mapset.Set[string] {
set := mapset.NewSet[string]()
file, err := os.Open(dictPath)
if err != nil {
log.Fatal(set)
}
defer file.Close()
sc := bufio.NewScanner(file)
isMark := false
for sc.Scan() {
line := sc.Text()
if !isMark {
if strings.Contains(line, mark) {
isMark = true
}
continue
}
parts := strings.Split(line, "\t")
set.Add(parts[0])
}
return set
}
// printlnTimeCost 打印耗时时间
func printlnTimeCost(content string, start time.Time) {
fmt.Printf("%s\t%.2fs\n", content, time.Since(start).Seconds())
}
// printfTimeCost 打印耗时时间
func printfTimeCost(content string, start time.Time) {
fmt.Printf("%s\t%.2fs", content, time.Since(start).Seconds())
}
// contains slice 是否包含 item
func contains(arr []string, item string) bool {
for _, x := range arr {
if item == x {
return true
}
}
return false
}
// getSha1 获取文件 sha1
func getSha1(dictPath string) string {
f, err := os.Open(dictPath)
if err != nil {
log.Fatal(err)
}
defer f.Close()
sha1Handle := sha1.New()
if _, err := io.Copy(sha1Handle, f); err != nil {
log.Fatal(err)
}
return hex.EncodeToString(sha1Handle.Sum(nil))
}
// updateVersion 排序后,如果文件有改动,则修改 version 日期
func updateVersion(dictPath string, oldSha1 string) {
// 判断文件是否有改变
newSha1 := getSha1(dictPath)
if newSha1 == oldSha1 {
fmt.Println()
return
}
fmt.Println(" ...sorted")
// 打开文件
file, err := os.OpenFile(dictPath, os.O_RDWR, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 修改那一行
arr := make([]string, 0)
sc := bufio.NewScanner(file)
for sc.Scan() {
line := sc.Text()
if strings.HasPrefix(line, "version:") {
s := fmt.Sprintf("version: \"%s\"", time.Now().Format("2006-01-02"))
arr = append(arr, s)
} else {
arr = append(arr, line)
}
}
// 重新写入
err = file.Truncate(0)
if err != nil {
log.Fatal(err)
}
_, err = file.Seek(0, 0)
if err != nil {
log.Fatal(err)
}
for _, line := range arr {
_, err := file.WriteString(line + "\n")
if err != nil {
log.Fatal(err)
}
}
err = file.Sync()
if err != nil {
log.Fatal(err)
}
}

294
others/script/rime/sogou.go Normal file
View File

@ -0,0 +1,294 @@
package rime
import (
"bufio"
"fmt"
"github.com/commander-cli/cmd"
mapset "github.com/deckarep/golang-set/v2"
"io"
"log"
"net/http"
"os"
"sort"
"strconv"
"strings"
"time"
"unicode/utf8"
)
var fileterMark = "# *_*" // "# *_*" 和 mark 之间是过滤词列表
var filterList = mapset.NewSet[string]() // 过滤词列表,在这个列表里的词汇,不再写入
// UpdateSogou 更新搜狗流行词
func UpdateSogou() {
// 控制台输出
defer updateVersion(SogouPath, getSha1(SogouPath))
defer printfTimeCost("更新搜狗流行词", time.Now())
makeFilterList() // 0. 准备好过滤词列表
downloadSogou() // 1. 下载搜狗流行词加入到文件末尾
checkAndWrite() // 2. 过滤、去重、排序
PrintNewWords() // 3. 打印新增词汇
// 弄完了删除临时用的文件,否则 VSCode 全局搜索词汇时会搜索到,影响体验
err := os.Remove("./scel2txt/scel/sogou.scel")
if err != nil {
log.Fatal(err)
}
err = os.Remove("./scel2txt/out/luna_pinyin.sogou.dict.yaml")
if err != nil {
log.Fatal(err)
}
err = os.Remove("./scel2txt/out/sogou.txt")
if err != nil {
log.Fatal(err)
}
}
// makeFilterList 准备好过滤词列表 filterList
func makeFilterList() {
file, err := os.Open(SogouPath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
sc := bufio.NewScanner(file)
isFilterMark := false
for sc.Scan() {
line := sc.Text()
if line == mark {
break
}
if !isFilterMark {
if strings.Contains(line, fileterMark) {
isFilterMark = true
}
continue
}
// 判断一些可能出错的情况
if !strings.HasPrefix(line, "# ") {
log.Fatal("sogou 过滤列表 无效行:", line)
}
text := strings.TrimPrefix(line, "# ")
if strings.ContainsAny(text, " \t") {
log.Fatal("sogou 过滤列表 包含空字符:", line)
}
// 加入过滤词列表
filterList.Add(text)
}
}
// downloadSogou 下载搜狗流行词加入到文件末尾,如果是新词且不在过滤列表,打印出来
func downloadSogou() {
// 下载
url := "https://pinyin.sogou.com/d/dict/download_cell.php?id=4&name=%E7%BD%91%E7%BB%9C%E6%B5%81%E8%A1%8C%E6%96%B0%E8%AF%8D%E3%80%90%E5%AE%98%E6%96%B9%E6%8E%A8%E8%8D%90%E3%80%91&f=detail"
// Get the data
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 创建一个文件用于保存
out, err := os.Create("./scel2txt/scel/sogou.scel")
if err != nil {
panic(err)
}
defer out.Close()
// 然后将响应流和文件流对接起来
_, err = io.Copy(out, resp.Body)
if err != nil {
panic(err)
}
// 用 Python 进行转换
c := cmd.NewCommand("python3 scel2txt.py", cmd.WithWorkingDir("./scel2txt"))
err = c.Execute()
if err != nil {
fmt.Println(c.Stderr())
log.Fatal(err)
}
fmt.Printf(c.Stdout())
// 加入到现有词库的末尾
sogouFile, err := os.OpenFile(SogouPath, os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
panic(err)
}
defer sogouFile.Close()
download, err := os.ReadFile("./scel2txt/out/sogou.txt")
if err != nil {
panic(err)
}
_, err = sogouFile.Write(download)
if err != nil {
panic(err)
}
err = sogouFile.Sync()
if err != nil {
log.Fatal(err)
}
}
// checkAndWrite 过滤、去重、排序
func checkAndWrite() {
// 打开文件
file, err := os.OpenFile(SogouPath, os.O_RDWR, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 前缀内容和词库切片,以 mark 隔开
prefixContents := make([]string, 0) // 前置内容切片
contents := make([]lemma, 0) // 词库切片
isMark := false
set := mapset.NewSet[string]() // 去重用的 set
sc := bufio.NewScanner(file)
for sc.Scan() {
line := sc.Text()
if !isMark {
prefixContents = append(prefixContents, line)
if strings.Contains(line, mark) {
isMark = true
}
continue
}
// 分割
parts := strings.Split(line, "\t")
var text, code, weight string
switch len(parts) {
case 2:
text, code = parts[0], parts[1]
case 3:
text, code, weight = parts[0], parts[1], parts[2]
default:
log.Fatal("分割错误:", line)
}
// 过滤:两个字及以下的
if utf8.RuneCountInString(text) <= 2 {
continue
}
// 过滤:从过滤列表过滤掉
if filterList.Contains(text) {
continue
}
// 过滤:去重
if set.Contains(text) {
continue
}
set.Add(text)
// 过滤main 中已经有的就不要了
if MainSet.Contains(text) {
continue
}
// nue → nvelue → lve
if strings.Contains(code, "nue") {
code = strings.ReplaceAll(code, "nue", "nve")
}
if strings.Contains(code, "lue") {
code = strings.ReplaceAll(code, "lue", "lve")
}
// 加入数组,没权重的默认给 DefaultWeight
if weight == "" {
contents = append(contents, lemma{text, code, DefaultWeight})
} else {
weightInt, err := strconv.Atoi(weight)
if err != nil {
log.Fatal(err, line)
}
contents = append(contents, lemma{text, code, weightInt})
}
}
// 排序
sort.Slice(contents, func(i, j int) bool {
if contents[i].code != contents[j].code {
return contents[i].code < contents[j].code
}
if contents[i].text != contents[j].text {
return contents[i].text < contents[j].text
}
return false
})
// 准备写入
err = file.Truncate(0)
if err != nil {
log.Fatal(err)
}
_, err = file.Seek(0, 0)
if err != nil {
log.Fatal(err)
}
// 写入前缀
for _, content := range prefixContents {
_, err := file.WriteString(content + "\n")
if err != nil {
log.Fatal(err)
}
}
// 写入词库
for _, content := range contents {
_, err := file.WriteString(content.text + "\t" + content.code + "\t" + strconv.Itoa(content.weight) + "\n")
if err != nil {
log.Fatal(err)
}
}
err = file.Sync()
if err != nil {
log.Fatal(err)
}
}
// PrintNewWords 打印新增词汇
func PrintNewWords() {
// 对比 sogou 的新旧 set找出新词汇
newSet := readAndSet(SogouPath)
newWords := newSet.Difference(SogouSet)
if newWords.Cardinality() == 0 {
return
}
fmt.Println("新增词汇:")
// 打印无注音的
// for _, word := range newWords.ToSlice() {
// fmt.Println(word)
// }
// 把注音也打出来,方便直接校对
file, err := os.Open(SogouPath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
isMark := false
sc := bufio.NewScanner(file)
for sc.Scan() {
line := sc.Text()
if !isMark {
if strings.Contains(line, mark) {
isMark = true
}
continue
}
text := strings.Split(line, "\t")[0]
if newWords.Contains(text) {
fmt.Println(line)
}
}
fmt.Println("count: ", newWords.Cardinality())
// 更新全局的 set方便后续的检查
SogouSet = newSet
}

217
others/script/rime/sort.go Normal file
View File

@ -0,0 +1,217 @@
package rime
import (
"bufio"
"fmt"
mapset "github.com/deckarep/golang-set/v2"
"log"
"os"
"path"
"sort"
"strconv"
"strings"
"time"
)
// Sort 词库排序,顺便去重
// flag: 1 只有汉字2 汉字+注音3 汉字+注音+权重4 汉字+权重。
func Sort(dictPath string, flag int) {
// 控制台输出
defer updateVersion(dictPath, getSha1(dictPath))
defer printfTimeCost("排序 "+path.Base(dictPath), time.Now())
// 打开文件
file, err := os.OpenFile(dictPath, os.O_RDWR, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 前缀内容和词库切片,前者原封不动写入,后者排序后写入
prefixContents := make([]string, 0) // 前置内容切片
contents := make([]lemma, 0) // 词库切片
aSet := mapset.NewSet[string]() // 去重用的 set
isMark := false
sc := bufio.NewScanner(file)
for sc.Scan() {
line := sc.Text()
// mark 之前的写入 prefixContents
if !isMark {
prefixContents = append(prefixContents, line)
if line == mark {
isMark = true
}
continue
}
// 分割为 text、code、weight
parts := strings.Split(line, "\t")
text, code, weight := parts[0], "", ""
// 检查分割长度
if (flag == 1 || flag == 2 || flag == 3) && len(parts) != flag {
fmt.Println("分割错误123:", line)
}
if flag == 4 && len(parts) != 2 {
fmt.Println("分割错误4:", line)
}
// 将 main 中注释了但没删除的词汇权重调为 0
if dictPath == MainPath && strings.HasPrefix(line, "# ") {
parts[2] = "0"
}
// mark 之后的,写入到 contents
// 自身重复的直接排除,不重复的写入
switch flag {
case 1: // 一列 【汉字】
if aSet.Contains(text) {
fmt.Println("重复:", line)
continue
}
aSet.Add(text)
contents = append(contents, lemma{text: text})
case 2: // 两列 【汉字+注音】
text, code = parts[0], parts[1]
if aSet.Contains(text + code) {
fmt.Println("重复:", line)
continue
}
aSet.Add(text + code)
contents = append(contents, lemma{text: text, code: code})
case 3: // 三列 【汉字+注音+权重】
text, code, weight = parts[0], parts[1], parts[2]
if aSet.Contains(text + code) {
fmt.Println("重复:", line)
continue
}
aSet.Add(text + code)
weight, _ := strconv.Atoi(weight)
contents = append(contents, lemma{text: text, code: code, weight: weight})
case 4: // 两列 【汉字+权重】
text, weight = parts[0], parts[1]
if aSet.Contains(text) {
fmt.Println("重复:", line)
continue
}
aSet.Add(text)
weight, _ := strconv.Atoi(weight)
contents = append(contents, lemma{text: text, weight: weight})
default:
log.Fatal("分割错误:", line)
}
}
// 排序:拼音升序、权重降序、最后直接按 Unicode 编码排序
sort.Slice(contents, func(i, j int) bool {
if contents[i].code != contents[j].code {
return contents[i].code < contents[j].code
}
if contents[i].weight != contents[j].weight {
return contents[i].weight > contents[j].weight
}
if contents[i].text != contents[j].text {
return contents[i].text < contents[j].text
}
return false
})
// 准备写入
err = file.Truncate(0)
if err != nil {
log.Fatalln(err)
}
_, err = file.Seek(0, 0)
if err != nil {
log.Fatalln(err)
}
// 写入前缀
for _, line := range prefixContents {
_, err := file.WriteString(line + "\n")
if err != nil {
log.Fatal(err)
}
}
// 字表、main 直接写入,不需要从其他词库去重
if dictPath == HanziPath || dictPath == MainPath {
for _, line := range contents {
_, err := file.WriteString(line.text + "\t" + line.code + "\t" + strconv.Itoa(line.weight) + "\n")
if err != nil {
log.Fatal(err)
}
}
}
// 其他词库需要从一个或多个词库中去重后再写入
if dictPath == SogouPath || dictPath == ExtPath || dictPath == TencentPath {
var intersect mapset.Set[string] // 交集,有交集的就是重复的,去掉
switch dictPath {
case SogouPath: // sogou 有和 main 有重复
intersect = SogouSet.Intersect(MainSet)
case ExtPath: // ext 不和 main+sogou 有重复
intersect = ExtSet.Intersect(MainSet.Union(SogouSet))
case TencentPath:
intersect = TencentSet.Intersect(MainSet.Union(SogouSet).Union(ExtSet))
}
for _, line := range contents {
if intersect.Contains(line.text) {
fmt.Printf("%s 重复于其他词库:%s\n", strings.Split(path.Base(dictPath), ".")[0], line.text)
continue
}
str := ""
if flag == 3 { // sogou
str = line.text + "\t" + line.code + "\t" + strconv.Itoa(line.weight) + "\n"
} else if flag == 4 { // ext tencent
str = line.text + "\t" + strconv.Itoa(line.weight) + "\n"
}
_, err := file.WriteString(str)
if err != nil {
log.Fatal(err)
}
}
}
// 外部词库或临时文件,只排序,不去重
if !contains([]string{HanziPath, MainPath, SogouPath, ExtPath, TencentPath}, dictPath) {
switch flag {
case 1:
for _, line := range contents {
_, err := file.WriteString(line.text + "\n")
if err != nil {
log.Fatalln(err)
}
}
case 2:
for _, line := range contents {
_, err := file.WriteString(line.text + "\t" + line.code + "\n")
if err != nil {
log.Fatalln(err)
}
}
case 3:
for _, line := range contents {
_, err := file.WriteString(line.text + "\t" + line.code + "\t" + strconv.Itoa(line.weight) + "\n")
if err != nil {
log.Fatalln(err)
}
}
case 4:
for _, line := range contents {
_, err := file.WriteString(line.text + "\t" + strconv.Itoa(line.weight) + "\n")
if err != nil {
log.Fatalln(err)
}
}
}
}
err = file.Sync()
if err != nil {
log.Fatal(err)
}
}

View File

@ -0,0 +1,161 @@
# 含有需要注音的字的列表:
# 例如在 ext tencent 无注音的词库中,检测到词库中有含有「伎俩」的词汇,但是没有注音,
# 列出来,手动注音放到 main 中。
伎俩
万俟
会计
# 偻
龟兹
拱券
单于
单县
南无
参差
召陵
恐吓
恫吓
否极泰来
臧否
引吭
伸吭
伍员
呢子
呢料
呢喃
呢绒
呱呱坠地
尖沙咀
吟哦
哕哕
哪吒
啁哳
唼喋
嘁嘁喳喳
嘚儿
噌吰
尉犁
尉迟
工尺
崆峒
繁峙
巷道
弄堂
里弄
倔强
差忒
戆直
屈戌
扁舟
咋舌
咋呼
力能扛鼎
拾级
逼拶
提防
提溜
摩挲
南无
期年
期月
蚌山
白术
朴树
枞阳
枸橼
柜柳
柞水
栅极
栎阳
椑柿
殷红
沌阳
沌口
泌阳
泌城
洪洞
浚县
洴浰
溃脓
澹台
瀑河
# 炅
炮烙
犍为
番禺
碌碡
秘鲁
稽首
筠连
糜子
纶巾
自给
补给
给养
配给
家给人足
络子
绿林
鸭绿江
缉鞋口
缉边儿
缩砂密
纰缪
体胖
脉脉
腌臜
膀胱
膻中
无臭
乳臭
怨艾
自艾
艾安
荸荠
莎草
莘莘
落枕
蔚县
枕藉
慰藉
蕴藉
蚌埠
匕首见
匕见
解池
解数
卖解
解州
博闻强识
强识
游说
说客
句读
冠豸山
趑趄
迫击
铅山
饼铛
阿弥陀佛
阿房宫
不阿
阿胶
山阿
东阿
家雀
雀盲眼
脖颈
颉颃
驮子
龟兹
龟裂
般若

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,61 @@
# scel2txt
搜狗细胞词库转鼠须管Rime词库使用 Python3 实现
## 使用
将从[搜狗官方词库网站](https://pinyin.sogou.com/dict/)下载的 `*.scel` 文件放入 `scel` 文件夹,然后运行
```shell
python3 scel2txt.py
```
## 生成的文件
* 后缀为 .txt 的同名词库文件
* 自动合并所有 *.txt 文件到 `luna_pinyin.sogou.dict.yaml`
## 搜狗细胞词库scel格式文件 格式说明
按照一定格式保存的 Unicode 编码文件,其中每两个字节表示一个字符(中文汉字或者英文字母)。
主要包括两部分:
1. 全局拼音表,在文件中的偏移值是 0x1540+4, 格式为 (py_idx, py_len, py_str)
- py_idx: 两个字节的整数,代表这个拼音的索引
- py_len: 两个字节的整数,拼音的字节长度
- py_str: 当前的拼音,每个字符两个字节,总长 py_len
2. 汉语词组表,在文件中的偏移值是 0x2628 或 0x26c4, 格式为 (word_count, py_idx_count, py_idx_data, (word_len, word_str, ext_len, ext){word_count}),其中 (word_len, word, ext_len, ext){word_count} 一共重复 word_count 次, 表示拼音的相同的词一共有 word_count 个
- word_count: 两个字节的整数,同音词数量
- py_idx_count: 两个字节的整数,拼音的索引个数
- py_idx_data: 两个字节表示一个整数,每个整数代表一个拼音的索引,拼音索引数
- word_len:两个字节的整数,代表中文词组字节数长度
- word_str: 汉语词组,每个中文汉字两个字节,总长度 word_len
- ext_len: 两个字节的整数,可能代表扩展信息的长度,好像都是 10
- ext: 扩展信息,一共 10 个字节,前两个字节是一个整数(不知道是不是词频),后八个字节全是 0ext_len 和 ext 一共 12 个字节
## 目前已测试的词库
* [网络流行新词【官方推荐】](https://pinyin.sogou.com/dict/detail/index/4), 24923 个词
* [最详细的全国地名大全](https://pinyin.sogou.com/dict/detail/index/1316), 114572 个词
* [开发大神专用词库【官方推荐】](https://pinyin.sogou.com/dict/detail/index/75228), 430 个词
* [中国高等院校(大学)大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/20647), 7192 个词
* [宋词精选【官方推荐】](https://pinyin.sogou.com/dict/detail/index/3), 7297 个词
* [成语俗语【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15097), 46785 个词
* [计算机词汇大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15117), 10300 个词
* [论语大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/22406), 2907 个词
* [歇后语集锦【官方推荐】](https://pinyin.sogou.com/dict/detail/index/22418), 1926 个词
* [数学词汇大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15202), 15992 个词
* [物理词汇大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15203), 13107 个词
* [中国历史词汇大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15130), 20526 个词
* [饮食大全【官方推荐】](https://pinyin.sogou.com/dict/detail/index/15201), 6918 个词
* [上海市城市信息精选](https://pinyin.sogou.com/dict/detail/index/19430), 37757 个词
* [linux少量术语](https://pinyin.sogou.com/dict/detail/index/225), 136 个词
## 参考资料
1. [scel2mmseg](https://raw.githubusercontent.com/archerhu/scel2mmseg/master/scel2mmseg.py)
2. [scel-to-txt](https://raw.githubusercontent.com/xwzhong/small-program/master/scel-to-txt/scel2txt.py)

View File

@ -0,0 +1,168 @@
"""
搜狗细胞词库转鼠须管Rime词库
搜狗的 scel 词库是按照一定格式保存的 Unicode 编码文件其中每两个字节表示一个字符中文汉字或者英文字母主要两部分:
1. 全局拼音表在文件中的偏移值是 0x1540+4, 格式为 (py_idx, py_len, py_str)
- py_idx: 两个字节的整数代表这个拼音的索引
- py_len: 两个字节的整数拼音的字节长度
- py_str: 当前的拼音每个字符两个字节总长 py_len
2. 汉语词组表在文件中的偏移值是 0x2628 0x26c4, 格式为 (word_count, py_idx_count, py_idx_data, (word_len, word_str, ext_len, ext){word_count})其中 (word_len, word, ext_len, ext){word_count} 一共重复 word_count , 表示拼音的相同的词一共有 word_count
- word_count: 两个字节的整数同音词数量
- py_idx_count: 两个字节的整数拼音的索引个数
- py_idx_data: 两个字节表示一个整数每个整数代表一个拼音的索引拼音索引数
- word_len:两个字节的整数代表中文词组字节数长度
- word_str: 汉语词组每个中文汉字两个字节总长度 word_len
- ext_len: 两个字节的整数可能代表扩展信息的长度好像都是 10
- ext: 扩展信息一共 10 个字节前两个字节是一个整数(不知道是不是词频)后八个字节全是 0ext_len ext 一共 12 个字节
参考资料
1. https://raw.githubusercontent.com/archerhu/scel2mmseg/master/scel2mmseg.py
2. https://raw.githubusercontent.com/xwzhong/small-program/master/scel-to-txt/scel2txt.py
"""
import struct
import os
import sys
def read_utf16_str(f, offset=-1, len=2):
if offset >= 0:
f.seek(offset)
string = f.read(len)
return string.decode('UTF-16LE')
def read_uint16(f):
return struct.unpack('<H', f.read(2))[0]
def get_hz_offset(f):
mask = f.read(128)[4]
if mask == 0x44:
return 0x2628
elif mask == 0x45:
return 0x26c4
else:
print("不支持的文件类型(无法获取汉语词组的偏移量)")
sys.exit(1)
def get_dict_meta(f):
title = read_utf16_str(f, 0x130, 0x338 - 0x130)
category = read_utf16_str(f, 0x338, 0x540 - 0x338)
desc = read_utf16_str(f, 0x540, 0xd40 - 0x540)
samples = read_utf16_str(f, 0xd40, 0x1540 - 0xd40)
return title, category, desc, samples
def get_py_map(f):
py_map = {}
f.seek(0x1540+4)
while True:
py_idx = read_uint16(f)
py_len = read_uint16(f)
py_str = read_utf16_str(f, -1, py_len)
if py_idx not in py_map:
py_map[py_idx] = py_str
# 如果拼音为 zuo说明是最后一个了
if py_str == 'zuo':
break
return py_map
def get_records(f, file_size, hz_offset, py_map):
f.seek(hz_offset)
records = []
while f.tell() != file_size:
word_count = read_uint16(f)
py_idx_count = int(read_uint16(f) / 2)
py_set = []
for i in range(py_idx_count):
py_idx = read_uint16(f)
if (py_map.get(py_idx, None) == None):
return records
py_set.append(py_map[py_idx])
py_str = " ".join(py_set)
for i in range(word_count):
word_len = read_uint16(f)
word_str = read_utf16_str(f, -1, word_len)
# 跳过 ext_len 和 ext 共 12 个字节
f.read(12)
records.append((py_str, word_str))
return records
def get_words_from_sogou_cell_dict(fname):
with open(fname, 'rb') as f:
hz_offset = get_hz_offset(f)
(title, category, desc, samples) = get_dict_meta(f)
#print("title: %s\ncategory: %s\ndesc: %s\nsamples: %s" %
# (title, category, desc, samples))
py_map = get_py_map(f)
file_size = os.path.getsize(fname)
words = get_records(f, file_size, hz_offset, py_map)
return words
def save(records, f):
records_translated = list(map(lambda x: "%s\t%s" % (
x[1], x[0]), records))
f.write("\n".join(records_translated))
return records_translated
def main():
# 将要转换的词库添加在 scel 目录下
scel_files = list(filter(lambda x: x.endswith('.scel'), [
i for i in os.listdir("./scel")]))
dict_file = "luna_pinyin.sogou.dict.yaml"
dict_file_content = []
dict_file_header = """# Rime dictionary
# encoding: utf-8
#
# Sogou Pinyin Dict - 搜狗细胞词库
#
# https://pinyin.sogou.com/dict/
#
# 包括:
#
%s
#
---
name: luna_pinyin.sogou
version: "1.0"
sort: by_weight
use_preset_vocabulary: true
...
"""
sougo_dict_name_list = list(
map(lambda x: "# * %s" % x.replace(".scel", ""), scel_files))
dict_file_content.append(dict_file_header % "\n".join(sougo_dict_name_list))
for scel_file in scel_files:
records = get_words_from_sogou_cell_dict(
os.path.join("./scel", scel_file))
print("下载搜狗流行词 %s: %s 个词" % (scel_file, len(records)))
with open(os.path.join("./out", scel_file.replace(".scel", ".txt")), "w") as fout:
dict_file_content.extend(save(records, fout))
# print("-"*80)
# print("合并后 %s: %s 个词" % (dict_file, len(dict_file_content) - 1))
with open(os.path.join("./out", dict_file), "w") as dictfout:
dictfout.write("\n".join(dict_file_content))
if __name__ == "__main__":
main()

238
rime.lua Executable file
View File

@ -0,0 +1,238 @@
-- Rime lua 扩展https://github.com/hchunhui/librime-lua
-------------------------------------------------------------
-- 日期时间
-- 提高权重的原因:因为在方案中设置了大于 1 的 initial_quality导致 rq sj xq dt ts 产出的候选项在所有词语的最后。
function date_translator(input, seg)
-- 日期
if (input == "rq") then
local cand = Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), "")
cand.quality = 100
yield(cand)
local cand = Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d"), "")
cand.quality = 100
yield(cand)
local cand = Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d"), "")
cand.quality = 100
yield(cand)
local cand = Candidate("date", seg.start, seg._end, os.date("%Y 年 %m 月 %d 日"), "")
cand.quality = 100
yield(cand)
end
-- 时间
if (input == "sj") then
local cand = Candidate("time", seg.start, seg._end, os.date("%H:%M"), "")
cand.quality = 100
yield(cand)
local cand = Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), "")
cand.quality = 100
yield(cand)
end
-- 星期
if (input == "xq") then
local weakTab = {'', '', '', '', '', '', ''}
local cand = Candidate("week", seg.start, seg._end, "" .. weakTab[tonumber(os.date("%w") + 1)], "")
cand.quality = 100
yield(cand)
local cand = Candidate("week", seg.start, seg._end, "星期" .. weakTab[tonumber(os.date("%w") + 1)], "")
cand.quality = 100
yield(cand)
end
-- ISO 8601/RFC 3339 的时间格式 (固定东八区)(示例 2022-01-07T20:42:51+08:00
if (input == "dt") then
local cand = Candidate("datetime", seg.start, seg._end, os.date("%Y-%m-%dT%H:%M:%S+08:00"), "")
cand.quality = 100
yield(cand)
local cand = Candidate("time", seg.start, seg._end, os.date("%Y%m%d%H%M%S"), "")
cand.quality = 100
yield(cand)
end
-- 时间戳(十位数,到秒,示例 1650861664
if (input == "ts") then
local cand = Candidate("datetime", seg.start, seg._end, os.time(), "")
cand.quality = 100
yield(cand)
end
end
-------------------------------------------------------------
-- 以词定字
-- https://github.com/BlindingDark/rime-lua-select-character
-- 删除了默认按键,需要在 key_binderdefault.custom.yaml下设置
local function utf8_sub(s, i, j)
i = i or 1
j = j or -1
if i < 1 or j < 1 then
local n = utf8.len(s)
if not n then
return nil
end
if i < 0 then
i = n + 1 + i
end
if j < 0 then
j = n + 1 + j
end
if i < 0 then
i = 1
elseif i > n then
i = n
end
if j < 0 then
j = 1
elseif j > n then
j = n
end
end
if j < i then
return ""
end
i = utf8.offset(s, i)
j = utf8.offset(s, j + 1)
if i and j then
return s:sub(i, j - 1)
elseif i then
return s:sub(i)
else
return ""
end
end
local function first_character(s)
return utf8_sub(s, 1, 1)
end
local function last_character(s)
return utf8_sub(s, -1, -1)
end
function select_character(key, env)
local engine = env.engine
local context = engine.context
local commit_text = context:get_commit_text()
local config = engine.schema.config
-- local first_key = config:get_string('key_binder/select_first_character') or 'bracketleft'
-- local last_key = config:get_string('key_binder/select_last_character') or 'bracketright'
local first_key = config:get_string('key_binder/select_first_character')
local last_key = config:get_string('key_binder/select_last_character')
if (key:repr() == first_key and commit_text ~= "") then
engine:commit_text(first_character(commit_text))
context:clear()
return 1 -- kAccepted
end
if (key:repr() == last_key and commit_text ~= "") then
engine:commit_text(last_character(commit_text))
context:clear()
return 1 -- kAccepted
end
return 2 -- kNoop
end
-------------------------------------------------------------
-- 长词优先(提升「西安」「提案」「图案」「饥饿」等词汇的优先级)
-- 感谢&参考于: https://github.com/tumuyan/rime-melt
-- 修改:不提升英文和中英混输的
function long_word_filter(input)
-- 目前的效果:将 2 个词插入到第 4、5 个候选项
local count = 2 -- 提升 count 个词语
local idx = 4 -- 插入到第 idx 位
local l = {}
local firstWordLength = 0 -- 记录第一个候选词的长度,提前的候选词至少要比第一个候选词长
-- local s1 = 0 -- 记录筛选了多少个英语词条(只提升 count 个词的权重并且对comment长度过长的候选进行过滤)
local s2 = 0 -- 记录筛选了多少个汉语词条(只提升 count 个词的权重)
local i = 1
for cand in input:iter() do
leng = utf8.len(cand.text)
if (firstWordLength < 1 or i < idx) then
i = i + 1
firstWordLength = leng
yield(cand)
-- 不知道这两行是干嘛用的,似乎注释掉也没有影响。
-- elseif #table > 30 then
-- table.insert(l, cand)
-- 注释掉了英文的
-- elseif ((leng > firstWordLength) and (s1 < 2)) and (string.find(cand.text, "^[%w%p%s]+$")) then
-- s1 = s1 + 1
-- if (string.len(cand.text) / string.len(cand.comment) > 1.5) then
-- yield(cand)
-- end
-- 换了个正则,否则中英混输的也会被提升
-- elseif ((leng > firstWordLength) and (s2 < count)) and (string.find(cand.text, "^[%w%p%s]+$")==nil) then
elseif ((leng > firstWordLength) and (s2 < count)) and (string.find(cand.text, "[%w%p%s]+") == nil) then
yield(cand)
s2 = s2 + 1
else
table.insert(l, cand)
end
end
for i, cand in ipairs(l) do
yield(cand)
end
end
-------------------------------------------------------------
-- 因为英文方案的 initial_quality 大于 1导致输入「va」时候选项是「van vain。。。」
-- 单字优先,候选项应改为「ā á ǎ à」
--
-- 不知道这个方法为什么不行啊???
-- function v_single_char_first_filter(input)
-- if (string.find(input, "v") == 1 and string.len(input) == 2) then
-- local l = {}
-- for cand in input:iter() do
-- if (utf8.len(cand.text) == 1) then
-- yield(cand)
-- else
-- table.insert(l, cand)
-- end
-- end
-- for cand in ipairs(l) do
-- yield(cand)
-- end
-- end
-- end
--
-- 反正是解决了,不知道怎么就解决了,就是最后多一个候选项,没多大影响。
function v_single_char_first_filter(input, seg)
if (string.find(input, "v") == 1 and string.len(input) == 2) then
yield(Candidate("", seg.start, seg._end, "", ""))
end
end
-------------------------------------------------------------
-- iRime 九宫格专用,将输入框的数字转为对应的拼音或英文
function irime_t9_preedit(input, env)
for cand in input:iter() do
if (string.find(cand.text, "%w+") ~= nil) then
cand:get_genuine().preedit = cand.text
else
cand:get_genuine().preedit = cand.comment
end
yield(cand)
end
end
-------------------------------------------------------------
-- 限制码长(最多能输入 length_limit 个字符,超过后不再上屏,不设置时默认 100
-- 参考于https://github.com/rime/weasel/issues/733
function code_length_limit_processor(key, env)
local ctx = env.engine.context
local config = env.engine.schema.config
-- 限制
local length_limit = config:get_string(env.name_space) or 100
if (length_limit ~= nil) then
if (string.len(ctx.input) > tonumber(length_limit)) then
-- ctx:clear()
ctx:pop_input(1) -- 删除输入框中最后个编码字符
return 1
end
end
-- 放行
return 2
end
-------------------------------------------------------------

15
rime_ice.dict.yaml Executable file
View File

@ -0,0 +1,15 @@
# Rime dictionary
# encoding: utf-8
---
name: rime_ice
version: "1"
import_tables:
- cn_dicts/8105 # 字表
- cn_dicts/base # 基础词库
- cn_dicts/sogou # 搜狗流行词,与 main 没有重复
- cn_dicts/ext # 扩展词库,与 main sogou 没有重复
- cn_dicts/tencent # 腾讯词向量,与 main sogou ext 没有重复,大词库,部署时间较长。
- cn_dicts/others # 一些杂项
- cn_dicts/private # *******私人词库(联系人之类的),请删除此行再部署,否则鼠须管会报错,小狼毫会只能输入英文******* #
...

304
rime_ice.schema.yaml Executable file
View File

@ -0,0 +1,304 @@
# Rime schema
# encoding: utf-8
# 方案说明
schema:
schema_id: rime_ice
name: 雾凇拼音
version: "1.0.0"
author:
- Dvel
description: |
https://github.com/iDvel/rime-ice
dependencies:
- melt_eng
- liangfen
# 功能开关
switches:
- name: ascii_mode
states: [ 中文, 英文 ]
reset: 0
- name: full_shape
states: [ 半角, 全角 ]
reset: 0
- name: ascii_punct
states: [ 中文标点, 英文标点 ]
reset: 0
- name: traditionalization
states: [ 简体, 繁體 ]
reset: 0
- name: emoji
states: [ 💀, 😄 ]
reset: 1
# 输入引擎
engine:
processors:
- lua_processor@select_character # 以词定字
- lua_processor@code_length_limit_processor@code_length_limit # 限制码长
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
segmentors:
- ascii_segmentor
- matcher
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- punct_translator
- script_translator
- lua_translator@v_single_char_first_filter # v 模式 symbols 优先(否则是英文优先)
- lua_translator@date_translator # 时间、日期、星期
- table_translator@custom_phrase # 自定义短语(固顶字) custom_phrase.txt
- table_translator@melt_eng # 英文输入
- reverse_lookup_translator@liangfen # 反查,两分拼字
filters:
- lua_filter@long_word_filter # 长词优先
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- uniquifier # 去重
# 限制码长,默认 100。最多能输入 code_length_limit 个字符)
# code_length_limit: 100
# 从 default 继承快捷键
key_binder:
import_preset: default
# bindings: # 也可以增加方案专属的快捷键
# Emoji
emoji:
opencc_config: emoji.json
option_name: emoji
# 简繁切换
traditionalize:
opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json 参考 https://github.com/BYVoid/OpenCC
option_name: traditionalization
tips: all # 转换提示(即是否显示繁体对应的简体): all 都显示 | char 仅单字显示 | none 不显示。
# 自定义短语固顶字custom_phrase.txt
custom_phrase:
dictionary: ""
user_dict: custom_phrase
db_class: stabledb
enable_completion: false # 补全提示
enable_sentence: false # 禁止造句
initial_quality: 99 # custom_phrase 的权重应该比 pinyin 和 melt_eng 大。
# 挂载拼音主词库
translator:
dictionary: rime_ice
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/([jqxy])v/$1u/ # 显示为 ju qu xu yu
# - xform/([nl])v/$1ü/ # 显示为 nü lü
# - xform/([nl])ue/$1üe/ # 显示为 nüe lüe
- xform/([nl])v/$1v/ # 显示为 nv lv
- xform/([nl])ue/$1ve/ # 显示为 nve lve
initial_quality: 1.2 # 拼音的权重应该比英文大
# 英文输入方案
melt_eng:
dictionary: melt_eng
spelling_hints: 9
enable_completion: true # 补全提示
enable_sentence: false # 禁止造句
enable_user_dict: false # 禁用用户词典
initial_quality: 1.1
# 八股文
grammar:
language: zh-hans-t-essay-bgw
translator/contextual_suggestions: true
translator/max_homophones: 7
translator/max_homographs: 7
# 引入自己的修改过的 symbols
punctuator:
# import_preset: symbols
import_preset: symbols_custom # 标点符号和 v 模式在里面
# 处理符合特定规则的输入码,如网址、反查
recognizer:
patterns:
email: "^[A-Za-z][-_.0-9A-Za-z]*@.*$"
uppercase: "[A-Z][-_+.'0-9A-Za-z]*$"
url: "^(www[.]|https?:|ftp[.:]|mailto:|file:).*$|^[a-z]+[.].+$"
url_2: "^[a-z]+[.].*" # 支持 google.com不以 www 开头)的网址,会导致句号不会让句子上屏,或使用句号翻页时需要注释掉
win_path: "^[A-Za-z]:.*" # 支持 c:\file\path 之类的路径输入
colon: "^[A-Za-z]+:.*" # 上面的超集,冒号在句子中不直接上屏
# punct: "^/([0-9]+[a-z]*|[a-z]+)$"
punct: "^v([0-9]|10|[A-Za-z]+)$" # 用「v」替换「/」并支持大写
reverse_lookup: "^u[A-Za-z]+$" # 响应两分的反查
# 反查:两分(拼字)
liangfen:
dictionary: liangfen
prefix: "u" # 以 u 开头来反查
spelling_hints: 9
enable_completion: true # 补全提示
# tips: 〔两分〕
# 拼写设定
speller:
# 如果不想让什么标点直接上屏,可以加在 alphabet或者编辑标点符号为两个及以上的映射
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA
delimiter: " '"
algebra:
### 模糊音
# 声母
# - derive/^([zcs])h/$1/ # z c s → zh ch sh
# - derive/^([zcs])([^h])/$1h$2/ # zh ch sh → z c s
# - derive/^l/n/ # n → l
# - derive/^n/l/ # l → n
# - derive/^f/h/ # …………
# - derive/^h/f/ # …………
# - derive/^l/r/
# - derive/^r/l/
# - derive/^g/k/
# - derive/^k/g/
# 韵母
# - derive/ang/an/
# - derive/an/ang/
# - derive/eng/en/
# - derive/en/eng/
# - derive/in/ing/
# - derive/ing/in/
# - derive/ian/iang/
# - derive/iang/ian/
# - derive/uan/uang/
# - derive/uang/uan/
# - derive/ai/an/
# - derive/an/ai/
# - derive/ong/un/
# - derive/un/ong/
# - derive/ong/on/
# - derive/iong/un/
# - derive/un/iong/
# - derive/ong/eng/
# - derive/eng/ong/
# 拼音音节
# - derive/^fei$/hui/
# - derive/^hui$/fei/
# - derive/^hu$/fu/
# - derive/^fu$/hu/
# - derive/^wang$/huang/
# - derive/^huang$/wang/
### 旧时的拼写规则
# - derive/un$/uen/
# - derive/ui$/uei/
# - derive/iu$/iou/
### 超级简拼
- erase/^hm$/ # 响应超级简拼,取消「噷 hm」的独占
- erase/^m$/ # 响应超级简拼,取消「呣 m」的独占
- erase/^n$/ # 响应超级简拼,取消「嗯 n」的独占
- erase/^ng$/ # 响应超级简拼,取消「嗯 ng」的独占
- abbrev/^([a-z]).+$/$1/ # 超级简拼
- abbrev/^([zcs]h).+$/$1/ # 超级简拼中zh ch sh 视为整体ch'sh → 城市而不是像这样分开c'h's'h → 吃好睡好)。
### v u 转换增加对词库中「nue/nve」「qu/qv」等不同注音的支持
- derive/^([nl])ue$/$1ve/
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/^([jqxy])v/$1u/
### 自动纠错
# 有些规则对全拼简拼混输有副作用如「x'ai 喜爱」被纠错为「xia 下」
# zh、ch、sh
- derive/([zcs])h(a|e|i|u|ai|ei|an|en|ou|uo|ua|un|ui|uan|uai|uang|ang|eng|ong)$/h$1$2/ # hzi → zhi
- derive/([zcs])h([aeiu])$/$1$2h/ # zih → zhi
# ai
- derive/^([wghkzc])ai$/$1ia/ # wia → wai
# ia
- derive/([qjx])ia$/$1ai/ # qai → qia
# ei
- derive/([wtfghkz])ei$/$1ie/
# ie
- derive/([jqx])ie$/$1ei/
# ao
- derive/([rtypsdghklzcbnm])ao$/$1oa/
# ou
- derive/([ypfm])ou$/$1uo/
# uo
# an
- derive/([wrtypsfghklzcbnm])an$/$1na/ # 去掉了 n不转换常用单词 DNA
# en
- derive/([wrpsdfghklzcbnm])en$/$1ne/
# ang
- derive/([wrtypsdfghklzcbnm])ang$/$1nag/
- derive/([wrtypsdfghklzcbnm])ang$/$1agn/
# eng
- derive/([wrtpsdfghklzcbnm])eng$/$1neg/
- derive/([wrtpsdfghklzcbnm])eng$/$1egn/
# ing
- derive/([qtypdjlxbnm])ing$/$1nig/
- derive/([qtypdjlxbnm])ing$/$1ign/
# ong
- derive/([rtysdghklzcn])ong$/$1nog/
- derive/([rtysdghklzcn])ong$/$1ogn/
# iao
- derive/([qtpdjlxbnm])iao$/$1ioa/
- derive/([qtpdjlxbnm])iao$/$1oia/
# ui
- derive/([rtsghkzc])ui$/$1iu/
# iu
- derive/([qjlxnm])iu$/$1ui/
# ian
- derive/([qtpdjlxbnm])ian$/$1ain/
# - derive/([qtpdjlxbnm])ian$/$1ina/ # 和「李娜、蒂娜、缉拿」等常用词有冲突
# in
- derive/([qypjlxbnm])in$/$1ni/
# iang
- derive/([qjlxn])iang$/$1aing/
- derive/([qjlxn])iang$/$1inag/
# ua
- derive/([g|k|h|zh|sh])ua$/$1au/
# uai
- derive/([g|h|k|zh|ch|sh])uai$/$1aui/
- derive/([g|h|k|zh|ch|sh])uai$/$1uia/
# uan
- derive/([qrtysdghjklzxcn])uan$/$1aun/
# - derive/([qrtysdghjklzxcn])uan$/$1una/ # 和「去哪、露娜」等常用词有冲突
# un
- derive/([qrtysdghjklzxc])un$/$1nu/
# ue
- derive/([nlyjqx])ue$/$1eu/
# uang
- derive/([g|h|k|zh|ch|sh])uang$/$1aung/
- derive/([g|h|k|zh|ch|sh])uang$/$1uagn/
- derive/([g|h|k|zh|ch|sh])uang$/$1unag/
- derive/([g|h|k|zh|ch|sh])uang$/$1augn/
# iong
- derive/([jqx])iong$/$1inog/
- derive/([jqx])iong$/$1oing/
- derive/([jqx])iong$/$1iogn/
- derive/([jqx])iong$/$1oign/
# 其他
- derive/([rtsdghkzc])o(u|ng)$/$1o/ # do → dou|dong
- derive/ong$/on/ # lon → long
- derive/([tl])eng$/$1en/ # ten → teng
- derive/([qwrtypsdfghjklzxcbnm])([aeio])ng$/$1ng/ # lng → lang、leng、ling、long

318
squirrel.custom.yaml Executable file
View File

@ -0,0 +1,318 @@
patch:
# 内置皮肤展示: https://github.com/NavisLab/rime-pifu
# 鼠须管作者写的图形化的皮肤设计器: https://github.com/LEOYoon-Tsaw/Squirrel-Designer
# 默认中、英、inline、no_inline 等等设定,参考 https://github.com/rime/squirrel/blob/master/data/squirrel.yaml
app_options:
# com.apple.Spotlight:
# ascii_mode: true # 开启默认英文
# com.microsoft.VSCode:
# ascii_mode: false # 关闭默认英文
# 选择皮肤,亮色与暗色主题
style/color_scheme: purity_of_form_custom
style/color_scheme_dark: purity_of_form_custom
# 皮肤列表
preset_color_schemes:
# 自定义的
purity_of_form_custom: # 对 purity_of_form 略微调整,让色彩更柔和点
name: 純粹的形式Purity of Form
author: 雨過之後、佛振
text_color: 0x333333 #0xc2c2c2
back_color: 0x545554 #0x444444
candidate_text_color: 0xeeeeee
hilited_text_color: 0xeeeeee
hilited_back_color: 0x444444
hilited_candidate_text_color: 0x000000
hilited_candidate_back_color: 0xe3e3e3 #0xfafafa
comment_text_color: 0x808080
font_face: "PingFangSC"
font_point: 18
label_font_point: 12
# 下面是内置的皮肤 /Library/Input Methods/Squirrel.app/Contents/SharedSupport/squirrel.yaml
native:
name: 系統配色
aqua:
name: 碧水Aqua
author: 佛振 <chen.sst@gmail.com>
text_color: 0x606060
back_color: 0xeeeceeee
candidate_text_color: 0x000000
hilited_text_color: 0x000000
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0xeefa3a0a
comment_text_color: 0x5a5a5a
hilited_comment_text_color: 0xfcac9d
azure:
name: 青天Azure
author: 佛振 <chen.sst@gmail.com>
text_color: 0xcfa677
candidate_text_color: 0xffeacc
back_color: 0xee8b4e01
hilited_text_color: 0xffeacc
hilited_candidate_text_color: 0x7ffeff
hilited_candidate_back_color: 0x00000000
comment_text_color: 0xc69664
luna:
name: 明月Luna
author: 佛振 <chen.sst@gmail.com>
text_color: 0xa5a5a5
back_color: 0xdd000000
candidate_text_color: 0xeceeee
hilited_text_color: 0x7fffff
hilited_candidate_text_color: 0x7fffff
hilited_candidate_back_color: 0x40000000
comment_text_color: 0xa5a5a5
hilited_comment_text_color: 0x449c9d
ink:
name: 墨池Ink
author: 佛振 <chen.sst@gmail.com>
text_color: 0x5a5a5a
back_color: 0xeeffffff
candidate_text_color: 0x000000
hilited_text_color: 0x000000
#hilited_back_color: 0xdddddd
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0xcc000000
comment_text_color: 0x5a5a5a
hilited_comment_text_color: 0x808080
lost_temple:
name: 孤寺Lost Temple
author: 佛振 <chen.sst@gmail.com>, based on ir_black
text_color: 0xe8f3f6
back_color: 0xee303030
hilited_text_color: 0x82e6ca
hilited_candidate_text_color: 0x000000
hilited_candidate_back_color: 0x82e6ca
comment_text_color: 0xbb82e6ca
hilited_comment_text_color: 0xbb203d34
dark_temple:
name: 暗堂Dark Temple
author: 佛振 <chen.sst@gmail.com>, based on ir_black
text_color: 0x92f6da
back_color: 0x222222
candidate_text_color: 0xd8e3e6
hilited_text_color: 0xffcf9a
hilited_back_color: 0x222222
hilited_candidate_text_color: 0x92f6da
hilited_candidate_back_color: 0x10000000 # 0x333333
comment_text_color: 0x606cff
psionics:
name: 幽能Psionics
author: 雨過之後、佛振
text_color: 0xc2c2c2
back_color: 0x444444
candidate_text_color: 0xeeeeee
hilited_text_color: 0xeeeeee
hilited_back_color: 0x444444
hilited_candidate_label_color: 0xfafafa
hilited_candidate_text_color: 0xfafafa
hilited_candidate_back_color: 0xd4bc00
comment_text_color: 0x808080
hilited_comment_text_color: 0x444444
purity_of_form:
name: 純粹的形式Purity of Form
author: 雨過之後、佛振
text_color: 0xc2c2c2
back_color: 0x444444
candidate_text_color: 0xeeeeee
hilited_text_color: 0xeeeeee
hilited_back_color: 0x444444
hilited_candidate_text_color: 0x000000
hilited_candidate_back_color: 0xfafafa
comment_text_color: 0x808080
purity_of_essence:
name: 純粹的本質Purity of Essence
author: 佛振
text_color: 0x2c2ccc
back_color: 0xfafafa
candidate_text_color: 0x000000
hilited_text_color: 0x000000
hilited_back_color: 0xfafafa
hilited_candidate_text_color: 0xeeeeee
hilited_candidate_back_color: 0x444444
comment_text_color: 0x808080
starcraft:
name: 星際我爭霸StarCraft
author: Contralisk <contralisk@gmail.com>, original artwork by Blizzard Entertainment
text_color: 0xccaa88
candidate_text_color: 0x30bb55
back_color: 0xee000000
border_color: 0x1010a0
hilited_text_color: 0xfecb96
hilited_back_color: 0x000000
hilited_candidate_text_color: 0x70ffaf
hilited_candidate_back_color: 0x00000000
comment_text_color: 0x1010d0
hilited_comment_text_color: 0x1010f0
google:
name: 谷歌Google
author: skoj <skoj@qq.com>
text_color: 0x666666 #拼音串
candidate_text_color: 0x000000 #非第一候选项
back_color: 0xFFFFFF #背景
border_color: 0xE2E2E2 #边框
hilited_text_color: 0x000000 #拼音串高亮
hilited_back_color: 0xFFFFFF #拼音串高亮背景
hilited_candidate_text_color: 0xFFFFFF #第一候选项
hilited_candidate_back_color: 0xCE7539 #第一候选项背景
comment_text_color: 0x6D6D6D #注解文字
hilited_comment_text_color: 0xEBC6B0 #注解文字高亮
solarized_rock:
name: 曬經石Solarized Rock
author: "Aben <tntaben@gmail.com>, based on Ethan Schoonover's Solarized color scheme"
back_color: 0x362b00
border_color: 0x362b00
text_color: 0x8236d3
hilited_text_color: 0x98a12a
candidate_text_color: 0x969483
comment_text_color: 0xc098a12a
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0x8236d3
hilited_comment_text_color: 0x362b00
clean_white:
name: 简约白Clean White
author: Chongyu Zhu <lembacon@gmail.com>, based on 搜狗「简约白」
horizontal: true
candidate_format: '%c %@'
corner_radius: 6
border_height: 6
border_width: 6
font_point: 16
label_font_point: 12
label_color: 0x888888
text_color: 0x808080
hilited_text_color: 0x000000
candidate_text_color: 0x000000
comment_text_color: 0x808080
back_color: 0xeeeeee
hilited_candidate_label_color: 0xa0c98915
hilited_candidate_text_color: 0xc98915
hilited_candidate_back_color: 0xeeeeee
apathy:
name: 冷漠Apathy
author: LIANG Hai
horizontal: true # 水平排列
inline_preedit: true #单行显示false双行显示
candidate_format: "%c\u2005%@\u2005" # 编号 %c 和候选词 %@ 前后的空间
corner_radius: 5 #候选条圆角
border_height: 0
border_width: 0
back_color: 0xFFFFFF #候选条背景色
font_face: "PingFangSC-Regular,HanaMinB" #候选词字体
font_point: 16 #候选字词大小
text_color: 0x424242 #高亮选中词颜色
label_font_face: "STHeitiSC-Light" #候选词编号字体
label_font_point: 12 #候选编号大小
hilited_candidate_text_color: 0xEE6E00 #候选文字颜色
hilited_candidate_back_color: 0xFFF0E4 #候选文字背景色
comment_text_color: 0x999999 #拼音等提示文字颜色
dust:
name: 浮尘Dust
author: Superoutman <asticosmo@gmail.com>
horizontal: true # 水平排列
inline_preedit: true #单行显示false双行显示
candidate_format: "%c\u2005%@\u2005" # 用 1/6 em 空格 U+2005 来控制编号 %c 和候选词 %@ 前后的空间。
corner_radius: 2 #候选条圆角
border_height: 3 # 窗口边界高度,大于圆角半径才生效
border_width: 8 # 窗口边界宽度,大于圆角半径才生效
back_color: 0xeeffffff #候选条背景色
border_color: 0xE0B693 # 边框色
font_face: "HYQiHei-55S Book,HanaMinA Regular" #候选词字体
font_point: 14 #候选字词大小
label_font_face: "SimHei" #候选词编号字体
label_font_point: 10 #候选编号大小
label_color: 0xcbcbcb # 预选栏编号颜色
candidate_text_color: 0x555555 # 预选项文字颜色
text_color: 0x424242 # 拼音行文字颜色24位色值16进制BGR顺序
comment_text_color: 0x999999 # 拼音等提示文字颜色
hilited_text_color: 0x9e9e9e # 高亮拼音 (需要开启内嵌编码)
hilited_candidate_text_color: 0x000000 # 第一候选项文字颜色
hilited_candidate_back_color: 0xfff0e4 # 第一候选项背景背景色
hilited_candidate_label_color: 0x555555 # 第一候选项编号颜色
hilited_comment_text_color: 0x9e9e9e # 注解文字高亮
mojave_dark:
name: 沙漠夜Mojave Dark
author: xiehuc <xiehuc@gmail.com>
horizontal: true # 水平排列
inline_preedit: true # 单行显示false双行显示
candidate_format: "%c\u2005%@" # 用 1/6 em 空格 U+2005 来控制编号 %c 和候选词 %@ 前后的空间。
corner_radius: 5 # 候选条圆角
hilited_corner_radius: 3 # 高亮圆角
border_height: 6 # 窗口边界高度,大于圆角半径才生效
border_width: 6 # 窗口边界宽度,大于圆角半径才生效
font_face: "PingFangSC" # 候选词字体
font_point: 16 # 候选字词大小
label_font_point: 14 # 候选编号大小
text_color: 0xdedddd # 拼音行文字颜色24位色值16进制BGR顺序
back_color: 0x252320 # 候选条背景色
label_color: 0x888785 # 预选栏编号颜色
border_color: 0x020202 # 边框色
candidate_text_color: 0xdedddd # 预选项文字颜色
hilited_text_color: 0xdedddd # 高亮拼音 (需要开启内嵌编码)
hilited_back_color: 0x252320 # 高亮拼音 (需要开启内嵌编码)
hilited_candidate_text_color: 0xffffff # 第一候选项文字颜色
hilited_candidate_back_color: 0xcb5d00 # 第一候选项背景背景色
hilited_candidate_label_color: 0xffffff # 第一候选项编号颜色
comment_text_color: 0xdedddd # 拼音等提示文字颜色
#hilited_comment_text_color: 0xdedddd # 注解文字高亮
solarized_light:
name: 曬經・日Solarized Light
author: 雪齋 <lyc20041@gmail.com>
color_space: display_p3 # Only available on macOS 10.12+
back_color: 0xf0E5F6FB #Lab 97, 0, 10
border_color: 0xf0EDFFFF #Lab 100, 0, 10
preedit_back_color: 0xf0D7E8ED #Lab 92, 0, 10
candidate_text_color: 0x3942CB #Lab 50, 65, 45
label_color: 0x2566C6 #Lab 55, 45, 65
comment_text_color: 0x8144C2 #Lab 50, 65, -5
text_color: 0x756E5D #Lab 45, -7, -7
hilited_back_color: 0xf0C9DADF #Lab 87, 0, 10
hilited_candidate_back_color: 0x403516 #Lab 20, -12, -12
hilited_candidate_text_color: 0x989F52 #Lab 60, -35, -5
hilited_candidate_label_color: 0xCC8947 #Lab 55, -10, -45
hilited_comment_text_color: 0x289989 #Lab 60, -20, 65
hilited_text_color: 0xBE706D #Lab 50, 15, -45
solarized_dark:
name: 曬經・月Solarized Dark
author: 雪齋 <lyc20041@gmail.com>
color_space: display_p3 # Only available on macOS 10.12+
back_color: 0xf0352A0A #Lab 15, -12, -12
border_color: 0xf02A1F00 #Lab 10, -12, -12
preedit_back_color: 0xf0403516 #Lab 20, -12, -12
candidate_text_color: 0x989F52 #Lab 60, -35, -5
label_color: 0xCC8947 #Lab 55, -10, -45
comment_text_color: 0x289989 #Lab 60, -20, 65
text_color: 0xA1A095 #Lab 65, -05, -02
hilited_back_color: 0xf04C4022 #Lab 25, -12, -12
hilited_candidate_back_color: 0xD7E8ED #Lab 92, 0, 10
hilited_candidate_text_color: 0x3942CB #Lab 50, 65, 45
hilited_candidate_label_color: 0x2566C6 #Lab 55, 45, 65
hilited_comment_text_color: 0x8144C2 #Lab 50, 65, -5
hilited_text_color: 0x2C8BAE #Lab 60, 10, 65

382
symbols_custom.yaml Normal file
View File

@ -0,0 +1,382 @@
# Rime's punctuation and symbols
# encoding: utf-8
#
# ---
#
# copy from `/Library/Input Methods/Squirrel.app/Contents/SharedSupport/symbols.yaml`
#
# punctuator 下面包含三个子项:
# full_shape: 默认
# half_shape: 标点符号全部直接上屏,和 macOS 自带输入法的区别是 '|' 是半角的,'`'(反引号)没有改成 '·'(间隔号)。
# symbols: 原「/」模式 改为了「v」模式映射的汉字改为简体一些韵母前四位顺序改为「一声、二声、三声、四声、其他...」如输入 va 得到 ā á ǎ à
config_version: '2022-10-29'
punctuator:
full_shape:
' ' : { commit: ' ' }
',' : { commit: }
'.' : { commit: 。 }
'<' : [ 《, 〈, «, ]
'>' : [ 》, 〉, », ]
'/' : [ , ÷ ]
'?' : { commit: }
';' : { commit: }
':' : { commit: }
'''' : { pair: [ '', '' ] }
'"' : { pair: [ '“', '”' ] }
'\' : [ 、, ]
'|' : [ ·, , '§', '¦' ]
'`' :
'~' :
'!' : { commit: }
'@' : [ , ☯ ]
'#' : [ , ⌘ ]
'%' : [ , '°', '℃' ]
'$' : [ ¥, '$', '€', '£', '¥', '¢', '¤' ]
'^' : { commit: …… }
'&' :
'*' : [ , ·, ・, ×, ※, ❂ ]
'(' :
')' :
'-' :
'_' : ——
'+' :
'=' :
'[' : [ 「, 【, , ]
']' : [ 」, 】, , ]
'{' : [ 『, 〖, ]
'}' : [ 』, 〗, ]
half_shape:
',' : ''
'.' : '。'
'<' : '《'
'>' : '》'
'/' : '/'
'?' : ''
';' : ''
':' : ''
'''' : { pair: [ '', '' ] }
'"' : { pair: [ '“', '”' ] }
'\' : '、'
'|' : '|'
'`' : '`'
'~' : ''
'!' : ''
'@' : '@'
'#' : '#'
'%' : '%'
'$' : '¥'
'^' : '……'
'&' : '&'
'*' : '*'
'(' : ''
')' : ''
'-' : '-'
'_' : ——
'+' : '+'
'=' : '='
'[' : '【'
']' : '】'
'{' : '「'
'}' : '」'
symbols:
#符号、电脑
'vfh': [ ©, ®, ℗, ℠, ™, ℡, ℻, ☇, ☈, ☉, ☊, ☋, ☌, ☍, ☎, ☏, ☐, ☑, ☒, ☓, ☕, ☖, ☗, ⛉, ⛊, ☘, ☙, ☚, ☛, ☜, ☝, ☞, ☟, ☠, ☡, ☢, ☣, ☤, ☥, ☦, ☧, ☨, ☩, ☪, ☫, ☬, ☭, ☮, ☯, ☸, ♨, ♰, ♱, ♲, ♳, ♴, ♵, ♶, ♷, ♸, ♹, ♺, ♻, ♼, ♽, ♾, ♿, ⚆, ⚇, ⚈, ⚉, ⚐, ⚑, ⚒, ⚓, ⚔, ⚕, ⚖, ⚗, ⚘, ⚙, ⚚, ⚛, ⚜, ⚝, ⚞, ⚟, ⚠, ⚡, ⚰, ⚱, ⚲, ⚳, ⚴, ⚵, ⚶, ⚷, ⚸, ⚹, ⚺, ⚻, ⚼, ⚽, ⚾, ⚿, ⛀, ⛁, ⛂, ⛃, ⛋, ⛌, ⛍, ⛎, ⛏, ⛐, ⛑, ⛒, ⛓, ⛔, ⛕, ⛖, ⛗, ⛘, ⛙, ⛚, ⛛, ⛜, ⛝, ⛞, ⛟, ⛠, ⛡, ⛢, ⛣, ⛨, ⛩, ⛪, ⛫, ⛬, ⛭, ⛮, ⛯, ⛰, ⛱, ⛲, ⛳, ⛴, ⛵, ⛶, ⛷, ⛸, ⛹, ⛺, ⛻, ⛼, ⛽, ⛾, ⛿ ]
'vdn': [ ❖, ⌘, ⌃, ⌥, ⎇, ⇧, ⇪, ␣, ⇥, ⇤, ↩, ⌅, ⌤, ⌫, ⌦, ⌧, ⎋, ⌨, ◁, ⌀, ⌖, ⌗, ⏏, ↖, ↘, ⇞, ⇟, ⌚, ⏰, ⏱, ⏲, ⏳, ⌛, ⌜, ⌝⌞⌟, ⍑, ⏩, ⏪, ⏫, ⏬, ⏭, ⏮, ⏯ ]
#象棋、麻将、色子、扑克
'vxq': [ ♔, ♕, ♖, ♗, ♘, ♙, ♚, ♛, ♜, ♝, ♞, ♟ ]
'vmj': [ 🀀, 🀁, 🀂, 🀃, 🀄, 🀅, 🀆, 🀇, 🀈, 🀉, 🀊, 🀋, 🀌, 🀍, 🀎, 🀏, 🀐, 🀑, 🀒, 🀓, 🀔, 🀕, 🀖, 🀗, 🀘, 🀙, 🀚, 🀛, 🀜, 🀝, 🀞, 🀟, 🀠, 🀡, 🀢, 🀣, 🀤, 🀥, 🀦, 🀧, 🀨, 🀩, 🀪, 🀫 ]
'vsz': [ ⚀, ⚁, ⚂, ⚃, ⚄, ⚅ ]
'vpk': [ ♠, ♥, ♣, ♦, ♤, ♡, ♧, ♢ ]
#表情
'vbq': [ ☻, ☺, ☹ ]
#天气
'vtq': [ ☀, ☁, ⛅, ⛈, ⛆, ☂, ☔, ☃, ⛄, ⛇ ]
#音乐
'vyy': [ 𝄞, ♩, ♪, ♫, ♬, ♭, ♮, ♯ ]
#两性
'vlx': [ ♂, ♀, ⚢, ⚣, ⚤, ⚥, ⚦, ⚧, ⚨, ⚩, ⚪, ⚫, ⚬, ⚭, ⚮, ⚯ ]
#八卦、八卦名、六十四卦、六十四卦名、太玄经
'vbg': [ ☰, ☱, ☲, ☳, ☴, ☵, ☶, ☷ ]
'vbgm': [ 乾, 兑, 离, 震, 巽, 坎, 艮, 坤 ]
'vlssg': [ ䷀, ䷁, ䷂, ䷃, ䷄, ䷅, ䷆, ䷇, ䷈, ䷉, ䷊, ䷋, ䷌, ䷍, ䷎, ䷏, ䷐, ䷑, ䷒, ䷓, ䷔, ䷕, ䷖, ䷗, ䷘, ䷙, ䷚, ䷛, ䷜, ䷝, ䷞, ䷟, ䷠, ䷡, ䷢, ䷣, ䷤, ䷥, ䷦, ䷧, ䷨, ䷩, ䷪, ䷫, ䷬, ䷭, ䷮, ䷯, ䷰, ䷱, ䷲, ䷳, ䷴, ䷵, ䷶, ䷷, ䷸, ䷹, ䷺, ䷻, ䷼, ䷽, ䷾, ䷿ ]
'vlssgm': [ 乾, 坤, 屯, 蒙, 需, 讼, 师, 比, 小畜, 履, 泰, 否, 同人, 大有, 谦, 豫, 随, 蛊, 临, 观, 噬嗑, 贲, 剥, 复, 无妄, 大畜, 颐, 大过, 坎, 离, 咸, 恒, 遯, 大壮, 晋, 明夷, 家人, 睽, 蹇, 解, 损, 益, 夬, 姤, 萃, 升, 困, 井, 革, 鼎, 震, 艮, 渐, 归妹, 丰, 旅, 巽, 兑, 涣, 节, 中孚, 小过, 既济, 未济 ]
'vtxj': [ ⚊, ⚋, ⚌, ⚍, ⚎, ⚏, 𝌀, 𝌁, 𝌂, 𝌃, 𝌄, 𝌅, 𝌆, 𝌇, 𝌈, 𝌉, 𝌊, 𝌋, 𝌌, 𝌍, 𝌎, 𝌏, 𝌐, 𝌑, 𝌒, 𝌓, 𝌔, 𝌕, 𝌖, 𝌗, 𝌘, 𝌙, 𝌚, 𝌛, 𝌜, 𝌝, 𝌞, 𝌟, 𝌠, 𝌡, 𝌢, 𝌣, 𝌤, 𝌥, 𝌦, 𝌧, 𝌨, 𝌩, 𝌪, 𝌫, 𝌬, 𝌭, 𝌮, 𝌯, 𝌰, 𝌱, 𝌲, 𝌳, 𝌴, 𝌵, 𝌶, 𝌷, 𝌸, 𝌹, 𝌺, 𝌻, 𝌼, 𝌽, 𝌾, 𝌿, 𝍀, 𝍁, 𝍂, 𝍃, 𝍄, 𝍅, 𝍆, 𝍇, 𝍈, 𝍉, 𝍊, 𝍋, 𝍌, 𝍍, 𝍎, 𝍏, 𝍐, 𝍑, 𝍒, 𝍓, 𝍔, 𝍕, 𝍖 ]
#天体、星座、星座名、十二宫
'vtt': [ ☄, ☼, ☽, ☾, ☿, ♀, ♁, ♂, ♃, ♄, ♅, ♆, ♇ ]
'vxz': [ ♈, ♉, ♊, ♋, ♌, ♍, ♎, ♏, ♐, ♑, ♒, ♓ ]
'vxzm': [ 白羊座, 金牛座, 双子座, 巨蟹座, 狮子座, 室女座, 天秤座, 天蝎座, 人马座, 摩羯座, 宝瓶座, 双鱼座 ]
'vxzg': [ 白羊宫, 金牛宫, 双子宫, 巨蟹宫, 狮子宫, 室女宫, 天秤宫, 天蝎宫, 人马宫, 摩羯宫, 宝瓶宫, 双鱼宫 ]
#星号
'vxh': [ ★, ☆, ⛤, ⛥, ⛦, ⛧, ✡, ❋, ❊, ❉, ❈, ❇, ❆, ❅, ❄, ❃, ❂, ❁, ❀, ✿, ✾, ✽, ✼, ✻, ✺, ✹, ✸, ✷, ✶, ✵, ✴, ✳, ✲, ✱, ✰, ✯, ✮, ✭, ✬, ✫, ✪, ✩, ✧, ✦, ✥, ✤, ✣, ✢ ]
#方块
'vfk': [ ▀, ▁, ▂, ▃, ▄, ▅, ▆, ▇, █, ▉, ▊, ▋, ▌, ▍, ▎, ▏, ▐, ░, ▒, ▓, ▔, ▕, ▖, ▗, ▘, ▙, ▚, ▛, ▜, ▝, ▞, ▟ ]
#几何
'vjh': [ ■, □, ▢, ▣, ▤, ▥, ▦, ▧, ▨, ▩, ▪, ▫, ▬, ▭, ▮, ▯, ▰, ▱, ▲, △, ▴, ▵, ▶, ▷, ▸, ▹, ►, ▻, ▼, ▽, ▾, ▿, ◀, ◁, ◂, ◃, ◄, ◅, ◆, ◇, ◈, ◉, ◊, ○, ◌, ◍, ◎, ●, ◐, ◑, ◒, ◓, ◔, ◕, ◖, ◗, ◘, ◙, ◚, ◛, ◜, ◝, ◞, ◟, ◠, ◡, ◢, ◣, ◤, ◥, ◦, ◧, ◨, ◩, ◪, ◫, ◬, ◭, ◮, ◯, ◰, ◱, ◲, ◳, ◴, ◵, ◶, ◷, ◸, ◹, ◺, ◻, ◼, ◽, ◾, ◿ ]
#箭头
'vjt': [ ↑, ↓, ←, →, ↕, ↔, ↖, ↗, ↙, ↘, ↚, ↛, ↮, ↜, ↝, ↞, ↟, ↠, ↡, ↢, ↣, ↤, ↥, ↦, ↧, ↨, ↩, ↪, ↫, ↬, ↭, ↯, ↰, ↱, ↲, ↳, ↴, ↵, ↶, ↷, ↸, ↹, ↺, ↻, ↼, ↽, ↾, ↿, ⇀, ⇁, ⇂, ⇃, ⇄, ⇅, ⇆, ⇇, ⇈, ⇉, ⇊, ⇋, ⇌, ⇐, ⇍, ⇑, ⇒, ⇏, ⇓, ⇔, ⇎, ⇕, ⇖, ⇗, ⇘, ⇙, ⇚, ⇛, ⇜, ⇝, ⇞, ⇟, ⇠, ⇡, ⇢, ⇣, ⇤, ⇥, ⇦, ⇧, ⇨, ⇩, ⇪, ⇫, ⇬, ⇭, ⇮, ⇯, ⇰, ⇱, ⇲, ⇳, ⇴, ⇵, ⇶, ⇷, ⇸, ⇹, ⇺, ⇻, ⇼, ⇽, ➔, ➘, ➙, ➚, ➛, ➜, ➝, ➞, ➟, ➠, ➡, ➢, ➣, ➤, ➥, ➦, ➧, ➨, ➩, ➪, ➫, ➬, ➭, ➮, ➱, ➲, ➳, ➴, ➵, ➶, ➷, ➸, ➹, ➺, ➻, ➼, ➽, ➾ ]
#数学
'vsx': [ ±, ÷, ×, ∈, ∏, ∑, , , , ≮, , ≠, , ≯, , √, ∝, ∞, ∟, ∠, ∥, ∧, , ∩, , ∫, ∮, ∴, ∵, ∷, ∽, ≈, ≌, ≒, ≡, ≤, ≥, ≦, ≧, ⊕, ⊙, ⊥, ⊿, ㏑, ㏒ ]
#数字+圆v弧v点
'vszq': [ ⓪, ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪, ⑫, ⑬, ⑭, ⑮, ⑯, ⑰, ⑱, ⑲, ⑳, ㉑, ㉒, ㉓, ㉔, ㉕, ㉖, ㉗, ㉘, ㉙, ㉚, ㉛, ㉜, ㉝, ㉞, ㉟, ㊱, ㊲, ㊳, ㊴, ㊵, ㊶, ㊷, ㊸, ㊹, ㊺, ㊻, ㊼, ㊽, ㊾, ㊿, ⓿, ❶, ❷, ❸, ❹, ❺, ❻, ❼, ❽, ❾, ❿, ⓫, ⓬, ⓭, ⓮, ⓯, ⓰, ⓱, ⓲, ⓳, ⓴ ]
'vszh': [ ⑴, ⑵, ⑶, ⑷, ⑸, ⑹, ⑺, ⑻, ⑼, ⑽, ⑾, ⑿, ⒀, ⒁, ⒂, ⒃, ⒄, ⒅, ⒆, ⒇ ]
'vszd': [ ⒈, ⒉, ⒊, ⒋, ⒌, ⒍, ⒎, ⒏, ⒐, ⒑, ⒒, ⒓, ⒔, ⒕, ⒖, ⒗, ⒘, ⒙, ⒚, ⒛ ]
#字母+圈v弧
'vzmq': [ ⓐ, Ⓐ, ⓑ, Ⓑ, ⓒ, Ⓒ, ⓓ, Ⓓ, ⓔ, Ⓔ, ⓕ, Ⓕ, ⓖ, Ⓖ, ⓗ, Ⓗ, ⓘ, Ⓘ, ⓙ, Ⓙ, ⓚ, Ⓚ, ⓛ, Ⓛ, ⓜ, Ⓜ, ⓝ, Ⓝ, ⓞ, Ⓞ, ⓟ, Ⓟ, ⓠ, Ⓠ, ⓡ, Ⓡ, ⓢ, Ⓢ, ⓣ, Ⓣ, ⓤ, Ⓤ, ⓥ, Ⓥ, ⓦ, Ⓦ, ⓧ, Ⓧ, ⓨ, Ⓨ, ⓩ, Ⓩ ]
'vzmh': [ ⒜, ⒝, ⒞, ⒟, ⒠, ⒡, ⒢, ⒣, ⒤, ⒥, ⒦, ⒧, ⒨, ⒩, ⒪, ⒫, ⒬, ⒭, ⒮, ⒯, ⒰, ⒱, ⒲, ⒳, ⒴, ⒵ ]
#数字、分数
'v0': [ 零, , ⁰, ₀, ⓪, ⓿ , ]
'v1': [ 一, 壹, ¹, ₁, , , ①, ➀, ❶, ➊, ⓵, ⑴, ⒈, , ㊀, ㈠, 弌, 壱, 幺, ㆒ ]
'v2': [ 二, 贰, ², ₂, Ⅱ, ⅱ, ②, ➁, ❷, ➋, ⓶, ⑵, ⒉, , ㊁, ㈡, 弍, 弐, 貮, 㒃, 㒳, 两, 俩, ㆓]
'v3': [ 三, 叁, ³, ₃, Ⅲ, ⅲ, ③, ➂, ❸, ➌, ⓷, ⑶, ⒊, , ㊂, ㈢, 参, 参, 叁, 弎, 仨, ㆔]
'v4': [ 四, 肆, ⁴, ₄, Ⅳ, ⅳ, ④, ➃, ❹, ➍, ⓸, ⑷, ⒋, , ㊃, ㈣, 亖]
'v5': [ 五, 伍, ⁵, ₅, , , ⑤, ➄, ❺, ➎, ⓹, ⑸, ⒌, , ㊄, ㈤, 㐅, 㠪, 𠄡 ]
'v6': [ 六, 陆, ⁶, ₆, Ⅵ, ⅵ, ⑥, ➅, ❻, ➏, ⓺, ⑹, ⒍, , ㊅, ㈥, ↅ]
'v7': [ 七, 柒, ⁷, ₇, Ⅶ, ⅶ, ⑦, ➆, ❼, ➐, ⓻, ⑺, ⒎, , ㊆, ㈦, 漆]
'v8': [ 八, 捌, ⁸, ₈, Ⅷ, ⅷ, ⑧, ➇, ❽, ➑, ⓼, ⑻, ⒏, , ㊇, ㈧ ]
'v9': [ 九, 玖, ⁹, ₉, Ⅸ, ⅸ, ⑨, ➈, ❾, ➒, ⓽, ⑼, ⒐, , ㊈, ㈨ ]
'v10': [ 十, 拾, ¹⁰, ₁₀, , , ⑩, ➉, ❿, ➓, ⓾, ⑽, ⒑, , ㊉, ㈩, 什 ]
'vfs': [ ⅟, ½, ↉, ⅓, ⅔, ¼, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒ ]
#苏州码
'vszm': [ 〡, 〢, 〣, 〤, 〥, 〦, 〧, 〨, 〩, 〸, 〹, 〺 ]
#罗马数字
'vlm': [ , ⅱ, ⅲ, ⅳ, , ⅵ, ⅶ, ⅷ, ⅸ, , ⅺ, ⅻ, , , , ⅿ ]
'vlmd': [ , Ⅱ, Ⅲ, Ⅳ, , Ⅵ, Ⅶ, Ⅷ, Ⅸ, , Ⅺ, Ⅻ, , , , ]
#拉丁
'va': [ā, á, ǎ, à, ȁ, â, ă, ȃ, ȧ, ä, å, ã, ₐ, ᵃ, ª, ⱥ, ꬰ, ả, ą, ạ, ḁ, ẚ, ấ, ầ, ẫ, ẩ, ắ, ằ, ẵ, ẳ, ǡ, ǟ, ǻ, ậ, ặ, ᶏ, ɐ, ᵄ, ɑ, ᵅ, ᶐ, ɒ, ᶛ]
'vA': [Ā, Á, Ǎ, À, Ȁ, Â, Ă, Ȃ, Ȧ, Ä, Å, Ã, ᴀ, ᴬ, Ⱥ, Ả, Ą, Ạ, Ḁ, Ấ, Ầ, Ẫ, Ẩ, Ắ, Ằ, Ẵ, Ẳ, Ǡ, Ǟ, Ǻ, Ậ, Ặ, Ɐ, Ɑ, Ɒ ]
'vb': [ḃ, ḅ, ᵇ, ƀ, ƃ, ḇ, ɓ, ᵬ, ᶀ, ꞗ]
'vB': [Ḃ, Ḅ, ʙ, ᴃ, ᴮ, ᴯ, Ƀ, Ƃ, Ḇ, Ɓ, Ꞗ]
'vc': [ç, ć, č, ĉ, ċ, ᶜ, ȼ, ꞓ, ƈ, ḉ, ꞔ, ɕ, ᶝ, ꜿ]
'vC': [Ç, Ć, Č, Ĉ, Ċ, , Ȼ, Ꞓ, Ƈ, Ḉ, Ꜿ]
'vd': [ď, ḋ, ᵈ, đ, ƌ, ᵭ, ḑ, ḓ, ḏ, ḍ, ɖ, ɗ, ᶑ, ᶁ, ð, ᶞ, ꝱ, ʤ, ʣ, ʥ, ȡ, ƍ, dz, dž, ẟ]
'vD': [Ď, Ḋ, ᴅ, ᴆ, ᴰ, Đ, Ƌ, Ḑ, Ḓ, Ḏ, Ḍ, Ɖ, Ɗ, Ð, DZ, Dz, DŽ, Dž ]
've': [ē, é, ě, è, ȅ, ê, ĕ, ȇ, ė, ë, ẽ, ₑ, ᵉ, ɇ, ꬳ, ẻ, ȩ, ę, ḙ, ẹ, ḛ, ḗ, ḕ, ế, ề, ễ, ể, ḝ, ệ, ᶒ, ꬴ, ɘ, ə, ɚ, ᶕ, ɛ, ᵋ, ᶓ, ɜ, ᵌ, ᴈ, ᶟ, ɝ, ᶔ, ɞ, ʚ, ǝ, ₔ, ᵊ, ȝ, ⱸ]
'vE': [Ē, É, Ě, È, Ȅ, Ê, Ĕ, Ȇ, Ė, Ë, Ẽ, ᴇ, ᴱ, Ɇ, Ẻ, Ȩ, Ę, Ḙ, Ẹ, Ḛ, Ḗ, Ḕ, Ế, Ề, Ễ, Ể, Ḝ, Ệ, Ə, Ɛ, , Ǝ, ⱻ, ᴲ, Ȝ ]
'vf': [ḟ, ᶠ, ƒ, ᵮ, ᶂ, ]
'vF': [Ḟ, ꜰ, Ƒ, , ꟻ]
'vg': [ḡ, ǵ, ǧ, ĝ, ğ, ġ, ᵍ, ǥ, ꞡ, ģ, ɠ, ᵷ, , ɡ, ꬶ, ᶢ, ɣ, ˠ, ɤ, ᵹ]
'vG': [Ḡ, Ǵ, Ǧ, Ĝ, Ğ, Ġ, ʛ, ᴳ, Ǥ, Ꞡ, Ģ, Ɠ, Ɡ, Ɣ ]
'vh': [ĥ, ȟ, ḣ, ḧ, ͪ, ħ, ɦ, ʱ, ꜧ, ꭜ, ɧ, ḩ, ẖ, ḫ, ḥ, ⱨ, ꞕ, ɥ, ᶣ, ʮ, ʯ, ⱶ]
'vH': [Ĥ, Ȟ, Ḣ, Ḧ, ʜ, ᴴ, Ħ, Ɦ, Ꜧ, Ḩ, Ḫ, Ḥ, Ⱨ, Ɥ, Ⱶ]
'vi': [ī, í, ǐ, ì, ȉ, î, ĭ, ȋ, ï, ĩ, ᵢ, ı, ɨ, ᶤ, ỉ, į, ị, ḭ, ᴉ, ᵎ, ḯ, ᶖ, ɩ, ᶥ, ᵼ]
'vI': [Ī, Í, Ǐ, Ì, Ȉ, Î, Ĭ, Ȋ, Ï, Ĩ, ɪ, ᴵ, ᶦ, Ɨ, ᵻ, ᶧ, Ỉ, Į, Ị, Ḭ, Ḯ, ꟾ, Ɩ ]
'vj': [ĵ, ǰ, ⱼ, ʲ, ɉ, ȷ, ɟ, ᶡ, ʄ, ʝ, ᶨ]
'vJ': [Ĵ, ᴊ, ᴶ, Ɉ, ]
'vk': [ḱ, ǩ, ₖ, ᵏ, ꝁ, ꝃ, ꞣ, ꝅ, ķ, ḵ, ḳ, ƙ, ᶄ, ⱪ, ʞ, ĸ]
'vK': [Ḱ, Ǩ, ᴋ, ᴷ, Ꝁ, Ꝃ, Ꞣ, Ꝅ, Ķ, Ḵ, Ḳ, Ƙ, Ⱪ, Ʞ ]
'vl': [ĺ, ˡ, ł, ꝉ, ƚ, ⱡ, ɫ, ꭞ, ꬸ, ɬ, ľ, ļ, ḻ, ḽ, ḷ, ŀ, ꝲ, ƛ, ᶅ, ᶪ, ɭ, ᶩ, ḹ, ꬷ, ꭝ, ꬹ, ȴ, ꝇ]
'vL': [Ĺ, ʟ, ᶫ, Ƚ, Ꝉ, Ł, ᴌ, Ⱡ, Ɫ, Ɬ, Ľ, Ļ, Ḻ, Ḽ, Ḷ, Ŀ, Ꝇ]
'vm': [ḿ, ṁ, ᵐ, ₘ, ṃ, ᵯ, ɱ, ᶬ, ꬺ, ᶆ, ꝳ, ɯ, ᵚ, ɰ, ᶭ, ᴟ]
'vM': [Ḿ, Ṁ, ᴍ, ᴹ, Ṃ, Ɱ, Ɯ, ꟽ, ꟿ ]
'vn': [ń, ň, ǹ, ṅ, ñ, ₙ, ⁿ, ɲ, ᶮ, ɳ, ᶯ, ȵ, ƞ, ŋ, ᵑ, ꬻ, ꬼ, ꝴ, ʼn, ꞥ, ņ, ṉ, ṋ, ṇ, ᵰ, ꞑ, ᶇ]
'vN': [Ń, Ň, Ǹ, Ṅ, Ñ, ɴ, ᴺ, ᴻ, ᶰ, Ɲ, Ƞ, Ŋ, Ņ, Ṉ, Ṋ, Ṇ, Ꞑ ]
'vo': [ō, ó, ő, ǒ, ò, ô, ŏ, ȯ, ö, õ, ₒ, ᵒ, º, ɔ, ᵓ, ᶗ, ꬿ, ø, ǫ, ọ, ơ, ɵ, ᶱ, , ᴒ, ᴓ, ꝋ, ꝍ, ṓ, ṑ, ố, ồ, ỗ, ổ, ȱ, ȫ, ȭ, ṍ, ṏ, ộ, ǭ, ǿ, ớ, ờ, ỡ, ở, ợ, ɷ, ⱺ, ᴖ, ᵔ, ᴗ, ᵕ]
'vO': [Ō, Ó, Ő, Ǒ, Ò, Ô, Ŏ, Ȯ, Ö, Õ, , ᴼ, Ɔ, ᴐ, Ø, Ǫ, Ọ, Ơ, Ɵ, Ꝋ, Ꝍ, Ṓ, Ṑ, Ố, Ồ, Ỗ, Ổ, Ȱ, Ȫ, Ȭ, Ṍ, Ṏ, Ộ, Ǭ, Ǿ, Ớ, Ờ, Ỡ, Ở, Ợ ]
'vp': [ṕ, ṗ, ᵖ, ᵽ, ꝑ, ᵱ, ƥ, ᶈ, ꝓ, ꝕ, ɸ, ᶲ, ⱷ ]
'vP': [Ṕ, Ṗ, ᴘ, ᴾ, Ᵽ, Ꝑ, Ƥ, Ꝓ, Ꝕ, ꟼ]
'vq': [ɋ, ꝗ, ꝙ, ʠ]
'vQ': [Ɋ, Ꝗ, Ꝙ ]
'vr': [ŕ, ř, ȑ, ȓ, ṙ, ᵣ, ɍ, ꞧ, ᵲ, ŗ, ṟ, ṛ, ṝ, ᵳ, ɽ, ᶉ, , , ꭊ, ꭉ, ꝵ, ꭋ, ꭌ, ɹ, ʴ, ɺ, ɻ, ʵ, ⱹ, ɼ, ʳ, ɾ, ɿ, ꝛ, ꝝ]
'vR': [Ŕ, Ř, Ȑ, Ȓ, Ṙ, ʀ, ᴙ, ᴿ, Ʀ, ꭆ, Ɍ, Ꞧ, Ŗ, Ṟ, Ṛ, Ṝ, Ɽ, ꝶ, ʶ, ʁ, , Ꝝ]
'vs': [Vs., 🆚, ś, ŝ, š, ṡ, ˢ, ʂ, ᶳ, ᵴ, ꞩ, ᶊ, ş, ṣ, ș, ȿ, ṥ, ṧ, ṩ, ʃ, ᶴ, ʆ, ᶘ, ʅ, ƪ, ß, ſ, ẛ, ẜ, ]
'vS': [Ś, Ŝ, Š, Ṡ, , Ꞩ, Ş, Ṣ, Ș, Ṥ, Ṧ, Ṩ, Ʃ, ẞ, ]
'vt': [ť, ṫ, ẗ, ᵗ, ₜ, ʈ, þ, ꝥ, ꝧ, ŧ, ⱦ, ţ, ṯ, ṱ, ṭ, ț, ƭ, ᵵ, ƫ, ᶵ, ʇ, ȶ, ꝷ]
'vT': [Ť, Ṫ, ᴛ, ᵀ, Ʈ, Þ, Ꝥ, Ꝧ, Ŧ, Ⱦ, Ţ, Ṯ, Ṱ, Ṭ, Ț, Ƭ, Ʇ ]
'vu': [ū, ú, ű, ǔ, ù, ȕ, û, ŭ, ȗ, ü, ǖ, ǘ, ǚ, ǜ, ů, ũ, ᵤ, ᵘ, ʉ, ᶶ, ủ, ų, ṷ, ụ, ṳ, ṵ, ư, ʊ, ᶷ, ᵿ, ᶙ, ṻ, ṹ, ứ, ừ, ữ, ử, ự, , ꭟ, , , ꭏ, ᴝ, ᵙ, ᴞ]
'vU': [Ū, Ú, Ű, Ǔ, Ù, Ȕ, Û, Ŭ, Ȗ, Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ů, Ũ, , ᵁ, ᶸ, Ʉ, Ủ, Ų, Ṷ, Ụ, Ṳ, Ṵ, Ư, Ʊ, Ṻ, Ṹ, Ứ, Ừ, Ữ, Ử, Ự ]
'vv': [ü, ǖ, ǘ, ǚ, ǜ, ṽ, ᵛ, ᵥ, ṿ, ꝟ, ʋ, ᶹ, , ⱴ, ⱱ, ỽ, ʌ, ᶺ]
'vV': [Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ṽ, , ⱽ, Ṿ, Ꝟ, Ʋ, Ỽ, Ʌ ]
'vw': [ẃ, ẁ, ŵ, ẇ, ẅ, ẘ, ʷ, ẉ, ƿ, ʍ, ⱳ]
'vW': [Ẃ, Ẁ, Ŵ, Ẇ, Ẅ, W̊, , ᵂ, Ẉ, Ƿ, Ⱳ]
'vx': [ẋ, ẍ, ᶍ, ˣ, ₓ, ꭖ, ꭗ, ꭘ, ꭙ]
'vX': [Ẋ, Ẍ ]
'vy': [ȳ, ý, ỳ, ŷ, ẏ, ÿ, ẙ, ỹ, ʸ, ɏ, ỷ, ỵ, ƴ, ʎ, ỿ, ]
'vY': [Ȳ, Ý, Ỳ, Ŷ, Ẏ, Ÿ, Ỹ, ʏ, Ɏ, Ỷ, Ỵ, Ƴ, Ỿ ]
'vz': [ź, ž, ẑ, ż, ᶻ, ʐ, ᶼ, ʑ, ᶽ, ƶ, ẕ, ẓ, ᵶ, ȥ, ⱬ, ᶎ, ʒ, ᶾ, ǯ, ʓ, ƹ, ƺ, ᶚ, θ, ᶿ, ɀ, ꝣ]
'vZ': [Ź, Ž, Ẑ, Ż, , Ƶ, Ẕ, Ẓ, Ȥ, Ⱬ Ʒ, ᴣ, Ǯ, Ƹ, Ɀ, Ꝣ]
'vaa': [ꜳ]
'vAA': [Ꜳ]
'vae': [æ, ǣ, ǽ, ᵆ, ᴂ]
'vAE': [Æ, Ǣ, Ǽ, ᴭ, ᴁ ]
'vao': [ꜵ]
'vAO': [Ꜵ]
'vau': [ꜷ]
'vAU': [Ꜷ]
'vav': [ꜹ, ꜻ]
'vAV': [Ꜹ, Ꜻ]
'vay': [ꜽ]
'vAY': [Ꜽ]
'vdb': [ȸ]
'vff': [ff]
'vffi': [ffi]
'vffl': [ffl]
'vfi': [fi]
'vfl': [fl]
'vfn': [ʩ]
'vhv': [ƕ]
'vHV': [Ƕ]
'vij': [ij]
'vIJ': [IJ]
'vlj': [lj]
'vll': [ỻ]
'vLL': [Ỻ]
'vls': [ʪ]
'vlz': [ʫ, ɮ]
'vnj': [nj]
'vNj': [Nj]
'vNJ': [NJ]
'voe': [œ, ᴔ]
'vOE': [Œ, ɶ ]
'voi': [ƣ]
'vOI': [Ƣ]
'voo': [ꝏ]
'vOO': [Ꝏ]
'vou': [ȣ ]
'vOU': [Ȣ, ᴽ]
'vqp': [ȹ]
'vRx': [℞]
'vtc': [ʨ]
'vth': [ᵺ]
'vts': [ʦ, ʧ]
'vtz': [ꜩ]
'vTZ': [Ꜩ]
'vue': [ᵫ]
'vvy': [ꝡ]
'vVY': [Ꝡ]
'vww': [ʬ]
#上标、下标
'vsb': [ ⁰, ¹, ², ³, ⁴, ⁵, ⁶, ⁷, ⁸, ⁹, ˜, ⁺, ⁻, ⁼, ⁽, ⁾, ᴬ, ᵃ, ᵄ, ᵅ, ᶛ, ᴭ, ᵆ, ᴮ, ᴯ, ᵇ, ᵝ, ᶜ, ᵓ, ᶝ, ᴰ, ᵈ, ᶞ, ᵟ, ᴱ, ᵉ, ᴲ, ᵊ, ᵋ, ᶟ, ᵌ, ᶠ, ᶡ, ᶲ, ᵠ, ᴳ, ᵍ, ᶢ, ˠ, ᵞ, ᴴ, ʰ, ᶣ, ʱ, ᴵ, ⁱ, ᶤ, ᵎ, ᶥ, ᴶ, ʲ, ᶨ, ᴷ, ᵏ, ᴸ, ᶫ, ˡ, ᶩ, ᶪ, ᴹ, ᵐ, ᶬ, ᵚ, ᶭ, ᴺ, ᴻ, ⁿ, ᵑ, ᶮ, ᶯ, ᴼ, ᵒ, ᶱ, ᴽ, ᴾ, ᵖ, ᴿ, ʳ, ʶ, ʴ, ʵ, ˢ, ᶴ, ᶳ, ᵀ, ᵗ, ᶵ, ᶿ, ᵁ, ᵘ, ᶶ, ᶷ, ᵙ, ⱽ, ᵛ, ᶺ, ᶹ, ᵂ, ʷ, ˣ, ᵡ, ʸ, ᶻ, ᶾ, ᶽ, ᶼ ]
'vxb': [ ₀, ₁, ₂, ₃, ₄, ₅, ₆, ₇, ₈, ₉, ₊, ₋, ₌, ₍, ₎, ‸, ᴀ, ₐ, ᴁ, ʙ, ᴃ, ᵦ, , ᴐ, ᴒ, ᴅ, ᴆ, ᴇ, ₑ, ₔ, ᵩ, ɢ, ʛ, , ᵧ, ʜ, ₕ, ɪ, ᵻ, ᵢ, ᴊ, ⱼ, ᴋ, ₖ, ʟ, ₗ, ᴌ, ᴧ, ᴍ, ₘ, ꟺ, ɴ, ᴎ, ₙ, , ₒ, ɶ, ʘ, ᴓ, , ᴘ, ₚ, ᴨ, ᴪ, ʀ, ᵣ, ᴙ, ʁ, ᴚ, ᵨ, ₛ, ᴛ, ₜ, , ᵤ, ᵾ, , ᵥ, , ₓ, ᵪ, ʏ, , ᴣ ]
#希腊
'vxl': [ α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω ]
'vxld': [ Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω ]
#俄语
'vey': [ а, б, в, г, д, е, ё, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, э, ю, я ]
'veyd': [ А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ъ, Ы, Ь, Э, Ю, Я ]
#月份、日期、曜日等
'vyf': [ ㋀, ㋁, ㋂, ㋃, ㋄, ㋅, ㋆, ㋇, ㋈, ㋉, ㋊, ㋋ ]
'vrq': [ ㏠, ㏡, ㏢, ㏣, ㏤, ㏥, ㏦, ㏧, ㏨, ㏩, ㏪, ㏫, ㏬, ㏭, ㏮, ㏯, ㏰, ㏱, ㏲, ㏳, ㏴, ㏵, ㏶, ㏷, ㏸, ㏹, ㏺, ㏻, ㏼, ㏽, ㏾ ]
'vyr': [ 月, 火, 水, 木, 金, 土, 日, ㊊, ㊋, ㊌, ㊍, ㊎, ㊏, ㊐, ㊗, ㊡, ㈪, ㈫, ㈬, ㈭, ㈮, ㈯, ㈰, ㈷, ㉁, ㉀ ]
#时间
'vsj': [ ㍘, ㍙, ㍚, ㍛, ㍜, ㍝, ㍞, ㍟, ㍠, ㍡, ㍢, ㍣, ㍤, ㍥, ㍦, ㍧, ㍨, ㍩, ㍪, ㍫, ㍬, ㍭, ㍮, ㍯, ㍰ ]
#天干、地支、干支
'vtg': [ 甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸 ]
'vdz': [ 子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥 ]
'vgz': [ 甲子, 乙丑, 丙寅, 丁卯, 戊辰, 己巳, 庚午, 辛未, 壬申, 癸酉, 甲戌, 乙亥, 丙子, 丁丑, 戊寅, 己卯, 庚辰, 辛巳, 壬午, 癸未, 甲申, 乙酉, 丙戌, 丁亥, 戊子, 己丑, 庚寅, 辛卯, 壬辰, 癸巳, 甲午, 乙未, 丙申, 丁酉, 戊戌, 己亥, 庚子, 辛丑, 壬寅, 癸卯, 甲辰, 乙巳, 丙午, 丁未, 戊申, 己酉, 庚戌, 辛亥, 壬子, 癸丑, 甲寅, 乙卯, 丙辰, 丁巳, 戊午, 己未, 庚申, 辛酉, 壬戌, 癸亥 ]
#节气
'vjq': [ 立春, 雨水, 惊蛰, 春分, 清明, 谷雨, 立夏, 小满, 芒种, 夏至, 小暑, 大暑, 立秋, 处暑, 白露, 秋分, 寒露, 霜降, 立冬, 小雪, 大雪, 冬至, 小寒, 大寒 ]
#单位
'vdw': [ Å, ℃, , ‰, ‱, °, ℉, ㏃, ㏆, ㎈, ㏄, ㏅, ㎝, ㎠, ㎤, ㏈, ㎗, ㎙, ㎓, ㎬, ㏉, ㏊, ㏋, ㎐, ㏌, ㎄, ㎅, ㎉, ㎏, ㎑, ㏍, ㎘, ㎞, ㏎, ㎢, ㎦, ㎪, ㏏, ㎸, ㎾, ㏀, ㏐, ㏓, ㎧, ㎨, ㎡, ㎥, ㎃, ㏔, ㎆, ㎎, ㎒, ㏕, ㎖, ㎜, ㎟, ㎣, ㏖, ㎫, ㎳, ㎷, ㎹, ㎽, ㎿, ㏁, ㎁, ㎋, ㎚, ㎱, ㎵, ㎻, ㏘, ㎩, ㎀, ㎊, ㏗, ㏙, ㏚, ㎰, ㎴, ㎺, ㎭, ㎮, ㎯, ㏛, ㏜, ㎔, ㏝, ㎂, ㎌, ㎍, ㎕, ㎛, ㎲, ㎶, ㎼ ]
#货币
'vhb': [ ¥, ¥, ¤, ¢, , $, £, £, ৳, ฿, ₠, ₡, ₢, ₣, ₤, ₥, ₦, ₧, ₩, ₪, ₫, €, ₭, ₮, ₯, ₰, ₱, ₲, ₳, ₴, ₵, ₶, ₷, ₸, ₹, ₺, ₨, ﷼ ]
#结构、偏旁、康熙(部首)、笔画、标点
'vjg': [ ⿰, ⿱, ⿲, ⿳, ⿴, ⿵, ⿶, ⿷, ⿸, ⿹, ⿺, ⿻, 〾 ]
'vpp': [ 乛, 冫, 丷, 龹, ⺌, 龸, 亻, 亼, 亽, 仒, 冖, 冂, 冃, 冄, 宀, 罒, 㓁, 罓, 冈, 凵, 厶, 刂, 勹, 匚, 匸, 卩, 阝, 厂, 丆, 广, 壬, 訁, 讠, 釒, 钅, 飠, 饣, 龺, 攵, 夂, 夊, 尢, 尣, 兂, 旡, 巜, 巛, 彐, 彑, 彡, 彳, 龰, 辶, 廴, 㞢, 忄, 㣺, 扌, 爫, 龵, 廾, 歺, 癶, 氵, 氺, 火, 灬, 爿, 丬, 疒, 牜, ⺶, 犭, 豕, 豸, 虍, 艹, 卝, 龷, 丗, 龶, 芈, 丵, 菐, 黹, 礻, 衤, 糸, 糹, 纟, 龻, 镸, 髟, 襾, 覀, 吅, 㗊, 㠭, 㸚, 叕]
'vkx': [ 一, 丨, , 丿, 乙, 亅, 二, 亠, 人, 儿, 入, 八, 冂, 冖, 冫, 几, 凵, 刀, 力, 勹, 匕, 匚, 匸, 十, 卜, 卩, 厂, 厶, 又, 口, 囗, 土, 士, 夂, 夊, 夕, 大, 女, 子, 宀, 寸, 小, 尢, 尸, 屮, 山, 巛, 工, 己, 巾, 干, 幺, 广, 廴, 廾, 弋, 弓, 彐, 彡, 彳, 心, 戈, 戶, 手, 支, 攴, 文, 斗, 斤, 方, 无, 日, 曰, 月, 木, 欠, 止, 歹, 殳, 毋, 比, 毛, 氏, 气, 水, 火, 爪, 父, 爻, 爿, 片, 牙, 牛, 犬, 玄, 玉, 瓜, 瓦, 甘, 生, 用, 田, 疋, 疒, 癶, 白, 皮, 皿, 目, 矛, 矢, 石, 示, 禸, 禾, 穴, 立, 竹, 米, 糸, 缶, 网, 羊, 羽, 老, 而, 耒, 耳, 聿, 肉, 臣, 自, 至, 臼, 舌, 舛, 舟, 艮, 色, 艸, 虍, 虫, 血, 行, 衣, 襾, 見, 角, 言, 谷, 豆, 豕, 豸, 貝, 赤, 走, 足, 身, 車, 辛, 辰, 辵, 邑, 酉, 釆, 里, 金, 長, 門, 阜, 隶, 隹, 雨, 靑, 非, 面, 革, 韋, 韭, 音, 頁, 風, 飛, 食, 首, 香, 馬, 骨, 高, 髟, 鬥, 鬯, 鬲, 鬼, 魚, 鳥, 鹵, 鹿, 麥, 麻, 黃, 黍, 黑, 黹, 黽, 鼎, 鼓, 鼠, 鼻, 齊, 齒, 龍, 龜, 龠 ]
'vbh': [ ㇀, ㇁, ㇂, ㇃, ㇄, ㇅, ㇆, ㇇, ㇈, ㇉, ㇊, ㇋, ㇌, ㇍, ㇎, ㇏, ㇐, ㇑, ㇒, , , ㇕, ㇖, ㇗, ㇘, ㇙, ㇚, ㇛, ㇜, ㇝, ㇞, ㇟, ㇠, ㇡, ㇢, ㇣ ]
'vbd': [ 、, 。, 「, 」, 『, 』, 【, 】, 〈, 〉, 《, 》, ₋, ⁻, ―, ˗, ˉ, _, , , , ¡, ‼, ⁉, ¿, ؟, ⁈, ⁇, 、, 。, 〃, 〄, 々, 〆, , 〒, 〓, , , 〖, 〗, 〘, 〙, 〚, 〛, 〜, 〝, 〞, 〟, 〠, 〰, 〱, 〲, , 〴, 〵, 〶, 〷, 〻, 〼, 〽 ]
'vbdz': [ ﹅, ﹆, ﹁, ﹂, ﹃, ﹄, ︙, ︱, ︻, ︼, ︗, ︘, ︵, ︶, ︷, ︸, ︹, ︺, ︿, ﹀, ︽, ︾, , ︲, ︳, ︴, ﹉, ﹊, ﹋, ﹌, , , , ﹇, ﹈, ︐, ︑, ︒, ︔, ︕, ︖ ]
#拼音、注音、声调
'vpy': [ ā, á, ǎ, à, ō, ó, ǒ, ò, ê, ê̄, ế, ê̌, ề, ē, é, ě, è, ī, í, ǐ, ì, ū, ú, ǔ, ù, ü, ǖ, ǘ, ǚ, ǜ, ḿ, m̀, ń, ň, ǹ, ẑ, ĉ, ŝ, ŋ ]
'vpyd': [ Ā, Á, Ǎ, À, Ō, Ó, Ǒ, Ò, Ê, Ê̄, Ế, Ê̌, Ề, Ē, É, Ě, È, Ī, Í, Ǐ, Ì, Ū, Ú, Ǔ, Ù, Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ḿ, M̀, Ń, Ň, Ǹ, Ẑ, Ĉ, Ŝ, Ŋ ]
'vzy': [ ㄅ, ㄆ, ㄇ, ㄈ, ㄉ, ㄊ, ㄋ, ㄌ, ㄍ, ㄎ, ㄏ, ㄐ, ㄑ, ㄒ, ㄓ, ㄔ, ㄕ, ㄖ, ㄗ, ㄘ, ㄙ, ㄧ, ㄨ, ㄩ, ㄚ, ㄛ, ㄜ, ㄝ, ㄞ, ㄟ, ㄠ, ㄡ, ㄢ, ㄣ, ㄤ, ㄥ, ㄦ, ㄪ, ㄫ, ㄬ, ㄭ, ㆠ, ㆡ, ㆢ, ㆣ, ㆤ, ㆥ, ㆦ, ㆧ, ㆨ, ㆩ, ㆪ, ㆫ, ㆬ, ㆭ, ㆮ, ㆯ, ㆰ, ㆱ, ㆲ, ㆳ, ㆴ, ㆵ, ㆶ, ㆷ ]
'vsd': [ ˉ, ˊ, ˇ, ˋ, ˆ, ˙, ˜, ˥, ˦, ˧, ˨, ˩, ꜀, ꜁, ꜂, ꜃, ꜄, ꜅, ꜆, ꜇, '〪', '〫', '〬', '〭' ]
#汉字+圈v弧
'vhzq': [ ㊀, ㊁, ㊂, ㊃, ㊄, ㊅, ㊆, ㊇, ㊈, ㊉, ㊊, ㊋, ㊌, ㊍, ㊎, ㊏, ㊐, ㊑, ㊒, ㊓, ㊔, ㊕, ㊖, ㊗, ㊘, ㊙, ㊚, ㊛, ㊜, ㊝, ㊞, ㊟, ㊠, ㊡, ㊢, ㊣, ㊤, ㊥, ㊦, ㊧, ㊨, ㊩, ㊪, ㊫, ㊬, ㊭, ㊮, ㊯, ㊰, ㉄, ㉅, ㉆, ㉇ ]
'vhzh': [ ㈠, ㈡, ㈢, ㈣, ㈤, ㈥, ㈦, ㈧, ㈨, ㈩, ㈪, ㈫, ㈬, ㈭, ㈮, ㈯, ㈰, ㈱, ㈲, ㈳, ㈴, ㈵, ㈶, ㈷, ㈸, ㈹, ㈺, ㈻, ㈼, ㈽, ㈾, ㈿, ㉀, ㉁, ㉂, ㉃ ]
#いろは順
'viro': [ い, ろ, は, に, ほ, へ, と, ち, り, ぬ, る, を, わ, か, よ, た, れ, そ, つ, ね, な, ら, む, う, ゐ, の, お, く, や, ま, け, ふ, こ, え, て, あ, さ, き, ゆ, め, み, し, ゑ, ひ, も, せ, す ]
#假名
'vjm': [ あ, ぁ, い, ぃ, う, ぅ, え, ぇ, お, ぉ, か, ゕ, が, き, ぎ, く, ぐ, け, ゖ, げ, こ, ご, さ, ざ, し, じ, す, ず, せ, ぜ, そ, ぞ, た, だ, ち, ぢ, つ, っ, づ, て, で, と, ど, な, に, ぬ, ね, の, は, ば, ぱ, ひ, び, ぴ, ふ, ぶ, ぷ, へ, べ, ぺ, ほ, ぼ, ぽ, ま, み, む, め, も, や, ゃ, ゆ, ゅ, よ, ょ, ら, り, る, れ, ろ, わ, ゎ, ゐ, ゔ, ゑ, を, ん, ・, ー, ゝ, ゞ, ゟ ]
'vpjm': [ ア, ァ, イ, ィ, ウ, ゥ, エ, ェ, オ, ォ, カ, ヵ, ガ, キ, ギ, ク, グ, ケ, ヶ, ゲ, コ, ゴ, サ, ザ, シ, ジ, ス, ズ, セ, ゼ, ソ, ゾ, タ, ダ, チ, ヂ, ツ, ッ, ヅ, テ, デ, ト, ド, ナ, ニ, ヌ, ネ, , ハ, バ, パ, ヒ, ビ, ピ, フ, ブ, プ, ヘ, ベ, ペ, ホ, ボ, ポ, マ, ミ, ム, メ, モ, ヤ, ャ, ユ, ュ, ヨ, ョ, ラ, リ, ル, レ, ロ, ワ, ヮ, ヰ, ヸ, ヴ, ヱ, ヹ, ヲ, ヺ, ン, ・, ー, ヽ, ヾ, ヿ, ㇰ, ㇱ, ㇲ, ㇳ, ㇴ, ㇵ, ㇶ, ㇷ, ㇸ, ㇹ, ㇺ, ㇻ, ㇼ, ㇽ, ㇾ, ㇿ ]
'vjmk': [ か, ゕ, き, く, け, ゖ, こ, カ, ヵ, キ, ク, ケ, ヶ, コ ]
'vjmg': [ が, ぎ, ぐ, げ, ご, ガ, ギ, グ, ゲ, ゴ ]
'vjms': [ さ, し, す, せ, そ, サ, シ, ス, セ, ソ ]
'vjmz': [ ざ, じ, ず, ぜ, ぞ, ザ, ジ, ズ, ゼ, ゾ ]
'vjmt': [ た, ち, つ, っ, て, と, タ, チ, ツ, ッ, テ, ト ]
'vjmd': [ だ, ぢ, づ, で, ど, ダ, ヂ, ヅ, デ, ド ]
'vjmn': [ な, に, ぬ, ね, の, ん, ナ, ニ, ヌ, ネ, , ン ]
'vjmh': [ は, ひ, ふ, へ, ほ, ハ, ヒ, フ, ヘ, ホ ]
'vjmb': [ ば, び, ぶ, べ, ぼ, バ, ビ, ブ, ベ, ボ ]
'vjmp': [ ぱ, ぴ, ぷ, ぺ, ぽ, パ, ピ, プ, ペ, ポ ]
'vjmm': [ ま, み, む, め, も, マ, ミ, ム, メ, モ ]
'vjmy': [ や, ゃ, ゆ, ゅ, よ, ょ, ヤ, ャ, ユ, ュ, ヨ, ョ ]
'vjmr': [ ら, り, る, れ, ろ, ラ, リ, ル, レ, ロ ]
'vjmw': [ わ, ゐ, ゑ, を, ワ, ヰ, ヱ, ヲ ]
'vjma': [ あ, か, が, さ, ざ, た, だ, な, は, ば, ぱ, ま, や, ら, わ, ア, カ, ガ, サ, ザ, タ, ダ, ナ, ハ, バ, パ, マ, ヤ, ラ, ワ ]
'vjmi': [ い, き, ぎ, し, じ, ち, ぢ, に, ひ, び, ぴ, み, り, ゐ, イ, キ, ギ, シ, ジ, チ, ヂ, ニ, ヒ, ビ, ピ, ミ, リ, ヰ ]
'vjmu': [ う, く, ぐ, す, ず, つ, づ, ぬ, ふ, ぶ, ぷ, む, る, ウ, ク, グ, ス, ズ, ツ, ヅ, ヌ, フ, ブ, プ, ム, ル ]
'vjme': [ え, け, げ, せ, ぜ, て, で, ね, へ, べ, ぺ, め, れ, ゑ, エ, ケ, ゲ, セ, ゼ, テ, デ, ネ, ヘ, ベ, ペ, メ, レ, ヱ ]
'vjmo': [ お, こ, ご, そ, ぞ, と, ど, の, ほ, ぼ, ぽ, も, ろ, を, オ, コ, ゴ, ソ, ゾ, ト, ド, , ホ, ボ, ポ, モ, ロ, ヲ ]
#假名+圈
'vjmq': [ ㋐, ㋑, ㋒, ㋓, ㋔, ㋕, ㋖, ㋗, ㋘, ㋙, ㋚, ㋛, ㋜, ㋝, ㋞, ㋟, ㋠, ㋡, ㋢, ㋣, ㋤, ㋥, ㋦, ㋧, ㋨, ㋩, ㋪, ㋫, ㋬, ㋭, ㋮, ㋯, ㋰, ㋱, ㋲, ㋳, ㋴, ㋵, ㋶, ㋷, ㋸, ㋹, ㋺, ㋻, ㋼, ㋽, ㋾ ]
#假名+半角
'vjmbj': [ ア, ァ, イ, ィ, ウ, ゥ, エ, ェ, オ, ォ, カ, キ, ク, ケ, コ, サ, シ, ス, セ, ソ, タ, チ, ツ, ッ, テ, ト, ナ, ニ, ヌ, ネ, ノ, ハ, ヒ, フ, ヘ, ホ, マ, ミ, ム, メ, モ, ヤ, ャ, ユ, ュ, ヨ, ョ, ラ, リ, ル, レ, ロ, ワ, ヲ, ン, ・, ー, ゙, ゚ ]
#韩文
'vhw': [ ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ ]
#韩文+圈v弧
'vhwq': [ ㉠, ㉡, ㉢, ㉣, ㉤, ㉥, ㉦, ㉧, ㉨, ㉩, ㉪, ㉫, ㉬, ㉭, ㉮, ㉯, ㉰, ㉱, ㉲, ㉳, ㉴, ㉵, ㉶, ㉷, ㉸, ㉹, ㉺, ㉻, ㉼, ㉽, ㉾, ㉿ ]
'vhwh': [ ㈀, ㈁, ㈂, ㈃, ㈄, ㈅, ㈆, ㈇, ㈈, ㈉, ㈊, ㈋, ㈌, ㈍, ㈎, ㈏, ㈐, ㈑, ㈒, ㈓, ㈔, ㈕, ㈖, ㈗, ㈘, ㈙, ㈚, ㈛, ㈜, ㈝, ㈞ ]
# 以下开始为自己添加的
'vaa': [🐶, 🐮, 🐵, 🙈, 🙉, 🙊, 🐒, 🐔, 🐴, 🐷, 🐽, 🐭, 🦐, 🦀, 🐢, 🐱, 🐹, 🐰, 🐻, 🐼, 🐨, 🐧, 🐦, 🐤, 🐣, 🐥, 🐯, 🦁, 🐸, 🐙, 🦆, 🦅, 🦉, 🦇, 🐺, 🐗, 🦄, 🐝, 🐛, 🦋, 🐌, 🐞, 🐜, 🕷, 🦂, 🐍, 🦎, 🦑, 🐠, 🐟, 🐡, 🐬, 🐳, 🐊, 🐆, 🐅, 🐃, 🐂, 🐄, 🐪, 🐫, 🐘, 🦏, 🦍, 🐐, 🐏, 🐑, 🐎, 🐖, 🐀, 🐁, 🐓, 🦃, 🕊, 🐕, 🐩, 🐈, 🐇, 🐿]
'vss': [👌, 👍, 👎, 👊, 🤝, ✌️, 💪, 🙏, ✊, 👏, 👋, 🤞, ✋, 🤚, 🖖, 🤙, 🖕, 🤟, ☝️, 👆, 👇, 👈, 👉, 🤛, 🤜, 🤲, 🤘, 🙌, 👐, ✍️, 💅]
'vdd': [😂, ☺️, 😏, 😒, 🤔, 😳, 😔, 😱, 😭, 🙈️, 💩, 😀, 😁, 🤣, 😄, 😅, 😆, 😇, 😉, 😊, 🙂, 🙃, 😋, 😌, 😍, 😘, 😙, 😜, 😝, 🤑, 🤓, 😎, 🤗, 😶, 😑, 🙄, 😞, 😟, 😠, 😡, 😕, ☹️, 😣, 😖, 😫, 😤, 😮, 😨, 😰, 😯, 😦, 😢, 😥, 😪, 😓, 🤤, 😲, 🤥, 🤢, 🤧, 🤐, 😷, 🤒, 🤕, 😴, 😃, 😗, 😚, 😛, 🙁, 😩, 😐, 😧, 😵, 😬, 🤪, 🤨, 🧐, 🤩, 🤬, 🤯, 🤭, 🤫, 🤮, 🤡, 🤠, 😈, 👿, 👻, 💀, 👽]
'vff': [½, ⅓, ⅔, ¼, ¾, ⅒, ‰]
'vzz': [⌘, ⌥, ⇧, ⌃, ⎋, ⇪, , ⌫, ⌦, ↩︎, ⏎, ␣, ⏏, ⇟, ⇞]
'vxx': [, ×, ✱, ★, ☆, ✩, ✧, ❋, ❊, ❉, ❈, ❅, ✿, ✲]
'vcc': [©, ®, ℗, ⓘ, ℠, ™, ℡, ␡, ♂, ♀, ☉, ☊, ☋, ☌, ☍, ☐, ☑︎, ☒, ☜, ☝, ☞, ☟, ✎, ✄, ♻, ⚐, ⚑, ⚠]
'vvv': [👌, 👍, 😂, 😅, 😡, 😮, 😱, 😭, 😘, 😰, 💩]
# 键盘符号
'vcmd': [⌘] # 单个的可以不加[]
'vctrl': [⌃]
'vopt': [⌥]
'vshift': [⇧]
'vcap': [⇪]
'vreturn': [⏎]
'venter': [⏎]
'vspace': [␣]
'vbackspace': [⌫]
'vdel': [⌦]
'vescape': [⎋]
'veject': [⏏]
# 其他
'vshang': [↑, ⬆️]
'vxia': [↓, ⬇️]
'vzuo': [←, ⬅️]
'vyou': [→, ➡️, 'V 友']
'vzuoshang': [↖]
'vyoushang': [↗]
'vzuoxia': [↙]
'vyouxia': [↘]
'vzuoyou': [↔︎, ⇔, ⇋]
'vdian': [·]
'vjgh': [·]
'vgenhao': [√]
'vdui': [✓, ✔, ✅]
'vcuo': [✗, ✘, ❎, ❌]
'vcheng': [×]
'vchu': [÷]
'vxiaoyu': [<, ≤]
'vdayu': ['>', ≥]
'vbudeng': [≠]
'vbudengyu': [≠]
'vssd': [°C]
'vhsd': [°F]
'vdu': [°, °C, °F]
'vpi': [π]
'vpai': [π]
'vwanzi': [卍]
'vnacui': [卐]
'vzhengfu': [±]
'vzhengfuhao': [±]
'vnian': [廿]
'vsa': [卅]
'vxi': [卌]
'vbai': [佰]
'vqian': [仟]
'vyuan': [圆]

535
weasel.custom.yaml Executable file
View File

@ -0,0 +1,535 @@
patch:
style:
# 选择皮肤
color_scheme: psionics
font_face: Microsoft YaHei
font_point: 14
horizontal: false
fullscreen: false
inline_preedit: false
preedit_type: composition
display_tray_icon: false
label_format: "%s."
layout:
min_width: 160
min_height: 0
border_width: 3
margin_x: 12
margin_y: 12
spacing: 10
candidate_spacing: 5
hilite_spacing: 4
hilite_padding: 2
round_corner: 4
# 皮肤列表
preset_color_schemes:
aqua:
name: 碧水Aqua
author: 佛振 <chen.sst@gmail.com>
text_color: 0x000000
back_color: 0xeceeee
border_color: 0xe0e0e0
hilited_text_color: 0x000000
hilited_back_color: 0xd4d4d4
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0xfa3a0a
azure:
name: 青天Azure
author: 佛振 <chen.sst@gmail.com>
text_color: 0xffe8ca
candidate_text_color: 0xfff8ee
back_color: 0x8b4e01
border_color: 0x8b4e01
hilited_text_color: 0xfff8ee
hilited_back_color: 0x8b4e01
hilited_candidate_text_color: 0x7ffeff
hilited_candidate_back_color: 0xa95e01
comment_text_color: 0xc69664
luna:
name: 明月Luna
author: 佛振 <chen.sst@gmail.com>
text_color: 0x000000
back_color: 0xffffff
border_color: 0xcccccc
hilited_text_color: 0x000000
hilited_back_color: 0x7fffff
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0x000000
ink:
name: 墨池Ink
author: 佛振 <chen.sst@gmail.com>
text_color: 0x000000
back_color: 0xffffff
border_color: 0x000000
hilited_text_color: 0x000000
hilited_back_color: 0xdddddd
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0x000000
lost_temple:
name: 孤寺Lost Temple
author: 佛振 <chen.sst@gmail.com>, based on ir_black
text_color: 0xe8f3f6
back_color: 0x444444
border_color: 0x444444
hilited_text_color: 0x82e6ca
hilited_back_color: 0x222222
hilited_candidate_text_color: 0x000000
hilited_candidate_back_color: 0x82e6ca
dark_temple:
name: 暗堂Dark Temple
author: 佛振 <chen.sst@gmail.com>, based on ir_black
text_color: 0x92f6da
candidate_text_color: 0xd8e3e6
back_color: 0x222222
border_color: 0x222222
hilited_text_color: 0xffcf9a
hilited_back_color: 0x222222
hilited_candidate_text_color: 0x92f6da
hilited_candidate_back_color: 0x333333
comment_text_color: 0x606cff
starcraft:
name: 星際我爭霸StarCraft
author: Contralisk <contralisk@gmail.com>, original artwork by Blizzard Entertainment
text_color: 0xccaa88
candidate_text_color: 0x30bb55
back_color: 0x000000
border_color: 0x1010a0
hilited_text_color: 0xfecb96
hilited_back_color: 0x000000
hilited_candidate_text_color: 0x60ffa8
hilited_candidate_back_color: 0x000000
google:
name: 谷歌Google
author: skoj <skoj@qq.com>
text_color: 0x666666
candidate_text_color: 0x000000
back_color: 0xFFFFFF
border_color: 0xE2E2E2
hilited_text_color: 0x000000
hilited_back_color: 0xFFFFFF
hilited_candidate_text_color: 0xFFFFFF
hilited_candidate_back_color: 0xCE7539
solarized_rock:
name: 曬經石Solarized Rock
author: "Aben <tntaben@gmail.com>, based on Ethan Schoonover's Solarized color scheme"
back_color: 0x362b00
border_color: 0x362b00
text_color: 0x009985
hilited_text_color: 0x98a12a
candidate_text_color: 0x969483
hilited_candidate_text_color: 0xffffff
hilited_candidate_back_color: 0x8236d3
tintin:
name: "丁丁/ Tintin"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0xd99500
border_color: 0xd99500
label_color: 0xffffff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_text_color: 0xf7d891
hilited_back_color: 0xd99500
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x2164f1
dota_2:
name: "DOTA 2"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x120f10
border_color: 0x120f10
label_color: 0x5c758f
hilited_text_color: 0x1841dd
hilited_back_color: 0x120f10
candidate_text_color: 0x5c758f
comment_text_color: 0x5c758f
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x1841dd
brasil:
name: "笆悉Brasil"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x559311
border_color: 0x559311
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x7d3617
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x16c7f7
doraemon:
name: "銅鑼衛門Doraemon"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x1200e5
back_color: 0xffffff
border_color: 0xe89f00
label_color: 0xe89f00
hilited_text_color: 0xffffff
hilited_back_color: 0x1200e5
candidate_text_color: 0xe89f00
comment_text_color: 0xe89f00
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0xe89f00
espagna:
name: "埃斯巴尼亞España"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x230dc3
border_color: 0x230dc3
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x2cb5f7
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x2cb5f7
gholabok:
name: "胡蘿菔Gholabok"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x2939e8
border_color: 0x2939e8
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x437b00
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x3d6ded
kuma_shuzboz:
name: "熊出沒Kuma Shuzboz"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x000000
back_color: 0x2db6f8
border_color: 0x2db6f8
label_color: 0xffffff
hilited_text_color: 0x2db6f8
hilited_back_color: 0xffffff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x000000
kuon:
name: "琨Kuon"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x70b33e
border_color: 0x70b33e
label_color: 0xffffff
hilited_text_color: 0x70b33e
hilited_back_color: 0xffffff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0x70b33e
hilited_comment_text_color: 0x70b33e
hilited_candidate_back_color: 0xffffff
macau:
name: "澳門Macau"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x00d9ff
back_color: 0x81a300
border_color: 0x81a300
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x00d9ff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0x00d9ff
hilited_comment_text_color: 0x00d9ff
hilited_candidate_back_color: 0xffffff
nba:
name: "NBA"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0xb76a00
border_color: 0xb76a00
label_color: 0xffffff
hilited_text_color: 0x541ed7
hilited_back_color: 0xffffff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x541ed7
ps4:
name: "遊驛四PS4"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x000000
border_color: 0x000000
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x575759
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0xe89f00
skype:
name: "斯蓋普Skype"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0xefad00
border_color: 0xefad00
label_color: 0xffffff
hilited_text_color: 0xefad00
hilited_back_color: 0xffffff
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xefad00
hilited_comment_text_color: 0xefad00
hilited_candidate_back_color: 0xffffff
xbox_silver:
name: "銀色叉盒Xbox Silver"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x1fc28d
back_color: 0xefeeee
border_color: 0xefeeee
label_color: 0x5bf0b5
hilited_text_color: 0xffffff
hilited_back_color: 0x5bf0b5
candidate_text_color: 0x1fc28d
comment_text_color: 0x1fc28d
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x448c28
youtube:
name: "YouTube"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x000000
back_color: 0xdedede
border_color: 0xdedede
label_color: 0x000000
hilited_text_color: 0x230dc3
hilited_back_color: 0xffffff
candidate_text_color: 0x000000
comment_text_color: 0x000000
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x230dc3
so_young:
name: "致青春So Young"
author: "五磅兔 <zcunlin@foxmail.com>"
text_color: 0x8236d3
back_color: 0xe3f6fd
border_color: 0xd5e8ee
label_color: 0xa1a193
candidate_text_color: 0x837b65
comment_text_color: 0xd28b26
hilited_text_color: 0x969483
hilited_back_color: 0xd5e8ee
hilited_candidate_text_color: 0xd5e8ee
hilited_comment_text_color: 0xd5e8ee
hilited_candidate_back_color: 0x98a12a
smurfs:
name: "藍精靈Smurfs"
author: "skoj <skoj@qq.com>"
text_color: 0xffffff
back_color: 0xbf7817
border_color: 0xf5ede0
label_color: 0xbf7817
hilited_text_color: 0xdbbc6d
hilited_back_color: 0xbf7817
candidate_text_color: 0xf6f6f6
comment_text_color: 0xf6f6f6
hilited_candidate_text_color: 0xf6f6f6
hilited_comment_text_color: 0xf6f6f6
hilited_candidate_back_color: 0xdbbc6d
wii:
name: "Wii"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0x575759
back_color: 0xefefef
border_color: 0xefefef
label_color: 0xcac9c8
hilited_text_color: 0xffcc33
hilited_back_color: 0xefefef
candidate_text_color: 0x575759
comment_text_color: 0xcac9c8
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0xffcc33
android:
name: "安卓Android"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x99731c
border_color: 0x99731c
label_color: 0xc18835
hilited_text_color: 0x50c4a8
hilited_back_color: 0x99731c
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x50c4a8
cool_breeze:
name: "清風Cool Breeze"
author: "skoj <skoj@qq.com>"
text_color: 0x0000FF
back_color: 0xFFFBFB
border_color: 0xFFAAAA
hilited_text_color: 0x0000CE
hilited_back_color: 0xFFFBFB
candidate_text_color: 0x009100
hilited_candidate_text_color: 0x6F003A
hilited_candidate_back_color: 0xFFD6AC
google_plus:
name: "Google+"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xcac9c8
back_color: 0xffffff
border_color: 0x394bdd
label_color: 0xcac9c8
hilited_text_color: 0x394bdd
hilited_back_color: 0xffffff
candidate_text_color: 0x394bdd
comment_text_color: 0xcac9c8
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x394bdd
modern_warfare:
name: "現代戰爭Modern Warfare"
author: P1461
text_color: 0x14bc70
back_color: 0x0a1b0d
border_color: 0x4bad83
hilited_text_color: 0xfbfdfc
hilited_back_color: 0x030e06
candidate_text_color: 0xabfedc
comment_text_color: 0xfcfdfb
hilited_candidate_text_color: 0xabfedc
hilited_candidate_back_color: 0x676f63
brisk:
name: "輕盈Brisk"
author: "skoj <skoj@qq.com>"
text_color: 0x2238dc
back_color: 0xffffff
border_color: 0x333333
hilited_text_color: 0x2238dc
hilited_back_color: 0xffffff
candidate_text_color: 0x575757
hilited_candidate_text_color: 0x2238dc
hilited_candidate_back_color: 0xffffff
starcraft_ii:
name: "星際爭霸ⅡStarCraft Ⅱ"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x29190a
border_color: 0x534b46
label_color: 0xffffff
hilited_text_color: 0xffffff
hilited_back_color: 0x17100a
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0xefad1e
steam:
name: "Steam"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xcd8c52
back_color: 0x141617
border_color: 0x353638
label_color: 0xffffff
hilited_text_color: 0xc9cfd1
hilited_back_color: 0x141617
candidate_text_color: 0xffffff
comment_text_color: 0xa7a7a9
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xa7a7a9
hilited_candidate_back_color: 0x594231
flypy:
# description: |
# 小鹤飞扬:白底蓝字,红色高亮。
# 根据小鹤双拼官网图片制作
# http://www.flypy.com/images/mr.png
name: "小鹤飞扬flypy"
author: "Pal.lxk <Pal.lxk@gmail.com>"
text_color: 0x000000
back_color: 0xffffff
border_color: 0xc6c6c6
label_color: 0xff8000
hilited_text_color: 0xff8000
hilited_back_color: 0xffffff
candidate_text_color: 0xff8000
comment_text_color: 0xff8000
hilited_candidate_text_color: 0x0000b0
hilited_comment_text_color: 0x0000b0
hilited_candidate_back_color: 0xffffff
metroblue:
name: "现代蓝Metro Blue"
author: "Prcuvu <prcuvu@gmail.com>"
text_color: 0x000000
back_color: 0xffffff
border_color: 0xd77800
label_color: 0x838383
hilited_text_color: 0x000000
hilited_back_color: 0xffffff
candidate_text_color: 0x000000
comment_text_color: 0x000000
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0xd77800
hilited_label_color: 0xffffff
psionics:
name: 幽能Psionics
author: 雨過之後、佛振
text_color: 0xc2c2c2
back_color: 0x444444
border_color: 0x444444
candidate_text_color: 0xeeeeee
hilited_text_color: 0xeeeeee
hilited_back_color: 0x444444
hilited_candidate_label_color: 0xfafafa
hilited_candidate_text_color: 0xfafafa
hilited_candidate_back_color: 0xd8bf00
comment_text_color: 0x808080
hilited_comment_text_color: 0x444444

BIN
zh-hans-t-essay-bgw.gram Executable file

Binary file not shown.