rime / squirrel

【鼠鬚管】Rime for macOS
https://rime.im
GNU General Public License v3.0
4.7k stars 414 forks source link

macOS Sonoma 系统中输入法图标显示问题 #776

Open scomper opened 1 year ago

scomper commented 1 year ago

CleanShot 2023-06-07 at 10 43 17@2x Squirrel 的图标又要被动更新了,新的 macOS Sonoma 里和系统的显示方式不太一样。 CleanShot 2023-06-07 at 10 53 51@2x

LEOYoon-Tsaw commented 1 year ago

改!

ShikiSuen commented 1 year ago

不然大家湊錢湊夠一份 Apple Developer Technical Service 的費用,然後開一份 DTS 工單來問一下 XHacker? Apple 到現在都沒有一份 documentation 來指導第三方輸入法怎樣設計選單圖示、該裁減成怎樣的標準。

ShikiSuen commented 1 year ago

真的醜死了。

image
nb5p commented 1 year ago

不然大家湊錢湊夠一份 Apple Developer Technical Service 的費用,然後開一份 DTS 工單來問一下 XHacker? Apple 到現在都沒有一份 documentation 來指導第三方輸入法怎樣設計選單圖示、該裁減成怎樣的標準。

如果发起众筹,我愿意参与。同时也有一个自从开始用Mac就困扰我的问题。当在有选字框时按Return键,输入法收到并响应操作(大部分人应该设置的是上屏)后,下方的应用也能收到按键信号,这就导致应用拿我还没输完的内容被执行搜索,发送等操作。

ShikiSuen commented 1 year ago

@nb5p 因為 IMK 的特性,只要是 inline composition buffer (inline preedit area) 身為 NSAttribuitedString 的 length 是 0,輸入法就無法完全攔截所有的按鍵訊號(哪怕返回 true 也會被當作返回 false)。

威注音輸入法的私隱模式、以及業火五筆輸入法對此的處理方式是:哪怕不需要內文組字區了,內文組字區也固定顯示一個 ASCII 空格。

groverlynn commented 1 year ago

不然大家湊錢湊夠一份 Apple Developer Technical Service 的費用,然後開一份 DTS 工單來問一下 XHacker? Apple 到現在都沒有一份 documentation 來指導第三方輸入法怎樣設計選單圖示、該裁減成怎樣的標準。

如果发起众筹,我愿意参与。同时也有一个自从开始用Mac就困扰我的问题。当在有选字框时按Return键,输入法收到并响应操作(大部分人应该设置的是上屏)后,下方的应用也能收到按键信号,这就导致应用拿我还没输完的内容被执行搜索,发送等操作。

很多網站是響應return的key up,而輸入法只handle按鍵的key down。這是網站設計的問題,系統輸入法一樣中招。

ShikiSuen commented 1 year ago

@groverlynn 感谢指点迷津。其实输入法可以 handle keyUp。

ShikiSuen commented 1 year ago

@groverlynn 正好有個事情想請教一下。 請問您是否知道 Facebook 的貼文編輯視窗當中對 Tab 鍵的攔截方式是怎樣實現的嗎?(我不太懂網頁前端。) 我剛剛給輸入法改了攔截處理,嘗試在 keyUp 的時候讓輸入法攔截 Tab 鍵(return true),但沒有效果。

image
groverlynn commented 1 year ago

@groverlynn 正好有個事情想請教一下。 請問您是否知道 Facebook 的貼文編輯視窗當中對 Tab 鍵的攔截方式是怎樣實現的嗎?(我不太懂網頁前端。) 我剛剛給輸入法改了攔截處理,嘗試在 keyUp 的時候讓輸入法攔截 Tab 鍵(return true),但沒有效果。 image

這個應該是監聽的tab的keydown,而且用的是html的全局屬性tabindex。除非你的輸入法內也有tab,否則html的tabindex優先級更高

ShikiSuen commented 1 year ago

@groverlynn 我就是在輸入法內用 Tab 作為「輪替當前候選字詞」的熱鍵的,結果在 Safari 與 Chrome 系瀏覽器內每次都被攔截。FireFox 無此故障。

groverlynn commented 1 year ago

@groverlynn 我就是在輸入法內用 Tab 作為「輪替當前候選字詞」的熱鍵的,結果在 Safari 與 Chrome 系瀏覽器內每次都被攔截。FireFox 無此故障。

似乎和這個bug有關https://bugzilla.mozilla.org/show_bug.cgi?id=1739489

ShikiSuen commented 1 year ago

