我長期以來一直使用 Autohotkey 來重新映射 CG 軟體(主要是 Zbrush 和 Photoshop)中的按鍵,以使它們對左撇子更友好。
本質上,我將數字鍵盤鍵重新映射到您無法在程式內更改的鍵(Ctrl、Alt、Shift 等)。這樣我就可以用左手使用繪圖板筆,並使用數字鍵盤存取 Ctrl、Alt 等,這比將整個鍵盤向右偏移要方便得多。
無論如何,這是我的腳本:
#IfWinActive, ahk_class ZBrush
#MaxHotkeysPerInterval 200
NumPad1::Alt
Numpad2::LControl
Right::Shift
up::Space
return
很簡單,但自從幾年前創建它以來我就遇到了一個錯誤。本質上,當我按住 Numpad2+Right (Ctrl+Shift),然後釋放 Numpad2 時,程式的行為就像我仍在按下它一樣。快速按下 Numpad2 即可將其恢復正常,但這非常煩人。這裡有幾張圖片可以更好地說明這個問題:
你知道為什麼會發生這種情況嗎?我不是程式設計師,所以我肯定需要一些幫助。
答案1
當我在 Numpad2 之前釋放時,問題似乎不會發生。就好像按向右 (Shift) 阻止了 Numpad2 (Ctrl) 被釋放......
您看到的問題是由於數字鍵盤被 更改所致⇧Shift。按下⇧Shift與切換按鍵類似NumLock,但效果更複雜且不明顯。
例如,按下Numpad-4將產生以下結果:
│ Num On │ Num Off
──────────┼────────┼───────────
Shift Off │ 4 │ ←
──────────┼────────┼───────────
Shift On │ ← │ Shift + ←
因為您正在重新映射→為⇧Shift並將其與數字鍵盤中的鍵結合使用,所以您得到的交互使 AutoHotkey 變得複雜,並使您對其意想不到的結果感到困惑(它很可能是邏輯正確,但肯定是意想不到的和不想要的結果)。
嘗試將您的輔助密鑰變更為Numpad-2其他密鑰不是修改為⇧Shift,例如K。您會發現您不再獲得意想不到的結果。
這種行為發生在鍵盤控制器中,而不是軟體中,因此不幸的是,如果您需要用作⇧Shift修飾符,則不能使用數字鍵盤鍵進行這樣的複雜重新映射。
⇧Shift一種選擇是使用不被(數學運算子、Numpad-5和)修改的編輯區塊或數字鍵盤鍵Numpad-Enter。
另一種選擇是編寫一個更複雜的腳本,創建一個鍵盤掛鉤來檢查較低級別的按鍵,以便它可以檢查按鍵是否⇧Shift按下,然後根據需要進行補償。
(不久前,當我編寫一個 Unicode 輸入程式時,我遇到了這個問題。我試圖讓它支援某些字元的移位鍵,但修改把事情搞砸了。我最終求助於後一個建議並編寫一個複雜的腳本,但它令人沮喪、令人眼花繚亂,而且最終還是受到了限制。
答案2
哇!很棒的回覆!快速而精確。太感謝了。我沒有意識到這些鍵被 Shift 修改了,給了我這種惱人的行為。問題是我已經習慣了 Numpad2 的重新映射,如果不經歷數週的精神運動重新適應,我就無法承擔更改它的費用 ^^
我設法通過將 NumpadDown 重新映射到 Ctrl 來繞過這個問題 ^^ 我現在創造了奇蹟!
NumPad1::Alt
Numpad2::Ctrl
NumpadDown::Ctrl
Right::Shift
up::Space
return
非常感謝您指出問題的根源。這多年來一直困擾著我。