EliteBookのcopilotキーを右コントロールキーとして割り当てる方法
copilotキーのスキャンコードを調べる
キーのスキャンコードがわからないとレジストリに登録できない。Copilotキーは機種によってスキャンコードの割り当てが違うため、特定できない。また、Copilotキーは通常キーイベントとしてでないことが多い。
「AutoHotkey」をインストールする。必ず「v1」をダウンロードすること。v2は文法が異なり、履歴の見方も不親切。
「Untitled.ahk」というテキストファイルを作り、下記のコードを保存。
#InstallKeybdHook
#Persistent
KeyHistory
return
AUtoHotKeyインストール済みの環境で、上記ファイルをダブルクリックして実行→コンソールウィンドウが立ち上がる→Copilotキーを押す→ViewタブのKey Historyを見る。
VK SC Type Up/Dn Elapsed Key Window
-------------------------------------------------------------------------------------------------------------
5B 15B d 2.58 LWin C:\Users\ユーザー名\Documents\AutoHotkey\Untitled.ahk - AutoHotkey v1.1.37.02
A0 02A d 0.00 LShift
86 06E d 0.00 F23
5B 15B u 0.23 LWin CopilotkeyFocusWindow
A0 02A u 0.00 LShift
86 06E u 0.00 F23
Press [F5] to refresh.
私の環境では以下の同時押しとして認識されていることがわかった。
- LWin(VK5B / SC15B)
- LShift(VK A0 / SC02A)
- F23(VK86 / SC06E)
結論から言うと、「PowerToys」や「レジストリ」でキーを割り当てる方法は使えない。レジストリで登録できるのは単独キーのみ(組み合わせキーによるショートカットキー不可)、PowerToysは複合ショートカットキーの組み合わせは3つまでしかできないから。「AutoHotKey」一択となる。
ループでキー割り当てするコーディングもできるが、ループ後半のキー割り当てが不安定となった(XやYなど)ため、ループを使用せず、箇条書きとする。
#NoEnv
#SingleInstance force
SetWorkingDir %A_ScriptDir%
; ====================================
; Copilotキー (LWin+LShift+F23) → RCtrl 変換 完全版(個別定義)
; ====================================
; ---------- 文字キー A-Z ----------
F23 & a::Goto SendRCtrl
F23 & b::Goto SendRCtrl
F23 & c::Goto SendRCtrl
F23 & d::Goto SendRCtrl
F23 & e::Goto SendRCtrl
F23 & f::Goto SendRCtrl
F23 & g::Goto SendRCtrl
F23 & h::Goto SendRCtrl
F23 & i::Goto SendRCtrl
F23 & j::Goto SendRCtrl
F23 & k::Goto SendRCtrl
F23 & l::Goto SendRCtrl
F23 & m::Goto SendRCtrl
F23 & n::Goto SendRCtrl
F23 & o::Goto SendRCtrl
F23 & p::Goto SendRCtrl
F23 & q::Goto SendRCtrl
F23 & r::Goto SendRCtrl
F23 & s::Goto SendRCtrl
F23 & t::Goto SendRCtrl
F23 & u::Goto SendRCtrl
F23 & v::Goto SendRCtrl
F23 & w::Goto SendRCtrl
F23 & x::Goto SendRCtrl
F23 & y::Goto SendRCtrl
F23 & z::Goto SendRCtrl
; ---------- 数字 0-9 ----------
F23 & 0::Goto SendRCtrl
F23 & 1::Goto SendRCtrl
F23 & 2::Goto SendRCtrl
F23 & 3::Goto SendRCtrl
F23 & 4::Goto SendRCtrl
F23 & 5::Goto SendRCtrl
F23 & 6::Goto SendRCtrl
F23 & 7::Goto SendRCtrl
F23 & 8::Goto SendRCtrl
F23 & 9::Goto SendRCtrl
; ---------- ファンクションキー F1-F12 ----------
F23 & F1::Goto SendRCtrl
F23 & F2::Goto SendRCtrl
F23 & F3::Goto SendRCtrl
F23 & F4::Goto SendRCtrl
F23 & F5::Goto SendRCtrl
F23 & F6::Goto SendRCtrl
F23 & F7::Goto SendRCtrl
F23 & F8::Goto SendRCtrl
F23 & F9::Goto SendRCtrl
F23 & F10::Goto SendRCtrl
F23 & F11::Goto SendRCtrl
F23 & F12::Goto SendRCtrl
; ---------- 編集系キー ----------
F23 & Tab::Goto SendRCtrl
F23 & Space::Goto SendRCtrl
F23 & Insert::Goto SendRCtrl
F23 & Delete::Goto SendRCtrl
F23 & Home::Goto SendRCtrl
F23 & End::Goto SendRCtrl
F23 & PgUp::Goto SendRCtrl
F23 & PgDn::Goto SendRCtrl
; ====================================
; 共通処理: 右Ctrl送信
SendRCtrl:
key := SubStr(A_ThisHotkey, 6)
; Windows/Shift 押下を解除して右Ctrlを送る
if GetKeyState("LWin","P")
Send {LWin Up}
if GetKeyState("LShift","P")
Send {LShift Up}
Send % "{RControl Down}" key "{RControl Up}"
return

コメント