@groverlynn 也就是说如果 Firefox 修了那个 bug 的话,威注音在 Firefox 当中理论上也会出现和在 Safari / Chrome / Edge 当中同样的 Tab 键故障?

groverlynn commented 1 year ago

@groverlynn 也就是说如果 Firefox 修了那个 bug 的话,威注音在 Firefox 当中理论上也会出现和在 Safari / Chrome / Edge 当中同样的 Tab 键故障?

應該是這樣。這是FB的問題,輸入框的bug千奇百怪,有一陣遊標不錯位反而不正常…… 其他網站的輸入框,乃至FB自己的搜索輸入框都沒有這樣的問題。

xiehuc commented 1 year ago

我看,默认输入法的icon应该不在 输入法.app 里面,而是 /System/Library/TextInput 里面,比如中文输入法 /System/Library/TextInput/TextInput_zh.bundle/Versions/A/Resources/Keyboard-zh_Hans-Pinyin.plist

<dict>
    <key>UI-abc</key>
    <string>拼音</string>
    <key>UI-ABC</key>
    <string>拼音</string>
    <key>UI-IconArtworkShort</key>
    <string>InputMode.Pinyin</string>
    <key>UI-IconArtworkFull</key>
    <string>InputMode.Pinyin.zh-Hans</string>
</dict>

UI-IconArtworkShort 对应短图标,

截屏2023-10-01 23 01 59

UI-IconArtworkFull 对应长图标,

image

还有一种是 /System/Library/TextInput/TextInput_ja.bundle/Versions/A/Resources/Keyboard-ja.plist

    <key>UI-IconLabelScript</key>
    <string>あ</string>

直接用文字作为图标

输入法应该是要和keyboard绑定,再和TextInput绑定。因为Squirrel里面键盘布局一直是空的,也许这里要先通。

更多的就没看出来了。

ShikiSuen commented 1 year ago

@xiehuc 你图标在哪里找的?

xiehuc commented 1 year ago

@xiehuc 你图标在哪里找的?

没找到,从菜单栏截的

yzlnew commented 1 year ago

UI-IconArtworkShort 对应短图标, 截屏2023-10-01 23 01 59 UI-IconArtworkFull 对应长图标, image

这里对应的是菜单栏图标,而不是切换指示器的图标?另外发现苹果自带 ABC 和拼音的菜单栏图标样式也不一致

image
groverlynn commented 1 year ago

我看,默认输入法的icon应该不在 输入法.app 里面,而是 /System/Library/TextInput 里面,比如中文输入法 /System/Library/TextInput/TextInput_zh.bundle/Versions/A/Resources/Keyboard-zh_Hans-Pinyin.plist

<dict>
  <key>UI-abc</key>
  <string>拼音</string>
  <key>UI-ABC</key>
  <string>拼音</string>
  <key>UI-IconArtworkShort</key>
  <string>InputMode.Pinyin</string>
  <key>UI-IconArtworkFull</key>
  <string>InputMode.Pinyin.zh-Hans</string>
</dict>

UI-IconArtworkShort 对应短图标, 截屏2023-10-01 23 01 59 UI-IconArtworkFull 对应长图标, image

还有一种是 /System/Library/TextInput/TextInput_ja.bundle/Versions/A/Resources/Keyboard-ja.plist

  <key>UI-IconLabelScript</key>
  <string>あ</string>

直接用文字作为图标

输入法应该是要和keyboard绑定,再和TextInput绑定。因为Squirrel里面键盘布局一直是空的,也许这里要先通。

更多的就没看出来了。

非也。TextInput不是MacOS的輸入法,而是iOS和iPadOS的。你標出來的是iO的三層鍵盤(主鍵盤ABC、數字標點鍵盤123、符號鍵盤#+=)的標籤。 MacOS的東亞和南亞輸入法圖標在這裏:/System/Library/PrivateFrameworks/KeyboardLayouts.framework/Versions/A/Resources/Assets.car 其他語言的應該是直接用SFSymbol所以不需要 但是Apple到底怎麼設定的就不知道了。就算用同樣這些原始素材,黑白也依舊是反的

xiehuc commented 11 months ago

我发现过了这么久好像习惯了,现在系统没有经常弹输入法图标了。

xiehuc commented 11 months ago
image

用 Unicode和Rime就行,不用ABC。Unicode输入法能输入Meta键,不会映射到特殊字符上去。

LEOYoon-Tsaw commented 11 months ago

說不定去掉邊框,僅留㞢就行了,有空我試試

LEOYoon-Tsaw commented 6 months ago

說不定去掉邊框,僅留㞢就行了,有空我試試

沒用的,菜單欄又不對了