注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

KeyTrap Plugin  

2009-11-19 20:31:50|  分类: Powerpro Plugin |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Keytrap Plugin下面列出的功能是powerpro本身不能達到的

  • 修定Logitech keyboard特定按鍵,或者模擬它們的特殊功能,例如可以用一鍵tab打開IE瀏覽器等
  • 屏蔽Ctrl+alt+del
  • 用按鍵作暫停或繼續腳本的功能
  • 屏蔽某個按鍵或全部按鍵
  • 修改某個鍵由A鍵轉成B鍵

 很多功能未經測試,但我相信它是可以做的.有興趣大家可以互相交流和學習。

  • 安裝Keytrap
  1. 下載解壓keytrap.dll到C:\Program Files\PowerPro\plugins目錄
  2. 複製keytrap.ini和KTConfig.exe到C:\program files\powerpro
  3. 執行命令keytrap.enable(1)命令作啟動。如想您想在啟動powerpro時,Keytrap自動被執行,您可以將此命令放進Scheduler裏。
  • 卸載Keytrap

在執行keytrap.unload()卸載命令前,請先執行keytrap.enable(0)關閉Keytrap插件

Notes:When another application is on top of the keyboard hook, KeyTrap may not be able
to filter all the keys successfully.  To reclaim(重新宣佈) the top of the keyboard hook:
    KeyTrap.Disable()
    KeyTrap.Enable()

  • 如何設定Keytrap設定值(keytrap.ini)

Keytrap語法:

MODIFIER KEY 1,MODIFIER KEY 2,MODIFIER KEY 3,SCAN CODE,KEY CODE,ONKEY,EVAL,WINDOW CAPTION,COMMAND,STOP,EAT,NOMOD,WAITMOD,EXTKEY,DISABLED,,,,,,[COMMENT]

  • Modifier Key

Modifier Key表示用按鍵(最多可以是三個按鍵的組合)去執行Command命令,而Modifier Key的表達方式是Virtual-key Code

  • Scan Code/VK code

    To determine the scancode/Virtual-key of a particular key, invoke keytrap.ScanMode("1").
    "ALL" may be specified to indicate any keys.

  • ONKEY總共有六個參數(0,1,2,3,4,5)可供使用:

 0     keydown  表示按下鍵的意思,當您按下不方開時(Held Down),命令將重覆被執行直至你放開按鍵為止
 1   keyup     表示放開按鍵
 2  keydown & keyup  表示按下的意思,命令將重覆被執行直至你放開按鍵
 3  keydown(once)  當按鍵被按下後,表示命令只會被執行一次
 4  keydown(once) & keyup(once) command is processed once on keydown and once on keyup
 5  double tap  双撃按鍵

  • Eval


    A valid expression for PP's "Eval()" function. Maximum of 255 characters.
    If the result is 1, the command will be executed. Leave empty to ignore checking.
    The following may be specified in the commmand
    and will be substituted with it's corresponding value:
      %vkc%  - vkcode of the pressed key
      %scc%  - scan code  of the pressed key
      %key%  - name of the key. Eg. "A", "Backspace".

  • Window Caption

 Same as PP's window caption. Leave empty for all windows.

  • Command

A valid powerpro comman

  • Stop 

    Boolean. Possible value is 1 or 0.
    1 = Stop from further processing the rest of the INI file
    0 = Continue processing the INI file to search for other matches

  • Eat

1 = Eat the key. Do not pass it to the application.

    0 = Pass the key to the application.

  • NOMOD

 告訴Keytrap不要理會任何Modifier Key

    1 表示不檢查Modifier Key

0表示檢查Modifier Key

  • WaitMod

告訴Keytrap等待Modifier keys放開,然後才執行command命令。

1表示等待

0表示不等待

  • ExtKey

參數值可為1表示它是extended key(麥金塔電腦專用鍵盤)

  • Disable

    Boolean. Possible value is 1 or 0.
    If 1, this entry will be ignored by keytrap.

  • 用KTConfig作設定

