如何改變windows 默認的輸入法快捷鍵Ctrl+Space為其他值?
(我雖然使用的是windows 8,但我知道這個問題並非win8獨有。谷歌后發現幾個版本的windows用戶都出現了這個問題。)
我嘗試過的幾種解決方式全都無法*保持*自定義快捷鍵,我個人的目的是取消Ctrl+Space的輸入法切換全局快捷鍵,因為它和另一程序Mathematica的常用快捷鍵衝突。我並不介意把這快捷鍵改成任何東西,只要Ctrl+Space從全局快捷鍵消失就好。法1.通過控制面板等一系列路徑終於到了這個界面詭異的是,(1)點擊Change key sequence之後去掉 enable key sequence,Apply之後馬上恢復默認!!!這是神馬意思???(2)好吧,我隨便改成別的快捷鍵行了吧。嗯,似乎是可以的,Apply也成功了,但是我發現一旦系統重啟之後又會恢復成默認!!!!!windows你……我……Orz法2.通過註冊表修改。經過一系列折騰,終於到了這個界面 恩,據說key modifiers就是快捷鍵值之類的東西。我找到了鍵值表,比較隨意地修改幾個之後歡樂地發現第一個圖裡面Key sequence已經改變了。嗯,我才不管改成了什麼,沒有ctrl+space就好。於是終於舒坦地開始*使用*電腦……直到,某一天,windows自動更新之後,我發現系統又偷偷把快捷鍵改回去了……然而打開註冊表後我卻看到我自己改的鍵值仍在。嗯,現在它連註冊表都不聽了。
俺實在受不了了。俺不咋懂電腦,俺只是一個學物理的。嗯,就是這樣,哪位大神能指點一下唄………………
經過不斷的嘗試,終於在Win10上禁用了默認的Ctrl+space切換輸入法
方法還是在這個鏈接里:CTRL-Space always toggles Chinese IME (Windows 7)
裡面有個回答說到:
HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys,保存的是當前用戶的快捷鍵配置;
HKEY_USERS.DEFAULTControl PanelInput MethodHot Keys,保存的是默認的快捷鍵配置;
在Win10上,不知為何,當前用戶的快捷鍵配置並沒有效果,每次重啟之後,系統都會讀取默認的快捷鍵配置。所以我們只要改默認的快捷鍵配置就行了~~
Update:2017-08-28
據評論區反饋,最好把「當前用戶的快捷鍵配置」和「默認的快捷鍵配置」都修改下,保險~~同時修改成功後要重啟你的軟體(或者直接重啟電腦)才會生效。注意:
Win10自帶輸入法,自身會把Ctrl+Space註冊為切換中英文的快捷鍵,並且沒有提供設置項,所以用我說的這種方法無效。QQ拼音輸入法,我沒測試,評論區有人反饋無效,大概也是和Win10自帶輸入法同樣的原因。這個問題對於程序員來說真的很蛋疼,因為大多IDE的代碼提示快捷鍵都是Ctrl+Space~以前都是切換到純英文輸入法下,可以正常使用。本著程序員折騰到死的精神,剛剛把它解決了,也沒有修改註冊表,很easy....(沒錯,我用的就是英文版的系統= =)1.【控制面板】=&>【時鐘,語言和區域】=&>【語言】=&> 點擊左邊的【高級設置】
2.點擊【修改語言欄熱鍵】
3.選擇最後一欄,點擊【改變鍵序列】
4.然後將Space鍵給換成其它的【不衝突】的鍵即可(我選得是F1)
這個靠譜 keyboard shortcuts
跟巨硬就生不起這氣,可現實的 win pc 軟體環境就是這樣。。。。西人又不用輸入法,要是有可靠的選擇我還花時間跟個完全不可預期的 OS 浪費這時間我就直播吃屎。。。。
如果用 手心輸入法(推薦)或者 其他現行流氓輸入法 的話,那切換語言 layout (添加 en-us 布局),Keyboard layout switcher - Scripts and Functions 測試有效,按照自己需要的的熱鍵改一下就好了。
手心目前觀察還沒有問題,可是我總是對國內軟體有一種「它早晚要耍流氓」的心理預期,我這是神經了,得電療。
其他的不說了,生不起氣來。
rime 更不說了,人生苦短,及時行樂,至少別自找苦吃。
return
============================================
如果你能忍受微軟拼音的種種不完善,可以繼續往下看(至少創意者更新之後,我感覺已經是一款堪用的輸入法了)。
用的是 Autohotkey 的腳本,但是注意 win10 自帶的 `imm32ImmGetDefaultIMEWnd` 函數用 ahk 的 `DllCall` 調用, 在使用微軟拼音的情況下,情況下會出現不可預期的結果,例如在 fx 和巨硬自家的 edge 下, 在地址欄會出現在某些特定的 url (沒錯。。。就這麼神。。。)調用徹底失效的問題。還是接管按鍵比較簡單直接。
腳本如下,可以自己編譯成 exe 添加到開機啟動中,世界清靜了。。。
#NoEnv
#WinActivateForce
#SingleInstance, Force
; #NoTrayIcon ; 狀態欄圖標, 按需注釋
ListLines, Off
SendMode Input
SetBatchLines -1
SetControlDelay 0
SetWorkingDir %A_ScriptDir%
; 置換默認的左ctrl-space行為,讓其不觸發輸入法切換,為ide補全留出來
&<^Space::ControlSend, ,{LCtrl Up}{LCtrl Down}{Space Down}{Space Up}{LCtrl Up}, A
; ESC直接切換到英文,類VIM應用有用
~Esc::ConvESC()
; 左ctrl-i切換中英文,習慣類VIM應用的話應該試試,不反直覺
&<^i::CtrlI()
ConvESC() {
if (GetIME() = 1) {
Send {RCtrl Down}{Space Down}{Space Up}{RCtrl Up}
}
}
CtrlI() {
send ^{Insert} ; 插入個ctr-insert可以有效的避免某些場景需兩次才能切出中文的問題,實測
Send {LCtrl Up}{RCtrl Down}{Space Down}{Space Up}{RCtrl Up}
}
GetIME(WinTitle="") {
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
具體的語言設置:
- 只保留一個簡體中文的 layout。
- 只保留微軟拼音一種輸入法。
- 把微軟拼音設置為默認英文。
- 巨硬,我希望能跟令堂好好聊聊。。。
發兩句牢騷:
巨硬!
在 OS 層面提供個可定製的可靠的自定義熱鍵方案不是個 OS 廠商應盡的義務嗎?
metro 應用你敢再丑一點嗎?你敢把自定義字體的選項開放出來嗎?好吧,你就稀罕雅黑,你敢把 metro 下黑又粗的跟一坨屎一樣雅黑給好好調整一下 hinting 嗎?
咱別升級的時候不聲不響的在盤末再給我加個 uefi 的引導分區成嗎,有的呀,你自己加的呀。。。。強迫症會心碎的。。。
咱別把控制面板藏起來成嗎?一個功能你提供倆界面,還把好用的那個藏了。。。
巨硬啊巨硬,萬年拉野屎,就是不擦腚。
用 win10 兩年了,用的越久我就越懷念 win7。跟 win7 比,win10 就是班加羅爾茅廁里沉積的一坨屎。可怕的是 slic 被我刷沒了。。。。
我就是個話癆。。。
這個鬼東西說來真奇怪,印象中ctrl+space 是關閉輸入法的,就是把語言欄切換到us keyboard 這個選項。因為經常使用快捷鍵,所以特別煩ime,火大的時候就直接ctrl+space 。現在用win10就操蛋了,本來shift鍵用來切換中英文好好的,非要搞個ctrl+space 也是切換中英文!而且還無法修改,修改了也不能保存!另外要說的就是win+space 和ctrl+shift 切換輸入法,這又是什麼鬼!尼瑪win8不是就廢了ctrl+shift了!怎麼又回來了!還好可以通過設置把ctrl+shift 改掉。
改註冊表的方法在最新版本win10中沒效果。折騰了很久以後終於解決,安裝第三方輸入法然後把語言選項裡面的微軟拼音刪掉就好了。
這個問題我是從一個外國網站上找到最好的解決方法的,英文也不難,寫得也很清楚,我自己的問題解決了,有什麼不懂的可以問我這裡是原鏈接:原鏈接:keyboard shortcuts
I"ve been aware of this Windows bug for years. After tons of unsatisfying workarounds and fruitless searching the one or two times a year I attempt to find a solution, I finally have it!
Procedure
- Go to Start &> Type in regedit and start it
- Navigate to HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
- Select the key named:
- 00000070 for the Chinese (Traditional) IME - Ime/NonIme Toggle hotkey
- 00000010 for the Chinese (Simplified) IME - Ime/NonIme Toggle hotkey
- In the right sub-window, there are three subkeys.
- Key Modifiers designate Alt/Ctrl/Shift/etc and is set to Ctrl (02c00000).
- Virtual Key designates the finishing key and is set to Space (20000000).
- Change the first byte in Key Modifiers from 02 to 00
- Change the first byte in Virtual Key from 20 to FF
- Log off and log back on. I don"t think it"s necessary to restart.
- Do not change the Hot keys for input languages in Control Panel, unless you want to do this all over again.
Notes: Symptoms
Each registry key (thing that looks like a folder) is for each specific hotkey setting that you would normally find in Control Panel &> Region and Language &> Keyboards and Languages &> Change keyboards... &> Advanced Key Settings &> Hot keys for input languages. The recurring bug is the hotkey being automatically reset to Ctrl+space even if changed via the GUI.
I can personally confirm this for Windows 7 64-bit and Windows 8.1, though from my research, it looks like it may work for XP and Vista as well.
Sources:
Traditional Chinese Pocket IME Hot Key Registry Settings
Simplified Chinese MSPY 3.0 IME Hot Key Registry Settings
鑒於win10自帶輸入法的問題。在 @ipcjs 解決方案的基礎上,我裝了兩個輸入法,並且把自帶輸入法刪除。然後把其中一個輸入法設定為僅英文輸入,另一個輸入法作為中文輸入。用win+space鍵切換。目前感覺良好
是我弄錯了,不好意思,此答案作廢~~~
----------------------------------------
win10 1709(秋季創意者更新)修復了「修改語言高級設置快捷鍵(ctrl+space)無效的BUG)」。
程序員們現在終於可以愉快的ctrl+space了
修改完記得logoff一下才能生效(偷笑),我選擇重啟
一個類似的解決方案,嗯,不過不是解決windows快捷鍵,而是修改mathematica的快捷鍵的解決mathematica結束子表達式快捷與windows快捷鍵衝突問題之修改keyeventtranslations解決方案
我就是死都不會下搜狗。自己搞了半天終於弄好了,添加一個英語語言,再到語言高級設置里把語言切換改成 左 ctrl+shift。這樣以來只有中文模式下ctrl+空格才有用。在其他軟體界面可以ctrl+shift快速切換其實也不慢。
⑴
運行-&>輸入"regedit"打開註冊表-&>找到
"計算機HKEY_USERS.DEFAULTControl PanelInput MethodHot Keys 0000010"
-&>修改key modifiers 和 vitrual key
⑵
tip:如果禁用[輸入法/非輸入法切換] ,就把key modifiers 和 vitrual key 的第一位都修改成00
tip:如果有將要修改的目標熱鍵,比如我希望把[輸入法/非輸入法切換] 改成ctrl+"~",就把key modifiers的第一位修改成02,vitrual key的第一位修改成C0.
說明:
①Key Modifiers(修改鍵):第一位是Ctrl,Alt,Shift三個,Ctrl為02,Alt為01,Shift為04,要組合鍵的話直接相加;第二位是用左側還是右側,左側80,右側40,組合起來就是8+4=12=c0。
②Virtual Key(虛擬鍵):設置組合鍵以外的熱鍵,把第一位設置為對應的二進位數據即可。例如想設置A為熱鍵,其二進位數據為41,則把Virtual Key改成41 00 00 00,更多鍵值Virtual-Key Codes.
這方法是從這找的【圖片】註冊表修改輸入法熱鍵_註冊表吧_百度貼吧
這個要改註冊表,,哪個系統都一樣,,這部分代碼據說是微軟外包給國內某大學開發的就再也沒動過了,一直就有這問題,,簡直是輸入法中的流氓,,,強佔最好的快捷鍵,我機器上我就裝了一個輸入法,用shift切換中/英,,google輸入法這個地方也比較蛋疼,只能設置shift和ctrl作為切換方式,,很容易誤操作,,不知道各位有什麼辦法能解決這個問題,,不要叫換輸入法,因為輸入在系統中屬於一個比較特殊的模塊 ,我只選擇使用國外,信得過的大公司的.
這個mathematica的ctrl+space確實煩人了,我不想改輸入法的設置,yu-he的鏈接又已經失效了。摸索了一下,改了mathematica的快捷鍵
找到文件Mathematica(version)SystemFilesFrontEndTextResourcesWindowsKeyEventTranslations.tr
把(* Typesetting motion commands *)下面的一行 Item[KeyEvent[" ", Modifiers -&> {Control}], "MoveExpressionEnd"], 中Control改成Shift快捷鍵就變成了Shift+space了~原諒我答非所問。eclipse裡面的Ctrl+Space和輸入法切換的衝突,試了下改註冊表未果(並未follow楊東睿的指導),於是把eclipse里Ctrl+Space對應的快捷鍵映射成別的了。
改註冊表,這是已知的唯一確定持續有效的方法HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys/00000010把Key Modifiers和Virtual Key兩項鍵值(Value)都改成00 00 00 00可以屏蔽掉輸入法如果有別的需求,又碰巧知道鍵盤對應的value,根據自己需求改成你想要的也行
我被這個問題折騰了整整半天,修改熱鍵,修改註冊表,修改HKEY_USERS,重啟都不行。
唯一靠譜的方法是autohotkey,一行代碼^space::return
世界清靜了。添加輸入語言為英語--美式鍵盤。而不是在中文語言中添加美式鍵盤。參見:win7下關閉ctrl+space組合鍵,使用ctrl+shift作為中英文切換 EEAntのWorld
我給你個靠譜的解決方案,自己看,懶得再寫一遍了:Windows 10如何設置CTRL+空格切換中英文輸入法? - 用戶體驗
推薦閱讀:
※已經完全適應 Windows 7,看到 Windows 8 的變化很恐懼怎麼辦?
※為何win8沒有經典主題?
※怎樣從 Windows 7 升級到 Windows 8 而不刪掉以前的數據?
※windows 8+ 8.1的份額已經超過10%,為什麼還有那麼多人在唱衰win8?
※微軟為什麼不改善Windows的字體渲染?
TAG:MicrosoftWindows | 輸入法 | Windows8 | 註冊表 |