分享和討論倉頡輸入法相關的資訊和内容
-
ejsoon
- 一枝独秀

- 帖子: 5727
- 注册时间: 2022年 11月 18日 17:36
- 为圈友点赞: 179 次
- 被圈友点赞: 207 次
-
联系:
帖子
由 ejsoon »
現在按這個rime配置,我實現了用;'選二三重,但是我如果同時也想用數字鍵2和3選重,要如何改?
代码: 全选
在 Rime (鼠鬚管/小狼毫) 配置中,`alternative_select_keys` 只能為每個候選位置指定單一按鍵。如果您希望**同時**支援 `;`、`'` 和數字鍵 `2`、`3` 來選取第二、三重,最標準且穩定的做法是利用 **`key_binder`(按鍵綁定)** 功能。
請按照以下三個步驟修改您的 `haha.schema.yaml` 檔案:
### 1. 在 `engine/processors` 中啟用 `key_binder`
原本的配置中缺少了按鍵編譯器,需要將 `- key_binder` 加進去(建議放在靠前的位置,以便優先攔截按鍵):
```yaml
engine:
processors:
- ascii_composer
- key_binder # 新增這一行
- speller
- selector
- punctuator
- express_editor
```
---
### 2. 修改 `menu` 區塊
將原本的 `alternative_select_keys` 改回標準的數字選鍵 `select_keys`。這樣一來,選單預設就會支援 `2` 和 `3` 鍵,且候選字標籤會顯示為數字:
```yaml
menu:
page_size: 9
select_keys: "123456789" # 改為標準數字選鍵
```
---
### 3. 在檔案末尾添加 `key_binder` 設定
新增以下區塊。這段程式碼的意思是:當畫面上**有候選字選單時(`when: has_menu`)**,按下分號 `;` 會自動映射為數字 `2`,按下單引號 `'` 會自動映射為數字 `3`;而當沒有候選選單時,它們依然會維持原本的標點符號功能。
```yaml
key_binder:
bindings:
- { accept: semicolon, send: 2, when: has_menu }
- { accept: apostrophe, send: 3, when: has_menu }
```
---
> **提示:** 修改完成並儲存檔案後,切換到該輸入法並點擊 Rime 的 **「重新部署」(Deploy)**,新設定就會立即生效。此時不論您按 `;`、`'` 還是數字鍵 `2`、`3`,都能順利選取對應的候選字。
-
ejsoon
- 一枝独秀

- 帖子: 5727
- 注册时间: 2022年 11月 18日 17:36
- 为圈友点赞: 179 次
- 被圈友点赞: 207 次
-
联系:
帖子
由 ejsoon »
代码: 全选
在.lime格式的導出中,文件頭更改為:
@format@|lime-text-v2
@version@|日期加時間
@cname@|哈哈倉頡
@selkey@|123456789
@endkey@|abcdefghijklmnopqrstuvwxyz
@spacestyle@|0
%chardef begin
code|word|score|basescore
aa|測|0|123
ab|試|0|456
%chardef end
碼表內容寫在
%chardef begin
至
%chardef end
之中,其中第四欄使用之前的倒序數字。
如遇以下符號則轉碼:
\\ = literal backslash
\| = literal pipe when `|` is the delimiter
\@ = literal at-sign
\% = literal percent
只需給出要修改的地方,不需要注釋,不要有空行。
-
ejsoon
- 一枝独秀

- 帖子: 5727
- 注册时间: 2022年 11月 18日 17:36
- 为圈友点赞: 179 次
- 被圈友点赞: 207 次
-
联系:
帖子
由 ejsoon »
gemini thinking:
代码: 全选
const limeFilename = `lime_${fileVersion}.txt`;
const d = new Date();
const dateTimeStr = d.getFullYear() + String(d.getMonth() + 1).padStart(2, '0') + String(d.getDate()).padStart(2, '0') + String(d.getHours()).padStart(2, '0') + String(d.getMinutes()).padStart(2, '0') + String(d.getSeconds()).padStart(2, '0');
const escapeLime = (str) => str.replace(/\\/g, '\\\\').replace(/\|/g, '\\|').replace(/@/g, '\\@').replace(/%/g, '\\%');
const limeHeader = `@format@|lime-text-v2\n@version@|${dateTimeStr}\n@cname@|哈哈倉頡\n@selkey@|123456789\n@endkey@|abcdefghijklmnopqrstuvwxyz\n@spacestyle@|0\n%chardef begin\ncode|word|score|basescore`;
const limeBody = tableLines.map((line, index) => {
const [code, char] = line.split('\t');
return `${escapeLime(code)}|${escapeLime(char)}|0|${totalLines - index}`;
}).join('\n');
const limeContent = `${limeHeader}\n${limeBody}\n%chardef end`;
createDownloadLink(limeFilename, limeContent);
正浏览此版面之用户: Google [Bot], Semrush [Bot] 和 4 访客