2009-12-11 59 views
63

我最近切換到Dvorak鍵盤佈局作爲一點實驗。轉型中最困難的部分之一就是處理熱鍵。大多數熱鍵在設計時都考慮到了QWERTY,而且更糟的是,熱鍵似乎是極其緊張的記憶。爲什麼Visual Studio在autohotkey之前捕獲關鍵事件?

而不是重新學習所有的熱鍵,當與其他鍵一起按下了Ctrl鍵Alt鍵,或鑰匙我已經寫了一個AutoHotkey的腳本Dvorak佈局轉換回QWERTY 。除了Visual Studio '08之外,它在我嘗試過的任何地方都可以很好地工作。在autohotkey可以翻譯它們之前,似乎擊鍵被捕獲。

爲什麼會發生這種情況,我該如何解決這個問題?

下面是我的腳本的摘錄(從一開始):

; control + letter 
^;::^z 
^q::^x 
^j::^c 
^k::^v 

更新:腳本工作正常Win7上用AHK,VS08和的CodeRush新安裝。我遇到麻煩的機器正在運行vista。有關如何進一步診斷的任何想法?

更新2:該腳本可以在Vista和2010 beta 2中正常運行。似乎只是08 vs vista。今晚要嘗試新版vs08。

回答

131

啊哈!我已經知道了。如果ahk和目標應用程序沒有在相同權限(或用戶)下運行,ahk將不會正確攔截/模擬鍵盤事件。在我的情況下,visual studio以管理員(提升)特權運行,而ahk腳本以當前登錄的用戶身份運行。

以下解決的問題之一:

  • 同時運行VS和AHK作爲當前用戶
  • 編譯腳本和VS同時運行和編譯應用程序作爲管理員
+3

作爲管理員編譯和運行完美! – MEMark 2010-06-09 02:59:49

+12

只是想補充說,它不是關於*不同*權限,而是一個AutoHotkey腳本不能用於運行在*更高*特權級別的應用程序 – 2012-10-25 14:24:02

+1

您可以將「以管理員身份運行」添加到ahk的上下文菜單中,它可以節省編譯步驟。http://www.howtogeek.com/howto/windows-vista/add-run -as管理員換的AutoHotkey的腳本功能於Windows的Vista中/ – 2012-12-27 20:21:52

0

這句話在small print聽起來相關:

如果SENDMODE在自動執行段(腳本的頂部)時,它會影響所有的重新映射。但是,由於重新映射使用Send {Blind}並且由於SendPlay模式不完全支持{Blind},所以在SendPlay模式下(尤其是Control,Shift,Alt和Win)可能無法正確運行某些重新映射。要解決此問題,請在重新映射時避免在自動執行部分中使用SendPlay;然後在腳本的其他位置使用SendPlay與Send命令。或者,您可以將您的重新映射轉換爲顯式調用SendEvent與發送的熱鍵(如下所述)。

+0

實際上把腳本在四種「發送」模式中的任何一種都沒有幫助。 :( – 2009-12-12 17:25:51

37

剛想要添加幾個點到OP本身找到的解決方案。

1)問題不在於AHK和VS與不同權限運行 - 它只是一個腳本創建熱鍵在非管理員模式下運行不會對在管理運行的應用程序工作模式,但如果反過來則不會有問題。

2)不需要編譯腳本,只需將autohotkey.exe設置爲在管理模式下運行(這就是我所做的),或者爲特定腳本創建快捷方式並將其設置爲始終運行管理員模式。 (順便說一句,只是要指出,運行AHK腳本的編譯版本沒有性能增益,因爲代碼仍然被解釋 - 它只是現在解釋器被嵌入在可執行文件中創建)

相關問題