如果您不想用手動的方式作設定Keytrap.ini的話,也可以用圖像化的KTConfig作替代,效果是一樣的。

打開KTConfig.exe如圖:

 KeyTrap Plugin - Y偉 - chunwaihome 的博客

 

  •  如何獲得按鍵的Scan Code和VK Code

例如tab的scan code 是15,VK code是9。按此

 KeyTrap Plugin(Services)

Keytrap插件其他功能如下:

  • 啟動/關閉插件

語法:keytrap.enable(X,Y)

參數X表示啟動或關閉插件功能,1為開啟0為關閉。

keytrap.enable(1)            激活此插件並載入默認的設定檔 Reloadini(1,"active")

keytrap.enable(0)            屏蔽keytrap插件

參數Y表示是否載入默認ini設定檔

如果是1的話表示載入pprofolderkeytrap.ini設定檔,0則表示不自動載入。

  • 啟動Scan Mode(追踪鍵盘的輸入鍵)

 語法:keytrap.scanmode(1)

1為啟動,0為關閉

顯示Debug窗口記錄你輸入的鍵直至双擊ESC。

  • 使用Keytrap不同的設定值(默認值為active)

語法:KeyTrap.ReloadIni()

例如 KeyTrap.ReloadIni(0, "WarCraft")

第一個參數為0的時候,表示會顯示錯誤訊息當找不到warcraft的話。

  • 獲取鍵盘輸入值的Scan Code

語法:ScanCode = KeyTrap.GetScanCode([n][,ext])

例子:

scancode=keytrap.getscancode(10,0)
win.debug(scancode)

當你輸入"a"鍵時,它會給出Scan Code值31

參數1:

10表示10秒,0為無限時間

參數2:

0表示輸入任何鍵,1表示輸入extended key(麥金塔電腦專用鍵盤)

  •  獲取輸入值的Virtual-Key Code

語法:vkcode = keytrap.getvkcode()

例子:

vkcode=keytrap.getvkcode()
win.debug(vkcode)

當你輸入"a"鍵時,它會給出VKcode值為65

  •  開啟/關閉CTRL+ALT+DEL組合鍵

語法:keytrap.setctrlaltdel(0)

參數值為1表示啟動CTRL+ALT+DEL組合鍵

0表示關閉CTRL+ALT+DEL組合鍵

  •  顯示特別鍵的開啟狀態

語法: bState = KeyTrap.GetKeyState(x,y)

例如我想顯示Caps lock鍵是否在打開狀態

win.debug(keytrap.getkeystate(1,20))

x參數值為1表示按鍵為Caps , Num, Scroll Lock

x參數值為0表示鍵盘所有按鍵

Y參數值為VKCode

結果是1的話表示在開啟狀態,0則在關閉狀態。

 

  • 等待鍵盘值來執行往後的腳本

語法: KeyTrap.WaitKey(x,y,[n])
x表示VK code

Y是1表示eat the key/pass the key to the system

n表示等待的時候,默認值為infinite

例子:
    ; Wait for tab to be pressed.
    win.debug("Press tab to continue")
    KeyTrap.WaitKey(9)
    win.debug("Returned")

執行此腳本,當你按下Tab鍵後,win.debug("returned")才會被執行。

  •  SendKeys

它有兩種用法第一種是和powerpro的*key命令相同的例如

語法:keytrap.sendkeys(X)

例子

keytrap.sendkeys("text{en}")

傳送text文字和回車鍵

第二種是模擬鍵的按下和放開狀態例如

語法:keytrap.sendkeys(a,b,c,d)

 a      = scancode
 b      = virtual key code (vkcode)
 c      = 1 for keyup, 0 for keydown
 d      = optional parameter to generate the vkcode by using the scancode (ignores the supplied vkcode)

例子:
      keytrap.sendkeys(15,9,0)        ;;Tab keydown
      keytrap.sendkeys(15,9,1)        ;;Tab keyup

參數1為Scancode

