2013-09-01 33 views
0

在OneNote中,假設我想寫x^y(x爲y的冪),我需要進入Equ模式(通過鍵盤快捷方式),鍵入x^y,點擊Space,然後退出等號模式如何使用帶變量和通配符的HotString?

所以,我想,這可能是這樣的:

::(wild_card)^(wild_card):: 
Send, (Shortcut for equ mode) 
Send, variable1 
Send,^
Send, variable2 
Send, space 
Send, (Shortcut for equ mode) 

如何真正實現這一目標?通過結束字符
分離監視器字 - -

可替換地,相同的目的可以通過這樣做,
配製檢測是否^是在那些字
- 發送(快捷鍵),則字,然後空間,那麼(捷徑)。
這是更可行嗎?

+1

看一看[正則表達式技術動態熱字串(http://www.autohotkey.com/board/topic/15015-regex-powered-dynamic-hotstring S /)。您需要對「百分比」示例進行一些調整以獲得所需內容。當然,您應該在觸發前檢查OneNote是否處於活動狀態。 – MCL

回答

1

由於MCL,

這裏是在OneNote

#Include DynamicHotstrings.ahk 
#IfWinActive, ahk_class Framework::CFrame 
hotstrings("(\w+\_\w+) ","dowork") 
hotstrings("(\w+\^\w+) ","dowork") 

dowork: 
    Send, {LAlt Down}{=}{LAlt Up} 
    SendRaw, %$1% 
    Send, {Space} 
    Send, {LAlt Down}{=}{LAlt Up} 
    Send, {Space} 
    Return 

自動轉換X_Y代碼和X^Y考慮他們的數學表達式更重要的是,你可以修改DynamicHotstrings.ahk所以它會忽略我們是自動轉換的時候就已經在方程模式:

hotstrings(k, a = "") 
{ 
    CoordMode,Pixel,Screen 
    PixelGetColor, color, 455, 1 
    if (color = 0xD7337F) 
     return 
     .... 
+0

不錯的工作,但是有一些注意事項:1)我相信,在正則表達式中跳出下劃線(** \\ _ **)是沒有必要的。 2)爲了識別窗口(狀態)而通過座標檢查像素幾乎總是不可靠的。如果它是一個自己的窗口,請嘗試識別它。如果它只是一個控件,請使用「Control ...」命令。 3)'#IfWin'很可能不適用於'hotstrings()'函數。你也必須通過檢查'IfWinActive,...'來修改這個函數。 – MCL