Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2804

Windows10 の入力環境をちょっぴり macOS に寄せる(自分用メモ)

$
0
0

はじめに

入力中におもわず CapsLock + hを押しちゃって「ムキーッ」ってなってる人向け。

日本語キーボードのキーマップを変更

CapsLock と Ctrl をスワップする

基本ですよね。

1. Win + Rregedit.exeを起動

スクリーンショット 2021-01-23 154540.png

2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutへと進み、Scancode Mapの名前で新規エントリ(バイナリ値)を作成 -> 再起動

regedit02.png

もしくは下のような .regをファイルを作成してダブルクリック -> 再起動でも可。

caps2ctrl.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00

具体的に何が行われているか知りたい方は公式ドキュメントをどうぞ:

AutoHotkey でキーバインドを macOS (Bash or Emacs) 風に変換

参考記事:AutoHotkeyでゆるゆるなemacsキーバインド

ダウンロード先

AutoHotkey - Powerful. Easy to learn. The ultimate automation scripting language for Windows.

スクリーンショット 2021-01-24 145907 (1).png

インストール(しない)

ここでは ahkスクリプトを EXE へコンパイルする機能を利用したいだけなので extract to...をクリックして任意のフォルダへ展開します。

スクリーンショット 2021-01-24 150120 (1).png

展開したファイルの中の Compilerフォルダの中に Ahk2Exe.exeがあるので、これを起動します。

スクリーンショット 2021-01-23 160151.png

AHK コンパイラで実行ファイルを作成

スクリーンショット 2021-01-23 160220.png

Source (script file)エントリで .ahkファイルを指定します。また、出来上がった実行ファイルに独自のアイコンを付与したい場合は、 Custom Iconエントリへ .icoファイルを指定することもできます。

.ahkファイルの例(クリックで展開されます)
bash.ahk
;;
;; An autohotkey script that provides emacs-like keybinding on Windows
;;
#InstallKeybdHook
#UseHook
; Include IME.ahk

; The following line is a contribution of NTEmacs wiki http://www49.atwiki.jp/ntemacs/pages/20.html
SetKeyDelay 0

; turns to be 1 when ctrl-x is pressed
is_pre_x = 0
; turns to be 1 when ctrl-space is pressed
is_pre_spc = 0

