如何改變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

  1. Go to Start &> Type in regedit and start it
  2. Navigate to HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
  3. Select the key named:
    • 00000070 for the Chinese (Traditional) IME - Ime/NonIme Toggle hotkey
    • 00000010 for the Chinese (Simplified) IME - Ime/NonIme Toggle hotkey
  4. 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).
  5. Change the first byte in Key Modifiers from 02 to 00
  6. Change the first byte in Virtual Key from 20 to FF
  7. Log off and log back on. I don"t think it"s necessary to restart.
  8. 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 Keys0000010"

-&>修改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 | 註冊表 |