一直以來都在尋找一種能夠在聊天時快速使用表情的方式,在 windows 平臺下 qq 和 wechat 都是支持自定義表情快捷鍵的,用起來十分舒爽,但是切換到 mac os 之后,兩款軟件均不支持表情快捷鍵,而對于重度鍵盤黨的我來說,要挪動正在敲擊鍵盤的手去用觸控板選擇表情,這無疑是浪費時間且操作起來十分麻煩的。
最初是寄希望于騰訊官方能夠在 mac os 下開放這個功能,但數(shù)次反饋之后無果,當然也可以理解,畢竟這是一個十分小眾的需求,開發(fā)團隊不會特意抽出時間來填補特殊人群的口味,那只好在這條路上繼續(xù)探尋。

緊接著想在輸入法上下文章,因為改版之后的搜狗輸入法是能夠將表情作為選項內(nèi)置在輸入框中的,看起來應該是能夠做到的,只不過只支持搜狗平臺上的表情包,也就意味著你需要維護一個自己的表情包項目,時刻上傳到搜狗平臺,當然也少不了審核,所以這也是行不通的,就沒進行太多的嘗試

再后來思路轉換到找一款 mac 下的軟件,這樣我的需求同樣可以得到滿足,變換了許多關鍵詞進行 google,好在終于找到了一款,名字叫做 Rocket, 類似名字的軟件數(shù)不勝數(shù),為了防止混淆就把軟件官網(wǎng)貼在下面:
下載了試用版,的確非常爽,但默認只有一些 emoji 表情,想要添加自己的表情包,自然需要向作者付費然后解鎖自己導入表情包的功能,也想著如果再找不到其他途徑的話就來買一款這個來玩好了。

最后把目標轉向了 Alfred 的 workflow,相信使用 mac 的用戶都不會不知道這款神器,的確極大程度了增加了我的工作效率。最開始倒是沒想著自己開發(fā),畢竟如果有現(xiàn)成的 workflow,直接拿來用就好了,懶是程序員的信條好吧,但各種 workflow 托管平臺都找遍了,只知道了一款看似不錯的,地址同樣附在下面:
代碼托管在 github 上,完全開源,這個就十分友好嘛。不過下載使用了之后,發(fā)現(xiàn)也只支持 emoji,也曾嘗試著想要改一下代碼邏輯來使他支持普通的圖片文件,但看了源碼之后發(fā)現(xiàn),內(nèi)部有個文件將所有的 emoji 表情全部映射了,但圖片完全做不到這一點啊。

確實是走投無路了,剩下的唯一辦法就是自己開發(fā)了。
仿照 alfred-emoji-workflow 的流程了解了 workflow 的開發(fā)過程,并且也實現(xiàn)了能夠在 alfred 中顯示所有符合條件的圖片條目,最后就剩將選中的圖片拷貝到剪切板的步驟了。
然后這正是困擾我很久的步驟。
Alfred 默認的拷貝組件,只是將選中的圖片路徑拷貝到了剪切板中,在聊天框或其他文檔中進行粘貼下來的也只是文件路徑,什么嘛,根本不行。
不過在編寫程式的過程中,發(fā)現(xiàn) Alfred 支持 AppleScript 這種語言,也就是蘋果系統(tǒng)級別的編程語言,檢索了下,語法十分有趣,簡直就像命令一樣,看了一些示例發(fā)現(xiàn)沒準能夠搞定。
就在 google 中檢索如何使用 AppleScript 將圖片內(nèi)容粘貼到剪切板,而不只是文件路徑,也確實找到了一個網(wǎng)站:
文章大意是用一般思路來拷貝文件內(nèi)容是行不通的,pbcopy 命令也不行,所以就只能借助 AppleScript 來告訴 Preview 執(zhí)行 command + c 進行拷貝,然后再把 Preview 關閉,整個過程都由腳本來完成,聽起來不錯,就代碼拷貝下來調試了一下:
on run argv
tell application "Preview"
activate
open item 1 of argv
end tell
tell application "System Events"
tell process "Preview"
keystroke "c" using command down
end tell
end tell
tell application "Preview" to quit
end run
確實成功了!但美中不足有些問題:
- 其一是整個過程很晃眼,打開Preview,復制文件,再關閉,整個流程都是在眼底下發(fā)生的,前前后后大概有幾秒鐘的時間,當然相比較之前使用表情的方式確實是增速不少
- 就是在這個過程中最好不要進行其他操作,不然可能會導致文件復制不成功
- 就是不支持 gif,因為 Preview 打開 gif 后進行拷貝的操作結果只是拷貝其中的一幀
有了 Preview 解決的思路后,自然很好聯(lián)想到直接在 Finder 中選中該文件,然后進行同樣的邏輯,恩,所以就改了一版:
set thePath to POSIX file (item 1 of argv)
tell application "Finder"
reveal thePath
activate
end tell
tell application "System Events"
tell process "Finder"
keystroke "c" using command down
keystroke "w" using command down
end tell
end tell
好了,現(xiàn)在也支持 gif 文件的拷貝了,不僅僅是 jpg,png 這種靜態(tài)文件了,能使用更豐富的東西啦。但遺憾的是,自測的時候發(fā)現(xiàn)前兩個問題更加嚴重了,因為要在 Finder 中打開指定路徑文件這個過程是一層層的,而且還可能會由于路徑太長導致文件還沒被選中時,就已經(jīng)執(zhí)行了復制操作,導致將錯誤的內(nèi)容送進了剪切板,這對用戶來說是十分討厭的。
眼瞅著離最終想要的效果就差一丁點,當然不能放棄,就持續(xù)的在 google 里面查找解決方案,終于功夫不負有心人,找到了一種 AppleScript 的寫法,使得整個拷貝流程不僅能夠在后臺進行,而且速度比之前又提高了不少,同樣不管是什么樣的文件類型都能成功復制,代碼如下:
on run argv
set image to POSIX file (item 1 of argv)
tell app "Finder" to set the clipboard to image
end run
完工!使用體驗很流暢,至少對我來說足夠用了,回首自己在快速檢索表情的探索道路上一路走來遇到的各種問題,有一次次的失望又有一次次的希望,遇到最大的問題就是將選中的圖片弄進剪切板,若是對 AppleScript 這門語言足夠熟悉,或者仔細看了官方文檔,也不至于有這么多起起落落,不過最終結果是好的,很滿足。

代碼托管在了 github 上,這里是鏈接地址,之后如果還有其他需求能用 workflow 實現(xiàn)的話,也會進行嘗試,應該會不斷更新下去:
對了,最近 wechat for mac 更新了一個版本,支持根據(jù)內(nèi)容識別自己收藏夾中的表情,用過體驗很好,但需要使用表情的場景當然不止 wechat 一種,所以這款 Quick Face 在跨平臺上占盡了優(yōu)勢。