15的scancode為tab

參數2為vkcode

9的vkcode為tab

參數3

0表示按下,1表示放開。

  • 獲得Scancode 的名稱

語法:sKeyname = KeyTrap.GetKeyName(Scancode, Ext)

例子
    win.debug(KeyTrap.GetKeyName(28, 0))    ;; returns "Enter" on my keyboard.
    win.debug(KeyTrap.GetKeyName(28, 1))    ;; returns "Num Enter" on my keyboard.

Ext值為1表示用extended key(麥金塔電腦專用鍵盤)

  •  顯示keytrap是否在啟動狀態

語法:KeyTrap.IsEnable()

結果為:

1表示在啟動狀態

0表示在關閉狀態

這篇文章會不定時更新,如有任何關於使用Keytrap的心得,歡迎交流

Keytrap語法:

MODIFIER KEY 1,MODIFIER KEY 2,MODIFIER KEY 3,SCAN CODE,KEY CODE,ONKEY,EVAL,WINDOW CAPTION,COMMAND,STOP,EAT,NOMOD,WAITMOD,EXTKEY,DISABLED,,,,,,[COMMENT]

  •  双擊ESC鍵關閉當前窗口

Keytrap.ini

[Active]

ini=0,0,0,1,27,5,,,*Window Close! active,0,0,0,0,0,0,,,,,,close active window by double tapping escape

說明:

1的scan code表示ESC鍵            那我是怎樣知道Esc的Scan code和VKcode是1和27呢,可以按此查表啊

27的VKcode表示ESC鍵

Onkey參數是5,表示double click(双擊)的意思。

Eval是空白的

Window caption參數也是空的,表示"所有窗口"的意思。註:您亦可以指定某程序的窗口例如*記事本等

Command參數是*Window Close! active表示關閉當前窗口的意思

 

  • 如何屏蔽(disable)左shift鍵

Keytrap.ini

[Active]

disablewindowskey=0,0,0,42,160,0,,,,0,1,0,0,0,0,,,,,,屏蔽左shift鍵

說明:

42的scan code表示左Shift鍵              左Shift鍵的Scan code和VKcode分別是42和160,可以按此

160的VKcode表示左Shift鍵

Onkey值為0表示按下的意思

Window caption參數是空的,表示"所有窗口"的意思。註:您亦可以指定某程序的窗口例如*記事本等

Command參數是空的表示不執行任何命令。

Eat值是1表示不會傳送左Shift鍵到所有窗口上(Do not pass it to the application.)

例子3:

  • 使用Shift+WIN+ALT+T來打開記事本

Keytrap.ini

        [Active]

        runNotepad=162,91,164,20,84,0,,,"notepad",0,0,0,0,0,0,,,,,,

說明:

162的VKcode表示左CTRL鍵              關於Scan code和VKcode,可以按此

91的VKcode表示左WIN鍵

164的VKcode表示左ALT鍵

20的scan code表示T鍵

84的VCode表示T鍵

ONKey值為0表示按下Shift+WIN+ALT+T的意思

Window caption參數是空的,表示"所有窗口"的意思。註:您亦可以指定某程序的窗口例如*記事本等

Command參數"notpad"表示,表示按下Shift+WIN+ALT+T的意思後執行"notepa"命令的意思。

 

  • 不同的程序調用不同的熱鍵

這個非常有用,例如我想在打遊戲的時候,屏蔽win鍵,在用記事本的時候用一些熱鍵,用ie瀏覽網頁時又調用另一些熱鍵。

以下是Keytrap.ini的內容

[Active]

ini=0,0,0,1,27,5,,,*Window Close! active,0,0,0,0,0,0,,,,,,close active window by double tapping escape

[temp]

       disablewindowskey=0,0,0,42,160,0,,,,0,1,0,0,0,0,,,,,,屏蔽左shift鍵

你可以用keytrap.reload(0,"active")或

keytrap.reload(0,"temp")作互相切換調用。 

  评论这张
 
阅读(1029)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017