一直以來都在尋找一種能夠在聊天時(shí)快速使用表情的方式,在 windows 平臺(tái)下 qq 和 wechat 都是支持自定義表情快捷鍵的谤职,用起來十分舒爽,但是切換到 mac os 之后,兩款軟件均不支持表情快捷鍵领跛,而對(duì)于重度鍵盤黨的我來說,要挪動(dòng)正在敲擊鍵盤的手去用觸控板選擇表情撤奸,這無疑是浪費(fèi)時(shí)間且操作起來十分麻煩的隔节。
最初是寄希望于騰訊官方能夠在 mac os 下開放這個(gè)功能,但數(shù)次反饋之后無果寂呛,當(dāng)然也可以理解怎诫,畢竟這是一個(gè)十分小眾的需求,開發(fā)團(tuán)隊(duì)不會(huì)特意抽出時(shí)間來填補(bǔ)特殊人群的口味贷痪,那只好在這條路上繼續(xù)探尋幻妓。
緊接著想在輸入法上下文章,因?yàn)楦陌嬷蟮乃压份斎敕ㄊ悄軌驅(qū)⒈砬樽鳛檫x項(xiàng)內(nèi)置在輸入框中的劫拢,看起來應(yīng)該是能夠做到的肉津,只不過只支持搜狗平臺(tái)上的表情包,也就意味著你需要維護(hù)一個(gè)自己的表情包項(xiàng)目舱沧,時(shí)刻上傳到搜狗平臺(tái)妹沙,當(dāng)然也少不了審核,所以這也是行不通的熟吏,就沒進(jìn)行太多的嘗試
再后來思路轉(zhuǎn)換到找一款 mac 下的軟件距糖,這樣我的需求同樣可以得到滿足玄窝,變換了許多關(guān)鍵詞進(jìn)行 google,好在終于找到了一款悍引,名字叫做 Rocket, 類似名字的軟件數(shù)不勝數(shù)恩脂,為了防止混淆就把軟件官網(wǎng)貼在下面:
下載了試用版,的確非常爽趣斤,但默認(rèn)只有一些 emoji 表情俩块,想要添加自己的表情包,自然需要向作者付費(fèi)然后解鎖自己導(dǎo)入表情包的功能浓领,也想著如果再找不到其他途徑的話就來買一款這個(gè)來玩好了玉凯。
最后把目標(biāo)轉(zhuǎn)向了 Alfred 的 workflow,相信使用 mac 的用戶都不會(huì)不知道這款神器联贩,的確極大程度了增加了我的工作效率壮啊。最開始倒是沒想著自己開發(fā),畢竟如果有現(xiàn)成的 workflow撑蒜,直接拿來用就好了歹啼,懶是程序員的信條好吧,但各種 workflow 托管平臺(tái)都找遍了座菠,只知道了一款看似不錯(cuò)的狸眼,地址同樣附在下面:
代碼托管在 github 上,完全開源浴滴,這個(gè)就十分友好嘛拓萌。不過下載使用了之后,發(fā)現(xiàn)也只支持 emoji升略,也曾嘗試著想要改一下代碼邏輯來使他支持普通的圖片文件微王,但看了源碼之后發(fā)現(xiàn),內(nèi)部有個(gè)文件將所有的 emoji 表情全部映射了品嚣,但圖片完全做不到這一點(diǎn)啊炕倘。
確實(shí)是走投無路了,剩下的唯一辦法就是自己開發(fā)了翰撑。
仿照 alfred-emoji-workflow 的流程了解了 workflow 的開發(fā)過程罩旋,并且也實(shí)現(xiàn)了能夠在 alfred 中顯示所有符合條件的圖片條目,最后就剩將選中的圖片拷貝到剪切板的步驟了眶诈。
然后這正是困擾我很久的步驟涨醋。
Alfred 默認(rèn)的拷貝組件,只是將選中的圖片路徑拷貝到了剪切板中逝撬,在聊天框或其他文檔中進(jìn)行粘貼下來的也只是文件路徑浴骂,什么嘛,根本不行。
不過在編寫程式的過程中戳表,發(fā)現(xiàn) Alfred 支持 AppleScript 這種語言,也就是蘋果系統(tǒng)級(jí)別的編程語言菠净,檢索了下愧膀,語法十分有趣,簡(jiǎn)直就像命令一樣谣光,看了一些示例發(fā)現(xiàn)沒準(zhǔn)能夠搞定檩淋。
就在 google 中檢索如何使用 AppleScript 將圖片內(nèi)容粘貼到剪切板,而不只是文件路徑萄金,也確實(shí)找到了一個(gè)網(wǎng)站:
文章大意是用一般思路來拷貝文件內(nèi)容是行不通的蟀悦,pbcopy 命令也不行,所以就只能借助 AppleScript 來告訴 Preview 執(zhí)行 command + c 進(jìn)行拷貝氧敢,然后再把 Preview 關(guān)閉日戈,整個(gè)過程都由腳本來完成,聽起來不錯(cuò)孙乖,就代碼拷貝下來調(diào)試了一下:
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
確實(shí)成功了浙炼!但美中不足有些問題:
- 其一是整個(gè)過程很晃眼,打開Preview唯袄,復(fù)制文件弯屈,再關(guān)閉,整個(gè)流程都是在眼底下發(fā)生的恋拷,前前后后大概有幾秒鐘的時(shí)間资厉,當(dāng)然相比較之前使用表情的方式確實(shí)是增速不少
- 就是在這個(gè)過程中最好不要進(jìn)行其他操作,不然可能會(huì)導(dǎo)致文件復(fù)制不成功
- 就是不支持 gif蔬顾,因?yàn)?Preview 打開 gif 后進(jìn)行拷貝的操作結(jié)果只是拷貝其中的一幀
有了 Preview 解決的思路后宴偿,自然很好聯(lián)想到直接在 Finder 中選中該文件,然后進(jìn)行同樣的邏輯诀豁,恩窄刘,所以就改了一版:
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)文件了,能使用更豐富的東西啦逞带。但遺憾的是欺矫,自測(cè)的時(shí)候發(fā)現(xiàn)前兩個(gè)問題更加嚴(yán)重了,因?yàn)橐?Finder 中打開指定路徑文件這個(gè)過程是一層層的展氓,而且還可能會(huì)由于路徑太長(zhǎng)導(dǎo)致文件還沒被選中時(shí)穆趴,就已經(jīng)執(zhí)行了復(fù)制操作,導(dǎo)致將錯(cuò)誤的內(nèi)容送進(jìn)了剪切板遇汞,這對(duì)用戶來說是十分討厭的未妹。
眼瞅著離最終想要的效果就差一丁點(diǎn)簿废,當(dāng)然不能放棄,就持續(xù)的在 google 里面查找解決方案络它,終于功夫不負(fù)有心人族檬,找到了一種 AppleScript 的寫法,使得整個(gè)拷貝流程不僅能夠在后臺(tái)進(jìn)行化戳,而且速度比之前又提高了不少单料,同樣不管是什么樣的文件類型都能成功復(fù)制,代碼如下:
on run argv
set image to POSIX file (item 1 of argv)
tell app "Finder" to set the clipboard to image
end run
完工点楼!使用體驗(yàn)很流暢扫尖,至少對(duì)我來說足夠用了,回首自己在快速檢索表情的探索道路上一路走來遇到的各種問題掠廓,有一次次的失望又有一次次的希望换怖,遇到最大的問題就是將選中的圖片弄進(jìn)剪切板,若是對(duì) AppleScript 這門語言足夠熟悉蟀瞧,或者仔細(xì)看了官方文檔沉颂,也不至于有這么多起起落落,不過最終結(jié)果是好的悦污,很滿足兆览。
代碼托管在了 github 上,這里是鏈接地址塞关,之后如果還有其他需求能用 workflow 實(shí)現(xiàn)的話抬探,也會(huì)進(jìn)行嘗試,應(yīng)該會(huì)不斷更新下去:
對(duì)了帆赢,最近 wechat for mac 更新了一個(gè)版本小压,支持根據(jù)內(nèi)容識(shí)別自己收藏夾中的表情,用過體驗(yàn)很好椰于,但需要使用表情的場(chǎng)景當(dāng)然不止 wechat 一種怠益,所以這款 Quick Face 在跨平臺(tái)上占盡了優(yōu)勢(shì)。