; Applications you want to disable emacs-like keybindings
; (Please comment out applications you don't use)
is_target()
{
  IfWinActive,ahk_class ConsoleWindowClass ; Cygwin
    Return 1
  IfWinActive,ahk_class MEADOW ; Meadow
    Return 1
  IfWinActive,ahk_class cygwin/x X rl-xterm-XTerm-0
    Return 1
  IfWinActive,ahk_class MozillaUIWindowClass ; keysnail on Firefox
    Return 1
  ; Avoid VMwareUnity with AutoHotkey
  IfWinActive,ahk_class VMwareUnityHostWndClass
    Return 1
  IfWinActive,ahk_class Vim ; GVIM
    Return 1

  Return 0
}

forward_char()
{
  global
  if is_pre_spc
    Send +{Right}
  Else
    Send {Right}
  Return
}
isearch_forward()
{
  Send ^f
  global is_pre_spc = 0
  Return
}
delete_char()
{
  Send {Del}
  global is_pre_spc = 0
  Return
}
delete_backward_char()
{
  Send {BS}
  global is_pre_spc = 0
  Return
}
quit()
{
  Send {ESC}
  global is_pre_spc = 0
  Return
}
newline()
{
  Send {Enter}
  global is_pre_spc = 0
  Return
}
move_beginning_of_line()
{
  global
  if is_pre_spc
    Send +{HOME}
  Else
    Send {HOME}
  Return
}
move_end_of_line()
{
  global
  if is_pre_spc
    Send +{END}
  Else
    Send {END}
  Return
}
previous_line()
{
  global
  if is_pre_spc
    Send +{Up}
  Else
    Send {Up}
  Return
}
next_line()
{
  global
  if is_pre_spc
    Send +{Down}
  Else
    Send {Down}
  Return
}
backward_char()
{
  global
  if is_pre_spc
    Send +{Left}
  Else
    Send {Left}
  Return
}

vscode_mutiple_select()
{
  Send ^d
  global is_pre_spc = 0
  Return
}
vscode_select_all()
{
  Send ^a
  global is_pre_spc = 0
  Return
}
delete_forward_char()
{
  Send {ShiftDown}{END}{SHIFTUP}
  Sleep 50
  Send {Del}
  global is_pre_spc = 0
  Return
}

^d::
  If is_target()
    Send %A_ThisHotkey%
  Else
    delete_char()
  Return
!d::
  If is_target()
    Send %A_ThisHotkey%
  Else
    vscode_mutiple_select()
  Return
^h::
  If is_target()
    Send %A_ThisHotkey%
  Else
    delete_backward_char()
  Return
^g::
  If is_target()
    Send %A_ThisHotkey%
  Else
    quit()
  Return
^m::
  If is_target()
    Send %A_ThisHotkey%
  Else
    newline()
  Return
^f::
  If is_target()
    Send %A_ThisHotkey%
  Else
    forward_char()
  Return  
!f::
  If is_target()
    Send %A_ThisHotkey%
  Else
    isearch_forward()
  Return
^@::
  Suspend, Toggle
  Return
^a::
  If is_target()
    Send %A_ThisHotkey%
  Else
    move_beginning_of_line()
  Return
!a::
  If is_target()
    Send %A_ThisHotkey%
  Else
    vscode_select_all()
  Return
^e::
  If is_target()
    Send %A_ThisHotkey%
  Else
    move_end_of_line()
  Return
^p::
  If is_target()
    Send %A_ThisHotkey%
  Else
    previous_line()
  Return
^n::
  If is_target()
    Send %A_ThisHotkey%
  Else
    next_line()
  Return
^b::
  If is_target()
    Send %A_ThisHotkey%
  Else
    backward_char()
  Return
!k::
  If is_target()
    Send %A_ThisHotkey%
  Else
    delete_forward_char()
  Return

これはもう完全にお好みの問題ですが、個人的なポイントは以下の通りです。

  • あえて Ctrl + Kは設定しない -> VSCode のコマンド開始や Git Bash での kill lineを残したい -> Alt + kで代用
  • 「すべてを選択 Ctrl + A」や「検索 Ctrl + F」は Altキーで代用する
  • Ctrl + @でサスペンド(AHK を一時的にオフ)

スタートアップに登録する

スクリーンショット 2021-01-24 145716.png

出来上がったバイナリを %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startupなどに入れておけば、サインイン時にキーマップが変更されます。

Google 日本語入力で「変換」「無変換」キーで IME をオン・オフする

macOS (日本語キーボード)でのスペースバー両脇にある「英数」「かな」の機能をエミュレートします。

1.Google 日本語入力プロパティの「一般」タグの「キー設定の選択」でいったん「ことえり」を選択し、「適用」クリックします

スクリーンショット 2021-01-23 162537.png

2.右隣の「編集」をクリックして「キー設定」を以下のように変更します

モード入力キーコマンド
変換中Hanaku/ZenkakuIME を無効化
変換中HenkanIME を無効化
変換中MuhenkanIME を無効化
変換前入力中Hankaku/ZenkakuIME を無効化
変換前入力中MuhenkanIME を無効化
入力文字なしHankaku/ZenkakuIME を無効化
入力文字なしMuhenkanIME を無効化
直接入力MuhenkanIME を無効化
直接入力Hanaku/ZenkakuIME を有効化

スクリーンショット 2021-01-24 143310.png

インポート用キーマップ定義ファイル(クリックで展開されます)
status  key command
Conversion  Hankaku/Zenkaku IMEOff
Conversion  Henkan  IMEOff
Conversion  Muhenkan    IMEOff
Composition Hankaku/Zenkaku IMEOff
Composition Muhenkan    IMEOff
Precomposition  Hankaku/Zenkaku IMEOff
Precomposition  Muhenkan    IMEOff
DirectInput Muhenkan    IMEOff
DirectInput Hankaku/Zenkaku IMEOn
Composition Ctrl f  MoveCursorRight
Composition Option l    MoveCursorRight
Composition Right   MoveCursorRight
Composition Ctrl e  MoveCursorToEnd
Composition Ctrl Right  MoveCursorToEnd
Composition End MoveCursorToEnd
Composition Ctrl b  MoveCursorLeft
Composition Left    MoveCursorLeft
Composition Option j    MoveCursorLeft
Composition Ctrl a  MoveCursorToBeginning
Composition Ctrl Left   MoveCursorToBeginning
Composition Home    MoveCursorToBeginning
Conversion  Backspace   Cancel
Conversion  Ctrl h  Cancel
Conversion  ESC Cancel
Composition Ctrl g  Cancel
Composition ESC Cancel
Composition Henkan  InputModeHiragana
Precomposition  Henkan  InputModeHiragana
DirectInput Henkan  InputModeHiragana
Conversion  Ctrl j  DisplayAsHiragana
Conversion  F6  DisplayAsHiragana
Conversion  Option F1   DisplayAsHiragana
Conversion  Option z    DisplayAsHiragana
Composition Ctrl j  DisplayAsHiragana
Composition F6  DisplayAsHiragana
Composition Option F1   DisplayAsHiragana
Composition Option z    DisplayAsHiragana
Composition Ctrl d  Delete
Composition Delete  Delete
Composition Eisu    ToggleAlphanumericMode
Precomposition  Eisu    ToggleAlphanumericMode
Conversion  Ctrl m  Commit
Conversion  Enter   Commit
Composition Ctrl m  Commit
Composition Ctrl m  Commit
Composition Enter   Commit
Precomposition  Ctrl Backspace  Undo
Composition F2  ConvertWithoutHistory
Precomposition  Space   InsertSpace
Composition Backspace   Backspace
Composition Ctrl h  Backspace
Precomposition  Ctrl Shift r    Reconvert
DirectInput Ctrl Shift r    Reconvert
Precomposition  Backspace   Revert
Suggestion  Shift Enter CommitFirstSuggestion
Conversion  PageDown    ConvertNextPage
Conversion  Shift Down  ConvertNextPage
Conversion  Ctrl n  ConvertNext
Conversion  Ctrl x  ConvertNext
Conversion  Down    ConvertNext
Conversion  Option k    ConvertNext
Conversion  Space   ConvertNext
Prediction  Ctrl Delete DeleteSelectedCandidate
Conversion  PageUp  ConvertPrevPage
Conversion  Shift Up    ConvertPrevPage
Conversion  Ctrl e  ConvertPrev
Conversion  Ctrl p  ConvertPrev
Conversion  Option i    ConvertPrev
Conversion  Shift Space ConvertPrev
Conversion  Shift Tab   ConvertPrev
Conversion  Up  ConvertPrev
Conversion  Ctrl k  DisplayAsFullKatakana
Conversion  Ctrl l  DisplayAsFullKatakana
Conversion  F7  DisplayAsFullKatakana
Conversion  Option F2   DisplayAsFullKatakana
Conversion  Option x    DisplayAsFullKatakana
Composition Ctrl k  DisplayAsFullKatakana
Composition Ctrl l  DisplayAsFullKatakana
Composition F7  DisplayAsFullKatakana
Composition Option F2   DisplayAsFullKatakana
Composition Option x    DisplayAsFullKatakana
Conversion  F9  DisplayAsFullAlphanumeric
Conversion  Option c    DisplayAsFullAlphanumeric
Conversion  Option F3   DisplayAsFullAlphanumeric
Composition F9  DisplayAsFullAlphanumeric
Composition Option c    DisplayAsFullAlphanumeric
Composition Option F3   DisplayAsFullAlphanumeric
Composition Option Space    InsertFullSpace
Precomposition  Shift Space InsertAlternateSpace
Conversion  Ctrl ;  DisplayAsHalfWidth
Conversion  F8  DisplayAsHalfWidth
Conversion  Option a    DisplayAsHalfWidth
Conversion  Option F4   DisplayAsHalfWidth
Composition Ctrl ;  DisplayAsHalfWidth
Composition F8  DisplayAsHalfWidth
Composition Option a    DisplayAsHalfWidth
Composition Option F4   DisplayAsHalfWidth
Conversion  Ctrl '  DisplayAsHalfAlphanumeric
Conversion  Ctrl :  DisplayAsHalfAlphanumeric
Conversion  F10 DisplayAsHalfAlphanumeric
Conversion  Option F5   DisplayAsHalfAlphanumeric
Conversion  Option s    DisplayAsHalfAlphanumeric
Composition Ctrl '  DisplayAsHalfAlphanumeric
Composition Ctrl :  DisplayAsHalfAlphanumeric
Composition F10 DisplayAsHalfAlphanumeric
Composition Option F5   DisplayAsHalfAlphanumeric
Composition Option s    DisplayAsHalfAlphanumeric
Conversion  Ctrl d  SegmentFocusRight
Conversion  Ctrl f  SegmentFocusRight
Conversion  Right   SegmentFocusRight
Conversion  Ctrl Right  SegmentFocusLast
Conversion  End SegmentFocusLast
Conversion  Ctrl b  SegmentFocusLeft
Conversion  Ctrl s  SegmentFocusLeft
Conversion  Left    SegmentFocusLeft
Conversion  Ctrl a  SegmentFocusFirst
Conversion  Ctrl Left   SegmentFocusFirst
Conversion  Home    SegmentFocusFirst
Conversion  Ctrl i  SegmentWidthShrink
Conversion  Ctrl q  SegmentWidthShrink
Conversion  Shift Left  SegmentWidthShrink
Conversion  Ctrl o  SegmentWidthExpand
Conversion  Ctrl w  SegmentWidthExpand
Conversion  Shift Right SegmentWidthExpand
Composition Space   Convert
Conversion  Tab PredictAndConvert
Composition Tab PredictAndConvert
Suggestion  Ctrl n  PredictAndConvert
Suggestion  Down    PredictAndConvert
Composition Kanji   IMEOff
Composition OFF IMEOff
Composition ON  IMEOn
Conversion  Kanji   IMEOff
Conversion  OFF IMEOff
Conversion  ON  IMEOn
DirectInput Kanji   IMEOn
DirectInput ON  IMEOn
Precomposition  Kanji   IMEOff
Precomposition  OFF IMEOff
Precomposition  ON  IMEOn

この設定以後に開いたアプリケーションで「変換」「無変換」キーを macOS 風に使うことができます。


Viewing all articles
Browse latest Browse all 2804

Trending Articles