├── .gitattributes
├── .github
└── workflows
│ └── update-dicts.yaml
├── .gitignore
├── LICENSE
├── README.md
├── custom_phrase.txt
├── default.yaml
├── dicts
├── emoji.dict.yaml
├── moegirl.dict.yaml
├── simp-ext.dict.yaml
├── simp.dict.yaml
├── sogou_minecraft.dict.yaml
├── sogou_net.dict.yaml
├── sogou_touhou.dict.yaml
├── thuocl_IT.dict.yaml
├── thuocl_animal.dict.yaml
├── thuocl_caijing.dict.yaml
├── thuocl_food.dict.yaml
├── thuocl_idiom.dict.yaml
├── thuocl_medical.dict.yaml
└── thuocl_renmingdiming.dict.yaml
├── extended.dict.yaml
├── lua
├── candidate_sorting
│ ├── long_phrase_first.lua
│ ├── single_char_first.lua
│ └── single_char_only.lua
├── date_translator.lua
├── select_character.lua
└── unicode_input.lua
├── lufs_dpy.schema.yaml
├── lufs_flypy.schema.yaml
├── lufs_mspy.schema.yaml
├── lufs_pinyin.schema.yaml
├── lufs_pyjj.schema.yaml
├── lufs_symbols.yaml
├── opencc
├── emoji.json
└── emoji_word.txt
├── squirrel.yaml
├── tools
├── emoji2dict.py
├── patch
│ └── enable_ascii.yaml
├── recipes
│ ├── enable_ascii.recipe.yaml
│ ├── install.recipe.yaml
│ └── update.recipe.yaml
├── requirements.txt
├── run.py
├── scel2dict.py
├── update.py
├── update_sogou.py
└── util.py
├── weasel.yaml
└── zh-hans-t-essay-bgw.gram
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 | *.gram binary
3 |
--------------------------------------------------------------------------------
/.github/workflows/update-dicts.yaml:
--------------------------------------------------------------------------------
1 | name: Update Dicts
2 | on:
3 | schedule:
4 | - cron: "0 0 * * 1"
5 | workflow_dispatch:
6 |
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 | if: github.repository == 'LufsX/rime'
11 |
12 | steps:
13 | - uses: actions/checkout@v4
14 | with:
15 | fetch-depth: 1
16 |
17 | - name: Set up Python
18 | uses: actions/setup-python@v4
19 | with:
20 | python-version: "3.12"
21 | cache: "pip"
22 | cache-dependency-path: "tools/requirements.txt"
23 |
24 | - name: Install dependencies
25 | run: pip install -r tools/requirements.txt
26 |
27 | - name: Update Dicts
28 | run: |
29 | python tools/run.py
30 |
31 | - name: Commit and Push
32 | run: |
33 | git config user.name 'github-actions[bot]'
34 | git config user.email 'github-actions[bot]@users.noreply.github.com'
35 |
36 | CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
37 | echo "Current branch: $CURRENT_BRANCH"
38 |
39 | git add ./dicts/* ./opencc/*
40 |
41 | # Check if there are changes to commit
42 | if git diff --cached --quiet; then
43 | echo "No changes detected in the dictionaries"
44 | exit 0
45 | else
46 | echo "Changes detected, committing"
47 | git commit -m "update: dicts on $(date +'%Y-%m-%d')"
48 | git push origin $CURRENT_BRANCH
49 | fi
50 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | *.custom.yaml
3 | .DS_Store
4 | /*.userdb/
5 | /build/
6 | /rime.wiki/
7 | /sync/
8 | /temp/
9 | /test/
10 | __pycache__
11 | cache*
12 | installation.yaml
13 | sync
14 | user.yaml
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [Rime](https://blog.isteed.cc/post/rime-2022/)
2 |
3 | # 预览
4 |
5 | 
6 | 
7 |
8 | 
9 | 
10 |
11 | # 使用
12 |
13 | 安装方法见 [仓库 Wiki](https://github.com/LufsX/rime/wiki/安装输入法方案) 或见 [我的 Rime 配置文件](https://blog.isteed.cc/post/rime-2022/#安装)~
14 |
15 | # 定制
16 |
17 | 定制方法见 [仓库 Wiki](https://github.com/LufsX/rime/wiki/定制指南) 及 [鼠须管配置使用](https://blog.isteed.cc/post/squirrel-customization-2022/)~
18 |
19 | # 特性
20 |
21 | - 全拼 + 常见双拼
22 | - 支持常见的模糊音
23 | - 支持 Emoji 输入
24 | - 「朙月拼音」支持按键纠错与容错拼写
25 | - 快捷输入(日期 `date`,星期 `week`,时间 `time`,时间戳 `timestamp` 等)
26 | - 以词定字
27 | - 好看的皮肤~
28 | - 详见 [仓库 Wiki]() 或 [我的 Rime 配置文件](https://blog.isteed.cc/post/rime-2022/#皮肤)~
29 |
30 | ---
31 |
32 | - 词库总大小仅 `12MB`
33 | - 极简的 8105 简体字典
34 | - 自带长句模型
35 | - 全简体词库
36 | - THUOCL 词库
37 | - 萌娘百科词库
38 | - 部分搜狗词库
39 | - 支持自定义词典(自造词)
40 |
41 | ---
42 |
43 | - macOS 可使用 `Caps_Lock` 切换系统英文输入法
44 | - Windows 默认 `Shift_R` 切换中英文输入(需按照安装说明取消注释)
45 | - 默认四候选项,便于选词
46 | - 按键绑定
47 | - ;:二选
48 | - ':三选
49 | - Tab / +:下一页
50 | - Shift + Tab / -:上一页
51 | - [:选中词组的第一个字
52 | - ]:选中词组的最后一个字
53 | - 四种候选排序选择
54 | - 详见 [仓库 Wiki](https://github.com/LufsX/rime/wiki/候选排序)
55 |
56 | # 待办
57 |
58 | - [x] 更新搜狗词库(已实现 Github Action 自动更新)
59 | - [x] 添加深色主题
60 | - [x] 添加 Emoji 支持
61 | - [x] ~~添加「[同文输入法](https://github.com/osfans/trime)」支持~~
62 | - [x] 添加模糊拼音支持
63 | - [x] 更好的适配「小狼毫」(Thanks [@luminosara](https://github.com/LufsX/rime/pull/22)、[@fbewivpjsbsby](https://github.com/LufsX/rime/discussions/29))
64 | - [x] 更多双拼方案的支持
65 | - [x] ~~更好的适配「同文输入法」~~ [fcitx5-android](https://github.com/fcitx5-android/fcitx5-android) 支持~
66 | - [x] 脚本自动部署/更新(使用 [东风破 /plum/](https://github.com/rime/plum))
67 | - [x] 已有主题的深色支持
68 | - [x] fcitx5-rime 支持(发现本来就适配的很完善,不需要改东西)
69 | - [ ] 优化中文单字词库可能的缺字
70 | - [ ] 更好的词库与词频?
71 | - [ ] 反查支持
72 |
73 | 欢迎提 ISSUE/PR/DISCUSSIONS 哈~
74 |
75 | # 感谢/参考
76 |
77 | - [BlindingDark/rime-lua-select-character](https://github.com/BlindingDark/rime-lua-select-character)
78 | - [KyleBing/rime-wubi86-jidian](https://github.com/KyleBing/rime-wubi86-jidian/)
79 | - [iDvel/rime-ice](https://github.com/iDvel/rime-ice)
80 | - [lotem/luna_pinyin.custom.yaml](https://gist.github.com/lotem/2320943)
81 | - [placeless/squirrel_config](https://github.com/placeless/squirrel_config)
82 | - [rime/plum](https://github.com/rime/plum/issues/4)
83 | - [rime/rime-prelude](https://github.com/rime/rime-prelude)
84 | - [rime/squirrel](https://github.com/rime/squirrel)
85 | - [rime/weasel](https://github.com/rime/weasel)
86 | - [thunlp/THUOCL](https://github.com/thunlp/THUOCL)
87 | - [搜狗词库](https://pinyin.sogou.com/dict/)
88 |
--------------------------------------------------------------------------------
/custom_phrase.txt:
--------------------------------------------------------------------------------
1 | # Rime table
2 | # coding: utf-8
3 | #
4 | # 请将该文件以UTF-8编码保存为
5 | # Rime用户文件夹/custom_phrase.txt
6 | #
7 | # 码表各字段以制表符(Tab)分隔
8 | # 顺序为:文字、编码、权重(决定重码的次序、可选)
9 | #
10 | # 虽然文本码表编辑较为方便,但不适合导入大量条目
11 |
12 | 中州韵输入法引擎 rime 2
13 | https://rime.im/ rime 1
14 | Rime rime 3
15 | ⌘ cmd
16 | ⌘ command
17 | ⌃ ctl
18 | ⌃ control
19 | ⌥ opt
20 | ⌥ option
21 | ⇧ shift
22 |
23 | Android android
24 | Apple apple
25 | Apple ID appleid
26 | Clash clash
27 | Cloudflare cloudflare
28 | Cloudflare Workers cloudflareworkers
29 | CSS css
30 | Dropbox dropbox
31 | Docker docker
32 | GBK gbk
33 | GitHub github
34 | Google google
35 | Linux linux
36 | HTML html
37 | iCloud icloud
38 | iMac imac
39 | iOS ios
40 | iPad ipad
41 | iPad ipad
42 | iPhone iphone
43 | iPhone Xʀ iphonexr
44 | iPod ipod
45 | IPTV iptv
46 | IPv4 ipv
47 | IPv6 ipv
48 | iTunes itunes
49 | Java java
50 | JavaScript javascript
51 | jQuery jquery
52 | Linux linux
53 | Mac mac
54 | Mac App Store mas
55 | MacBook macbook
56 | MacBook Air mba
57 | MacBook Pro mbp
58 | macOS macos 8
59 | macOS Sequoia macos 7
60 | macOS Sonoma macos 6
61 | macOS Ventura macos 5
62 | macOS Monterey macos 4
63 | macOS Catalina macos 3
64 | macOS Mojave macos 2
65 | macOS High Sierra macos 1
66 | Magisk magisk
67 | Minecraft minecraft
68 | MySQL mysql
69 | Objective-C ojbc
70 | OneDrive onedrive
71 | OS X osx
72 | Pixel pixel
73 | Python python
74 | Quantumult quantumult
75 | Ruby ruby
76 | Rust rust
77 | SQL sql
78 | Stash stash
79 | Surge surge
80 | Swift swift
81 | Tailscale tailscale
82 | TypeScript typescript
83 | T恤 txu
84 | UTF-8 utfba
85 | U盘 upj
86 | WeChat wechat
87 | Wi-Fi wifi
88 | Windows win
89 | Windows windows
90 | X-Ray xray
91 | Xbox xbox
92 | Xbox One xboxone
93 | YouTube youtube
94 | ZeroTier zerotier
95 |
--------------------------------------------------------------------------------
/default.yaml:
--------------------------------------------------------------------------------
1 | # Rime default settings
2 | # encoding: utf-8
3 |
4 | config_version: "2025-04-25"
5 |
6 | schema_list:
7 | - schema: lufs_flypy # 小鹤双拼
8 | - schema: lufs_pinyin # 朙月拼音
9 | # - schema: lufs_mspy # 微软双拼
10 | # - schema: lufs_dpy # 自然码双拼
11 | # - schema: lufs_pyjj # 拼音加加双拼
12 |
13 | switcher:
14 | caption: "[方案菜单]"
15 | hotkeys:
16 | - F2
17 | save_options:
18 | - full_shape
19 | - ascii_punct
20 | - traditionalization
21 | - emoji_suggestion
22 | fold_options: true
23 | abbreviate_options: true
24 | option_list_separator: "/"
25 |
26 | menu:
27 | page_size: 4
28 | # alternative_select_labels: [ 壹, 貳, 叄, 肆, 伍, 陸, 柒, 捌, 玖, 拾 ] # 候选项序号
29 |
30 | recognizer:
31 | patterns:
32 | # 禁止部分输入的自动上屏
33 | camel: "[a-z]+[A-Z].*$" # 驼峰命名
34 | email: "^[A-Za-z][-_.0-9A-Za-z]*@.*$" # email 地址
35 | html: "^<[a-z]+>$" # HTML TAG
36 | uppercase: "[A-Z][-_+.'0-9A-Za-z]*$" # 大写开头
37 |
38 | ## URL 捕获,和逗号句号翻页有冲突
39 | url: "^(www[.]|https?:|ftp[.:]|mailto:|file:).*$|^[a-z]+[.].+$" # URL 输入
40 | url_plus: "^[a-z]+[.:].*$" # URL 输入加强版(匹配 URL 标准规范 [协议类型]://[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID])
41 |
42 | # 响应功能
43 | punct: "^/([0-9]0?|[A-Za-z]+)$" # 响应 lufs_symbols.yaml 内的输入
44 | unicode: "^U[a-f0-9]+" # 响应 Unicode
45 |
46 | ascii_composer:
47 | good_old_caps_lock: true
48 | switch_key:
49 | Shift_L: noop
50 | Shift_R: commit_code # 若启用了英文输入,可用右 Shift 切换中英输入
51 | Control_L: noop
52 | Control_R: noop # macOS 上此项可能无效(我发现我现在键盘压根没得右 Control 键,能不能用自测哈),Windows 上可自行定义
53 | Caps_Lock: commit_code
54 | Eisu_toggle: clear
55 |
56 | key_binder:
57 | select_first_character: "bracketleft" # lua 选词快捷键,选第一个字,关闭留空或删除本条
58 | select_last_character: "bracketright" # lua 选词快捷键,选最后一个字,关闭留空或删除本条
59 | bindings:
60 | # Tab / Shift + Tab 翻页
61 | - { when: has_menu, accept: Tab, send: Page_Down } # Tab 向下翻页
62 | - { when: has_menu, accept: Shift+Tab, send: Page_Up } # Shift + Tab 向上翻页
63 |
64 | # = / - 翻页
65 | - { when: has_menu, accept: equal, send: Page_Down } # = 向下翻页
66 | - { when: has_menu, accept: minus, send: Page_Up } # - 向上翻页
67 |
68 | # . / , 翻页
69 | # 和 URL 捕获正则可能有一定的冲突,需要手动注释 recognizer/patterns 下的 url 和 url_plus
70 | # - { when: has_menu, accept: period, send: Page_Down } # 句号向下翻页
71 | # - { when: has_menu, accept: comma, send: Page_Up } # 逗号向上翻页
72 |
73 | # ] / [ 翻页
74 | # 失效设置,可通过关闭/更改 lua 选词的快捷键恢复
75 | # 关闭方法,将 key_binder/select_first_character 和 key_binder/select_last_character 留空或删除
76 | # - { when: has_menu, accept: bracketright, send: Page_Down } # 右括号向下翻页
77 | # - { when: has_menu, accept: bracketleft, send: Page_Up } # 左括号向上翻页
78 |
79 | # 候选操作
80 | # ; 二选 ' 三选
81 | - { when: has_menu, accept: semicolon, send: 2 } # 输入时「;」二选
82 | # - { when: has_menu, accept: apostrophe, send: 3 } # 输入时「'」三选
83 |
84 | # Rime key bindings
85 | # numbered mode switch
86 | # - { when: always, accept: Control+Shift+1, select: .next } # 切换下一个方案
87 | # - { when: always, accept: Control+Shift+2, toggle: full_shape } # 切换全角半角
88 | # - { when: always, accept: Control+Shift+3, toggle: ascii_punct } # 切换中英标点
89 | # - { when: always, accept: Control+Shift+4, toggle: traditionalization } # 切换简繁
90 | # - { when: always, accept: Control+Shift+5, toggle: emoji_suggestion } # 切换是否显示 Emoji
91 |
92 | # Rime key bindings
93 | # emacs_editing
94 | # - { when: composing, accept: Control+p, send: Up }
95 | # - { when: composing, accept: Control+n, send: Down }
96 | # - { when: composing, accept: Control+b, send: Left }
97 | # - { when: composing, accept: Control+f, send: Right }
98 | # - { when: composing, accept: Control+a, send: Home }
99 | # - { when: composing, accept: Control+e, send: End }
100 | # - { when: composing, accept: Control+d, send: Delete }
101 | # - { when: composing, accept: Control+k, send: Shift+Delete }
102 | # - { when: composing, accept: Control+h, send: BackSpace }
103 | # - { when: composing, accept: Control+g, send: Escape }
104 | # - { when: composing, accept: Control+bracketleft, send: Escape }
105 | # - { when: composing, accept: Control+y, send: Page_Up }
106 | # - { when: composing, accept: Alt+v, send: Page_Up }
107 | # - { when: composing, accept: Control+v, send: Page_Down }
108 |
--------------------------------------------------------------------------------
/dicts/sogou_touhou.dict.yaml:
--------------------------------------------------------------------------------
1 | # Rime dictionary
2 | # encoding: utf-8
3 | # source: https://pinyin.sogou.com/dict/detail/index/50826
4 |
5 | ---
6 | name: touhou
7 | version: "2022-11-23"
8 | sort: by_weight
9 | ...
10 |
11 | 艾丽 ai li
12 | 爱丽丝 ai li si
13 | 爱丽丝玛格特罗伊德 ai li si ma ge te luo yi de
14 | 爱莲 ai lian
15 | 爱塔妮缇拉尔瓦 ai ta ni ti la er wa
16 | 安娜贝拉尔 an na bei la er
17 | 奥莲姬 ao lian ji
18 | 八坂神奈子 ba ban shen nai zi
19 | 八亿 ba yi
20 | 八意健身操 ba yi jian shen cao
21 | 八意永琳 ba yi yong lin
22 | 八云蓝 ba yun lan
23 | 八云紫 ba yun zi
24 | 稗田阿求 bai tian a qiu
25 | 白玉楼 bai yu lou
26 | 坂田合欢 ban tian he huan
27 | 北白河千百合 bei bai he qian bai he
28 | 本居小铃 ben ju xiao ling
29 | 彼岸 bi an
30 | 比那名居天子 bi na ming ju tian zi
31 | 博丽大结界 bo li da jie jie
32 | 博丽灵梦 bo li ling meng
33 | 不可思议之国 bu ke si yi zhi guo
34 | 朝仓理香子 chao cang li xiang zi
35 | 赤蛮奇 chi man qi
36 | 纯狐 chun hu
37 | 春之小径 chun zhi xiao jing
38 | 茨木华扇 ci mu hua shan
39 | 村纱水蜜 cun sha shui mi
40 | 大蛤蟆之池 da ha ma zhi chi
41 | 大空魔术 da kong mo shu
42 | 大小姐 da xiao jie
43 | 大妖精 da yao jing
44 | 弹幕 dan mu
45 | 弹幕天邪鬼 dan mu tian xie gui
46 | 地灵殿 di ling dian
47 | 地狱 di yu
48 | 丁礼田舞 ding li tian wu
49 | 东方茨歌仙 dong fang ci ge xian
50 | 东方萃梦想 dong fang cui meng xiang
51 | 东方地灵殿 dong fang di ling dian
52 | 东方绯想天 dong fang fei xiang tian
53 | 东方非想天则 dong fang fei xiang tian ze
54 | 东方封魔录 dong fang feng mo lu
55 | 东方风神录 dong fang feng shen lu
56 | 东方绀珠传 dong fang gan zhu chuan
57 | 东方刚欲异闻 dong fang gang yu yi wen
58 | 东方怪绮谈 dong fang guai qi tan
59 | 东方鬼形兽 dong fang gui xing shou
60 | 东方虹龙洞 dong fang hong long dong
61 | 东方红魔乡 dong fang hong mo xiang
62 | 东方花映冢 dong fang hua ying zhong
63 | 东方花映塚 dong fang hua ying zhong
64 | 东方幻想乡 dong fang huan xiang xiang
65 | 东方黄粱梦 dong fang huang liang meng
66 | 东方辉针城 dong fang hui zhen cheng
67 | 东方铃奈庵 dong fang ling nai an
68 | 东方灵异传 dong fang ling yi chuan
69 | 东方梦时空 dong fang meng shi kong
70 | 东方儚月抄 dong fang meng yue chao
71 | 东方凭依华 dong fang ping yi hua
72 | 东方求闻口授 dong fang qiu wen kou shou
73 | 东方求闻史纪 dong fang qiu wen shi ji
74 | 东方三月精 dong fang san yue jing
75 | 东方神灵庙 dong fang shen ling miao
76 | 东方深秘录 dong fang shen mi lu
77 | 东方天空璋 dong fang tian kong zhang
78 | 东方文花帖 dong fang wen hua tie
79 | 东方香霖堂 dong fang xiang lin tang
80 | 东方心绮楼 dong fang xin qi lou
81 | 东方星莲船 dong fang xing lian chuan
82 | 东方妖妖梦 dong fang yao yao meng
83 | 东方永夜抄 dong fang yong ye chao
84 | 东方智灵奇传 dong fang zhi ling qi chuan
85 | 东方紫香花 dong fang zi xiang hua
86 | 东方醉蝶华 dong fang zui die hua
87 | 对抗新闻 dui kang xin wen
88 | 多多良小伞 duo duo liang xiao san
89 | 哆来咪苏伊特 duo lai mi su yi te
90 | 二妹 er mei
91 | 二小姐 er xiao jie
92 | 二岩猯藏 er yan tuan cang
93 | 尔子田里乃 er zi tian li nai
94 | 法界 fa jie
95 | 饭纲丸龙 fan gang wan long
96 | 绯想天 fei xiang tian
97 | 废洋馆 fei yang guan
98 | 丰聪耳神子 feng cong er shen zi
99 | 风见幽香 feng jian you xiang
100 | 风神之湖 feng shen zhi hu
101 | 封兽鵺 feng shou ye
102 | 符卡 fu ka
103 | 芙兰朵露 fu lan duo lu
104 | 芙兰朵露斯卡雷特 fu lan duo lu si ka lei te
105 | 冈崎梦美 gang qi meng mei
106 | 高丽野阿吽 gao li ye a hong
107 | 宫古芳香 gong gu fang xiang
108 | 古明地觉 gu ming di jue
109 | 古明地恋 gu ming di lian
110 | 鬼人正邪 gui ren zheng xie
111 | 豪德寺三花 hao de si san hua
112 | 河城荷取 he cheng he qu
113 | 赫恩 he en
114 | 核融合炉 he rong he lu
115 | 黑谷山女 hei gu shan nv
116 | 红美铃 hong mei ling
117 | 红魔馆 hong mo guan
118 | 胡桃 hu tao
119 | 冴月麟 hu yue lin
120 | 幻梦界 huan meng jie
121 | 幻想万华镜 huan xiang wan hua jing
122 | 幻月 huan yue
123 | 黄昏酒场 huang hun jiu chang
124 | 辉夜姬 hui ye ji
125 | 魂魄妖忌 hun po yao ji
126 | 魂魄妖梦 hun po yao meng
127 | 霍青娥 huo qing e
128 | 霍瓦特洛克 huo wa te luo ke
129 | 火焰猫燐 huo yan mao lin
130 | 姬虫百百世 ji chong bai bai shi
131 | 吉吊八千慧 ji diao ba qian hui
132 | 姬海棠羽立 ji hai tang yu li
133 | 菅牧典 jian mu dian
134 | 键山雏 jian shan chu
135 | 间歇泉地下中心 jian xie quan di xia zhong xin
136 | 矜羯罗 jin jie luo
137 | 今泉影狼 jin quan ying lang
138 | 京都 jing du
139 | 旧地狱 jiu di yu
140 | 旧都 jiu du
141 | 九十九八桥 jiu shi jiu ba qiao
142 | 九十九弁弁 jiu shi jiu bian bian
143 | 九天瀑布 jiu tian pu bu
144 | 驹草山如 ju cao shan ru
145 | 菊理 ju li
146 | 卡娜 ka na
147 | 卡娜安娜贝拉尔 ka na an na bei la er
148 | 可能性空间移动船 ke neng xing kong jian yi dong chuan
149 | 堀川雷鼓 ku chuan lei gu
150 | 拉尔瓦 la er wa
151 | 蕾迪 lei di
152 | 蕾迪霍瓦特洛克 lei di huo wa te luo ke
153 | 蕾拉 lei la
154 | 蕾拉普莉兹姆利巴 lei la pu li zi mu li ba
155 | 蕾米莉亚 lei mi li ya
156 | 蕾米莉亚斯卡雷特 lei mi li ya si ka lei te
157 | 莉格露 li ge lu
158 | 莉格露奈特巴格 li ge lu nai te ba ge
159 | 骊驹早鬼 li ju zao gui
160 | 莉莉白 li li bai
161 | 莉莉卡 li li ka
162 | 莉莉卡普莉兹姆利巴 li li ka pu li zi mu li ba
163 | 里香 li xiang
164 | 莲台野夜行 lian tai ye ye xing
165 | 铃瑚 ling hu
166 | 灵魔殿 ling mo dian
167 | 铃奈庵 ling nai an
168 | 灵乌路空 ling wu lu kong
169 | 铃仙 ling xian
170 | 铃仙优昙华院因幡 ling xian you tan hua yuan yin fan
171 | 留琴 liu qin
172 | 露米娅 lu mi ya
173 | 露娜 lu na
174 | 露娜切露德 lu na qie lu de
175 | 露娜萨 lu na sa
176 | 露娜萨普莉兹姆利巴 lu na sa pu li zi mu li ba
177 | 露易兹 lu yi zi
178 | 玛艾露贝莉 ma ai lu bei li
179 | 玛艾露贝莉赫恩 ma ai lu bei li he en
180 | 玛尔其 ma er qi
181 | 玛格特罗伊德 ma ge te luo yi de
182 | 麻将神 ma jiang shen
183 | 卯酉东海道 mao you dong hai dao
184 | 梅蒂欣 mei di xin
185 | 梅蒂欣梅兰克莉 mei di xin mei lan ke li
186 | 梅露兰 mei lu lan
187 | 梅露兰普莉兹姆利巴 mei lu lan pu li zi mu li ba
188 | 魅魔 mei mo
189 | 梦殿大祀庙 meng dian da si miao
190 | 梦幻馆 meng huan guan
191 | 梦违科学世纪 meng wei ke xue shi ji
192 | 梦想夏乡 meng xiang xia xiang
193 | 梦月 meng yue
194 | 咪咪号 mi mi hao
195 | 米斯蒂娅 mi si di ya
196 | 米斯蒂娅萝蕾拉 mi si di ya luo lei la
197 | 迷途之家 mi tu zhi jia
198 | 迷途竹林 mi tu zhu lin
199 | 绵月丰姬 mian yue feng ji
200 | 绵月依姬 mian yue yi ji
201 | 冥界 ming jie
202 | 命莲寺 ming lian si
203 | 明罗 ming luo
204 | 摩多罗隐岐奈 mo duo luo yin qi nai
205 | 魔法森林 mo fa sen lin
206 | 魔界 mo jie
207 | 魔理沙的魔法书 mo li sha de mo fa shu
208 | 木花咲耶姬 mu hua xiao ye ji
209 | 纳兹琳 na zi lin
210 | 鸟船 niao chuan
211 | 鸟船遗迹 niao chuan yi ji
212 | 牛崎润美 niu qi run mei
213 | 诺蕾姬 nuo lei ji
214 | 帕秋莉 pa qiu li
215 | 帕秋莉诺蕾姬 pa qiu li nuo lei ji
216 | 判定点 pan ding dian
217 | 蓬莱 peng lai
218 | 蓬莱人形 peng lai ren xing
219 | 蓬莱山辉夜 peng lai shan hui ye
220 | 普莉兹姆利巴 pu li zi mu li ba
221 | 琪露诺 qi lu nuo
222 | 琪丝美 qi si mei
223 | 秦心 qin xin
224 | 清兰 qing lan
225 | 青蛙子 qing wa zi
226 | 秋静叶 qiu jing ye
227 | 秋穰子 qiu rang zi
228 | 犬走椛 quan zou hua
229 | 人间之里 ren jian zhi li
230 | 戎璎花 rong ying hua
231 | 若鹭姬 ruo lu ji
232 | 萨拉 sa la
233 | 萨丽艾尔 sa li ai er
234 | 三途川 san tu chuan
235 | 桑尼 sang ni
236 | 桑尼米尔克 sang ni mi er ke
237 | 森近霖之助 sen jin lin zhi zhu
238 | 山城高岭 shan cheng gao ling
239 | 上白泽慧音 shang bai ze hui yin
240 | 上海 shang hai
241 | 少名针妙丸 shao ming zhen miao wan
242 | 射命丸文 she ming wan wen
243 | 神绮 shen qi
244 | 神玉 shen yu
245 | 圣白莲 sheng bai lian
246 | 圣命莲 sheng ming lian
247 | 石长姬 shi chang ji
248 | 十六夜咲夜 shi liu ye xiao ye
249 | 矢田寺成美 shi tian si cheng mei
250 | 守矢神社 shou shi shen she
251 | 水江蒲岛子 shui jiang pu dao zi
252 | 水桥帕露西 shui qiao pa lu xi
253 | 四季映姬 si ji ying ji
254 | 四季映姬亚玛撒那度 si ji ying ji ya ma sa na du
255 | 四季映姬夜魔仙那度 si ji ying ji ye mo xian na du
256 | 斯卡雷特 si ka lei te
257 | 斯塔萨菲娅 si ta sa fei ya
258 | 苏格拉底 su ge la di
259 | 苏我屠自古 su wo tu zi gu
260 | 太阳花田 tai yang hua tian
261 | 饕餮尤魔 tao tie you mo
262 | 藤原妹红 teng yuan mei hong
263 | 天弓千亦 tian gong qian yi
264 | 天界 tian jie
265 | 庭渡久侘歌 ting du jiu cha ge
266 | 维纳的废墟 wei na de fei xu
267 | 未知之花魅知之旅 wei zhi zhi hua mei zhi zhi lv
268 | 物部布都 wu bu bu dou
269 | 无名之丘 wu ming zhi qiu
270 | 无缘冢 wu yuan zhong
271 | 雾之湖 wu zhi hu
272 | 西行妖 xi xing yao
273 | 仙界 xian jie
274 | 仙台四郎 xian tai si lang
275 | 香霖堂 xiang lin tang
276 | 小恶魔 xiao e mo
277 | 小兔姬 xiao tu ji
278 | 小野冢小町 xiao ye zhong xiao ding
279 | 洩矢诹访子 xie shi zou fang zi
280 | 星熊勇仪 xing xiong yong yi
281 | 续关 xu guan
282 | 玄武之泽 xuan wu zhi ze
283 | 玄爷 xuan ye
284 | 血湖 xue hu
285 | 岩笠 yan li
286 | 妖怪的树海 yao guai de shu hai
287 | 妖怪狸之森 yao guai li zhi sen
288 | 妖怪之山 yao guai zhi shan
289 | 妖精大战争 yao jing da zhan zheng
290 | 幺乐团的历史 yao yue tuan de li shi
291 | 伊吹萃香 yi chui cui xiang
292 | 一命通关 yi ming tong guan
293 | 伊奘诺物质 yi zang nuo wu zhi
294 | 因幡帝 yin fan di
295 | 寅丸星 yin wan xing
296 | 阴阳玉 yin yang yu
297 | 樱花怪道 ying hua guai dao
298 | 永江衣玖 yong jiang yi jiu
299 | 永远亭 yong yuan ting
300 | 幽谷响子 you gu xiang zi
301 | 游戏 you xi
302 | 幽玄魔眼 you xuan mo yan
303 | 玉造魅须丸 yu zao mei xu wan
304 | 宇佐见堇子 yu zuo jian jin zi
305 | 宇佐见莲子 yu zuo jian lian zi
306 | 远松 yuan song
307 | 月都 yue dou
308 | 月夜见 yue ye jian
309 | 云居一轮 yun ju yi lun
310 | 再思之道 zai si zhi dao
311 | 埴安神袿姬 zhi an shen gui ji
312 | 中有之道 zhong you zhi dao
313 | 朱鹭子 zhu lu zi
314 | 灼热地狱迹 zhuo re di yu ji
315 | 紫妈 zi ma
316 | 诹访大舞 zou fang da wu
317 |
--------------------------------------------------------------------------------
/extended.dict.yaml:
--------------------------------------------------------------------------------
1 | # Rime dictionary
2 | # encoding: utf-8
3 |
4 | ---
5 | name: extended
6 | version: "2025-01-11"
7 |
8 | import_tables:
9 | # 覆盖词频
10 | - dicts/simp # 最小拼音词典
11 |
12 | - dicts/thuocl_animal # 动物
13 | - dicts/thuocl_caijing # 财经
14 | - dicts/thuocl_food # 饮食
15 | - dicts/thuocl_idiom # 成语俗语
16 | - dicts/thuocl_IT # IT
17 | - dicts/thuocl_medical # 医学
18 | - dicts/thuocl_renmingdiming # 人名地名
19 |
20 | - dicts/simp-ext # 原字表中除单字外部分
21 | - dicts/sogou_net # 网络流行语
22 |
23 | # 一点点小小的私货,不需要的可以自行关闭~
24 | - dicts/moegirl # 萌娘百科
25 | - dicts/sogou_touhou # 东方 Project
26 | - dicts/sogou_minecraft # Minecraft 词条
27 |
28 | # emoji 补全词库
29 | - dicts/emoji
30 | ...
31 |
--------------------------------------------------------------------------------
/lua/candidate_sorting/long_phrase_first.lua:
--------------------------------------------------------------------------------
1 | --- 过滤器:最长词组和单字在先
2 | local function long_phrase_first(input)
3 | local l = {}
4 | local s = {}
5 | local c = {}
6 | local max = 1
7 | for cand in input:iter() do
8 | if (utf8.len(cand.text) > max) then
9 | max = utf8.len(cand.text)
10 | end
11 | if (utf8.len(cand.text) == 1) then
12 | table.insert(c, cand)
13 | elseif (utf8.len(cand.text) < max) then
14 | table.insert(s, cand)
15 | else
16 | table.insert(l, cand)
17 | end
18 | end
19 | for i, cand in ipairs(l) do
20 | yield(cand)
21 | end
22 | for i, cand in ipairs(c) do
23 | yield(cand)
24 | end
25 | for i, cand in ipairs(s) do
26 | yield(cand)
27 | end
28 | end
29 |
30 | return long_phrase_first
31 |
--------------------------------------------------------------------------------
/lua/candidate_sorting/single_char_first.lua:
--------------------------------------------------------------------------------
1 | --- 过滤器:单字在先
2 | local function single_char_first(input)
3 | local l = {}
4 | for cand in input:iter() do
5 | if (utf8.len(cand.text) == 1) then
6 | yield(cand)
7 | else
8 | table.insert(l, cand)
9 | end
10 | end
11 | for i, cand in ipairs(l) do
12 | yield(cand)
13 | end
14 | end
15 |
16 | return single_char_first
17 |
--------------------------------------------------------------------------------
/lua/candidate_sorting/single_char_only.lua:
--------------------------------------------------------------------------------
1 | --- 过滤器:只显示单字
2 | local function single_char_only(input)
3 | for cand in input:iter() do
4 | if (utf8.len(cand.text) == 1) then
5 | yield(cand)
6 | end
7 | end
8 | end
9 |
10 | return single_char_only
11 |
--------------------------------------------------------------------------------
/lua/date_translator.lua:
--------------------------------------------------------------------------------
1 | -- date_translator: 时间/日期快捷输入
2 | local function date_translator(input, seg)
3 | if (input == "date") then
4 | --- Candidate(type, start, end, text, comment)
5 | yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), ""))
6 | yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), ""))
7 | yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d"), ""))
8 | yield(Candidate("date", seg.start, seg._end, string.upper(os.date("%d%b%y")), ""))
9 | end
10 | if (input == "time") then
11 | --- Candidate(type, start, end, text, comment)
12 | yield(Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), ""))
13 | yield(Candidate("time", seg.start, seg._end, os.date("%H时%M分%S秒"), ""))
14 | yield(Candidate("time", seg.start, seg._end, os.date("%H%M%S"), ""))
15 | end
16 | if (input == "timestamp") then
17 | --- Candidate(type, start, end, text, comment)
18 | yield(Candidate("time", seg.start, seg._end, os.time(), ""))
19 | end
20 | if (input == "datetime") then
21 | --- Candidate(type, start, end, text, comment)
22 | yield(Candidate("datetime", seg.start, seg._end, os.date("%Y-%m-%d %H:%M:%S"), ""))
23 | yield(Candidate("datetime", seg.start, seg._end, os.date("%Y-%m-%dT%H:%M:%S+08:00"), ""))
24 | yield(Candidate("datetime", seg.start, seg._end, os.date("%Y%m%d%H%M"), ""))
25 | end
26 |
27 | -- 输入星期
28 | -- -- @JiandanDream
29 | -- -- https://github.com/KyleBing/rime-wubi86-jidian/issues/54
30 | if (input == "week") then
31 | local weekTab = {'日', '一', '二', '三', '四', '五', '六', '七'}
32 | yield(Candidate("week", seg.start, seg._end, "周" .. weekTab[tonumber(os.date("%w") + 1)], ""))
33 | yield(Candidate("week", seg.start, seg._end, "星期" .. weekTab[tonumber(os.date("%w") + 1)], ""))
34 | yield(Candidate("week", seg.start, seg._end, os.date("%A"), ""))
35 | yield(Candidate("week", seg.start, seg._end, os.date("%a"), ""))
36 | yield(Candidate("week", seg.start, seg._end, os.date("%W"), "周数"))
37 | end
38 |
39 | -- 输入月份英文
40 | if (input == "month") then
41 | yield(Candidate("month", seg.start, seg._end, os.date("%B"), ""))
42 | yield(Candidate("month", seg.start, seg._end, os.date("%b"), ""))
43 | end
44 | end
45 |
46 | return date_translator
47 |
--------------------------------------------------------------------------------
/lua/select_character.lua:
--------------------------------------------------------------------------------
1 | -- select_character: 以词定字
2 | -- 详见: https://github.com/BlindingDark/rime-lua-select-character
3 | -- 2025-04-25: 优化单字提取逻辑,处理无候选的情况
4 | -- 2025-04-27: 修正无法直接输入对应键的符号
5 | local function extract_character(s, is_first)
6 | -- 单字不处理
7 | if utf8.len(s) == 1 then
8 | return s
9 | end
10 | return is_first and s:sub(1, utf8.offset(s, 2) - 1) -- 首字
11 | or s:sub(utf8.offset(s, -1)) -- 尾字
12 | end
13 |
14 | local function select_character(key, env)
15 | local engine = env.engine
16 | local context = engine.context
17 | local config = engine.schema.config
18 | local candidate = context:get_selected_candidate()
19 |
20 | -- 检查是否处于输入状态
21 | if key:release() or (not context:is_composing() and not context:has_menu()) then
22 | return 2 -- kNoop
23 | end
24 |
25 | -- 获取按键
26 | local first_key = config:get_string('key_binder/select_first_character')
27 | local last_key = config:get_string('key_binder/select_last_character')
28 | local key_repr = key:repr()
29 |
30 | -- 检查按键并给予 is_first 标记
31 | local is_first = (key_repr == first_key)
32 | if not (is_first or key_repr == last_key) then
33 | return 2 -- kNoop
34 | end
35 |
36 | -- 如果没有已选的词,直接上屏当前输入
37 | if not candidate then
38 | engine:commit_text(context:get_commit_text())
39 | context:clear()
40 | return 1 -- kAccepted
41 | end
42 |
43 | -- 提取候选并提交
44 | local selected_char = extract_character(candidate.text, is_first)
45 | context:clear_previous_segment()
46 | engine:commit_text(context:get_commit_text() .. selected_char)
47 | context:clear()
48 | return 1 -- kAccepted
49 | end
50 |
51 | return select_character
52 |
--------------------------------------------------------------------------------
/lua/unicode_input.lua:
--------------------------------------------------------------------------------
1 | -- Unicode 输入支持
2 | -- -- @shewer
3 | -- -- https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua
4 | local MAX_UNICODE = 0x10FFFF -- Unicode 最大编码
5 | local TRIGGER_PREFIX = "U" -- 触发前缀
6 |
7 | local function unicode_input(input, seg, env)
8 | -- 快速检查有效性
9 | if not seg:has_tag("unicode") or input == '' then
10 | return
11 | end
12 |
13 | -- 匹配 Unicode 编码
14 | local ucodestr = input:match(TRIGGER_PREFIX .. "(%x+)")
15 |
16 | -- 转换为数值并检查范围
17 | local code = tonumber(ucodestr, 16)
18 | if not code then
19 | return
20 | end
21 |
22 | if code > MAX_UNICODE then
23 | yield(Candidate("unicode", seg.start, seg._end, "undefined", "超出范围"))
24 | return
25 | end
26 |
27 | -- 生成主候选项
28 | local text = utf8.char(code)
29 | yield(Candidate("unicode", seg.start, seg._end, text, string.format("U%x", code)))
30 |
31 | -- 对于较小的编码,生成附加候选项
32 | if code < 0x10000 then
33 | for i = 0, 15 do
34 | local extended_code = code * 16 + i
35 | if extended_code <= MAX_UNICODE then
36 | local extended_text = utf8.char(extended_code)
37 | yield(Candidate("unicode", seg.start, seg._end, extended_text, string.format("U%x~%x", code, i)))
38 | end
39 | end
40 | end
41 | end
42 |
43 | return unicode_input
44 |
--------------------------------------------------------------------------------
/lufs_dpy.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: lufs_dpy
6 | name: 自然码双拼
7 | version: "2025-04-25"
8 | author:
9 | - Modified by Lufs_X
10 | description: |
11 | 自然码双拼方案。
12 |
13 | switches:
14 | - name: full_shape
15 | states: [半角, 全角]
16 | - name: ascii_punct
17 | states: [。,, .,]
18 | - name: traditionalization
19 | # reset: 0 # 默认状态: 0 简体 1 繁体
20 | states: [简, 繁]
21 | - name: emoji_suggestion
22 | # reset: 1 # 默认状态: 0 关闭 1 开启
23 | states: [🈚️️, 🈶️]
24 |
25 | engine:
26 | processors:
27 | - recognizer
28 | - lua_processor@*select_character # lua 选词扩展
29 | - key_binder
30 | - speller
31 | - selector
32 | - punctuator
33 | - navigator
34 | - express_editor
35 | segmentors:
36 | - matcher
37 | - abc_segmentor
38 | - punct_segmentor
39 | - fallback_segmentor
40 | translators:
41 | - punct_translator
42 | - lua_translator@*date_translator # 动态日期时间输入
43 | - lua_translator@*unicode_input # Unicode 输入支持
44 | - table_translator@custom_phrase # 用户自定义词典
45 | - script_translator
46 | filters:
47 | - simplifier@emoji_suggestion
48 | - simplifier@traditionalize # 简繁转化
49 | - uniquifier # 去重
50 | # - lua_filter@*candidate_sorting.long_phrase_first # 最长词组和单字在先
51 | # - lua_filter@*candidate_sorting.single_char_first # 单字优先
52 | # - lua_filter@*candidate_sorting.single_char_only # 只显示单字
53 |
54 | traditionalize:
55 | option_name: traditionalization
56 | opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
57 | tips: none # 转换提示: all 显示 | char 仅单字显示 | none 不显示。
58 |
59 | emoji_suggestion:
60 | opencc_config: emoji.json
61 | option_name: emoji_suggestion
62 | tips: false
63 |
64 | speller:
65 | alphabet: zyxwvutsrqponmlkjihgfedcba/
66 | delimiter: " '"
67 | algebra:
68 | - erase/^xx$/
69 | - erase/^hm$/
70 | - erase/^m$/
71 | - erase/^n$/
72 | - erase/^ng$/
73 |
74 | # 模糊音区域
75 | # 依据个人情况修改注释~
76 | # 注释格式:键盘的输入码 -> 转化后的输入码
77 |
78 | # 声母部分
79 | # - derive/^([z])h/$1/ # z -> zh
80 | # - derive/^([z])([^h])/$1h$2/ # zh -> z
81 | # - derive/^([c])h/$1/ # c -> ch
82 | # - derive/^([c])([^h])/$1h$2/ # ch -> c
83 | # - derive/^([s])h/$1/ # s -> sh
84 | # - derive/^([s])([^h])/$1h$2/ # sh -> s
85 | # - derive/^l/n/ # n -> l
86 | # - derive/^n/l/ # l -> n
87 | # - derive/^r/l/ # l -> r
88 | # - derive/^r/y/ # y -> r
89 | # - derive/^hu$/fu/ # fu -> hu
90 | # - derive/^fu$/hu/ # hu -> fu
91 |
92 | # 韵母部分
93 | - derive/([^iu])([a])n$/$1$2ng/ # ang -> an
94 | - derive/([^iu])([a])ng$/$1$2n/ # an -> ang
95 | - derive/([e])n$/$1ng/ # eng -> en
96 | - derive/([e])ng$/$1n/ # en -> eng
97 | # - derive/([i])n$/$1ng/ # ing -> in
98 | # - derive/([i])ng$/$1n/ # in -> ing
99 | # - derive/([i])an$/$1ang/ # iang -> ian
100 | # - derive/([i])ang$/$1an/ # ian -> iang
101 | # 由于双拼特性,无需 uang <-> iang
102 |
103 | # 其它模糊音
104 | # - derive/^hui$/fei/ # fei -> hui
105 | # - derive/^fei$/hui/ # hui -> fei
106 | # - derive/^huang$/wang/ # wang -> huang
107 | # - derive/^wang$/huang/ # huang -> wang
108 | # - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng
109 |
110 | # 自然码双拼码表
111 | - derive/^([jqxy])u$/$1v/
112 | - derive/^([aoe])([ioun])$/$1$1$2/
113 | - xform/^([aoe])(ng)?$/$1$1$2/
114 | - xform/iu$/Ⓠ/
115 | - xform/[iu]a$/Ⓦ/
116 | - xform/[uv]an$/Ⓡ/
117 | - xform/[uv]e$/Ⓣ/
118 | - xform/ing$|uai$/Ⓨ/
119 | - xform/^sh/Ⓤ/
120 | - xform/^ch/Ⓘ/
121 | - xform/^zh/Ⓥ/
122 | - xform/uo$/Ⓞ/
123 | - xform/[uv]n$/Ⓟ/
124 | - xform/i?ong$/Ⓢ/
125 | - xform/[iu]ang$/Ⓓ/
126 | - xform/(.)en$/$1Ⓕ/
127 | - xform/(.)eng$/$1Ⓖ/
128 | - xform/(.)ang$/$1Ⓗ/
129 | - xform/ian$/Ⓜ/
130 | - xform/(.)an$/$1Ⓙ/
131 | - xform/iao$/Ⓒ/
132 | - xform/(.)ao$/$1Ⓚ/
133 | - xform/(.)ai$/$1Ⓛ/
134 | - xform/(.)ei$/$1Ⓩ/
135 | - xform/ie$/Ⓧ/
136 | - xform/ui$/Ⓥ/
137 | - xform/(.)ou$/$1Ⓑ/
138 | - xform/in$/Ⓝ/
139 | - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/
140 |
141 | # 简拼支持
142 | - abbrev/^(.).+$/$1/
143 |
144 | translator:
145 | dictionary: extended
146 | contextual_suggestions: true
147 | enable_completion: false
148 | max_homophones: 7
149 |
150 | preedit_format:
151 | # - xform/ // # 去掉上屏字符间空格
152 | prism: lufs_dpy
153 |
154 | grammar:
155 | language: zh-hans-t-essay-bgw
156 |
157 | punctuator:
158 | import_preset: lufs_symbols
159 |
160 | key_binder:
161 | import_preset: default
162 |
163 | recognizer:
164 | import_preset: default
165 |
166 | custom_phrase:
167 | dictionary: ""
168 | user_dict: custom_phrase
169 | db_class: stabledb
170 | enable_completion: false
171 | enable_sentence: true
172 | initial_quality: 1
173 |
--------------------------------------------------------------------------------
/lufs_flypy.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: lufs_flypy
6 | name: 小鹤双拼
7 | version: "2025-04-25"
8 | author:
9 | - double pinyin layout by 鶴
10 | - Rime schema by 佛振
11 | - Modified by Lufs_X
12 | description: |
13 | 小鹤双拼方案。
14 |
15 | switches:
16 | - name: full_shape
17 | states: [半角, 全角]
18 | - name: ascii_punct
19 | states: [。,, .,]
20 | - name: traditionalization
21 | # reset: 0 # 默认状态: 0 简体 1 繁体
22 | states: [简, 繁]
23 | - name: emoji_suggestion
24 | # reset: 1 # 默认状态: 0 关闭 1 开启
25 | states: [🈚️️, 🈶️]
26 |
27 | engine:
28 | processors:
29 | - recognizer
30 | - lua_processor@*select_character # lua 选词扩展
31 | - key_binder
32 | - speller
33 | - selector
34 | - punctuator
35 | - navigator
36 | - express_editor
37 | segmentors:
38 | - matcher
39 | - abc_segmentor
40 | - punct_segmentor
41 | - fallback_segmentor
42 | translators:
43 | - punct_translator
44 | - lua_translator@*date_translator # 动态日期时间输入
45 | - lua_translator@*unicode_input # Unicode 输入支持
46 | - table_translator@custom_phrase # 用户自定义词典
47 | - script_translator
48 | filters:
49 | - simplifier@emoji_suggestion
50 | - simplifier@traditionalize # 简繁转化
51 | - uniquifier # 去重
52 | # - lua_filter@*candidate_sorting.long_phrase_first # 最长词组和单字在先
53 | # - lua_filter@*candidate_sorting.single_char_first # 单字优先
54 | # - lua_filter@*candidate_sorting.single_char_only # 只显示单字
55 |
56 | traditionalize:
57 | option_name: traditionalization
58 | opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
59 | tips: none # 转换提示: all 显示 | char 仅单字显示 | none 不显示。
60 |
61 | emoji_suggestion:
62 | opencc_config: emoji.json
63 | option_name: emoji_suggestion
64 | tips: false
65 |
66 | speller:
67 | alphabet: zyxwvutsrqponmlkjihgfedcba/
68 | delimiter: " '"
69 | algebra:
70 | - erase/^xx$/
71 | - erase/^hm$/
72 | - erase/^m$/
73 | - erase/^n$/
74 | - erase/^ng$/
75 |
76 | # 模糊音区域
77 | # 依据个人情况修改注释~
78 | # 注释格式:键盘的输入码 -> 转化后的输入码
79 |
80 | # 声母部分
81 | # - derive/^([z])h/$1/ # z -> zh
82 | # - derive/^([z])([^h])/$1h$2/ # zh -> z
83 | # - derive/^([c])h/$1/ # c -> ch
84 | # - derive/^([c])([^h])/$1h$2/ # ch -> c
85 | # - derive/^([s])h/$1/ # s -> sh
86 | # - derive/^([s])([^h])/$1h$2/ # sh -> s
87 | # - derive/^l/n/ # n -> l
88 | # - derive/^n/l/ # l -> n
89 | # - derive/^r/l/ # l -> r
90 | # - derive/^r/y/ # y -> r
91 | # - derive/^hu$/fu/ # fu -> hu
92 | # - derive/^fu$/hu/ # hu -> fu
93 |
94 | # 韵母部分
95 | - derive/([^iu])([a])n$/$1$2ng/ # ang -> an
96 | - derive/([^iu])([a])ng$/$1$2n/ # an -> ang
97 | - derive/([e])n$/$1ng/ # eng -> en
98 | - derive/([e])ng$/$1n/ # en -> eng
99 | # - derive/([i])n$/$1ng/ # ing -> in
100 | # - derive/([i])ng$/$1n/ # in -> ing
101 | # - derive/([i])an$/$1ang/ # iang -> ian
102 | # - derive/([i])ang$/$1an/ # ian -> iang
103 | # 由于小鹤双拼特性,无需 uang <-> iang
104 |
105 | # 其它模糊音
106 | # - derive/^hui$/fei/ # fei -> hui
107 | # - derive/^fei$/hui/ # hui -> fei
108 | # - derive/^huang$/wang/ # wang -> huang
109 | # - derive/^wang$/huang/ # huang -> wang
110 | # - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng
111 |
112 | # 小鹤双拼码表
113 | - derive/^([jqxy])u$/$1v/
114 | - derive/^([aoe])([ioun])$/$1$1$2/
115 | - xform/^([aoe])(ng)?$/$1$1$2/
116 | - xform/iu$/Ⓠ/
117 | - xform/(.)ei$/$1Ⓦ/
118 | - xform/uan$/Ⓡ/
119 | - xform/[uv]e$/Ⓣ/
120 | - xform/un$/Ⓨ/
121 | - xform/^sh/Ⓤ/
122 | - xform/^ch/Ⓘ/
123 | - xform/^zh/Ⓥ/
124 | - xform/uo$/Ⓞ/
125 | - xform/ie$/Ⓟ/
126 | - xform/i?ong$/Ⓢ/
127 | - xform/ing$|uai$/Ⓚ/
128 | - xform/(.)ai$/$1Ⓓ/
129 | - xform/(.)en$/$1Ⓕ/
130 | - xform/(.)eng$/$1Ⓖ/
131 | - xform/[iu]ang$/Ⓛ/
132 | - xform/(.)ang$/$1Ⓗ/
133 | - xform/ian$/Ⓜ/
134 | - xform/(.)an$/$1Ⓙ/
135 | - xform/(.)ou$/$1Ⓩ/
136 | - xform/[iu]a$/Ⓧ/
137 | - xform/iao$/Ⓝ/
138 | - xform/(.)ao$/$1Ⓒ/
139 | - xform/ui$/Ⓥ/
140 | - xform/in$/Ⓑ/
141 | - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/
142 |
143 | # 简拼支持
144 | - abbrev/^(.).+$/$1/
145 |
146 | translator:
147 | dictionary: extended
148 | contextual_suggestions: true
149 | enable_completion: false
150 | max_homophones: 7
151 |
152 | preedit_format:
153 | # - xform/ // # 去掉上屏字符间空格
154 | prism: lufs_flypy
155 |
156 | grammar:
157 | language: zh-hans-t-essay-bgw
158 |
159 | punctuator:
160 | import_preset: lufs_symbols
161 |
162 | key_binder:
163 | import_preset: default
164 |
165 | recognizer:
166 | import_preset: default
167 |
168 | custom_phrase:
169 | dictionary: ""
170 | user_dict: custom_phrase
171 | db_class: stabledb
172 | enable_completion: false
173 | enable_sentence: true
174 | initial_quality: 1
175 |
--------------------------------------------------------------------------------
/lufs_mspy.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: lufs_mspy
6 | name: 微软双拼
7 | version: "2025-04-25"
8 | author:
9 | - Modified by Lufs_X
10 | description: |
11 | 微软双拼方案。
12 |
13 | switches:
14 | - name: full_shape
15 | states: [半角, 全角]
16 | - name: ascii_punct
17 | states: [。,, .,]
18 | - name: traditionalization
19 | # reset: 0 # 默认状态: 0 简体 1 繁体
20 | states: [简, 繁]
21 | - name: emoji_suggestion
22 | # reset: 1 # 默认状态: 0 关闭 1 开启
23 | states: [🈚️️, 🈶️]
24 |
25 | engine:
26 | processors:
27 | - recognizer
28 | - lua_processor@*select_character # lua 选词扩展
29 | - key_binder
30 | - speller
31 | - selector
32 | - punctuator
33 | - navigator
34 | - express_editor
35 | segmentors:
36 | - matcher
37 | - abc_segmentor
38 | - punct_segmentor
39 | - fallback_segmentor
40 | translators:
41 | - punct_translator
42 | - lua_translator@*date_translator # 动态日期时间输入
43 | - lua_translator@*unicode_input # Unicode 输入支持
44 | - table_translator@custom_phrase # 用户自定义词典
45 | - script_translator
46 | filters:
47 | - simplifier@emoji_suggestion
48 | - simplifier@traditionalize # 简繁转化
49 | - uniquifier # 去重
50 | # - lua_filter@*candidate_sorting.long_phrase_first # 最长词组和单字在先
51 | # - lua_filter@*candidate_sorting.single_char_first # 单字优先
52 | # - lua_filter@*candidate_sorting.single_char_only # 只显示单字
53 |
54 | traditionalize:
55 | option_name: traditionalization
56 | opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
57 | tips: none # 转换提示: all 显示 | char 仅单字显示 | none 不显示。
58 |
59 | emoji_suggestion:
60 | opencc_config: emoji.json
61 | option_name: emoji_suggestion
62 | tips: false
63 |
64 | speller:
65 | alphabet: zyxwvutsrqponmlkjihgfedcba/;
66 | delimiter: " '"
67 | algebra:
68 | - erase/^xx$/
69 | - erase/^hm$/
70 | - erase/^m$/
71 | - erase/^n$/
72 | - erase/^ng$/
73 |
74 | # 模糊音区域
75 | # 依据个人情况修改注释~
76 | # 注释格式:键盘的输入码 -> 转化后的输入码
77 |
78 | # 声母部分
79 | # - derive/^([z])h/$1/ # z -> zh
80 | # - derive/^([z])([^h])/$1h$2/ # zh -> z
81 | # - derive/^([c])h/$1/ # c -> ch
82 | # - derive/^([c])([^h])/$1h$2/ # ch -> c
83 | # - derive/^([s])h/$1/ # s -> sh
84 | # - derive/^([s])([^h])/$1h$2/ # sh -> s
85 | # - derive/^l/n/ # n -> l
86 | # - derive/^n/l/ # l -> n
87 | # - derive/^r/l/ # l -> r
88 | # - derive/^r/y/ # y -> r
89 | # - derive/^hu$/fu/ # fu -> hu
90 | # - derive/^fu$/hu/ # hu -> fu
91 |
92 | # 韵母部分
93 | - derive/([^iu])([a])n$/$1$2ng/ # ang -> an
94 | - derive/([^iu])([a])ng$/$1$2n/ # an -> ang
95 | - derive/([e])n$/$1ng/ # eng -> en
96 | - derive/([e])ng$/$1n/ # en -> eng
97 | # - derive/([i])n$/$1ng/ # ing -> in
98 | # - derive/([i])ng$/$1n/ # in -> ing
99 | # - derive/([i])an$/$1ang/ # iang -> ian
100 | # - derive/([i])ang$/$1an/ # ian -> iang
101 | # 由于双拼特性,无需 uang <-> iang
102 |
103 | # 其它模糊音
104 | # - derive/^hui$/fei/ # fei -> hui
105 | # - derive/^fei$/hui/ # hui -> fei
106 | # - derive/^huang$/wang/ # wang -> huang
107 | # - derive/^wang$/huang/ # huang -> wang
108 | # - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng
109 |
110 | # 微软双拼码表
111 | - derive/^([jqxy])u$/$1v/
112 | - derive/^([aoe])([ioun])$/$1$1$2/
113 | - xform/^([aoe])(ng)?$/$1$1$2/
114 | - xform/iu$/Ⓠ/
115 | - xform/[iu]a$/Ⓦ/
116 | - xform/er$|[uv]an$/Ⓡ/
117 | - xform/[uv]e$/Ⓣ/
118 | - xform/v$|uai$/Ⓨ/
119 | - xform/^sh/Ⓤ/
120 | - xform/^ch/Ⓘ/
121 | - xform/^zh/Ⓥ/
122 | - xform/uo$/Ⓞ/
123 | - xform/[uv]n$/Ⓟ/
124 | - xform/i?ong$/Ⓢ/
125 | - xform/[iu]ang$/Ⓓ/
126 | - xform/(.)en$/$1Ⓕ/
127 | - xform/(.)eng$/$1Ⓖ/
128 | - xform/(.)ang$/$1Ⓗ/
129 | - xform/ian$/Ⓜ/
130 | - xform/(.)an$/$1Ⓙ/
131 | - xform/iao$/Ⓒ/
132 | - xform/(.)ao$/$1Ⓚ/
133 | - xform/(.)ai$/$1Ⓛ/
134 | - xform/(.)ei$/$1Ⓩ/
135 | - xform/ie$/Ⓧ/
136 | - xform/ui$/Ⓥ/
137 | - derive/T$/Ⓥ/
138 | - xform/(.)ou$/$1Ⓑ/
139 | - xform/in$/Ⓝ/
140 | - xform/ing$/;/
141 | - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/
142 |
143 | # 简拼支持
144 | - abbrev/^(.).+$/$1/
145 |
146 | translator:
147 | dictionary: extended
148 | contextual_suggestions: true
149 | enable_completion: false
150 | max_homophones: 7
151 |
152 | preedit_format:
153 | # - xform/ // # 去掉上屏字符间空格
154 | prism: lufs_mspy
155 |
156 | grammar:
157 | language: zh-hans-t-essay-bgw
158 |
159 | punctuator:
160 | import_preset: lufs_symbols
161 |
162 | key_binder:
163 | import_preset: default
164 |
165 | recognizer:
166 | import_preset: default
167 |
168 | custom_phrase:
169 | dictionary: ""
170 | user_dict: custom_phrase
171 | db_class: stabledb
172 | enable_completion: false
173 | enable_sentence: true
174 | initial_quality: 1
175 |
--------------------------------------------------------------------------------
/lufs_pinyin.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: lufs_pinyin
6 | name: 朙月拼音
7 | version: "2025-04-25"
8 | author:
9 | - 佛振
10 | - Modified by Lufs_X
11 | description: |
12 | Rime 预设的拼音输入方案。
13 |
14 | switches:
15 | - name: full_shape
16 | states: [半角, 全角]
17 | - name: ascii_punct
18 | states: [。,, .,]
19 | - name: traditionalization
20 | # reset: 0 # 默认状态: 0 简体 1 繁体
21 | states: [简, 繁]
22 | - name: emoji_suggestion
23 | # reset: 1 # 默认状态: 0 关闭 1 开启
24 | states: [🈚️️, 🈶️]
25 |
26 | engine:
27 | processors:
28 | - recognizer
29 | - lua_processor@*select_character # lua 选词扩展
30 | - key_binder
31 | - speller
32 | - selector
33 | - punctuator
34 | - navigator
35 | - express_editor
36 | segmentors:
37 | - matcher
38 | - abc_segmentor
39 | - punct_segmentor
40 | - fallback_segmentor
41 | translators:
42 | - punct_translator
43 | - lua_translator@*date_translator # 动态日期时间输入
44 | - lua_translator@*unicode_input # Unicode 输入支持
45 | - table_translator@custom_phrase # 用户自定义词典
46 | - script_translator
47 | filters:
48 | - simplifier@emoji_suggestion
49 | - simplifier@traditionalize # 简繁转化
50 | - uniquifier # 去重
51 | # - lua_filter@*candidate_sorting.long_phrase_first # 最长词组和单字在先
52 | # - lua_filter@*candidate_sorting.single_char_first # 单字优先
53 | # - lua_filter@*candidate_sorting.single_char_only # 只显示单字
54 |
55 | traditionalize:
56 | option_name: traditionalization
57 | opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
58 | tips: none # 转换提示: all 显示 | char 仅单字显示 | none 不显示。
59 |
60 | emoji_suggestion:
61 | opencc_config: emoji.json
62 | option_name: emoji_suggestion
63 | tips: false
64 |
65 | speller:
66 | alphabet: zyxwvutsrqponmlkjihgfedcba/
67 | delimiter: " '"
68 | algebra:
69 | - erase/^xx$/
70 | - erase/^hm$/
71 | - erase/^m$/
72 | - erase/^n$/
73 | - erase/^ng$/
74 |
75 | # 简拼支持
76 | - abbrev/^(.).+$/$1/
77 |
78 | # 模糊音区域
79 | # 依据个人情况修改注释~
80 | # 注释格式:键盘的输入码 -> 转化后的输入码
81 |
82 | # 声母部分
83 | # - derive/^([z])h/$1/ # z -> zh
84 | # - derive/^([z])([^h])/$1h$2/ # zh -> z
85 | # - derive/^([c])h/$1/ # c -> ch
86 | # - derive/^([c])([^h])/$1h$2/ # ch -> c
87 | # - derive/^([s])h/$1/ # s -> sh
88 | # - derive/^([s])([^h])/$1h$2/ # sh -> s
89 | # - derive/^l/n/ # n -> l
90 | # - derive/^n/l/ # l -> n
91 | # - derive/^r/l/ # l -> r
92 | # - derive/^r/y/ # y -> r
93 | # - derive/^hu$/fu/ # fu -> hu
94 | # - derive/^fu$/hu/ # hu -> fu
95 |
96 | # 韵母部分
97 | - derive/([^iu])([a])n$/$1$2ng/ # ang -> an
98 | - derive/([^iu])([a])ng$/$1$2n/ # an -> ang
99 | - derive/([e])n$/$1ng/ # eng -> en
100 | - derive/([e])ng$/$1n/ # en -> eng
101 | # - derive/([i])n$/$1ng/ # ing -> in
102 | # - derive/([i])ng$/$1n/ # in -> ing
103 | # - derive/([i])an$/$1ang/ # iang -> ian
104 | # - derive/([i])ang$/$1an/ # ian -> iang
105 | # - derive/([u])an$/$1ang/ # uang -> uan
106 | # - derive/([u])ang$/$1an/ # uan -> uang
107 |
108 | # 其它模糊音
109 | # - derive/^hui$/fei/ # fei -> hui
110 | # - derive/^fei$/hui/ # hui -> fei
111 | # - derive/^huang$/wang/ # wang -> huang
112 | # - derive/^wang$/huang/ # huang -> wang
113 | # - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng
114 |
115 | # 容错拼写
116 | - derive/^([nl])ve$/$1ue/ # nue -> nve, lue -> lve
117 | - derive/^([jqxy])u/$1v/ # jv -> ju
118 | # - derive/un$/uen/ # guen -> gun
119 | # - derive/ui$/uei/ # guei -> gui
120 | # - derive/iu$/iou/ # jiou -> jiu
121 |
122 | # 按键纠错
123 | - derive/([aeiou])ng$/$1gn/ # dagn -> dang
124 | - derive/([dtngkhrzcs])o(u|ng)$/$1o/ # zho -> zhong|zhou
125 | - derive/ong$/on/ # zhonguo -> zhong guo
126 | - derive/ao$/oa/ # hoa -> hao
127 | - derive/([iu])a(o|ng?)$/a$1$2/ # tain -> tian
128 | - derive/^([csz])h/h$1/ # hc、hs、hz -> ch、sh、zh
129 |
130 | translator:
131 | dictionary: extended
132 | contextual_suggestions: true
133 | enable_completion: false
134 | max_homophones: 7
135 |
136 | preedit_format:
137 | - xform/([nl])v/$1ü/
138 | - xform/([nl])ue/$1üe/
139 | - xform/([jqxy])v/$1u/
140 | # - xform/ // # 去掉上屏字符间空格
141 |
142 | grammar:
143 | language: zh-hans-t-essay-bgw
144 |
145 | punctuator:
146 | import_preset: lufs_symbols
147 |
148 | key_binder:
149 | import_preset: default
150 |
151 | recognizer:
152 | import_preset: default
153 |
154 | custom_phrase:
155 | dictionary: ""
156 | user_dict: custom_phrase
157 | db_class: stabledb
158 | enable_completion: false
159 | enable_sentence: true
160 | initial_quality: 1
161 |
--------------------------------------------------------------------------------
/lufs_pyjj.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: lufs_pyjj
6 | name: 拼音加加双拼
7 | version: "2025-04-25"
8 | author:
9 | - Modified by Lufs_X
10 | description: |
11 | 拼音加加双拼方案。
12 |
13 | switches:
14 | - name: full_shape
15 | states: [半角, 全角]
16 | - name: ascii_punct
17 | states: [。,, .,]
18 | - name: traditionalization
19 | # reset: 0 # 默认状态: 0 简体 1 繁体
20 | states: [简, 繁]
21 | - name: emoji_suggestion
22 | # reset: 1 # 默认状态: 0 关闭 1 开启
23 | states: [🈚️️, 🈶️]
24 |
25 | engine:
26 | processors:
27 | - recognizer
28 | - lua_processor@*select_character # lua 选词扩展
29 | - key_binder
30 | - speller
31 | - selector
32 | - punctuator
33 | - navigator
34 | - express_editor
35 | segmentors:
36 | - matcher
37 | - abc_segmentor
38 | - punct_segmentor
39 | - fallback_segmentor
40 | translators:
41 | - punct_translator
42 | - lua_translator@*date_translator # 动态日期时间输入
43 | - lua_translator@*unicode_input # Unicode 输入支持
44 | - table_translator@custom_phrase # 用户自定义词典
45 | - script_translator
46 | filters:
47 | - simplifier@emoji_suggestion
48 | - simplifier@traditionalize # 简繁转化
49 | - uniquifier # 去重
50 | # - lua_filter@*candidate_sorting.long_phrase_first # 最长词组和单字在先
51 | # - lua_filter@*candidate_sorting.single_char_first # 单字优先
52 | # - lua_filter@*candidate_sorting.single_char_only # 只显示单字
53 |
54 | traditionalize:
55 | option_name: traditionalization
56 | opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
57 | tips: none # 转换提示: all 显示 | char 仅单字显示 | none 不显示。
58 |
59 | emoji_suggestion:
60 | opencc_config: emoji.json
61 | option_name: emoji_suggestion
62 | tips: false
63 |
64 | speller:
65 | alphabet: zyxwvutsrqponmlkjihgfedcba/
66 | delimiter: " '"
67 | algebra:
68 | - erase/^xx$/
69 | - erase/^hm$/
70 | - erase/^m$/
71 | - erase/^n$/
72 | - erase/^ng$/
73 |
74 | # 模糊音区域
75 | # 依据个人情况修改注释~
76 | # 注释格式:键盘的输入码 -> 转化后的输入码
77 |
78 | # 声母部分
79 | # - derive/^([z])h/$1/ # z -> zh
80 | # - derive/^([z])([^h])/$1h$2/ # zh -> z
81 | # - derive/^([c])h/$1/ # c -> ch
82 | # - derive/^([c])([^h])/$1h$2/ # ch -> c
83 | # - derive/^([s])h/$1/ # s -> sh
84 | # - derive/^([s])([^h])/$1h$2/ # sh -> s
85 | # - derive/^l/n/ # n -> l
86 | # - derive/^n/l/ # l -> n
87 | # - derive/^r/l/ # l -> r
88 | # - derive/^r/y/ # y -> r
89 | # - derive/^hu$/fu/ # fu -> hu
90 | # - derive/^fu$/hu/ # hu -> fu
91 |
92 | # 韵母部分
93 | - derive/([^iu])([a])n$/$1$2ng/ # ang -> an
94 | - derive/([^iu])([a])ng$/$1$2n/ # an -> ang
95 | - derive/([e])n$/$1ng/ # eng -> en
96 | - derive/([e])ng$/$1n/ # en -> eng
97 | # - derive/([i])n$/$1ng/ # ing -> in
98 | # - derive/([i])ng$/$1n/ # in -> ing
99 | # - derive/([i])an$/$1ang/ # iang -> ian
100 | # - derive/([i])ang$/$1an/ # ian -> iang
101 | # 由于双拼特性,无需 uang <-> iang
102 |
103 | # 其它模糊音
104 | # - derive/^hui$/fei/ # fei -> hui
105 | # - derive/^fei$/hui/ # hui -> fei
106 | # - derive/^huang$/wang/ # wang -> huang
107 | # - derive/^wang$/huang/ # huang -> wang
108 | # - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng
109 |
110 | # 拼音加加双拼码表
111 | - derive/^([jqxy])u$/$1v/
112 | - derive/^([aoe])([ioun])$/$1$1$2/
113 | - xform/^([aoe])(ng)?$/$1$1$2/
114 | - xform/iu$/Ⓝ/
115 | - xform/[iu]a$/Ⓑ/
116 | - xform/er$|ing$/Ⓠ/
117 | - xform/[uv]an$/Ⓒ/
118 | - xform/[uv]e$|uai$/Ⓧ/
119 | - xform/^sh/Ⓘ/
120 | - xform/^ch/Ⓤ/
121 | - xform/^zh/Ⓥ/
122 | - xform/uo$/Ⓞ/
123 | - xform/[uv]n$/Ⓩ/
124 | - xform/i?ong$/Ⓨ/
125 | - xform/[iu]ang$/Ⓗ/
126 | - xform/(.)en$/$1Ⓡ/
127 | - xform/(.)eng$/$1Ⓣ/
128 | - xform/(.)ang$/$1Ⓖ/
129 | - xform/ian$/Ⓙ/
130 | - xform/(.)an$/$1Ⓕ/
131 | - xform/iao$/Ⓚ/
132 | - xform/(.)ao$/$1Ⓓ/
133 | - xform/(.)ai$/$1Ⓢ/
134 | - xform/(.)ei$/$1Ⓦ/
135 | - xform/ie$/Ⓜ/
136 | - xform/ui$/Ⓥ/
137 | - xform/(.)ou$/$1Ⓟ/
138 | - xform/in$/Ⓛ/
139 | - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/
140 |
141 | # 简拼支持
142 | - abbrev/^(.).+$/$1/
143 |
144 | translator:
145 | dictionary: extended
146 | preedit_format:
147 | # - xform/ // # 去掉上屏字符间空格
148 | prism: lufs_pyjj
149 | contextual_suggestions: true
150 | max_homophones: 7
151 |
152 | grammar:
153 | language: zh-hans-t-essay-bgw
154 |
155 | punctuator:
156 | import_preset: lufs_symbols
157 |
158 | key_binder:
159 | import_preset: default
160 |
161 | recognizer:
162 | import_preset: default
163 |
164 | custom_phrase:
165 | dictionary: ""
166 | user_dict: custom_phrase
167 | db_class: stabledb
168 | enable_completion: false
169 | enable_sentence: true
170 | initial_quality: 1
171 |
--------------------------------------------------------------------------------
/lufs_symbols.yaml:
--------------------------------------------------------------------------------
1 | # Rime's punctuation and symbols
2 | # encoding: utf-8
3 | #
4 | # Usage: patch your Rime schema to enable /X symbols
5 | # 修改自: https://github.com/rime/rime-prelude/blob/master/symbols.yaml
6 | #
7 | # COMMIT SHA: 3c602fdb0dcca7825103e281efc50ef7580f99ec
8 |
9 | config_version: "2025-04-25"
10 |
11 | punctuator:
12 | digit_separators: ",.:'" # 自定义数字后转换半角符号,双击即可正常输入,留空可关闭,该功能要求 librime >= 1.13.0
13 | # digit_separator_action: "commit" # 关闭上述功能,要求 librime >= 1.13.1
14 |
15 | full_shape:
16 | " ": { commit: " " }
17 | ",": { commit: , }
18 | ".": { commit: 。 }
19 | "<": [《, 〈, «, ‹, ⟨]
20 | ">": [》, 〉, », ›, ⟩]
21 | "/": [/, ÷]
22 | "?": { commit: ? }
23 | ";": { commit: ; }
24 | ":": { commit: : }
25 | "'": { pair: ["‘", "’"] }
26 | '"': { pair: ["“", "”"] }
27 | '\': [、, \]
28 | "|": [·, |, "§", "¦"]
29 | "`": `
30 | "~": ~
31 | "!": { commit: ! }
32 | "@": [@, ☯]
33 | "#": [#, ⌘]
34 | "%": [%, "°", "℃"]
35 | "$": [¥, "$", "€", "£", "¥", "¢", "¤", ₩]
36 | "^": { commit: …… }
37 | "&": &
38 | "*": [*, ·, ・, ×, ※, ❂]
39 | "(": (
40 | ")": )
41 | "-": -
42 | "_": ——
43 | "+": +
44 | "=": =
45 | "[": [「, 【, 〔, [, 〚, 〘]
46 | "]": [」, 】, 〕, ], 〛, 〙]
47 | "{": [『, 〖, {]
48 | "}": [』, 〗, }]
49 | half_shape:
50 | ",": { commit: , }
51 | ".": { commit: 。 }
52 | "<": [《, 〈, «, ‹, ⟨, ˂, ˱]
53 | ">": [》, 〉, », ›, ⟩, ˃, ˲]
54 | "/": ["/", /, 、, 、, ÷]
55 | "?": { commit: ? }
56 | ";": { commit: ; }
57 | ":": { commit: : }
58 | "'": { pair: ["‘", "’"] }
59 | '"': { pair: ["“", "”"] }
60 | '\': "、"
61 | "|": [·, ・, "|", |, "§", "¦", "‖", ︴]
62 | "`": "`"
63 | "~": ["~", ~, ˜, ˷, ⸯ, ≈, ≋, ≃, ≅, ≇, ∽, ⋍, ≌, ﹏, ﹋, ﹌, ︴]
64 | "!": { commit: ! }
65 | "@": "@"
66 | "#": "#"
67 | "%": ["%", %, "°", "℃", ‰, ‱, ℉, ℅, ℆, ℀, ℁, ⅍]
68 | "$": [¥, "$", "€", "£", "¥", "¢", "¤", ₩]
69 | "^": { commit: …… }
70 | "&": "&"
71 | "*": ["*", *, ·, ・, ×, ※, ❂, ⁂, ☮, ☯, ☣]
72 | "(": (
73 | ")": )
74 | "-": "-"
75 | "_": "——"
76 | "+": "+"
77 | "=": "="
78 | "[": "「"
79 | "]": "」"
80 | "{": "『"
81 | "}": "』"
82 | symbols:
83 | # 帮助
84 | "/help": [ 符号:/fh, 单位:/dw, 标点:/bd, 数学:/sx, 拼音:/py, 星号:/xh, 方块:/fk, 几何:/jh, 箭头:/jt, 电脑:/dn, 罗马数字:/lm, 大写罗马数字:/lmd, 拉丁:/ld, 上标:/sb, 下标:/xb, 希腊字母:/xl, 大写希腊字母:/xld, 数字:/0到/9, 分数:/fs, いろは順:/iro, 假名:/jm或/pjm或/jmk到/jmo, 假名+圈:/jmq, 假名+半角:/jmbj, 俄语:/ey, 大写俄语:/eyd, 韩文:/hw, 韩文+圈:/hwq, 韩文+弧:/hwh, 结构:/jg, 偏旁:/pp, 康熙(部首):/kx, 笔画:/bh, 注音:/zy, 声调:/sd, 汉字+圈:/hzq, 汉字+弧:/hzh, 数字+圈:/szq, 数字+弧:/szh, 数字+点:/szd, 字母+圈:/zmq, 字母+弧:/zmh, 表情:/bq, 音乐:/yy, 月份:/yf, 日期:/rq, 曜日:/yr, 时间:/sj, 天干:/tg, 地支:/dz, 干支:/gz, 节气:/jq, 象棋:/xq, 麻将:/mj, 色子:/sz, 扑克:/pk, 八卦:/bg, 八卦名:/bgm, 六十四卦:/lssg, 六十四卦名:/lssgm, 太玄经:/txj, 天体:/tt, 星座:/xz, 星座名:/xzm, 十二宫:/seg, 苏州码:/szm ]
85 | # 常用输入
86 | "/tab": " "
87 | "/kg": [ " "," " ]
88 | "/sm": [ "《", "》", "〈", "〉", "«", "»", "<", ">"]
89 | # 符号、电脑
90 | "/fh": [ ©, ®, ℗, ℠, ™, ℡, ℻, ☇, ☈, ☉, ☊, ☋, ☌, ☍, ☎, ☏, ☐, ☑, ☒, ☓, ☕, ☖, ☗, ⛉, ⛊, ☘, ☙, ☚, ☛, ☜, ☝, ☞, ☟, ☠, ☡, ☢, ☣, ☤, ☥, ☦, ☧, ☨, ☩, ☪, ☫, ☬, ☭, ☮, ☯, ☸, ♨, ♰, ♱, ♲, ♳, ♴, ♵, ♶, ♷, ♸, ♹, ♺, ♻, ♼, ♽, ♾, ♿, ⚆, ⚇, ⚈, ⚉, ⚐, ⚑, ⚒, ⚓, ⚔, ⚕, ⚖, ⚗, ⚘, ⚙, ⚚, ⚛, ⚜, ⚝, ⚞, ⚟, ⚠, ⚡, ⚰, ⚱, ⚲, ⚳, ⚴, ⚵, ⚶, ⚷, ⚸, ⚹, ⚺, ⚻, ⚼, ⚽, ⚾, ⚿, ⛀, ⛁, ⛂, ⛃, ⛋, ⛌, ⛍, ⛎, ⛏, ⛐, ⛑, ⛒, ⛓, ⛔, ⛕, ⛖, ⛗, ⛘, ⛙, ⛚, ⛛, ⛜, ⛝, ⛞, ⛟, ⛠, ⛡, ⛢, ⛣, ⛨, ⛩, ⛪, ⛫, ⛬, ⛭, ⛮, ⛯, ⛰, ⛱, ⛲, ⛳, ⛴, ⛵, ⛶, ⛷, ⛸, ⛹, ⛺, ⛻, ⛼, ⛽, ⛾, ⛿ ]
91 | "/dn": [ , ❖, ⌘, ⌃, ⌥, ⎇, ⇧, ⇪, ␣, ⇥, ⇤, ↩, ⌅, ⌤, ⌫, ⌦, ⌧, ⎋, ⌨, ◁, ⌀, ⌖, ⌗, ⏏, ↖, ↘, ⇞, ⇟, ⌚, ⏰, ⏱, ⏲, ⏳, ⌛, ⌜, ⌝, ⌞, ⌟, ⍑, ⏩, ⏪, ⏫, ⏬, ⏭, ⏮, ⏯ ]
92 | # 象棋、麻将、色子、扑克
93 | "/xq": [ ♔, ♕, ♖, ♗, ♘, ♙, ♚, ♛, ♜, ♝, ♞, ♟ ]
94 | "/mj": [ 🀀, 🀁, 🀂, 🀃, 🀄, 🀅, 🀆, 🀇, 🀈, 🀉, 🀊, 🀋, 🀌, 🀍, 🀎, 🀏, 🀐, 🀑, 🀒, 🀓, 🀔, 🀕, 🀖, 🀗, 🀘, 🀙, 🀚, 🀛, 🀜, 🀝, 🀞, 🀟, 🀠, 🀡, 🀢, 🀣, 🀤, 🀥, 🀦, 🀧, 🀨, 🀩, 🀪, 🀫 ]
95 | "/sz": [ ⚀, ⚁, ⚂, ⚃, ⚄, ⚅ ]
96 | "/pk": [ ♠, ♥, ♣, ♦, ♤, ♡, ♧, ♢ ]
97 | # 表情
98 | "/bq": [ ☻, ☺, ☹ ]
99 | # 天气
100 | "/tq": [ ☀, ☁, ⛅, ⛈, ⛆, ☂, ☔, ☃, ⛄, ⛇ ]
101 | # 音乐
102 | "/yy": [ 𝄞, ♩, ♪, ♫, ♬, ♭, ♮, ♯ ]
103 | # 两性
104 | "/lx": [ ♂, ♀, ⚢, ⚣, ⚤, ⚥, ⚦, ⚧, ⚨, ⚩, ⚪, ⚫, ⚬, ⚭, ⚮, ⚯ ]
105 | # 八卦、八卦名、六十四卦、六十四卦名、太玄经
106 | "/bg": [ ☰, ☱, ☲, ☳, ☴, ☵, ☶, ☷ ]
107 | "/bgm": [ 乾, 兑, 离, 震, 巽, 坎, 艮, 坤 ]
108 | "/lssg": [ ䷀, ䷁, ䷂, ䷃, ䷄, ䷅, ䷆, ䷇, ䷈, ䷉, ䷊, ䷋, ䷌, ䷍, ䷎, ䷏, ䷐, ䷑, ䷒, ䷓, ䷔, ䷕, ䷖, ䷗, ䷘, ䷙, ䷚, ䷛, ䷜, ䷝, ䷞, ䷟, ䷠, ䷡, ䷢, ䷣, ䷤, ䷥, ䷦, ䷧, ䷨, ䷩, ䷪, ䷫, ䷬, ䷭, ䷮, ䷯, ䷰, ䷱, ䷲, ䷳, ䷴, ䷵, ䷶, ䷷, ䷸, ䷹, ䷺, ䷻, ䷼, ䷽, ䷾, ䷿ ]
109 | "/lssgm": [ 乾, 坤, 屯, 蒙, 需, 讼, 师, 比, 小畜, 履, 泰, 否, 同人, 大有, 谦, 豫, 随, 蛊, 临, 观, 噬咳, 贲, 剥, 复, 无妄, 大畜, 颐, 大过, 坎, 离, 咸, 恒, 遁, 大壮, 晋, 明夷, 家人, 睽, 蹇, 解, 损, 益, 夬, 姤, 萃, 升, 困, 井, 革, 鼎, 震, 艮, 渐, 归妹, 丰, 旅, 巽, 兑, 涣, 节, 中孚, 小过, 既济, 未济 ]
110 | "/txj": [ ⚊, ⚋, ⚌, ⚍, ⚎, ⚏, 𝌀, 𝌁, 𝌂, 𝌃, 𝌄, 𝌅, 𝌆, 𝌇, 𝌈, 𝌉, 𝌊, 𝌋, 𝌌, 𝌍, 𝌎, 𝌏, 𝌐, 𝌑, 𝌒, 𝌓, 𝌔, 𝌕, 𝌖, 𝌗, 𝌘, 𝌙, 𝌚, 𝌛, 𝌜, 𝌝, 𝌞, 𝌟, 𝌠, 𝌡, 𝌢, 𝌣, 𝌤, 𝌥, 𝌦, 𝌧, 𝌨, 𝌩, 𝌪, 𝌫, 𝌬, 𝌭, 𝌮, 𝌯, 𝌰, 𝌱, 𝌲, 𝌳, 𝌴, 𝌵, 𝌶, 𝌷, 𝌸, 𝌹, 𝌺, 𝌻, 𝌼, 𝌽, 𝌾, 𝌿, 𝍀, 𝍁, 𝍂, 𝍃, 𝍄, 𝍅, 𝍆, 𝍇, 𝍈, 𝍉, 𝍊, 𝍋, 𝍌, 𝍍, 𝍎, 𝍏, 𝍐, 𝍑, 𝍒, 𝍓, 𝍔, 𝍕, 𝍖 ]
111 | # 天体、星座、星座名、十二宮
112 | "/tt": [ ☄, ☼, ☽, ☾, ☿, ♀, ♁, ♂, ♃, ♄, ♅, ♆, ♇ ]
113 | "/xz": [ ♈, ♉, ♊, ♋, ♌, ♍, ♎, ♏, ♐, ♑, ♒, ♓ ]
114 | "/xzm": [ 白羊座, 金牛座, 双子座, 巨蟹座, 狮子座, 室女座, 天秤座, 天蝎座, 人马座, 摩羯座, 宝瓶座, 双鱼座 ]
115 | "/seg": [ 白羊宫, 金牛宫, 双子宫, 巨蟹宫, 狮子宫, 室女宫, 天秤宫, 天蝎宫, 人马宫, 摩羯宫, 宝瓶宫, 双鱼宫 ]
116 | # 星号
117 | "/xh": [ ★, ☆, ⛤, ⛥, ⛦, ⛧, ✡, ❋, ❊, ❉, ❈, ❇, ❆, ❅, ❄, ❃, ❂, ❁, ❀, ✿, ✾, ✽, ✼, ✻, ✺, ✹, ✸, ✷, ✶, ✵, ✴, ✳, ✲, ✱, ✰, ✯, ✮, ✭, ✬, ✫, ✪, ✩, ✧, ✦, ✥, ✤, ✣, ✢ ]
118 | # 方块
119 | "/fk": [ ▀, ▁, ▂, ▃, ▄, ▅, ▆, ▇, █, ▉, ▊, ▋, ▌, ▍, ▎, ▏, ▐, ░, ▒, ▓, ▔, ▕, ▖, ▗, ▘, ▙, ▚, ▛, ▜, ▝, ▞, ▟ ]
120 | # 几何
121 | "/jh": [ ■, □, ▢, ▣, ▤, ▥, ▦, ▧, ▨, ▩, ▪, ▫, ▬, ▭, ▮, ▯, ▰, ▱, ▲, △, ▴, ▵, ▶, ▷, ▸, ▹, ►, ▻, ▼, ▽, ▾, ▿, ◀, ◁, ◂, ◃, ◄, ◅, ◆, ◇, ◈, ◉, ◊, ○, ◌, ◍, ◎, ●, ◐, ◑, ◒, ◓, ◔, ◕, ◖, ◗, ◘, ◙, ◚, ◛, ◜, ◝, ◞, ◟, ◠, ◡, ◢, ◣, ◤, ◥, ◦, ◧, ◨, ◩, ◪, ◫, ◬, ◭, ◮, ◯, ◰, ◱, ◲, ◳, ◴, ◵, ◶, ◷, ◸, ◹, ◺, ◻, ◼, ◽, ◾, ◿ ]
122 | # 箭头
123 | "/jt": [ ↑, ↓, ←, →, ↕, ↔, ↖, ↗, ↙, ↘, ↚, ↛, ↮, ↜, ↝, ↞, ↟, ↠, ↡, ↢, ↣, ↤, ↥, ↦, ↧, ↨, ↩, ↪, ↫, ↬, ↭, ↯, ↰, ↱, ↲, ↳, ↴, ↵, ↶, ↷, ↸, ↹, ↺, ↻, ↼, ↽, ↾, ↿, ⇀, ⇁, ⇂, ⇃, ⇄, ⇅, ⇆, ⇇, ⇈, ⇉, ⇊, ⇋, ⇌, ⇐, ⇍, ⇑, ⇒, ⇏, ⇓, ⇔, ⇎, ⇕, ⇖, ⇗, ⇘, ⇙, ⇚, ⇛, ⇜, ⇝, ⇞, ⇟, ⇠, ⇡, ⇢, ⇣, ⇤, ⇥, ⇦, ⇧, ⇨, ⇩, ⇪, ⇫, ⇬, ⇭, ⇮, ⇯, ⇰, ⇱, ⇲, ⇳, ⇴, ⇵, ⇶, ⇷, ⇸, ⇹, ⇺, ⇻, ⇼, ⇽, ➔, ➘, ➙, ➚, ➛, ➜, ➝, ➞, ➟, ➠, ➡, ➢, ➣, ➤, ➥, ➦, ➧, ➨, ➩, ➪, ➫, ➬, ➭, ➮, ➱, ➲, ➳, ➴, ➵, ➶, ➷, ➸, ➹, ➺, ➻, ➼, ➽, ➾ ]
124 | # 数学
125 | "/sx": [ ±, ÷, ×, ∈, ∏, ∑, -, +, <, ≮, =, ≠, >, ≯, ∕, √, ∝, ∞, ⟨, ⟩, ∟, ∠, ∥, ∧, ∨, ∩, ∪, ∫, ∮, ∴, ∵, ∷, ∽, ≈, ≌, ≒, ≡, ≤, ≥, ≦, ≧, ⊕, ⊙, ⊥, ⊿, ㏑, ㏒ ]
126 | # 数字+圈/弧/点
127 | "/szq": [ ⓪, ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪, ⑫, ⑬, ⑭, ⑮, ⑯, ⑰, ⑱, ⑲, ⑳, ㉑, ㉒, ㉓, ㉔, ㉕, ㉖, ㉗, ㉘, ㉙, ㉚, ㉛, ㉜, ㉝, ㉞, ㉟, ㊱, ㊲, ㊳, ㊴, ㊵, ㊶, ㊷, ㊸, ㊹, ㊺, ㊻, ㊼, ㊽, ㊾, ㊿, ⓿, ❶, ❷, ❸, ❹, ❺, ❻, ❼, ❽, ❾, ❿, ⓫, ⓬, ⓭, ⓮, ⓯, ⓰, ⓱, ⓲, ⓳, ⓴ ]
128 | "/szh": [ ⑴, ⑵, ⑶, ⑷, ⑸, ⑹, ⑺, ⑻, ⑼, ⑽, ⑾, ⑿, ⒀, ⒁, ⒂, ⒃, ⒄, ⒅, ⒆, ⒇ ]
129 | "/szd": [ ⒈, ⒉, ⒊, ⒋, ⒌, ⒍, ⒎, ⒏, ⒐, ⒑, ⒒, ⒓, ⒔, ⒕, ⒖, ⒗, ⒘, ⒙, ⒚, ⒛ ]
130 | # 字母+圈/弧
131 | "/zmq": [ ⓐ, Ⓐ, ⓑ, Ⓑ, ⓒ, Ⓒ, ⓓ, Ⓓ, ⓔ, Ⓔ, ⓕ, Ⓕ, ⓖ, Ⓖ, ⓗ, Ⓗ, ⓘ, Ⓘ, ⓙ, Ⓙ, ⓚ, Ⓚ, ⓛ, Ⓛ, ⓜ, Ⓜ, ⓝ, Ⓝ, ⓞ, Ⓞ, ⓟ, Ⓟ, ⓠ, Ⓠ, ⓡ, Ⓡ, ⓢ, Ⓢ, ⓣ, Ⓣ, ⓤ, Ⓤ, ⓥ, Ⓥ, ⓦ, Ⓦ, ⓧ, Ⓧ, ⓨ, Ⓨ, ⓩ, Ⓩ ]
132 | "/zmh": [ ⒜, ⒝, ⒞, ⒟, ⒠, ⒡, ⒢, ⒣, ⒤, ⒥, ⒦, ⒧, ⒨, ⒩, ⒪, ⒫, ⒬, ⒭, ⒮, ⒯, ⒰, ⒱, ⒲, ⒳, ⒴, ⒵ ]
133 | # 数字、分数
134 | "/0": [ 〇, 零, ₀, ⁰, ⓪, ⓿ , 0]
135 | "/1": [ 一, 壹, ₁, ¹, Ⅰ, ⅰ, ①, ➀, ❶, ➊, ⓵, ⑴, ⒈, 1, ㊀, ㈠, 弌, 壱, 幺, ㆒ ]
136 | "/2": [ 二, 貳, ₂, ², Ⅱ, ⅱ, ②, ➁, ❷, ➋, ⓶, ⑵, ⒉, 2, ㊁, ㈡, 弍, 弐, 貮, 㒃, 㒳, 兩, 倆, ㆓]
137 | "/3": [ 三, 叄, ₃, ³, Ⅲ, ⅲ, ③, ➂, ❸, ➌, ⓷, ⑶, ⒊, 3, ㊂, ㈢, 參, 参, 叁, 弎, 仨, ㆔]
138 | "/4": [ 四, 肆, ₄, ⁴, Ⅳ, ⅳ, ④, ➃, ❹, ➍, ⓸, ⑷, ⒋, 4, ㊃, ㈣, 亖]
139 | "/5": [ 五, 伍, ₅, ⁵, Ⅴ, ⅴ, ⑤, ➄, ❺, ➎, ⓹, ⑸, ⒌, 5, ㊄, ㈤, 㐅, 㠪, 𠄡 ]
140 | "/6": [ 六, 陸, ₆, ⁶, Ⅵ, ⅵ, ⑥, ➅, ❻, ➏, ⓺, ⑹, ⒍, 6, ㊅, ㈥, ↅ]
141 | "/7": [ 七, 柒, ₇, ⁷, Ⅶ, ⅶ, ⑦, ➆, ❼, ➐, ⓻, ⑺, ⒎, 7, ㊆, ㈦, 漆]
142 | "/8": [ 八, 捌, ₈, ⁸, Ⅷ, ⅷ, ⑧, ➇, ❽, ➑, ⓼, ⑻, ⒏, 8, ㊇, ㈧ ]
143 | "/9": [ 九, 玖, ₉, ⁹, Ⅸ, ⅸ, ⑨, ➈, ❾, ➒, ⓽, ⑼, ⒐, 9, ㊈, ㈨ ]
144 | "/10": [ 十, 拾, ₁₀, ¹⁰, Ⅹ, ⅹ, ⑩, ➉, ❿, ➓, ⓾, ⑽, ⒑, 10, ㊉, ㈩, 什 ]
145 | "/fs": [ ⅟, ½, ↉, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒ ]
146 | # 苏州码
147 | "/szm": [ 〡, 〢, 〣, 〤, 〥, 〦, 〧, 〨, 〩, 〸, 〹, 〺 ]
148 | # 罗马数字
149 | "/lm": [ ⅰ, ⅱ, ⅲ, ⅳ, ⅴ, ⅵ, ⅶ, ⅷ, ⅸ, ⅹ, ⅺ, ⅻ, ⅼ, ⅽ, ⅾ, ⅿ ]
150 | "/lmd": [ Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ, Ⅵ, Ⅶ, Ⅷ, Ⅸ, Ⅹ, Ⅺ, Ⅻ, Ⅼ, Ⅽ, Ⅾ, Ⅿ ]
151 | # 拉丁
152 | "/a": [ā, á, ǎ, à, ȁ, â, ă, ȃ, ȧ, ä, å, ã, ₐ, ᵃ, ª, ⱥ, ꬰ, ả, ą, ạ, ḁ, ẚ, ấ, ầ, ẫ, ẩ, ắ, ằ, ẵ, ẳ, ǡ, ǟ, ǻ, ậ, ặ, ᶏ, ɐ, ᵄ, ɑ, ᵅ, ᶐ, ɒ, ᶛ]
153 | "/A": [Ā, Á, Ǎ, À, Ȁ, Â, Ă, Ȃ, Ȧ, Ä, Å, Ã, ᴀ, ᴬ, Ⱥ, Ả, Ą, Ạ, Ḁ, Ấ, Ầ, Ẫ, Ẩ, Ắ, Ằ, Ẵ, Ẳ, Ǡ, Ǟ, Ǻ, Ậ, Ặ, Ɐ, Ɑ, Ɒ ]
154 | "/b": [ḃ, ḅ, ᵇ, ƀ, ƃ, ḇ, ɓ, ᵬ, ᶀ, ꞗ]
155 | "/B": [Ḃ, Ḅ, ʙ, ᴃ, ᴮ, ᴯ, Ƀ, Ƃ, Ḇ, Ɓ, Ꞗ]
156 | "/c": [ç, ć, č, ĉ, ċ, ᶜ, ȼ, ꞓ, ƈ, ḉ, ꞔ, ɕ, ᶝ, ꜿ]
157 | "/C": [Ç, Ć, Č, Ĉ, Ċ, ᴄ, Ȼ, Ꞓ, Ƈ, Ḉ, Ꜿ]
158 | "/d": [ď, ḋ, ᵈ, đ, ƌ, ᵭ, ḑ, ḓ, ḏ, ḍ, ɖ, ɗ, ᶑ, ᶁ, ð, ᶞ, ꝱ, ʤ, ʣ, ʥ, ȡ, ƍ, dz, dž, ẟ]
159 | "/D": [Ď, Ḋ, ᴅ, ᴆ, ᴰ, Đ, Ƌ, Ḑ, Ḓ, Ḏ, Ḍ, Ɖ, Ɗ, Ð, DZ, Dz, DŽ, Dž ]
160 | "/e": [ē, é, ě, è, ȅ, ê, ĕ, ȇ, ė, ë, ẽ, ₑ, ᵉ, ɇ, ꬳ, ẻ, ȩ, ę, ḙ, ẹ, ḛ, ḗ, ḕ, ế, ề, ễ, ể, ḝ, ệ, ᶒ, ꬴ, ɘ, ə, ɚ, ᶕ, ɛ, ᵋ, ᶓ, ɜ, ᵌ, ᴈ, ᶟ, ɝ, ᶔ, ɞ, ʚ, ǝ, ₔ, ᵊ, ȝ, ⱸ]
161 | "/E": [Ē, É, Ě, È, Ȅ, Ê, Ĕ, Ȇ, Ė, Ë, Ẽ, ᴇ, ᴱ, Ɇ, Ẻ, Ȩ, Ę, Ḙ, Ẹ, Ḛ, Ḗ, Ḕ, Ế, Ề, Ễ, Ể, Ḝ, Ệ, Ə, Ɛ, Ɜ, Ǝ, ⱻ, ᴲ, Ȝ ]
162 | "/f": [ḟ, ᶠ, ƒ, ᵮ, ᶂ, ꞙ ]
163 | "/F": [Ḟ, ꜰ, Ƒ, Ꞙ, ꟻ]
164 | "/g": [ḡ, ǵ, ǧ, ĝ, ğ, ġ, ᵍ, ǥ, ꞡ, ģ, ɠ, ᵷ, ᶃ, ɡ, ꬶ, ᶢ, ɣ, ˠ, ɤ, ᵹ]
165 | "/G": [Ḡ, Ǵ, Ǧ, Ĝ, Ğ, Ġ, ʛ, ᴳ, Ǥ, Ꞡ, Ģ, Ɠ, Ɡ, Ɣ ]
166 | "/h": [ĥ, ȟ, ḣ, ḧ, ͪ, ħ, ɦ, ʱ, ꜧ, ꭜ, ɧ, ḩ, ẖ, ḫ, ḥ, ⱨ, ꞕ, ɥ, ᶣ, ʮ, ʯ, ⱶ]
167 | "/H": [Ĥ, Ȟ, Ḣ, Ḧ, ʜ, ᴴ, Ħ, Ɦ, Ꜧ, Ḩ, Ḫ, Ḥ, Ⱨ, Ɥ, Ⱶ]
168 | "/i": [ī, í, ǐ, ì, ȉ, î, ĭ, ȋ, ï, ĩ, ı, ᵢ, ɨ, ᶤ, ỉ, į, ị, ḭ, ᴉ, ᵎ, ḯ, ᶖ, ɩ, ᶥ, ᵼ]
169 | "/I": [Ī, Í, Ǐ, Ì, Ȉ, Î, Ĭ, Ȋ, Ï, Ĩ, İ, ɪ, ᴵ, ᶦ, Ɨ, ᵻ, ᶧ, Ỉ, Į, Ị, Ḭ, Ḯ, ꟾ, Ɩ ]
170 | "/j": [ĵ, ǰ, ⱼ, ʲ, ɉ, ȷ, ɟ, ᶡ, ʄ, ʝ, ᶨ]
171 | "/J": [Ĵ, ᴊ, ᴶ, Ɉ, Ʝ ]
172 | "/k": [ḱ, ǩ, ₖ, ᵏ, ꝁ, ꝃ, ꞣ, ꝅ, ķ, ḵ, ḳ, ƙ, ᶄ, ⱪ, ʞ, ĸ]
173 | "/K": [Ḱ, Ǩ, ᴋ, ᴷ, Ꝁ, Ꝃ, Ꞣ, Ꝅ, Ķ, Ḵ, Ḳ, Ƙ, Ⱪ, Ʞ ]
174 | "/l": [ĺ, ˡ, ł, ꝉ, ƚ, ⱡ, ɫ, ꭞ, ꬸ, ɬ, ľ, ļ, ḻ, ḽ, ḷ, ŀ, ꝲ, ƛ, ᶅ, ᶪ, ɭ, ᶩ, ḹ, ꬷ, ꭝ, ꬹ, ȴ, ꝇ]
175 | "/L": [Ĺ, ʟ, ᶫ, Ƚ, Ꝉ, Ł, ᴌ, Ⱡ, Ɫ, Ɬ, Ľ, Ļ, Ḻ, Ḽ, Ḷ, Ŀ, Ꝇ]
176 | "/m": [ḿ, ṁ, ᵐ, ₘ, ṃ, ᵯ, ɱ, ᶬ, ꬺ, ᶆ, ꝳ, ɯ, ᵚ, ɰ, ᶭ, ᴟ]
177 | "/M": [Ḿ, Ṁ, ᴍ, ᴹ, Ṃ, Ɱ, Ɯ, ꟽ, ꟿ ]
178 | "/n": [ń, ň, ǹ, ṅ, ñ, ₙ, ⁿ, ɲ, ᶮ, ɳ, ᶯ, ȵ, ƞ, ŋ, ᵑ, ꬻ, ꬼ, ꝴ, ʼn, ꞥ, ņ, ṉ, ṋ, ṇ, ᵰ, ꞑ, ᶇ]
179 | "/N": [Ń, Ň, Ǹ, Ṅ, Ñ, ɴ, ᴺ, ᴻ, ᶰ, Ɲ, Ƞ, Ŋ, Ņ, Ṉ, Ṋ, Ṇ, Ꞑ ]
180 | "/o": [ō, ó, ő, ǒ, ò, ô, ŏ, ȯ, ö, õ, ₒ, ᵒ, º, ɔ, ᵓ, ᶗ, ꬿ, ø, ǫ, ọ, ơ, ɵ, ᶱ, ᴑ, ᴒ, ᴓ, ꝋ, ꝍ, ṓ, ṑ, ố, ồ, ỗ, ổ, ȱ, ȫ, ȭ, ṍ, ṏ, ộ, ǭ, ǿ, ớ, ờ, ỡ, ở, ợ, ɷ, ⱺ, ᴖ, ᵔ, ᴗ, ᵕ]
181 | "/O": [Ō, Ó, Ő, Ǒ, Ò, Ô, Ŏ, Ȯ, Ö, Õ, ᴏ, ᴼ, Ɔ, ᴐ, Ø, Ǫ, Ọ, Ơ, Ɵ, Ꝋ, Ꝍ, Ṓ, Ṑ, Ố, Ồ, Ỗ, Ổ, Ȱ, Ȫ, Ȭ, Ṍ, Ṏ, Ộ, Ǭ, Ǿ, Ớ, Ờ, Ỡ, Ở, Ợ ]
182 | "/p": [ṕ, ṗ, ᵖ, ᵽ, ꝑ, ᵱ, ƥ, ᶈ, ꝓ, ꝕ, ɸ, ᶲ, ⱷ ]
183 | "/P": [Ṕ, Ṗ, ᴘ, ᴾ, Ᵽ, Ꝑ, Ƥ, Ꝓ, Ꝕ, ꟼ]
184 | "/q": [ɋ, ꝗ, ꝙ, ʠ]
185 | "/Q": [Ɋ, Ꝗ, Ꝙ ]
186 | "/r": [ŕ, ř, ȑ, ȓ, ṙ, ᵣ, ɍ, ꞧ, ᵲ, ŗ, ṟ, ṛ, ṝ, ᵳ, ɽ, ᶉ, ꭇ, ꭈ, ꭊ, ꭉ, ꝵ, ꭋ, ꭌ, ɹ, ʴ, ɺ, ɻ, ʵ, ⱹ, ɼ, ʳ, ɾ, ɿ, ꝛ, ꝝ]
187 | "/R": [Ŕ, Ř, Ȑ, Ȓ, Ṙ, ʀ, ᴙ, ᴿ, Ʀ, ꭆ, Ɍ, Ꞧ, Ŗ, Ṟ, Ṛ, Ṝ, Ɽ, ꝶ, ʶ, ʁ, Ꝛ, Ꝝ]
188 | "/s": [ś, ŝ, š, ṡ, ˢ, ʂ, ᶳ, ᵴ, ꞩ, ᶊ, ş, ṣ, ș, ȿ, ṥ, ṧ, ṩ, ʃ, ᶴ, ʆ, ᶘ, ʅ, ƪ, ß, ſ, ẛ, ẜ, ẝ]
189 | "/S": [Ś, Ŝ, Š, Ṡ, ꜱ, Ꞩ, Ş, Ṣ, Ș, Ṥ, Ṧ, Ṩ, Ʃ, ẞ, ]
190 | "/t": [ť, ṫ, ẗ, ᵗ, ₜ, ʈ, þ, ꝥ, ꝧ, ŧ, ⱦ, ţ, ṯ, ṱ, ṭ, ț, ƭ, ᵵ, ƫ, ᶵ, ʇ, ȶ, ꝷ]
191 | "/T": [Ť, Ṫ, ᴛ, ᵀ, Ʈ, Þ, Ꝥ, Ꝧ, Ŧ, Ⱦ, Ţ, Ṯ, Ṱ, Ṭ, Ț, Ƭ, Ʇ ]
192 | "/u": [ū, ú, ű, ǔ, ù, ȕ, û, ŭ, ȗ, ü, ǖ, ǘ, ǚ, ǜ, ů, ũ, ᵤ, ᵘ, ʉ, ᶶ, ủ, ų, ṷ, ụ, ṳ, ṵ, ư, ʊ, ᶷ, ᵿ, ᶙ, ṻ, ṹ, ứ, ừ, ữ, ử, ự, ꭒ, ꭟ, ꝸ, ꭎ, ꭏ, ᴝ, ᵙ, ᴞ]
193 | "/U": [Ū, Ú, Ű, Ǔ, Ù, Ȕ, Û, Ŭ, Ȗ, Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ů, Ũ, ᴜ, ᵁ, ᶸ, Ʉ, Ủ, Ų, Ṷ, Ụ, Ṳ, Ṵ, Ư, Ʊ, Ṻ, Ṹ, Ứ, Ừ, Ữ, Ử, Ự ]
194 | "/v": [ü, ǖ, ǘ, ǚ, ǜ, ṽ, ᵛ, ᵥ, ṿ, ꝟ, ʋ, ᶹ, ᶌ, ⱴ, ⱱ, ỽ, ʌ, ᶺ]
195 | "/V": [Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ṽ, ᴠ, ⱽ, Ṿ, Ꝟ, Ʋ, Ỽ, Ʌ ]
196 | "/w": [ẃ, ẁ, ŵ, ẇ, ẅ, ẘ, ʷ, ẉ, ƿ, ʍ, ⱳ]
197 | "/W": [Ẃ, Ẁ, Ŵ, Ẇ, Ẅ, W̊, ᴡ, ᵂ, Ẉ, Ƿ, Ⱳ]
198 | "/x": [ẋ, ẍ, ᶍ, ˣ, ₓ, ꭖ, ꭗ, ꭘ, ꭙ]
199 | "/X": [Ẋ, Ẍ ]
200 | "/y": [ȳ, ý, ỳ, ŷ, ẏ, ÿ, ẙ, ỹ, ʸ, ɏ, ỷ, ỵ, ƴ, ʎ, ỿ, ꭚ]
201 | "/Y": [Ȳ, Ý, Ỳ, Ŷ, Ẏ, Ÿ, Ỹ, ʏ, Ɏ, Ỷ, Ỵ, Ƴ, Ỿ ]
202 | "/z": [ź, ž, ẑ, ż, ᶻ, ʐ, ᶼ, ʑ, ᶽ, ƶ, ẕ, ẓ, ᵶ, ȥ, ⱬ, ᶎ, ʒ, ᶾ, ǯ, ʓ, ƹ, ƺ, ᶚ, θ, ᶿ, ɀ, ꝣ]
203 | "/Z": [Ź, Ž, Ẑ, Ż, ᴢ, Ƶ, Ẕ, Ẓ, Ȥ, Ⱬ, Ʒ, ᴣ, Ǯ, Ƹ, Ɀ, Ꝣ]
204 | "/aa": [ꜳ]
205 | "/AA": [Ꜳ]
206 | "/ae": [æ, ǣ, ǽ, ᵆ, ᴂ]
207 | "/AE": [Æ, Ǣ, Ǽ, ᴭ, ᴁ ]
208 | "/ao": [ꜵ]
209 | "/AO": [Ꜵ]
210 | "/au": [ꜷ]
211 | "/AU": [Ꜷ]
212 | "/av": [ꜹ, ꜻ]
213 | "/AV": [Ꜹ, Ꜻ]
214 | "/ay": [ꜽ]
215 | "/AY": [Ꜽ]
216 | "/db": [ȸ]
217 | "/ff": [ff]
218 | "/ffi": [ffi]
219 | "/ffl": [ffl]
220 | "/fi": [fi]
221 | "/fl": [fl]
222 | "/fn": [ʩ]
223 | "/hv": [ƕ]
224 | "/HV": [Ƕ]
225 | "/ij": [ij]
226 | "/IJ": [IJ]
227 | "/lj": [lj]
228 | "/ll": [ỻ]
229 | "/LL": [Ỻ]
230 | "/ls": [ʪ]
231 | "/lz": [ʫ, ɮ]
232 | "/nj": [nj]
233 | "/Nj": [Nj]
234 | "/NJ": [NJ]
235 | "/oe": [œ, ᴔ]
236 | "/OE": [Œ, ɶ ]
237 | "/oi": [ƣ]
238 | "/OI": [Ƣ]
239 | "/oo": [ꝏ]
240 | "/OO": [Ꝏ]
241 | "/ou": [ȣ ]
242 | "/OU": [Ȣ, ᴽ]
243 | "/qp": [ȹ]
244 | "/Rx": [℞]
245 | "/tc": [ʨ]
246 | "/th": [ᵺ]
247 | "/ts": [ʦ, ʧ]
248 | "/tz": [ꜩ]
249 | "/TZ": [Ꜩ]
250 | "/ue": [ᵫ]
251 | "/vy": [ꝡ]
252 | "/VY": [Ꝡ]
253 | "/ww": [ʬ]
254 | # 上标、下标
255 | "/sb": [ ⁰, ¹, ², ³, ⁴, ⁵, ⁶, ⁷, ⁸, ⁹, ˜, ⁺, ⁻, ⁼, ⁽, ⁾, ᴬ, ᵃ, ᵄ, ᵅ, ᶛ, ᴭ, ᵆ, ᴮ, ᴯ, ᵇ, ᵝ, ᶜ, ᵓ, ᶝ, ᴰ, ᵈ, ᶞ, ᵟ, ᴱ, ᵉ, ᴲ, ᵊ, ᵋ, ᶟ, ᵌ, ᶠ, ᶡ, ᶲ, ᵠ, ᴳ, ᵍ, ᶢ, ˠ, ᵞ, ᴴ, ʰ, ᶣ, ʱ, ᴵ, ⁱ, ᶤ, ᵎ, ᶥ, ᴶ, ʲ, ᶨ, ᴷ, ᵏ, ᴸ, ᶫ, ˡ, ᶩ, ᶪ, ᴹ, ᵐ, ᶬ, ᵚ, ᶭ, ᴺ, ᴻ, ⁿ, ᵑ, ᶮ, ᶯ, ᴼ, ᵒ, ᶱ, ᴽ, ᴾ, ᵖ, ᴿ, ʳ, ʶ, ʴ, ʵ, ˢ, ᶴ, ᶳ, ᵀ, ᵗ, ᶵ, ᶿ, ᵁ, ᵘ, ᶶ, ᶷ, ᵙ, ⱽ, ᵛ, ᶺ, ᶹ, ᵂ, ʷ, ˣ, ᵡ, ʸ, ᶻ, ᶾ, ᶽ, ᶼ ]
256 | "/xb": [ ₀, ₁, ₂, ₃, ₄, ₅, ₆, ₇, ₈, ₉, ₊, ₋, ₌, ₍, ₎, ‸, ᴀ, ₐ, ᴁ, ʙ, ᴃ, ᵦ, ᴄ, ᴐ, ᴒ, ᴅ, ᴆ, ᴇ, ₑ, ₔ, ᵩ, ɢ, ʛ, ᴦ, ᵧ, ʜ, ₕ, ɪ, ᵻ, ᵢ, ᴊ, ⱼ, ᴋ, ₖ, ʟ, ₗ, ᴌ, ᴧ, ᴍ, ₘ, ꟺ, ɴ, ᴎ, ₙ, ᴏ, ₒ, ɶ, ʘ, ᴓ, ᴑ, ᴘ, ₚ, ᴨ, ᴪ, ʀ, ᵣ, ᴙ, ʁ, ᴚ, ᵨ, ₛ, ᴛ, ₜ, ᴜ, ᵤ, ᵾ, ᴠ, ᵥ, ᴡ, ₓ, ᵪ, ʏ, ᴢ, ᴣ ]
257 | # 希腊
258 | "/xl": [ α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, ς, τ, υ, φ, χ, ψ, ω ]
259 | "/xld": [ Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω ]
260 | # 俄語
261 | "/ey": [ а, б, в, г, д, е, ё, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, э, ю, я ]
262 | "/eyd": [ А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ъ, Ы, Ь, Э, Ю, Я ]
263 | # 月份、日期、曜日等
264 | "/yf": [ ㋀, ㋁, ㋂, ㋃, ㋄, ㋅, ㋆, ㋇, ㋈, ㋉, ㋊, ㋋ ]
265 | "/rq": [ ㏠, ㏡, ㏢, ㏣, ㏤, ㏥, ㏦, ㏧, ㏨, ㏩, ㏪, ㏫, ㏬, ㏭, ㏮, ㏯, ㏰, ㏱, ㏲, ㏳, ㏴, ㏵, ㏶, ㏷, ㏸, ㏹, ㏺, ㏻, ㏼, ㏽, ㏾ ]
266 | "/yr": [ 月, 火, 水, 木, 金, 土, 日, ㊊, ㊋, ㊌, ㊍, ㊎, ㊏, ㊐, ㊗, ㊡, ㈪, ㈫, ㈬, ㈭, ㈮, ㈯, ㈰, ㈷, ㉁, ㉀ ]
267 | # 时间
268 | "/sj": [ ㍘, ㍙, ㍚, ㍛, ㍜, ㍝, ㍞, ㍟, ㍠, ㍡, ㍢, ㍣, ㍤, ㍥, ㍦, ㍧, ㍨, ㍩, ㍪, ㍫, ㍬, ㍭, ㍮, ㍯, ㍰ ]
269 | # 天干、地支、干支
270 | "/tg": [ 甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸 ]
271 | "/dz": [ 子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥 ]
272 | "/gz": [ 甲子, 乙丑, 丙寅, 丁卯, 戊辰, 己巳, 庚午, 辛未, 壬申, 癸酉, 甲戌, 乙亥, 丙子, 丁丑, 戊寅, 己卯, 庚辰, 辛巳, 壬午, 癸未, 甲申, 乙酉, 丙戌, 丁亥, 戊子, 己丑, 庚寅, 辛卯, 壬辰, 癸巳, 甲午, 乙未, 丙申, 丁酉, 戊戌, 己亥, 庚子, 辛丑, 壬寅, 癸卯, 甲辰, 乙巳, 丙午, 丁未, 戊申, 己酉, 庚戌, 辛亥, 壬子, 癸丑, 甲寅, 乙卯, 丙辰, 丁巳, 戊午, 己未, 庚申, 辛酉, 壬戌, 癸亥 ]
273 | #节气
274 | "/jq": [ 立春, 雨水, 惊蛰, 春分, 清明, 谷雨, 立夏, 小满, 芒种, 夏至, 小暑, 大暑, 立秋, 处暑, 白露, 秋分, 寒露, 霜降, 立冬, 小雪, 大雪, 冬至, 小寒, 大寒 ]
275 | # 单位
276 | "/dw": [ Å, ℃, %, ‰, ‱, °, ℉, ㏃, ㏆, ㎈, ㏄, ㏅, ㎝, ㎠, ㎤, ㏈, ㎗, ㎙, ㎓, ㎬, ㏉, ㏊, ㏋, ㎐, ㏌, ㎄, ㎅, ㎉, ㎏, ㎑, ㏍, ㎘, ㎞, ㏎, ㎢, ㎦, ㎪, ㏏, ㎸, ㎾, ㏀, ㏐, ㏓, ㎧, ㎨, ㎡, ㎥, ㎃, ㏔, ㎆, ㎎, ㎒, ㏕, ㎖, ㎜, ㎟, ㎣, ㏖, ㎫, ㎳, ㎷, ㎹, ㎽, ㎿, ㏁, ㎁, ㎋, ㎚, ㎱, ㎵, ㎻, ㏘, ㎩, ㎀, ㎊, ㏗, ㏙, ㏚, ㎰, ㎴, ㎺, ㎭, ㎮, ㎯, ㏛, ㏜, ㎔, ㏝, ㎂, ㎌, ㎍, ㎕, ㎛, ㎲, ㎶, ㎼ ]
277 | # 货币
278 | "/hb": [ ¥, ¥, ¤, ¢, $, $, £, £, ৳, ฿, ₠, ₡, ₢, ₣, ₤, ₥, ₦, ₧, ₨, ₩, ₪, ₫, €, ₭, ₮, ₯, ₰, ₱, ₲, ₳, ₴, ₵, ₶, ₷, ₸, ₹, ₺, ₻, ₼, ₽, ₾, ₿, ⃀, ﷼ ]
279 | # 结构、偏旁、康熙(部首)、笔画、标点
280 | "/jg": [ ⿰, ⿱, ⿲, ⿳, ⿴, ⿵, ⿶, ⿷, ⿸, ⿹, ⿺, ⿻, 〾, , , , , ]
281 | "/pp": [ 乛, 冫, 丷, 龹, ⺌, 龸, 亻, 亼, 亽, 仒, 冖, 冂, 冃, 冄, 宀, 罒, 㓁, 罓, 冈, 凵, 厶, 刂, 勹, 匚, 匸, 卩, 阝, 厂, 丆, 广, 壬, 訁, 讠, 釒, 钅, 飠, 饣, 龺, 攵, 夂, 夊, 尢, 尣, 兂, 旡, 巜, 巛, 彐, 彑, 彡, 彳, 龰, 辶, 廴, 㞢, 忄, 㣺, 扌, 爫, 龵, 廾, 歺, 癶, 氵, 氺, 火, 灬, 爿, 丬, 疒, 牜, ⺶, 犭, 豕, 豸, 虍, 艹, 卝, 龷, 丗, 龶, 芈, 丵, 菐, 黹, 礻, 衤, 糸, 糹, 纟, 龻, 镸, 髟, 襾, 覀, 吅, 㗊, 㠭, 㸚, 叕]
282 | "/kx": [ 一, 丨, 丶, 丿, 乙, 亅, 二, 亠, 人, 儿, 入, 八, 冂, 冖, 冫, 几, 凵, 刀, 力, 勹, 匕, 匚, 匸, 十, 卜, 卩, 厂, 厶, 又, 口, 囗, 土, 士, 夂, 夊, 夕, 大, 女, 子, 宀, 寸, 小, 尢, 尸, 屮, 山, 巛, 工, 己, 巾, 干, 幺, 广, 廴, 廾, 弋, 弓, 彐, 彡, 彳, 心, 戈, 戶, 手, 支, 攴, 文, 斗, 斤, 方, 无, 日, 曰, 月, 木, 欠, 止, 歹, 殳, 毋, 比, 毛, 氏, 气, 水, 火, 爪, 父, 爻, 爿, 片, 牙, 牛, 犬, 玄, 玉, 瓜, 瓦, 甘, 生, 用, 田, 疋, 疒, 癶, 白, 皮, 皿, 目, 矛, 矢, 石, 示, 禸, 禾, 穴, 立, 竹, 米, 糸, 缶, 网, 羊, 羽, 老, 而, 耒, 耳, 聿, 肉, 臣, 自, 至, 臼, 舌, 舛, 舟, 艮, 色, 艸, 虍, 虫, 血, 行, 衣, 襾, 見, 角, 言, 谷, 豆, 豕, 豸, 貝, 赤, 走, 足, 身, 車, 辛, 辰, 辵, 邑, 酉, 釆, 里, 金, 長, 門, 阜, 隶, 隹, 雨, 靑, 非, 面, 革, 韋, 韭, 音, 頁, 風, 飛, 食, 首, 香, 馬, 骨, 高, 髟, 鬥, 鬯, 鬲, 鬼, 魚, 鳥, 鹵, 鹿, 麥, 麻, 黃, 黍, 黑, 黹, 黽, 鼎, 鼓, 鼠, 鼻, 齊, 齒, 龍, 龜, 龠 ]
283 | "/bh": [ ㇀, ㇁, ㇂, ㇃, ㇄, ㇅, ㇆, ㇇, ㇈, ㇉, ㇊, ㇋, ㇌, ㇍, ㇎, ㇏, ㇐, ㇑, ㇒, ㇓, ㇔, ㇕, ㇖, ㇗, ㇘, ㇙, ㇚, ㇛, ㇜, ㇝, ㇞, ㇟, ㇠, ㇡, ㇢, ㇣ ]
284 | "/bd": [ 、, 。, 「, 」, 『, 』, 【, 】, 〈, 〉, 《, 》, ⟨, ⟩, ₋, ⁻, ―, ˗, ˉ, _, ﹍, ﹎, ., ¡, ‼, ⁉, ¿, ؟, ⁈, ⁇, 、, 。, 〃, 〄, 々, 〆, 〇, 〒, 〓, 〔, 〕, 〖, 〗, 〘, 〙, 〚, 〛, 〜, 〝, 〞, 〟, 〠, 〰, 〱, 〲, 〳, 〴, 〵, 〶, 〷, 〻, 〼, 〽 ]
285 | "/bdz": [ ﹅, ﹆, ﹁, ﹂, ﹃, ﹄, ︙, ︱, ︻, ︼, ︗, ︘, ︵, ︶, ︷, ︸, ︹, ︺, ︿, ﹀, ︽, ︾, ︰, ︲, ︳, ︴, ﹉, ﹊, ﹋, ﹌, ﹍, ﹎, ﹏, ﹇, ﹈, ︐, ︑, ︒, ︔, ︕, ︖ ]
286 | # 拼音、注音、声调
287 | "/py": [ ā, á, ǎ, à, ō, ó, ǒ, ò, ê, ê̄, ế, ê̌, ề, ē, é, ě, è, ī, í, ǐ, ì, ū, ú, ǔ, ù, ü, ǖ, ǘ, ǚ, ǜ, ḿ, m̀, ń, ň, ǹ, ẑ, ĉ, ŝ, ŋ ]
288 | "/pyd": [ Ā, Á, Ǎ, À, Ō, Ó, Ǒ, Ò, Ê, Ê̄, Ế, Ê̌, Ề, Ē, É, Ě, È, Ī, Í, Ǐ, Ì, Ū, Ú, Ǔ, Ù, Ü, Ǖ, Ǘ, Ǚ, Ǜ, Ḿ, M̀, Ń, Ň, Ǹ, Ẑ, Ĉ, Ŝ, Ŋ ]
289 | "/zy": [ ㄅ, ㄆ, ㄇ, ㄈ, ㄉ, ㄊ, ㄋ, ㄌ, ㄍ, ㄎ, ㄏ, ㄐ, ㄑ, ㄒ, ㄓ, ㄔ, ㄕ, ㄖ, ㄗ, ㄘ, ㄙ, ㄧ, ㄨ, ㄩ, ㄚ, ㄛ, ㄜ, ㄝ, ㄞ, ㄟ, ㄠ, ㄡ, ㄢ, ㄣ, ㄤ, ㄥ, ㄦ, ㄪ, ㄫ, ㄬ, ㄭ, ㆠ, ㆡ, ㆢ, ㆣ, ㆤ, ㆥ, ㆦ, ㆧ, ㆨ, ㆩ, ㆪ, ㆫ, ㆬ, ㆭ, ㆮ, ㆯ, ㆰ, ㆱ, ㆲ, ㆳ, ㆴ, ㆵ, ㆶ, ㆷ ]
290 | "/sd": [ ˉ, ˊ, ˇ, ˋ, ˆ, ˙, ˜, ˥, ˦, ˧, ˨, ˩, ꜀, ꜁, ꜂, ꜃, ꜄, ꜅, ꜆, ꜇, '〪', '〫', '〬', '〭' ]
291 | # 汉字+圈/弧
292 | "/hzq": [ ㊀, ㊁, ㊂, ㊃, ㊄, ㊅, ㊆, ㊇, ㊈, ㊉, ㊊, ㊋, ㊌, ㊍, ㊎, ㊏, ㊐, ㊑, ㊒, ㊓, ㊔, ㊕, ㊖, ㊗, ㊘, ㊙, ㊚, ㊛, ㊜, ㊝, ㊞, ㊟, ㊠, ㊡, ㊢, ㊣, ㊤, ㊥, ㊦, ㊧, ㊨, ㊩, ㊪, ㊫, ㊬, ㊭, ㊮, ㊯, ㊰, ㉄, ㉅, ㉆, ㉇ ]
293 | "/hzh": [ ㈠, ㈡, ㈢, ㈣, ㈤, ㈥, ㈦, ㈧, ㈨, ㈩, ㈪, ㈫, ㈬, ㈭, ㈮, ㈯, ㈰, ㈱, ㈲, ㈳, ㈴, ㈵, ㈶, ㈷, ㈸, ㈹, ㈺, ㈻, ㈼, ㈽, ㈾, ㈿, ㉀, ㉁, ㉂, ㉃ ]
294 | # いろは順
295 | "/iro": [ い, ろ, は, に, ほ, へ, と, ち, り, ぬ, る, を, わ, か, よ, た, れ, そ, つ, ね, な, ら, む, う, ゐ, の, お, く, や, ま, け, ふ, こ, え, て, あ, さ, き, ゆ, め, み, し, ゑ, ひ, も, せ, す ]
296 | # 假名
297 | "/jm": [ あ, ぁ, い, ぃ, う, ぅ, え, ぇ, お, ぉ, か, ゕ, が, き, ぎ, く, ぐ, け, ゖ, げ, こ, ご, さ, ざ, し, じ, す, ず, せ, ぜ, そ, ぞ, た, だ, ち, ぢ, つ, っ, づ, て, で, と, ど, な, に, ぬ, ね, の, は, ば, ぱ, ひ, び, ぴ, ふ, ぶ, ぷ, へ, べ, ぺ, ほ, ぼ, ぽ, ま, み, む, め, も, や, ゃ, ゆ, ゅ, よ, ょ, ら, り, る, れ, ろ, わ, ゎ, ゐ, ゔ, ゑ, を, ん, ・, ー, ゝ, ゞ, ゟ ]
298 | "/pjm": [ ア, ァ, イ, ィ, ウ, ゥ, エ, ェ, オ, ォ, カ, ヵ, ガ, キ, ギ, ク, グ, ケ, ヶ, ゲ, コ, ゴ, サ, ザ, シ, ジ, ス, ズ, セ, ゼ, ソ, ゾ, タ, ダ, チ, ヂ, ツ, ッ, ヅ, テ, デ, ト, ド, ナ, ニ, ヌ, ネ, ノ, ハ, バ, パ, ヒ, ビ, ピ, フ, ブ, プ, ヘ, ベ, ペ, ホ, ボ, ポ, マ, ミ, ム, メ, モ, ヤ, ャ, ユ, ュ, ヨ, ョ, ラ, リ, ル, レ, ロ, ワ, ヮ, ヰ, ヸ, ヴ, ヱ, ヹ, ヲ, ヺ, ン, ・, ー, ヽ, ヾ, ヿ, ㇰ, ㇱ, ㇲ, ㇳ, ㇴ, ㇵ, ㇶ, ㇷ, ㇸ, ㇹ, ㇺ, ㇻ, ㇼ, ㇽ, ㇾ, ㇿ ]
299 | "/jmk": [ か, ゕ, き, く, け, ゖ, こ, カ, ヵ, キ, ク, ケ, ヶ, コ ]
300 | "/jmg": [ が, ぎ, ぐ, げ, ご, ガ, ギ, グ, ゲ, ゴ ]
301 | "/jms": [ さ, し, す, せ, そ, サ, シ, ス, セ, ソ ]
302 | "/jmz": [ ざ, じ, ず, ぜ, ぞ, ザ, ジ, ズ, ゼ, ゾ ]
303 | "/jmt": [ た, ち, つ, っ, て, と, タ, チ, ツ, ッ, テ, ト ]
304 | "/jmd": [ だ, ぢ, づ, で, ど, ダ, ヂ, ヅ, デ, ド ]
305 | "/jmn": [ な, に, ぬ, ね, の, ん, ナ, ニ, ヌ, ネ, ノ, ン ]
306 | "/jmh": [ は, ひ, ふ, へ, ほ, ハ, ヒ, フ, ヘ, ホ ]
307 | "/jmb": [ ば, び, ぶ, べ, ぼ, バ, ビ, ブ, ベ, ボ ]
308 | "/jmp": [ ぱ, ぴ, ぷ, ぺ, ぽ, パ, ピ, プ, ペ, ポ ]
309 | "/jmm": [ ま, み, む, め, も, マ, ミ, ム, メ, モ ]
310 | "/jmy": [ や, ゃ, ゆ, ゅ, よ, ょ, ヤ, ャ, ユ, ュ, ヨ, ョ ]
311 | "/jmr": [ ら, り, る, れ, ろ, ラ, リ, ル, レ, ロ ]
312 | "/jmw": [ わ, ゐ, ゑ, を, ワ, ヰ, ヱ, ヲ ]
313 | "/jma": [ あ, か, が, さ, ざ, た, だ, な, は, ば, ぱ, ま, や, ら, わ, ア, カ, ガ, サ, ザ, タ, ダ, ナ, ハ, バ, パ, マ, ヤ, ラ, ワ ]
314 | "/jmi": [ い, き, ぎ, し, じ, ち, ぢ, に, ひ, び, ぴ, み, り, ゐ, イ, キ, ギ, シ, ジ, チ, ヂ, ニ, ヒ, ビ, ピ, ミ, リ, ヰ ]
315 | "/jmu": [ う, く, ぐ, す, ず, つ, づ, ぬ, ふ, ぶ, ぷ, む, る, ウ, ク, グ, ス, ズ, ツ, ヅ, ヌ, フ, ブ, プ, ム, ル ]
316 | "/jme": [ え, け, げ, せ, ぜ, て, で, ね, へ, べ, ぺ, め, れ, ゑ, エ, ケ, ゲ, セ, ゼ, テ, デ, ネ, ヘ, ベ, ペ, メ, レ, ヱ ]
317 | "/jmo": [ お, こ, ご, そ, ぞ, と, ど, の, ほ, ぼ, ぽ, も, ろ, を, オ, コ, ゴ, ソ, ゾ, ト, ド, ノ, ホ, ボ, ポ, モ, ロ, ヲ ]
318 | # 假名+圈
319 | "/jmq": [ ㋐, ㋑, ㋒, ㋓, ㋔, ㋕, ㋖, ㋗, ㋘, ㋙, ㋚, ㋛, ㋜, ㋝, ㋞, ㋟, ㋠, ㋡, ㋢, ㋣, ㋤, ㋥, ㋦, ㋧, ㋨, ㋩, ㋪, ㋫, ㋬, ㋭, ㋮, ㋯, ㋰, ㋱, ㋲, ㋳, ㋴, ㋵, ㋶, ㋷, ㋸, ㋹, ㋺, ㋻, ㋼, ㋽, ㋾ ]
320 | # 假名+半角
321 | "/jmbj": [ ア, ァ, イ, ィ, ウ, ゥ, エ, ェ, オ, ォ, カ, キ, ク, ケ, コ, サ, シ, ス, セ, ソ, タ, チ, ツ, ッ, テ, ト, ナ, ニ, ヌ, ネ, ノ, ハ, ヒ, フ, ヘ, ホ, マ, ミ, ム, メ, モ, ヤ, ャ, ユ, ュ, ヨ, ョ, ラ, リ, ル, レ, ロ, ワ, ヲ, ン, ・, ー, ゙, ゚ ]
322 | # 韩文
323 | "/hw": [ ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ ]
324 | # 韩文+圈/弧
325 | "/hwq": [ ㉠, ㉡, ㉢, ㉣, ㉤, ㉥, ㉦, ㉧, ㉨, ㉩, ㉪, ㉫, ㉬, ㉭, ㉮, ㉯, ㉰, ㉱, ㉲, ㉳, ㉴, ㉵, ㉶, ㉷, ㉸, ㉹, ㉺, ㉻, ㉼, ㉽, ㉾, ㉿ ]
326 | "/hwh": [ ㈀, ㈁, ㈂, ㈃, ㈄, ㈅, ㈆, ㈇, ㈈, ㈉, ㈊, ㈋, ㈌, ㈍, ㈎, ㈏, ㈐, ㈑, ㈒, ㈓, ㈔, ㈕, ㈖, ㈗, ㈘, ㈙, ㈚, ㈛, ㈜, ㈝, ㈞ ]
327 |
--------------------------------------------------------------------------------
/opencc/emoji.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Chinese to Emoji",
3 | "segmentation": {
4 | "type": "mmseg",
5 | "dict": {
6 | "type": "text",
7 | "file": "emoji_word.txt"
8 | }
9 | },
10 | "conversion_chain": [
11 | {
12 | "dict": {
13 | "type": "group",
14 | "dicts": [
15 | {
16 | "type": "text",
17 | "file": "emoji_word.txt"
18 | }
19 | ]
20 | }
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/squirrel.yaml:
--------------------------------------------------------------------------------
1 | # Squirrel settings
2 | # encoding: utf-8
3 | # 修改自: https://github.com/rime/squirrel/blob/master/data/squirrel.yaml
4 | #
5 | # COMMIT SHA: ea6720a0348a2f047ca0d8d87d82b221ac03be7b
6 |
7 | config_version: "2025-04-24"
8 |
9 | # 可用选项:last | default | _custom_
10 | # last:上次使用的拉丁字母键盘布局
11 | # default:美国(ABC)键盘布局
12 | # _custom_:键盘布局,例如 'com.apple.keylayout.USExtended' 或简写的 'USExtended'
13 | keyboard_layout: last
14 |
15 | # 给打字贼快的家伙们设置的按键持续时间(
16 | chord_duration: 0.1 # seconds
17 |
18 | # options: always | never | appropriate
19 | show_notifications_when: appropriate
20 | show_notifications_via_notification_center: true
21 |
22 | app_options: {} # 清除应用默认输入法,防止无法输入中文(建议通过 Caps 切换中英文)
23 |
24 | style:
25 | color_scheme: reimu # 主题方案
26 | color_scheme_dark: reimu_dark # 指定深色模式时输入法所使用的主题方案
27 | translucency: true # 背景半透明总开关,不需要关掉即可
28 |
29 | # 是否将选定的候选项作为文本嵌入到输入框中
30 | inline_candidate: false
31 | # 是否将候选栏贴附到屏幕边缘来减少跳动
32 | memorize_size: true
33 | # 是否允许透明颜色之间的堆叠
34 | mutual_exclusive: true
35 | # 启用小箭头来看能否上下翻页
36 | show_paging: false
37 |
38 | # 以下为鼠须管默认设置
39 | candidate_list_layout: linear # stacked | linear
40 | text_orientation: horizontal # horizontal | vertical
41 | inline_preedit: true # 是否内嵌输入码
42 | corner_radius: 7
43 | hilited_corner_radius: 0
44 | border_height: -2
45 | border_width: -2
46 | line_spacing: 5
47 | spacing: 8
48 | # 大于 0 则会在高亮的候选项周围绘制阴影
49 | shadow_size: 0
50 | # 控制非高亮候选背景大小,相对于高亮
51 | surrounding_extra_expansion: 0
52 | # 候选项的格式
53 | candidate_format: "[label]. [candidate] [comment]"
54 | # base_offset: 0 # 竖排文字的基线调整
55 | font_face: "Lucida Grande"
56 | font_point: 16
57 | # label_font_face: 'Lucida Grande'
58 | label_font_point: 12
59 | # comment_font_face: 'Lucida Grande'
60 | comment_font_point: 16
61 |
62 | preset_color_schemes:
63 | # 关于主题中的各个设置项的说明,详见文件末尾
64 | ayaya:
65 | name: "文文/Ayaya"
66 | author: "Lufs X "
67 |
68 | font_face: "LXGWWenKai-Regular, PingFangSC"
69 | font_point: 16.5
70 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
71 | label_font_point: 12
72 |
73 | candidate_format: "[label]\u2005[candidate] [comment]"
74 | candidate_list_layout: linear
75 | text_orientation: horizontal
76 | inline_preedit: true
77 |
78 | corner_radius: 5
79 | hilited_corner_radius: 0
80 | border_height: 0
81 | border_width: 0
82 | alpha: 0.95
83 | shadow_size: 0
84 |
85 | color_space: display_p3
86 | back_color: 0xFFFFFF
87 | border_color: 0xECE4FC
88 | candidate_text_color: 0x121212
89 | comment_text_color: 0x8E8E8E
90 | label_color: 0x888785
91 | hilited_candidate_back_color: 0xECE4FC
92 | hilited_candidate_text_color: 0x7A40EC
93 | hilited_comment_text_color: 0x8E8E8E
94 | hilited_candidate_label_color: 0xB18FF4
95 | text_color: 0x8100EB
96 | hilited_text_color: 0xD8000000
97 |
98 | ayaya_dark:
99 | name: "文文/Ayaya/深色"
100 | author: "Lufs X "
101 |
102 | font_face: "LXGWWenKai-Regular, PingFangSC"
103 | font_point: 16.5
104 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
105 | label_font_point: 12
106 |
107 | candidate_format: "[label]\u2005[candidate] [comment]"
108 | candidate_list_layout: linear
109 | text_orientation: horizontal
110 | inline_preedit: true
111 |
112 | corner_radius: 5
113 | hilited_corner_radius: 0
114 | border_height: 0
115 | border_width: 0
116 | alpha: 0.95
117 | shadow_size: 0
118 |
119 | color_space: display_p3
120 | back_color: 0x000000
121 | border_color: 0xECE4FC
122 | candidate_text_color: 0xD2D2D2
123 | comment_text_color: 0x8E8E8E
124 | label_color: 0x888785
125 | hilited_candidate_back_color: 0x2C1E3C
126 | hilited_candidate_text_color: 0x7036E2
127 | hilited_comment_text_color: 0x8E8E8E
128 | hilited_candidate_label_color: 0x7036E2
129 | text_color: 0x8100EB
130 | hilited_text_color: 0xD8000000
131 |
132 | reimu:
133 | name: "灵梦/Reimu"
134 | author: "Lufs X "
135 |
136 | font_face: "LXGWWenKai-Regular, PingFangSC"
137 | font_point: 17
138 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
139 | label_font_point: 14
140 |
141 | candidate_format: "[label]\u2005[candidate] [comment]"
142 | candidate_list_layout: linear
143 | text_orientation: horizontal
144 | inline_preedit: true
145 |
146 | corner_radius: 7
147 | hilited_corner_radius: 6
148 | border_height: 1
149 | border_width: 1
150 | alpha: 0.95
151 | shadow_size: 2
152 |
153 | color_space: display_p3
154 | back_color: 0xF5FCFD
155 | candidate_text_color: 0x282C32
156 | comment_text_color: 0x717172
157 | label_color: 0x888785
158 | hilited_candidate_back_color: 0xF5FCFD
159 | hilited_candidate_text_color: 0x4F00E5
160 | hilited_comment_text_color: 0x9F9CF2
161 | hilited_candidate_label_color: 0x4F00E5
162 | text_color: 0x6B54E9
163 | hilited_text_color: 0xD8000000
164 |
165 | reimu_dark:
166 | name: "灵梦/Reimu/深色"
167 | author: "Lufs X "
168 |
169 | font_face: "LXGWWenKai-Regular, PingFangSC"
170 | font_point: 17
171 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
172 | label_font_point: 14
173 |
174 | candidate_format: "[label]\u2005[candidate] [comment]"
175 | candidate_list_layout: linear
176 | text_orientation: horizontal
177 | inline_preedit: true
178 |
179 | corner_radius: 7
180 | hilited_corner_radius: 6
181 | border_height: 1
182 | border_width: 1
183 | alpha: 0.95
184 | shadow_size: 2
185 |
186 | color_space: display_p3
187 | back_color: 0x020A00
188 | border_color: 0x020A00
189 | candidate_text_color: 0xC0C0C0
190 | comment_text_color: 0x717172
191 | label_color: 0x717172
192 | hilited_candidate_back_color: 0x0C140A
193 | hilited_candidate_text_color: 0x3100C7
194 | hilited_comment_text_color: 0x7772AF
195 | hilited_candidate_label_color: 0x3100C7
196 | text_color: 0x6B54E9
197 | hilited_text_color: 0xD8000000
198 |
199 | apathy:
200 | name: "冷漠/Apathy"
201 | author: LIANG Hai
202 |
203 | font_face: "PingFangSC-Regular"
204 | font_point: 16
205 | label_font_face: "STHeitiSC-Light"
206 | label_font_point: 12
207 |
208 | candidate_format: "[label]\u2005[candidate] [comment]"
209 | candidate_list_layout: linear
210 | text_orientation: horizontal
211 | inline_preedit: true
212 |
213 | corner_radius: 5
214 |
215 | alpha: 0.95
216 | color_space: srgb
217 | back_color: 0xFFFFFF
218 | candidate_text_color: 0xD8000000
219 | comment_text_color: 0x999999
220 | label_color: 0xE5555555
221 | hilited_candidate_back_color: 0xFFF0E4
222 | hilited_candidate_text_color: 0xEE6E00
223 | hilited_comment_text_color: 0x999999
224 | hilited_candidate_label_color: 0xF4994C
225 | text_color: 0x424242
226 | hilited_text_color: 0xD8000000
227 |
228 | win10:
229 | name: "WIN10"
230 | author: "Lufs X "
231 |
232 | font_face: "LXGWWenKai-Regular, PingFangSC"
233 | font_point: 16.5
234 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
235 | label_font_point: 12
236 |
237 | candidate_list_layout: linear
238 | text_orientation: horizontal
239 | inline_preedit: true
240 |
241 | corner_radius: 0
242 | hilited_corner_radius: -6
243 | border_height: 7
244 | border_width: 6
245 | spacing: 10
246 |
247 | color_space: srgb
248 | back_color: 0xFFFFFF
249 | candidate_text_color: 0x000000
250 | comment_text_color: 0x888888
251 | label_color: 0x888888
252 | hilited_candidate_back_color: 0xCC8F29
253 | hilited_candidate_text_color: 0xFFFFFF
254 | hilited_comment_text_color: 0xFFFFFF
255 | hilited_candidate_label_color: 0xEEDAB8
256 | text_color: 0x000000
257 | hilited_back_color: 0xFFFFFF
258 | hilited_text_color: 0x000000
259 |
260 | win10_ayaya:
261 | name: "WIN10/文文/Ayaya"
262 | author: "Lufs X "
263 |
264 | font_face: "LXGWWenKai-Regular, PingFangSC"
265 | font_point: 16.5
266 | label_font_face: "LXGWWenKai-Regular, PingFangSC"
267 | label_font_point: 12
268 |
269 | candidate_list_layout: linear
270 | text_orientation: horizontal
271 | inline_preedit: true
272 |
273 | corner_radius: 0
274 | hilited_corner_radius: -6
275 | border_height: 7
276 | border_width: 6
277 | spacing: 10
278 |
279 | color_space: display_p3
280 | back_color: 0xFFFFFF
281 | border_color: 0xFFFFFF
282 | candidate_text_color: 0x121212
283 | comment_text_color: 0x8E8E8E
284 | label_color: 0x888785
285 | hilited_candidate_back_color: 0xECE4FC
286 | hilited_candidate_text_color: 0x7A40EC
287 | hilited_comment_text_color: 0x8E8E8E
288 | hilited_candidate_label_color: 0xB18FF4
289 | text_color: 0x8100EB
290 | hilited_text_color: 0xD8000000
291 |
292 | macos12_light:
293 | name: "高仿亮色 macOS"
294 | author: "Lufs X "
295 |
296 | font_face: "PingFangSC-Regular"
297 | font_point: 15
298 | label_font_face: "PingFangSC-Regular"
299 | label_font_point: 12
300 | comment_font_face: "PingFangSC-Regular"
301 | comment_font_point: 13
302 |
303 | candidate_format: "[label]\u2004[candidate] [comment]"
304 | candidate_list_layout: linear
305 | text_orientation: horizontal
306 | inline_preedit: true
307 |
308 | corner_radius: 7
309 | hilited_corner_radius: 6
310 | border_width: 2
311 | line_spacing: 1
312 |
313 | color_space: display_p3
314 | back_color: 0xFFFFFF
315 | border_color: 0xFFFFFF
316 | candidate_text_color: 0xD8000000
317 | comment_text_color: 0x3F000000
318 | label_color: 0x7F7F7F
319 | hilited_candidate_back_color: 0xD05925
320 | hilited_candidate_text_color: 0xFFFFFF
321 | hilited_comment_text_color: 0x808080
322 | hilited_candidate_label_color: 0xFFFFFF
323 | text_color: 0x3F000000
324 | hilited_text_color: 0xD8000000
325 |
326 | macos12_dark:
327 | name: "高仿暗色 macOS"
328 | author: "Lufs X "
329 |
330 | font_face: "PingFangSC-Regular"
331 | font_point: 15
332 | label_font_face: "PingFangSC-Regular"
333 | label_font_point: 12
334 | comment_font_face: "PingFangSC-Regular"
335 | comment_font_point: 13
336 |
337 | candidate_format: "[label]\u2004[candidate] [comment]"
338 | candidate_list_layout: linear
339 | text_orientation: horizontal
340 | inline_preedit: true
341 |
342 | corner_radius: 7
343 | hilited_corner_radius: 6
344 | border_width: 2
345 | line_spacing: 1
346 |
347 | color_space: display_p3
348 | back_color: 0x1E1F24
349 | border_color: 0x1E1F24
350 | candidate_text_color: 0xE8E8E8
351 | comment_text_color: 0x3F000000
352 | label_color: 0x7C7C7C
353 | hilited_candidate_back_color: 0xDA6203
354 | hilited_candidate_text_color: 0xFFFFFF
355 | hilited_comment_text_color: 0x808080
356 | hilited_candidate_label_color: 0xFFE7D6
357 | text_color: 0x3F000000
358 | hilited_text_color: 0xD8000000
359 |
360 | wechat:
361 | name: "高仿微信输入法"
362 | author: "Lufs X "
363 |
364 | font_face: "PingFangSC-Regular"
365 | font_point: 15
366 | label_font_face: "PingFangSC-Regular"
367 | label_font_point: 12
368 | comment_font_face: "PingFangSC-Regular"
369 | comment_font_point: 12
370 |
371 | candidate_format: "[label]\u2005[candidate] [comment]"
372 | candidate_list_layout: linear
373 | text_orientation: horizontal
374 | inline_preedit: true
375 |
376 | corner_radius: 7
377 | hilited_corner_radius: 7
378 | border_height: -2
379 |
380 | color_space: display_p3
381 | back_color: 0xFFFFFF
382 | border_color: 0xFFFFFF
383 | candidate_text_color: 0x444444
384 | comment_text_color: 0x8E8E8E
385 | label_color: 0x888785
386 | hilited_candidate_back_color: 0x7BAE4F
387 | hilited_candidate_text_color: 0xFFFFFF
388 | hilited_comment_text_color: 0xF0F0F0
389 | hilited_candidate_label_color: 0xFFFFFF
390 | text_color: 0xFFFFFF
391 | hilited_text_color: 0xD8000000
392 |
393 | wechat_dark:
394 | name: "高仿暗色微信输入法"
395 | author: "Lufs X "
396 |
397 | font_face: "PingFangSC-Regular"
398 | font_point: 15
399 | label_font_face: "PingFangSC-Regular"
400 | label_font_point: 12
401 | comment_font_face: "PingFangSC-Regular"
402 | comment_font_point: 12
403 |
404 | candidate_format: "[label]\u2005[candidate] [comment]"
405 | candidate_list_layout: linear
406 | text_orientation: horizontal
407 | inline_preedit: true
408 |
409 | corner_radius: 7
410 | hilited_corner_radius: 7
411 | border_height: -2
412 |
413 | color_space: display_p3
414 | back_color: 0x151515
415 | border_color: 0x151515
416 | candidate_text_color: 0xB9B9B9
417 | comment_text_color: 0x8E8E8E
418 | label_color: 0x888785
419 | hilited_candidate_back_color: 0x74A54B
420 | hilited_candidate_text_color: 0xFFFFFF
421 | hilited_comment_text_color: 0xF0F0F0
422 | hilited_candidate_label_color: 0xFFFFFF
423 | text_color: 0xFFFFFF
424 | hilited_text_color: 0x777777
425 |
426 | macos14:
427 | name: "高仿 macOS 14"
428 | author: "Lufs X "
429 |
430 | font_face: "PingFangSC-Regular"
431 | font_point: 16
432 | label_font_face: "PingFangSC-Regular"
433 | label_font_point: 8
434 | comment_font_face: "PingFangSC-Regular"
435 | comment_font_point: 13
436 |
437 | candidate_format: "[label]\u2003\u2003\u2003[candidate] [comment]\u2004\u2001"
438 | candidate_list_layout: linear
439 | text_orientation: horizontal
440 | inline_preedit: true
441 |
442 | corner_radius: 7
443 | hilited_corner_radius: -1
444 | border_height: -4
445 | border_width: 2
446 |
447 | color_space: display_p3
448 | back_color: 0xE7E8EA
449 | border_color: 0xE7E8EA
450 | candidate_text_color: 0x464647
451 | comment_text_color: 0x3F000000
452 | label_color: 0x7F7F7F
453 | hilited_candidate_back_color: 0xD05925
454 | hilited_candidate_text_color: 0xFFFFFF
455 | hilited_comment_text_color: 0xDCDCDC
456 | hilited_candidate_label_color: 0xFFFFFF
457 | text_color: 0x3F000000
458 | hilited_text_color: 0xD8000000
459 |
460 | macos14_dark:
461 | name: "高仿暗色 macOS 14"
462 | author: "Lufs X "
463 |
464 | font_face: "PingFangSC-Regular"
465 | font_point: 16
466 | label_font_face: "PingFangSC-Regular"
467 | label_font_point: 8
468 | comment_font_face: "PingFangSC-Regular"
469 | comment_font_point: 13
470 |
471 | candidate_format: "[label]\u2003\u2003\u2003[candidate] [comment]\u2004\u2001"
472 | candidate_list_layout: linear
473 | text_orientation: horizontal
474 | inline_preedit: true
475 |
476 | corner_radius: 7
477 | hilited_corner_radius: -1
478 | border_height: -4
479 | border_width: 2
480 |
481 | color_space: display_p3
482 | back_color: 0x555557
483 | border_color: 0x0C0C0C
484 | candidate_text_color: 0xEEEEEE
485 | comment_text_color: 0x80FFFFFF
486 | label_color: 0x7C7C7C
487 | hilited_candidate_back_color: 0xCA5824
488 | hilited_candidate_text_color: 0xFFFFFF
489 | hilited_comment_text_color: 0xF0F0F0
490 | hilited_candidate_label_color: 0xFFFFFF
491 | text_color: 0x3F000000
492 | hilited_text_color: 0xD8000000
493 |
494 | # 若都有值,则对应的生效逻辑为
495 | ## .[custom].yaml > style/preset_color_schemes/[配置名] > style
496 | #
497 | # 各个设置项的简要作用说明
498 | # 以下出现的颜色均为 16 进制色值,(A)BGR顺序
499 | ## alpha: 透明度
500 | ## back_color: 候选条背景色
501 | ## base_offset: 候选框与输入框的垂直偏移量
502 | ## border_color: 边框颜色
503 | ## border_color_width: 输入条边框宽度
504 | ## border_height: 窗口上下高度
505 | ## border_width: 窗口左右宽度
506 | ## candidate_format: 候选格式
507 | ## candidate_list_layout: 候选列表布局
508 | ## candidate_spacing: 候选字间隔
509 | ## candidate_text_color: 候选项文字颜色
510 | ## color_space: 色彩空间
511 | ## comment_font_face: 拼音等提示文字字体
512 | ## comment_font_point: 拼音等提示文字字号
513 | ## comment_text_color: 拼音等提示文字颜色
514 | ## corner_radius: 候选条圆角
515 | ## font_face: 文本字体
516 | ## font_point: 文本字体大小
517 | ## hilite_padding: 候选字背景色色块高度
518 | ## hilited_back_color: 选中候选项背景背景色
519 | ## hilited_candidate_back_color: 选中候选项背景色
520 | ## hilited_candidate_label_color: 选中候选项编号颜色
521 | ## hilited_candidate_text_color: 选中候选项文字颜色
522 | ## hilited_comment_text_color: 注解文字高亮颜色
523 | ## hilited_corner_radius: 选中候选项圆角
524 | ## hilited_label_color: 选中候选项编号颜色
525 | ## hilited_text_color: 高亮文本颜色
526 | ## inline_preedit: 输入码是否内嵌显示
527 | ## label_color: 编号颜色
528 | ## label_font_face: 编号字体
529 | ## label_font_point: 编号大小
530 | ## label_format: 编号格式
531 | ## line_spacing: 行间距
532 | ## margin_x: 字左右边距
533 | ## margin_y: 字上下边距
534 | ## min_height: 最小高度
535 | ## min_width: 最小宽度
536 | ## round_corner: 候选字背景色块圆角幅度
537 | ## shadow_size: 阴影大小
538 | ## spacing: 间距
539 | ## text_color: 文本颜色
540 | ## text_orientation: 文本方向
541 |
--------------------------------------------------------------------------------
/tools/emoji2dict.py:
--------------------------------------------------------------------------------
1 | import os, sys, re, datetime
2 | from pypinyin import pinyin, Style
3 |
4 | workDir = os.path.abspath(os.path.dirname(sys.path[0]))
5 | pattern = re.compile(r"^[\u4e00-\u9fa5]+$")
6 |
7 | with open(
8 | os.path.join(workDir, "opencc", "emoji_word.txt"), "r", encoding="utf-8"
9 | ) as f:
10 | text = f.read()
11 |
12 | lines = text.split("\n")
13 |
14 |
15 | def generate_dict_content():
16 | infoStr = f"""# Rime dictionary
17 | # encoding: utf-8
18 | # source: https://github.com/iDvel/rime-ice/blob/main/opencc/emoji.txt
19 |
20 | ---
21 | name: emoji
22 | version: "{datetime.datetime.now().strftime("%Y-%m-%d")}"
23 | sort: by_weight
24 | ...
25 | """
26 | content = [infoStr]
27 | for line in lines:
28 | if line:
29 | parts = line.split("\t")
30 | name = parts[0].strip().split(" ")[-1]
31 | pinyin_name = " ".join([p[0] for p in pinyin(name, style=Style.NORMAL)])
32 | if pattern.match(name):
33 | content.append(f"{name}\t{pinyin_name}\n")
34 | return "".join(content)
35 |
36 |
37 | new_content = generate_dict_content()
38 |
39 | # 按拼音排序
40 | lines = new_content.split("\n")
41 | wait_to_write = []
42 | part_to_sort = []
43 |
44 | for line in lines:
45 | if line.startswith("#") or line == "\n":
46 | if part_to_sort:
47 | sorted_lines = sorted(
48 | part_to_sort,
49 | key=lambda x: x.split("\t")[1] if len(x.split("\t")) > 1 else "",
50 | )
51 | wait_to_write += sorted_lines
52 | part_to_sort.clear()
53 | wait_to_write.append(line)
54 | continue
55 | part_to_sort.append(line)
56 |
57 | if part_to_sort:
58 | wait_to_write += sorted(
59 | part_to_sort,
60 | key=lambda x: x.split("\t")[1] if len(x.split("\t")) > 1 else "",
61 | )
62 |
63 | sorted_content = "\n".join(wait_to_write) + "\n"
64 |
65 | dict_path = os.path.join(workDir, "dicts", "emoji.dict.yaml")
66 | if os.path.exists(dict_path):
67 | with open(dict_path, "r", encoding="utf-8") as existing_file:
68 | existing_content = existing_file.read()
69 | else:
70 | existing_content = ""
71 |
72 | temp_sorted_content = []
73 | for line in sorted_content.splitlines():
74 | if not line.startswith("version:"):
75 | temp_sorted_content.append(line)
76 | temp_sorted_content = "\n".join(temp_sorted_content)
77 |
78 | temp_existing_content = []
79 | for line in existing_content.splitlines():
80 | if not line.startswith("version:"):
81 | temp_existing_content.append(line)
82 | temp_existing_content = "\n".join(temp_existing_content)
83 |
84 | if temp_sorted_content != temp_existing_content:
85 | with open(dict_path, "w", encoding="utf-8", newline="\n") as outFile:
86 | outFile.write(sorted_content)
87 | print("[Emoji] Emoji to dictionary successfully")
88 | else:
89 | print("[Emoji] No changes detected, version not updated")
90 |
--------------------------------------------------------------------------------
/tools/patch/enable_ascii.yaml:
--------------------------------------------------------------------------------
1 | # 英文输入补丁
2 | #
3 | # 使用方法
4 | #
5 | # 将本文件复制到「用户文件夹」根目录中,并重命名为你需要的方案对应的名字(包括后缀名)
6 | # 全拼: lufs_pinyin.custom.yaml
7 | # 小鹤双拼: lufs_flypy.custom.yaml
8 | # 自然码双拼: lufs_dpy.custom.yaml
9 | # 微软双拼: lufs_mspy.custom.yaml
10 | # 拼音加加双拼: lufs_pyjj.custom.yaml
11 |
12 | patch:
13 | engine/processors/@before 0: ascii_composer
14 | engine/segmentors/@before 0: ascii_segmentor
15 | switches/@before 0:
16 | name: ascii_mode
17 | # reset: 0 # 默认状态: 0 中文输入 1 英文输入
18 | states: [中文, 西文]
19 |
--------------------------------------------------------------------------------
/tools/recipes/enable_ascii.recipe.yaml:
--------------------------------------------------------------------------------
1 | # tools/recipes/enable_ascii.recipe.yaml
2 | # encoding: utf-8
3 |
4 | ---
5 | recipe:
6 | Rx: tools/recipes/enable_ascii
7 | args:
8 | - schema=lufs_flypy
9 | description: >-
10 | Enable ascii for target schema
11 |
12 | patch_files:
13 | ${schema:-lufs_flypy}.custom.yaml:
14 | patch/+:
15 | engine/processors/@before 0: ascii_composer
16 | engine/segmentors/@before 0: ascii_segmentor
17 | switches/@before 0:
18 | name: ascii_mode
19 | # reset: 0 # 默认状态: 0 中文输入 1 英文输入
20 | states: [中文, 西文]
21 |
--------------------------------------------------------------------------------
/tools/recipes/install.recipe.yaml:
--------------------------------------------------------------------------------
1 | # tools/recipes/install.recipe.yaml
2 | # encoding: utf-8
3 |
4 | ---
5 | recipe:
6 | Rx: tools/recipes/install
7 | description: >-
8 | Full install LufsX/rime
9 | install_files: >-
10 | custom_phrase.txt
11 | default.yaml
12 | dicts/*.*
13 | extended.dict.yaml
14 | lua/*.*
15 | lua/*/*.*
16 | lufs*.yaml
17 | opencc/*.*
18 | rime.lua
19 | squirrel.yaml
20 | weasel.yaml
21 | zh-hans-t-essay-bgw.gram
22 |
--------------------------------------------------------------------------------
/tools/recipes/update.recipe.yaml:
--------------------------------------------------------------------------------
1 | # tools/recipes/update.recipe.yaml
2 | # encoding: utf-8
3 |
4 | ---
5 | recipe:
6 | Rx: tools/recipes/update
7 | description: >-
8 | Update dicts and opencc only
9 | install_files: >-
10 | dicts/*.*
11 | opencc/*.*
12 |
--------------------------------------------------------------------------------
/tools/requirements.txt:
--------------------------------------------------------------------------------
1 | pypinyin
2 | requests
3 |
--------------------------------------------------------------------------------
/tools/run.py:
--------------------------------------------------------------------------------
1 | import os, sys
2 |
3 | workDir = os.path.abspath(os.path.dirname(sys.path[0]))
4 |
5 | list = ["update.py", "emoji2dict.py", "update_sogou.py", "util.py"]
6 |
7 | for file in list:
8 | os.system(f"python {os.path.join(workDir,"tools",file)}")
9 |
--------------------------------------------------------------------------------
/tools/scel2dict.py:
--------------------------------------------------------------------------------
1 | # Usage: python scel2dict.py -i -o -u
2 | # License: GPL-3.0
3 | # Description: Convert Sogou SCEL dictionary to Rime dictionary format
4 | # Author:
5 | # - LufsX
6 | # Reference Code:
7 | # - https://github.com/studyzy/imewlconverter/blob/master/src/ImeWlConverterCore/IME/SougouPinyinScel.cs
8 | # Thanks to:
9 | # - https://github.com/nopdan
10 | # - https://github.com/studyzy/imewlconverter
11 | # - https://github.com/studyzy/imewlconverter/issues/275#issuecomment-1911748289
12 |
13 | import argparse
14 | import os
15 | import struct
16 | import sys
17 | import tempfile
18 | import time
19 | import urllib
20 |
21 |
22 | class SougouScelReader:
23 | """搜狗细胞词库解析"""
24 |
25 | def __init__(self, path):
26 | self.path = path
27 | self.py_dic = {}
28 | self.words = []
29 |
30 | def read_scel_info(self):
31 | """读取词库基本信息"""
32 | info = {}
33 | with open(self.path, "rb") as f:
34 | # 读取词条数量
35 | f.seek(0x124)
36 | count_word = struct.unpack("= 0:
63 | return text[:end]
64 | return text
65 |
66 | def read_scel(self):
67 | """读取整个 SCEL 词库文件"""
68 | with open(self.path, "rb") as f:
69 | # 词条数量
70 | f.seek(0x120)
71 | dict_len = struct.unpack("更 新:(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})"
34 | match = re.search(pattern, response.text)
35 |
36 | if match:
37 | return match.group(1)
38 | return None
39 | except Exception as e:
40 | print(f"[Dict](Sogou) Failed to obtain the vocabulary update time: {str(e)}")
41 | return None
42 |
43 |
44 | # 转换为 Rime 词典格式的函数
45 | def convert_to_rime(words, output_file, id, update_date=None, increment=False):
46 | if increment:
47 | # 增量更新处理
48 | existing_words = set()
49 | existing_lines = []
50 | flag = False
51 |
52 | # 如果文件已存在,读取现有内容
53 | if os.path.exists(output_file):
54 | with open(output_file, "r", encoding="utf-8") as f:
55 | lines = f.readlines()
56 | # 分离词条
57 | for line in lines:
58 | if flag or line == "...\n":
59 | existing_lines.append(line)
60 | flag = True
61 |
62 | with open(output_file, "w", encoding="utf-8") as f:
63 | f.write(f"# Rime dictionary\n")
64 | f.write(f"# encoding: utf-8\n")
65 | f.write(f"# source: https://pinyin.sogou.com/dict/detail/index/{id}\n\n")
66 | f.write(
67 | f"---\nname: {os.path.basename(output_file).replace('.dict.yaml', '').replace('sogou_', '')}\n"
68 | )
69 | version_date = update_date if update_date else time.strftime("%Y-%m-%d")
70 | f.write(f'version: "{version_date}"\n')
71 | f.write(f"sort: by_weight\n")
72 |
73 | # 写回现有词条
74 | for line in existing_lines:
75 | f.write(line)
76 |
77 | # 添加新词条
78 | new_count = 0
79 | for word_info in words:
80 | word = word_info["word"]
81 | # 过滤词条
82 | if re.search(r"[a-zA-Z]", word):
83 | continue
84 | # 只加新增的词条
85 | if word not in existing_words:
86 | pinyin = " ".join(word_info["pinyin"])
87 | f.write(f"{word}\t{pinyin}\n")
88 | new_count += 1
89 | existing_words.add(word)
90 |
91 | print(
92 | f"[Dict](Sogou) Incremental update: Added {new_count} new entries to {output_file}"
93 | )
94 | else:
95 | # 写入 Rime 词典头部
96 | with open(output_file, "w", encoding="utf-8") as f:
97 | f.write(f"# Rime dictionary\n")
98 | f.write(f"# encoding: utf-8\n")
99 | f.write(f"# source: https://pinyin.sogou.com/dict/detail/index/{id}\n\n")
100 | f.write(
101 | f"---\nname: {os.path.basename(output_file).replace('.dict.yaml', '').replace('sogou_', '')}\n"
102 | )
103 | version_date = update_date if update_date else time.strftime("%Y-%m-%d")
104 | f.write(f'version: "{version_date}"\n')
105 | f.write(f"sort: by_weight\n")
106 | f.write(f"...\n\n")
107 |
108 | # 写入词条
109 | for word_info in words:
110 | word = word_info["word"]
111 | pinyin = " ".join(word_info["pinyin"])
112 | f.write(f"{word}\t{pinyin}\n")
113 |
114 | print(
115 | f"[Dict](Sogou) Translation completed: {len(words)} entries saved to {output_file}"
116 | )
117 |
118 |
119 | for key in dict_list:
120 | info = dict_list[key]
121 | dict_id = info["id"]
122 | dict_name = info["name"]
123 | dict_increment = info.get("increment", False)
124 |
125 | print(f"[Dict](Sogou) Processing: {dict_name} (ID: {dict_id})")
126 |
127 | # 获取词库网页内容并提取更新日期
128 | update_date = extract_update_date(dict_id)
129 | if update_date:
130 | print(f"[Dict](Sogou) Dict Update Date: {update_date}")
131 |
132 | # 构建URL
133 | url = f"https://pinyin.sogou.com/d/dict/download_cell.php?id={dict_id}&name={urllib.parse.quote(dict_name)}"
134 |
135 | # 输出路径
136 | output_path = os.path.join(workDir, "dicts", key)
137 |
138 | # 确保输出目录存在
139 | os.makedirs(os.path.dirname(output_path), exist_ok=True)
140 |
141 | try:
142 | # 下载词库
143 | downloader = SougouScelDownloader()
144 | scel_file, temp_flag = downloader.download(url)
145 |
146 | # 读取词库
147 | reader = SougouScelReader(scel_file)
148 | dict_info = reader.read_scel_info()
149 | print(f"[Dict](Sogou) Dict Name: {dict_info.get('Name')}")
150 | print(f"[Dict](Sogou) Count: {dict_info.get('CountWord')}")
151 |
152 | words = reader.read_scel()
153 | print(f"[Dict](Sogou) Actual Count: {len(words)}")
154 |
155 | # 转换为 RIME 词典,传递提取的更新日期
156 | convert_to_rime(words, output_path, dict_id, update_date=update_date, increment=dict_increment)
157 | print(f"[Dict](Sogou) Saved to: {output_path}")
158 |
159 | # 清理临时文件
160 | if temp_flag[0] and os.path.exists(temp_flag[2]):
161 | os.remove(temp_flag[2])
162 |
163 | except Exception as e:
164 | print(f"[Dict](Sogou) Failed to update dict {dict_name}: {str(e)}")
165 | continue
166 |
167 | print("[Dict](Sogou) All dict update completed!")
168 |
--------------------------------------------------------------------------------
/tools/util.py:
--------------------------------------------------------------------------------
1 | def deduplicate(src_file, dest_file):
2 | lines_seen = set()
3 | output_lines = []
4 |
5 | with open(src_file, "r", encoding="utf-8") as file:
6 | for line in file:
7 | stripped_line = line.strip()
8 | if (
9 | stripped_line == ""
10 | or stripped_line.startswith("#")
11 | or stripped_line not in lines_seen
12 | ):
13 | output_lines.append(line)
14 | if stripped_line != "":
15 | lines_seen.add(stripped_line)
16 |
17 | with open(dest_file, "w", encoding="utf-8", newline="\n") as file:
18 | file.writelines(output_lines)
19 |
20 |
21 | def get_info(src_file):
22 | with open(src_file, "r", encoding="utf-8") as f:
23 | lines = f.readlines()
24 |
25 | info = []
26 | flag_continue = False
27 |
28 | for line in lines:
29 | if line == "\n" or line.startswith("#"):
30 | info.append(line)
31 | elif line == "---\n":
32 | info.append(line)
33 | flag_continue = True
34 | elif flag_continue:
35 | info.append(line)
36 | if line == "...\n":
37 | flag_continue = False
38 | else:
39 | break
40 |
41 | return info
42 |
43 |
44 | def sort(src_file, dest_file):
45 | info = get_info(src_file)
46 |
47 | # 跳过处理 THUOCL 词库
48 | if "thuocl" in src_file:
49 | return
50 |
51 | with open(src_file, "r", encoding="utf-8") as f:
52 | lines = f.readlines()[len(info) :]
53 |
54 | format_type = len(lines[0].split("\t"))
55 |
56 | # format_type == 2 时,排序「字 zi」此类,规则是按拼音排序
57 | # format_type == 3 时,排序「字 zi 1」此类,规则是按拼音+字频排序
58 | # 暂时不支持混排
59 | if format_type == 2:
60 | wait_to_write = []
61 | part_to_sort = []
62 |
63 | for line in lines:
64 | if line.startswith("#") or line == "\n":
65 | if part_to_sort:
66 | sorted_lines = sorted(
67 | part_to_sort,
68 | key=lambda x: (
69 | x.split("\t")[1] if len(x.split("\t")) > 1 else ""
70 | ),
71 | )
72 | wait_to_write += sorted_lines
73 | part_to_sort.clear()
74 | wait_to_write.append(line)
75 | continue
76 | part_to_sort.append(line)
77 |
78 | if part_to_sort:
79 | wait_to_write += sorted(
80 | part_to_sort,
81 | key=lambda x: x.split("\t")[1] if len(x.split("\t")) > 1 else "",
82 | )
83 | with open(dest_file, "w", encoding="utf-8", newline="\n") as f:
84 | f.writelines(info + wait_to_write)
85 | elif format_type == 3:
86 | wait_to_write = []
87 | part_to_sort = []
88 |
89 | for line in lines:
90 | if line.startswith("#") or line == "\n":
91 | if part_to_sort:
92 | sorted_lines = sorted(
93 | part_to_sort,
94 | key=lambda x: (
95 | x.split("\t")[1] if len(x.split("\t")) > 1 else "",
96 | (
97 | int(x.split("\t")[2])
98 | if len(x.split("\t")) > 2 and x.split("\t")[2].isdigit()
99 | else 0
100 | ),
101 | ),
102 | )
103 | wait_to_write += sorted_lines
104 | part_to_sort.clear()
105 | wait_to_write.append(line)
106 | continue
107 | part_to_sort.append(line)
108 |
109 | if part_to_sort:
110 | wait_to_write += sorted(
111 | part_to_sort,
112 | key=lambda x: (
113 | x.split("\t")[1] if len(x.split("\t")) > 1 else "",
114 | (
115 | int(x.split("\t")[2])
116 | if len(x.split("\t")) > 2 and x.split("\t")[2].isdigit()
117 | else 0
118 | ),
119 | ),
120 | )
121 | with open(dest_file, "w", encoding="utf-8", newline="\n") as f:
122 | f.writelines(info + wait_to_write)
123 |
124 |
125 | if __name__ == "__main__":
126 | import os
127 | import sys
128 |
129 | dicts_dir = os.path.join(os.path.abspath(os.path.dirname(sys.path[0])), "dicts")
130 |
131 | for root, _, files in os.walk(dicts_dir):
132 | for file in files:
133 | if file.endswith(".yaml"):
134 | file_path = os.path.join(root, file)
135 | print(f"[Dict] Deduplicate and sort {file_path}")
136 | deduplicate(file_path, file_path)
137 | sort(file_path, file_path)
138 |
139 | print("[Dict] All completed")
140 |
--------------------------------------------------------------------------------
/weasel.yaml:
--------------------------------------------------------------------------------
1 | # Weasel settings
2 | # encoding: utf-8
3 | # 修改自: https://github.com/rime/weasel/blob/master/output/data/weasel.yaml
4 | #
5 | # COMMIT SHA: 7016a340fdc06b291ed8ca074924eea8c07679b8
6 |
7 | config_version: "2024-06-08"
8 |
9 | app_options:
10 | cmd.exe:
11 | ascii_mode: true
12 | conhost.exe:
13 | ascii_mode: true
14 | firefox.exe:
15 | inline_preedit: true # 解决 Firefox 无法输入的问题 https://github.com/rime/weasel/issues/946
16 |
17 | show_notifications: true
18 | # 通知显示多长时间
19 | show_notifications_time: 1200
20 | # 使用全局 ascii 状态
21 | global_ascii: false
22 |
23 | style:
24 | color_scheme: win11_weasel # 主题方案
25 | color_scheme_dark: win11_weasel_dark # 暗色模式下的主题方案
26 |
27 | # 这里提供三种不同主题预设,自行切换注释即可
28 | # 必须启用其中一种预设!
29 |
30 | # Windows 11 风格预设
31 | # 感谢 luminosara https://github.com/LufsX/rime/pull/22、https://github.com/LufsX/rime/pull/26
32 | __include: win11_preset
33 |
34 | # Windows 10 MDL2 风格预设
35 | # 此项风格建议使用 win10_MDL 为前缀的主题方案
36 | # 感谢 fbewivpjsbsby https://github.com/LufsX/rime/discussions/29
37 | # __include: win10_MDL_preset
38 |
39 | # Windows 10 风格预设
40 | # 感谢 luminosara https://github.com/LufsX/rime/pull/22、https://github.com/LufsX/rime/pull/26
41 | # __include: win10_preset
42 |
43 | # 以下是其它的设置
44 |
45 | antialias_mode: default # 抗锯齿模式
46 | ascii_tip_follow_cursor: false # 切换 ASCII 模式时,提示跟随光标
47 | display_tray_icon: false # 显示系统托盘图标
48 | fullscreen: false # 演示模式(全屏的輸入窗口)
49 |
50 | click_to_capture: false # 点击输入法时捕获截图到剪贴板
51 | hover_type: semi_hilite # 鼠标悬停行为 none(无动作); hilite(选中鼠标下的候选); semi_hilite(高亮鼠标下的候选)
52 | paging_on_scroll: false # 鼠标滚轮翻页候选栏
53 |
54 | inline_preedit: true # 在光标位置显示预编辑文本
55 | preedit_type: composition # 预编辑文本类型 composition(编码); preview(高亮候选); preview_all(全部候选)
56 | candidate_abbreviate_length: 0 # 最长候选长度,多出来的将被…代替,值为 0 或将这行注释禁用此功能
57 |
58 | horizontal: true # 水平排列候选栏
59 | font_face: Segoe UI Emoji:30:39, Noto Color Emoji, Microsoft YaHei # 主要字体
60 | label_font_face: Microsoft YaHei # 标签字体
61 | comment_font_face: Microsoft YaHei # 注释字体
62 | font_point: 14 # 主要字体大小
63 | label_font_point: 14 # 标签字体大小
64 | comment_font_point: 14 # 注释字体大小
65 | mark_text: "" # 高亮标记字符,显示在选中的候选标签前
66 |
67 | vertical_auto_reverse: false # 垂直排列时自动反转顺序
68 | vertical_text: false # 垂直文本显示
69 | vertical_text_left_to_right: false # 垂直文本从左到右显示
70 | vertical_text_with_wrap: false # 垂直文本自动换行
71 |
72 | layout/baseline: 0 # 基线高度百分比,0 即为禁用
73 | layout/linespacing: 0 # 行高百分比,0 即为禁用,该项大于 100 可解决因字体导致的候选栏高度闪烁问题(需要同时设置基线高度 baseline)
74 |
75 | preset_color_schemes:
76 | ayaya:
77 | name: "文文/Ayaya"
78 | author: "Lufs X "
79 |
80 | back_color: 0xF9F9F9
81 | border_color: 0xE7E7E7
82 | candidate_text_color: 0x121212
83 | comment_text_color: 0x8E8E8E
84 | hilited_candidate_back_color: 0xECE4FC
85 | hilited_candidate_label_color: 0xB18FF4
86 | hilited_candidate_text_color: 0x7A40EC
87 | hilited_label_color: 0xA483EC
88 | hilited_mark_color: 0x7A40EC
89 | label_color: 0x888785
90 | text_color: 0x8100EB
91 |
92 | ayaya_dark:
93 | name: "文文/Ayaya/深色"
94 | author: "Lufs X "
95 |
96 | back_color: 0x000000
97 | border_color: 0x000000
98 | candidate_text_color: 0xD2D2D2
99 | comment_text_color: 0x8E8E8E
100 | hilited_candidate_back_color: 0x2C1E3C
101 | hilited_candidate_label_color: 0x7036E2
102 | hilited_candidate_text_color: 0x7036E2
103 | hilited_comment_text_color: 0x8E8E8E
104 | hilited_label_color: 0xA483EC
105 | hilited_mark_color: 0x7A40EC
106 | label_color: 0x888785
107 |
108 | apathy:
109 | name: 冷漠/Apathy
110 | author: LIANG Hai
111 | back_color: 0xFFFFFF
112 | text_color: 0x424242
113 | hilited_candidate_text_color: 0xEE6E00
114 | hilited_candidate_back_color: 0xFFF0E4
115 | comment_text_color: 0x999999
116 |
117 | win10:
118 | candidate_text_color: 0x000000
119 | comment_text_color: 0x888888
120 | text_color: 0x000000
121 | back_color: 0xffffff
122 | hilited_text_color: 0x000000
123 | hilited_back_color: 0xffffff
124 | hilited_candidate_text_color: 0xffffff
125 | hilited_candidate_back_color: 0xcc8f29
126 | hilited_comment_text_color: 0xffffff
127 | hilited_label_color: 0xffffff
128 | label_color: 0x888888
129 |
130 | macos_light:
131 | author: "一方"
132 | back_color: 0xFFFFFF
133 | border_color: 0xFFFFFF
134 | text_color: 0x424242
135 | hilited_back_color: 0xD75A00
136 | hilited_candidate_text_color: 0xFFFFFF
137 | hilited_candidate_label_color: 0xFFFFFF
138 | hilited_comment_text_color: 0x999999
139 | hilited_text_color: 0x999999
140 | candidate_text_color: 0x3c3c3c
141 | comment_text_color: 0x999999
142 | label_color: 0x999999
143 |
144 | macos_dark:
145 | author: "一方"
146 | back_color: 0x252a2e
147 | border_color: 0x050505
148 | text_color: 0x424242
149 | hilited_back_color: 0xD75A00
150 | hilited_candidate_text_color: 0xFFFFFF
151 | hilited_candidate_label_color: 0xFFFFFF
152 | hilited_comment_text_color: 0x999999
153 | hilited_text_color: 0x999999
154 | candidate_text_color: 0xe9e9ea
155 | comment_text_color: 0x999999
156 | label_color: 0x999999
157 |
158 | macos12_light:
159 | name: "高仿亮色 macOS"
160 | author: "Lufs X "
161 |
162 | back_color: 0xFFFFFF
163 | border_color: 0xFFFFFF
164 | candidate_text_color: 0xD8000000
165 | comment_text_color: 0x3F000000
166 | label_color: 0x7F7F7F
167 | hilited_candidate_back_color: 0xD05925
168 | hilited_candidate_text_color: 0xFFFFFF
169 | hilited_comment_text_color: 0x808080
170 | hilited_candidate_label_color: 0xFFFFFF
171 | text_color: 0x3F000000
172 | hilited_text_color: 0xD8000000
173 |
174 | macos12_dark:
175 | name: "高仿暗色 macOS"
176 | author: "Lufs X "
177 |
178 | back_color: 0x1E1F24
179 | border_color: 0x1E1F24
180 | candidate_text_color: 0xE8E8E8
181 | comment_text_color: 0x3F000000
182 | label_color: 0x7C7C7C
183 | hilited_candidate_back_color: 0xDA6203
184 | hilited_candidate_text_color: 0xFFFFFF
185 | hilited_comment_text_color: 0x808080
186 | hilited_candidate_label_color: 0xFFE7D6
187 | text_color: 0x3F000000
188 | hilited_text_color: 0xD8000000
189 |
190 | win10_weasel:
191 | author: "luminosa"
192 | back_color: 0xF3F3F3 # 背景颜色 颜色均取色自 Windows 10 默认
193 | border_color: 0xDBDCDC # 边框颜色
194 | candidate_text_color: 0x000000 # 候选文字颜色
195 | hilited_candidate_back_color: 0xFFD8A6 # 高亮颜色
196 | hilited_label_color: 0x6F6F6F # 高亮序号颜色
197 | hilited_mark_color: 0x00000000 # 此项不生效
198 | label_color: 0x6F6F6F # 候选数字颜色
199 | shadow_color: 0x20000000 # 阴影颜色,新版小狼毫 CI 更改了绘制,若无法看到阴影,请更改为 000000,观察是否能正常绘制阴影
200 | text_color: 0x000000 # 拼音文字颜色
201 |
202 | win11_weasel:
203 | name: "Windows 11 默认"
204 | author: "luminosa"
205 | back_color: 0xF9F9F9 # 背景颜色 颜色均取色自 Windows 11 默认
206 | border_color: 0xE7E7E7 # 边框颜色
207 | candidate_text_color: 0x000000 # 候选文字颜色
208 | hilited_candidate_back_color: 0xF0F0F0 # 高亮颜色
209 | hilited_label_color: 0x727272 # 高亮序号颜色
210 | hilited_mark_color: 0xFFD8A6 # 此项生效,前面那|的颜色,更新到支持的小狼毫 CI 版本才会生效
211 | label_color: 0x727272 # 候选数字颜色
212 | shadow_color: 0x20000000 # 阴影颜色,新版小狼毫 CI 更改了绘制,若无法看到阴影,请更改为 000000,观察是否能正常绘制阴影
213 | text_color: 0x000000 # 拼音文字颜色
214 |
215 | win11_weasel_dark:
216 | name: "Windows 11 默认/深色"
217 | author: "Lufs X "
218 | back_color: 0x2C2C2C # 背景颜色 颜色均取色自 Windows 11 默认
219 | border_color: 0x333333 # 边框颜色
220 | candidate_text_color: 0xFFFFFF # 候选文字颜色
221 | hilited_candidate_back_color: 0x383838 # 高亮颜色
222 | hilited_label_color: 0xCFCFCF # 高亮序号颜色
223 | hilited_mark_color: 0x595959 # 此项生效,前面那|的颜色,更新到支持的小狼毫 CI 版本才会生效
224 | label_color: 0x727272 # 候选数字颜色
225 | shadow_color: 0x20000000 # 阴影颜色,新版小狼毫 CI 更改了绘制,若无法看到阴影,请更改为 000000,观察是否能正常绘制阴影
226 | text_color: 0xFFFFFF # 拼音文字颜色
227 |
228 | win10_MDL_ayaya:
229 | name: "Windows10 文文/Ayaya"
230 | author: "Lufs X "
231 |
232 | back_color: 0xFFFFFF
233 | candidate_text_color: 0x121212
234 | comment_text_color: 0x8E8E8E
235 | hilited_candidate_back_color: 0xECE4FC
236 | hilited_label_color: 0xB18FF4
237 | hilited_candidate_text_color: 0x7A40EC
238 | label_color: 0x888785
239 | text_color: 0x8100EB
240 |
241 | win10_MDL_ayaya_dark:
242 | name: "Windows10 文文/Ayaya/深色"
243 | author: "Lufs X "
244 |
245 | back_color: 0x000000
246 | candidate_text_color: 0xD2D2D2
247 | comment_text_color: 0x8E8E8E
248 | hilited_candidate_back_color: 0x2C1E3C
249 | hilited_label_color: 0xA483EC
250 | hilited_candidate_text_color: 0x7036E2
251 | label_color: 0x888785
252 | text_color: 0x8100EB
253 |
254 | win10_MDL_deepgrey:
255 | name: "Windows10 Deepgrey"
256 | author: fbewivpjsbsby
257 |
258 | text_color: 0x000000
259 | candidate_text_color: 0x000000
260 | back_color: 0xFFFFFF
261 | border_color: 0x7E7969
262 | hilited_text_color: 0xFFFFFF
263 | hilited_back_color: 0x7E7969
264 | hilited_candidate_text_color: 0xFFFFFF
265 | hilited_candidate_back_color: 0x7E7969
266 | hilited_label_color: 0xffffff
267 | comment_text_color: 0x888888
268 | hilited_comment_text_color: 0xffffff
269 |
270 | win10_MDL_blue:
271 | name: "Windows 10 Blue"
272 | author: fbewivpjsbsby
273 | candidate_text_color: 0x000000
274 | comment_text_color: 0x888888
275 | text_color: 0x000000
276 | back_color: 0xffffff
277 | border_color: 0xcc8f29
278 | hilited_text_color: 0x000000
279 | hilited_back_color: 0xffffff
280 | hilited_candidate_text_color: 0xffffff
281 | hilited_candidate_back_color: 0xcc8f29
282 | hilited_comment_text_color: 0xffffff
283 | hilited_label_color: 0xffffff
284 | label_color: 0x888888
285 |
286 | win10_MDL_darkblue:
287 | name: "Windows 10 Dark Blue"
288 | author: fbewivpjsbsby
289 | candidate_text_color: 0xf2f2f2
290 | comment_text_color: 0x888888
291 | text_color: 0xffffff
292 | back_color: 0x1f1f1f
293 | border_color: 0xa37220
294 | hilited_text_color: 0xffffff
295 | hilited_back_color: 0x1f1f1f
296 | hilited_candidate_text_color: 0xf2f2f2
297 | hilited_candidate_back_color: 0xa37220
298 | hilited_comment_text_color: 0xffffff
299 | hilited_label_color: 0xf2f2f2
300 | label_color: 0x888888
301 |
302 | win11_preset:
303 | label_format: "\u2006%s" # 候选栏标签格式
304 | layout:
305 | align_type: center # 布局对齐方式
306 | max_width: 0 # 最大宽度限制
307 | min_width: 80 # 最小宽度限制
308 | min_height: 0 # 最小高度限制
309 | max_height: 0 # 最大高度限制
310 | border_width: 1 # 窗口边框宽度
311 | margin_x: 6 # 窗口左右边距
312 | margin_y: 6 # 窗口上下边距
313 | spacing: 10 # 候选栏间距
314 | hilite_spacing: 10 # 高亮显示间距
315 | shadow_offset_x: 3 # 阴影 X 轴偏移
316 |
317 | candidate_spacing: 10 # 候选栏内部间距
318 | corner_radius: 5 # 候选圆角半径
319 | hilite_padding: 5 # 高亮高度
320 | hilite_padding_x: 2 # 高亮 X 横向方向边距
321 | hilite_padding_y: 2 # 高亮 Y 纵向方向边距
322 | round_corner: 5 # 高亮圆角
323 | shadow_offset_y: 0 # 阴影 Y 轴偏移
324 | shadow_radius: 0 # 阴影半径
325 |
326 | win10_preset:
327 | label_format: "%s" # 候选栏标签格式
328 | layout:
329 | align_type: center # 布局对齐方式
330 | max_width: 0 # 最大宽度限制
331 | min_width: 90 # 最小宽度限制
332 | min_height: 0 # 最小高度限制
333 | max_height: 0 # 最大高度限制
334 | border_width: 2 # 窗口边框宽度
335 | margin_x: 7 # 窗口左右边距
336 | margin_y: 7 # 窗口上下边距
337 | spacing: 10 # 候选栏间距
338 | hilite_spacing: 10 # 高亮显示间距
339 | shadow_offset_x: 7 # 阴影 X 轴偏移
340 |
341 | candidate_spacing: 10 # 候选栏内部间距
342 | corner_radius: 10 # 候选条圆角,不需要圆角设置为 0
343 | hilite_padding: 8 # 高亮高度
344 | hilite_padding_x: 8 # 高亮 x 横向方向边距,可以自行调整
345 | hilite_padding_y: 8 # 高亮 y 纵向方向边距
346 | round_corner: 0 # 高亮圆角,小狼毫天圆地方此项可设置为 0,也可自行调整
347 | shadow_offset_y: 4 # 阴影 Y 轴偏移
348 | shadow_radius: 10 # 阴影半径
349 |
350 | win10_MDL_preset:
351 | label_format: "%s"
352 | font_point: 13
353 | label_font_point: 9
354 | layout:
355 | border_width: 1
356 | margin_x: 7
357 | margin_y: 2
358 | spacing: 10
359 | candidate_spacing: 20
360 | corner_radius: 0
361 | round_corner: 0
362 | hilite_spacing: 5
363 | hilite_padding_x: 15
364 | hilite_padding_y: 6
365 |
--------------------------------------------------------------------------------
/zh-hans-t-essay-bgw.gram:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LufsX/rime/a97e213a318ae85f4c866f5ebf3fc5fa5822b966/zh-hans-t-essay-bgw.gram
--------------------------------------------------------------------------------