-
-
Notifications
You must be signed in to change notification settings - Fork 377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
西文模式下無法用滑動來打大寫字母 #820
Comments
大写字母在实体键盘中是不存在的,只有小写字母键。shift+大写字母没有构成组合键,所以没有反应是正常的。 |
那麼,過去版本(v3.2.6 及更早)又是怎樣做到這一功能的呢?靠模擬一個 shift 鍵組合還是靠什麼呢? 另外即使大寫字母真的「實際鍵盤中不存在」,可是符號呢?比如圓括號 |
在Android系统中,
代码变化过多,同文的按键处理流程又太过复杂,过往到底如何做到的难以追溯;皮肤中发送shift组合键是最为稳妥的做法。 |
原來是利用了部分鍵盤中存在的鍵!【不過注意到裡面的
這個在 trime.custom.yaml 中要怎樣寫呢?是可以直接寫 【PS 另外我看內置的 trime.yaml 裡預置了個叫 us_intl 的軟鍵盤,它裡面給好些鍵的 swipe_up 定的是 ASCII 以外的字符(比如帶附標字母、更多符號等),它現在還能正常用麼? |
实际的情况非常复杂,上一个回复我给出的是Android的keycode,但是librime不能处理这些keycode,是另外一套keycode。
|
結果我試着把我的 Q 鍵上滑改成了 所以……為什麼可以指定(裡面含大寫字母的)字符序列,卻指定不了單獨的大寫字母呢(明明它也能視作「文本」)? 以及……正確的寫法到底應該是什麼呢?不是 |
於是只好去讀了下 Event.java 的代碼並試驗了下預設 30 鍵裡那個括號鍵定義中的 但它又產生了新的問題:這樣配置只在西文模式下正常,中文模式上滑只能打出小寫字母,沒法把大寫字母打進編輯區…… 所以有沒有中西文模式下都能正常工作的解決方式呢? |
繼續看了看代碼,發現了這麼一處可能有問題的地方: 在 Event.java 中,單獨的大寫字母,會進入到這個分支來處理: trime/app/src/main/java/com/osfans/trime/ime/keyboard/Event.java Lines 96 to 97 in 99cb034
其中 trime/app/src/main/java/com/osfans/trime/ime/keyboard/Event.java Lines 240 to 241 in 99cb034
於是大寫字母似乎就被作為 keycode 而非「文本」的樣子(從這裡開始不太確定)。 但之前咱們又提到,librime 似乎並不認可大寫字母作為一個(能打出字符的)「鍵」,所以可能是 librime 也沒處理,trime 這邊也沒能進一步處理,「兩邊都不管」所以就沒反應了……是這樣嘛? 【而與之相對的,多字符的文本(即使裡面含大寫字母)因為確實被當作「文本」,反而能正確處理 |
基本对的,单个大写字母是librime可以处理的按键名,但是那是Android没有这样的按键。
librime是否处理大写字母,是方案决定的
是这样的 理论上现在的pr已经修复这个问题,模拟了Shift+组合键。可以从ci下载测试 |
😂多謝~我看一看 |
已经修复 |
Describe the bug
我的自定義軟鍵盤,字母鍵有類似這樣的配置:
但是在 3.2.7 版的西文模式下,swipe_up 的項只對符號和數字有效(比如「;」鍵向上滑是「:」或者預設鍵盤頂排鍵可以上滑打數字等,而利用↑的配置想上滑打大寫字母卻完全沒有反應)。
【而更奇怪的是,中文模式下卻能正常的用它(但這樣會先將大寫字母打進編輯欄中,再按 space 才能出字,很麻煩)
To Reproduce
Expected behavior
應當能打出大寫字母。
Actual behavior
完全沒有效果。
Smartphone (please complete the following information):
The text was updated successfully, but these errors were encountered: