0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作業環境のカスタムキーマップ

Last updated at Posted at 2024-07-27

作業環境のカスタムキーマップ

AutoHotkeyとChangeKeyを用いて、作業環境のキーマップを変更している。
備忘録として本記事を記載する。

環境

項目 内容・バージョン
OS Windows10 Professional
AutoHotkey v2.0.18
ChangeKey v1.50

CustomKeyMap

ChangeKeyの設定

ChangeKeyで以下のキーを入れ替えている。
image.png

入力 出力
CapsLock 右Ctrl

AutoHotkeyの設定

AutoHotkeyで以下のキーマップを設定している。
(以下はChangeKeyで設定した内容も含んだ全てのキーマップ一覧)
image.png

スクリプト

CustomKeyMap.ahk
InstallKeybdHook
#UseHook

;[無変換]+[I] → [↑]
vk1D & i::Send "{Up}"

;[無変換]+[J] → [←]
vk1D & j::Send "{Left}"

;[無変換]+[K] → [↓]
vk1D & k::Send "{Down}"

;[無変換]+[L] → 	[→]
vk1D & l::Send "{Right}"

;[無変換]+[Space] → [Enter]
vk1D & Space::Send "{Enter}"

;[無変換]+[h] → [BackSpace]
vk1D & h::Send "{Backspace}"

;[無変換]+[M] → [Win]+[Shift]+[←]:ウインドウをモニター間移動
vk1D & m::Send "{RWin Down}{Shift Down}{left}{Shift Up}{RWin Up}"

;[無変換]+[変換] → [Win]+[Shift]+[S]:指定した領域を画面コピー
vk1D & vk1C::Send "{RWin Down}{Shift Down}{s Down}{RWin Up}{Shift Up}{s Up}"

;[無変換]+[U] → [Ctrl]+[Alt]+[Tab]:ウインドウの切り替え
vk1D & u::Send "{Ctrl Down}{Alt Down}{Tab Down}{Ctrl Up}{Alt Up}{Tab Up}"

;[無変換]+[1] → [F1]
vk1D & 1::Send "{F1}"

;[無変換]+[2] → [F2]
vk1D & 2::Send "{F2}"

;[無変換]+[3] → [F3]
vk1D & 3::Send "{F3}"

;[無変換]+[4] → [F4]
vk1D & 4::Send "{F4}"

;[無変換]+[5] → [F5]
vk1D & 5::Send "{F5}"

;[無変換]+[6] → [F6]
vk1D & 6::Send "{F6}"

;[無変換]+[7] → [F7]
vk1D & 7::Send "{F7}"

;[無変換]+[8] → [F8]
vk1D & 8::Send "{F8}"

;[無変換]+[9] → [F9]
vk1D & 9::Send "{F9}"

;[無変換]+[0] → [F10]
vk1D & 0::Send "{F10}"

;[無変換]+[-] → [F11]
vk1D & -::Send "{F11}"

;[無変換]+[^] → [F12]
vk1D & ^::Send "{F12}"

;タイムスタンプ機能
;[無変換]+[I] → タイムスタンプ(YYYYMMDD )を入力する
vk1D & d::
{
    TimeString := FormatTime(,"yyyyMMdd ")
    Send TimeString
}

;[変換] → IME On/Off
vk1C::Send "{vkF3}"

;[Ctrl]+[Space] → IME On/Off
Ctrl & Space::Send "{vkF3}"

;Sands機能
;  Spaceキーを押下した状態で他のキーを押下した場合、SpaceキーをShiftキーとして機能させる。
;  Spaceキー単体で押下した場合にはSpaceキーとして動作させる。
press := 0     ; スペースキーを押しているかどうか。
shifted := 0   ; スペースキー押下中に何かの印字可能文字を押したかどうか。
pressedAt := 0 ; スペースキーを押した時間(msec)。
timeout := 300 ; pressedAt からこの時間が経過したら、もはや離したときにもスペースを発射しない。

hook := InputHook() ; スペースキー押下中に何かの印字可能文字を押したかどうか捕捉するフック。

$*Space:: {
	global
	SendInput "{Shift Down}"
	if (press = 1) {
		return
	}
	shifted := 0
	press := 1
	pressedAt := A_TickCount

	; 何かのキーが押されたことを検知する
	; L1 はフックする文字数の上限を 1 にする
	; V はフックした入力をブロックしない
	; デフォルトで印字可能文字のみフックされる
	hook := InputHook("L1 V")

	; 一文字待機し、待機中にスペースを離したとき以外、
	; シフト済みにする
	hook.Start()
	if (hook.Wait() != "Stopped") {
		shifted := 1
	}
}

$*Space up:: {
	global
	SendInput "{Shift Up}"
	press := 0

	; 待機キャンセル
	hook.Stop()

	; 一定時間経過していたらスペースを発射しない
	if (A_TickCount - pressedAt > timeout) {
		return
	}

	; シフト済みでなければスペースを発射する
	; 先に押してあるモディファイアキーと組み合わせられるように {Blind} をつける
	if (shifted == 0) {
		SendInput "{Blind}{Space}"
	}
}

; スペース押しっぱなしが欲しいときのために RShift で代用する
$RShift::Space

【参考】ブラインドタッチ 早見表

TouchTyping.jpg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?