為80% TKL、fc660m 鍵盤增加數字鍵功能--(使用 AutoHotkey)





最近買了一把80%機械鍵盤,
即一般所謂的TenkeyLess(TKL)沒有數字鍵的鍵盤,
當然好用是沒話講,
但有時沒數字鍵就是有那麼點不方便。

然後找到一個軟體解決的方法:[autohotkey]
就順便記錄一下步驟:



基本上模擬Realforce 87u的配置,使用ScrollLock鍵當作NumLock鍵來切換數字模式,
因為ScrollLock鍵平常也沒在用,剛好按下去又會有燈號可提示。


1.到官網下載[autohotkey],
  按點 Download AutoHotkey Installer
  下載後安裝。

2.撰寫 ahk Script,用記事本(Notepad)編輯即可:
 
$m::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad0}
   Else
      if (GetKeyState("Capslock", "T"))
 send {M}
      Else
  send {m}

return


$j::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad1}
   Else
      if (GetKeyState("Capslock", "T"))
 send {J}
      Else
  send {j}
return


$k::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad2}
   Else
      if (GetKeyState("Capslock", "T"))
 send {K}
      Else
  send {k}
return


$l::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad3}
   Else
      if (GetKeyState("Capslock", "T"))
 send {L}
      Else
  send {l}
return

$u::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad4}
   Else
      if (GetKeyState("Capslock", "T"))
 send {U}
      Else
  send {u}
return

$i::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad5}
   Else
      if (GetKeyState("Capslock", "T"))
 send {I}
      Else
  send {i}
return

$o::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {Numpad6}
   Else
      if (GetKeyState("Capslock", "T"))
 send {O}
      Else
  send {o}
return

$,::
   if ( GetKeyState("ScrollLock", "T") ) 
      send 00
   Else
      send {,}
return

$;::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {NumpadAdd}
   Else
      send {;}
return

$'::
   if ( GetKeyState("ScrollLock", "T") ) 
      send {NumpadMult}
   Else
      send {'}
return


  將以上script檔另存到新的ahk檔,如(D:\TMP\tkl_numpad.ahk)
  Script檔說明:
  $m::         ;mapping m鍵
   if ( GetKeyState("ScrollLock", "T") )  ;Check ScrollLock鍵是否啟用
      send {Numpad0}           ;ScrollLock鍵有啟用的話,則送出數字0
   Else
      if (GetKeyState("Capslock", "T"))   ;ScrollLock鍵沒有啟用的話,Check大寫鍵是否啟用
 send {M}                          ;大寫鍵有啟用的話,則送出M
      Else
  send {m}                          ;大寫鍵沒有啟用的話,則送出m
  return

註:如果有安裝autohotkey,那.ahk檔直接點兩下就可執行,可邊寫邊測試。

3.執行 Convert .ahk to .exe


  在source欄位選擇之前存檔的ahk檔(D:\TMP\tkl_numpad.ahk),
  執行convert,

  就會在原目錄下產生一個exe執行檔(D:\TMP\tkl_numpad.exe).

4.點兩下直接執行(tkl_numpad.exe),
  check右下方的功能表可以看到[autohotkey]正在執行。
  完成、已為鍵盤增加數字鍵功能。



5.若想要開機自動執行,就把tkl_numpad.exe改存到啟動資料夾。
  如 C:\Users\%user%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  下次開機就會自動生效。

另一個ahk Script檔(tkl_numpad.v2.ahk):
使用右Ctrl鍵切換數字模式,並把方向鍵改為PgUp,PgDn,Home,End鍵(適合fc660m layout)。


~RControl::
NumL := !NumL
if (NumL) {
    Menu, Tray, Tip, Numlock enabled
    TrayTip,,Numlock enabled
}
else {
    Menu, Tray, Tip, Numlock disabled
    TrayTip,,Numlock disabled
}
return


$m::
   if ( NumL) 
      send {Numpad0}
   Else
      if (GetKeyState("Capslock", "T"))
       send {M}
      Else
       send {m}

return


$j::
   if ( NumL ) 
      send {Numpad1}
   Else
      if (GetKeyState("Capslock", "T"))
       send {J}
      Else
       send {j}
return


$k::
   if ( NumL ) 
      send {Numpad2}
   Else
      if (GetKeyState("Capslock", "T"))
       send {K}
      Else
       send {k}
return


$l::
   if ( NumL ) 
      send {Numpad3}
   Else
      if (GetKeyState("Capslock", "T"))
       send {L}
      Else
       send {l}
return

$u::
   if ( NumL ) 
      send {Numpad4}
   Else
      if (GetKeyState("Capslock", "T"))
       send {U}
      Else
       send {u}
return

$i::
   if ( NumL ) 
      send {Numpad5}
   Else
      if (GetKeyState("Capslock", "T"))
       send {I}
      Else
       send {i}
return

$o::
   if ( NumL ) 
      send {Numpad6}
   Else
      if (GetKeyState("Capslock", "T"))
       send {O}
      Else
       send {o}
return

$,::
   if ( NumL ) 
      send 00
   Else
      send {,}
return

$;::
   if ( NumL ) 
      send {NumpadAdd}
   Else
      send {;}
return

$'::
   if ( NumL ) 
      send {NumpadMult}
   Else
      send {'}
return



$Up::
   if ( NumL ) 
      send {PgUp}
   Else
      send {Up}
return

$Down::
   if ( NumL ) 
      send {PgDn}
   Else
      send {Down}
return

$Left::
   if ( NumL ) 
      send {Home}
   Else
      send {Left}
return

$Right::
   if ( NumL ) 
      send {End}
   Else
      send {Right}
return

如果覺得啟用的提示(TrayTip)有點煩,把TrayTip那行加上「;」號當作註解即可。
;TrayTip,,Numlock enabled

Comments

Popular Posts