數碼資源網

文章頻道 軟件下載 安卓下載 蘋果下載

當前位置:首頁文章中心MAC教程mac其他教程 → 如何第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵

如何第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵

時間:2017-06-11 16:15:43人氣:304作者:網友整理
鍵多多輸入法v1.11.0.0
鍵多多輸入法v1.11.0.0 for Android
  • 類型:安卓輸入法大小:50.81M語言:簡體中文 評分:4.4
  • 鍵多多輸入法app是一款手機輸入法軟件,除了快速的聯想打字功能外,還可以快速製作...
立即下載
計算器分屏版9.9.1.0.6.3
計算器分屏版9.9.1.0.6.3 for Android
  • 類型:安卓日常應用大小:16.58M語言:簡體中文 評分:4.2
  • 計算器分屏版app是一款非常實用的計算工具。這款軟件能夠滿足用戶的不同計算需求。...
立即下載
鍵多多輸入法8.3.0.0
鍵多多輸入法8.3.0.0 for Android
  • 類型:安卓輸入法大小:67.74M語言:簡體中文 評分:3.0
  • 鍵多多輸入法app這是一款輸入法功能十分強大的一個軟件,在鍵多多輸入法app裏,...
立即下載

今天為大家介紹如何第三方輸入法下如何將大寫定鍵改為輸入法切換鍵供大家學習哦!大小寫鍵的使用頻率一直可以說能和關機鍵使用頻率有著不分高下的使用頻率。甚至在Chromebook 上,大寫鎖定鍵就被 Google 換成了更為常用搜索鍵。另外也有vimer把大寫鎖定鍵用作ESC鍵,效果也是喪心病狂!在Mac上大家都用大小寫鍵用於切換輸入法,可是第三方輸入法就不會支持這個操作了。今天就告訴大家如何將第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵。

如何第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵特色

如何將第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵方法:

更改鍵綁定

打開係統偏好設置-鍵盤-鍵盤-修飾鍵,將 Caps Lock 鍵設為“無操作”

下載 Seil(良心軟件,良心作者),打開後將 Caps Lock 鍵映射為 Key Code 80(或者其他一個不存在的鍵,80代表F19)

打開係統偏好設置-鍵盤-快捷鍵-輸入源,將切換輸入法的快捷鍵設置為F19(通過選擇後按一下Caps Lock)

Done! 但是現在問題來了:大寫鎖定的燈永遠不亮,這不優美!我們希望指示燈也更改為能夠指示輸入法狀態,即在英文狀態下不亮,在拚音/五筆等輸入法狀態下亮。經過 Google 發現,OS X 提供了控製鍵盤燈的底層 API,可以手動控製其狀態,詳見 MacLight。這就好辦了,於是我依次嚐試了以下幾種解決方案:

寫一段 Shell 腳本來切換輸入法(通過 AppleScript 模擬 Keystroke)+切換指示燈狀態,通過 Automator 新建一個“服務”然後將大寫鎖定鍵綁定為運行該腳本。但是經過測試發現延時太大(~200ms),放棄。

用 Objective-C 寫一個調用底層 API 的程序來切換輸入法(通過TISSelectInputSource係列API)+切換指示燈狀態,發現調用 API 切換輸入法後需要切換到下一個輸入窗口才會生效,並且延時依然很大,放棄。

用 Objective-C 寫一個後台應用,通過NSDistributedNotificationCenter接收輸入法變更事件,根據狀態改變指示燈。科學!

最終采用了最後這種科學的方法。當然,這個後台應用隻需要是命令行應用就可以了,通過launchctl等方式開機自動啟動即可。不過由於強迫症什麼的(方便啟動、退出,方便加為登錄啟動項)還是寫成了占領在狀態欄的應用,並取名為IMLight,如下圖:

如何第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵截圖

升級 macOS Sierra 後,Seil 無法正常使用了(IMLight 不影響),詳見 Github 上的這個 issue,並且由於是係統接口的大改動,一時半會兒可能不會有修複更新。

Issue 中也有人提到,可以使用作者正在開發的另一個針對 Sierra 的項目 Karabiner-Elements,但是這個項目對我來說有幾個問題:

與 IMLight 衝突(雖然不一定是他的問題,但是我暫時也不知道怎麼修複…)

會使得係統偏好設置中的針對多個鍵盤的修飾鍵設置失效(比如無法把外接鍵盤的 alt 和 ⌘  互換),作者表示無法修複

另外的解決方案是在係統偏好設置中把 Caps Lock 設置為 Ctrl(或者其他),然後用其他軟件重映射,比如 Keyboard Maestro(更改 Caps Lock 這件事情比較底層,需要內核級別的修改,而監聽 Ctrl 等鍵這件事情就很簡單了)。我使用免費的 hammerspoon 來實現:

local M = {}

local events = hs.eventtap.event.types

M.log = hs.logger.new('caps_remap', 'info')

M.last_flags_1 = {}

M.last_flags_0 = {}

M.last_time_1 = 0

M.last_time_0 = 0

M.timeout = 0.15

M.key = "ctrl"

M.action = function() hs.eventtap.keyStroke({}, "f19") end

local function _dict_has_no_other_key(dic)

for k,v in pairs(dic) do

if k ~= M.key then

return false

end

end

return true

end

function M.event_callback(e)

local typ = e:getType()

local code = e:getKeyCode()

local flags = e:getFlags()

local now = hs.timer.secondsSinceEpoch()

if _dict_has_no_other_key(flags) and not flags[M.key]

and _dict_has_no_other_key(M.last_flags_0) and M.last_flags_0[M.key]

and _dict_has_no_other_key(M.last_flags_1) and not M.last_flags_1[M.key]

and now - M.last_time_0 < M.timeout

then

M.log.i("Fire caps action")

if M.action then

M.action()

end

end

M.last_flags_1 = M.last_flags_0

M.last_flags_0 = flags

M.last_time_1 = M.last_time_0

M.last_time_0 = now

return false

end

function M.init(options)

if options.key then

M.key = options.key

end

if options.timeout then

M.timeout = options.timeout

end

if options.action then

M.action = options.action

end

M.watcher = hs.eventtap.new({events.flagsChanged}, M.event_callback)

M.watcher:start()

end

return M

如何第三方輸入法下如何將大寫鎖定鍵改為輸入法切換鍵

即快速按一下 ctrl(即 Caps Lock)會觸發 F19,而其他包含 ctrl 的組合鍵並不會,可以滿足要求了哦。

相關文章

感謝速聯科技、八度網絡、九九數據、億恩科技、群英網絡讚助部分帶寬!

關於本站 | 聯係方式 | 版權聲明 | 下載幫助(?) | 網站地圖

Copyright 2002-2020 95262.com 【數碼資源網】 版權所有 粵ICP備2020128507號-1

本站所有軟件來自互聯網,版權歸原著所有。如有侵權,敬請來信告知 ,我們將及時撤銷。