├── src ├── Hachiku.ini ├── INI Variations │ ├── DravakJ風 │ │ └── Hachiku.ini │ ├── 設定例 │ │ └── Hachiku.ini │ ├── かわせみ2用風 │ │ └── Hachiku.ini │ ├── Soushi&ごりゅご式風 │ │ └── Hachiku.ini │ ├── Benkei風 │ │ └── Hachiku.ini │ └── 固有名詞サンプル │ │ └── Hachiku.ini ├── Icons │ ├── Hachiku_0.ico │ ├── Hachiku_H.ico │ └── Hachiku_V.ico ├── Sub │ ├── KeyBit_h.ahk │ ├── Naginata-Koyu_h.ahk │ ├── Path.ahk │ ├── IME.ahk │ ├── Naginata-Koyu.ahk │ └── init.ahk ├── KanaTable │ ├── SendSP.ahk │ ├── WorkmanLayout.ahk │ ├── StandardLayout.ahk │ ├── Naginata_v15.ahk │ ├── Naginata_v14.ahk │ └── Naginata_tor.ahk └── Hachiku.ahk ├── README.md └── version.md /src/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Advanced] 2 | TestMode= -------------------------------------------------------------------------------- /src/INI Variations/DravakJ風/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Basic] 2 | SideShift=2 3 | EisuRepeat=0 4 | -------------------------------------------------------------------------------- /src/Icons/Hachiku_0.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tor-nky/Hachiku/HEAD/src/Icons/Hachiku_0.ico -------------------------------------------------------------------------------- /src/Icons/Hachiku_H.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tor-nky/Hachiku/HEAD/src/Icons/Hachiku_H.ico -------------------------------------------------------------------------------- /src/Icons/Hachiku_V.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tor-nky/Hachiku/HEAD/src/Icons/Hachiku_V.ico -------------------------------------------------------------------------------- /src/INI Variations/設定例/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Basic] 2 | UsingKeyConfig=1 3 | ShiftDelay=12 4 | SpaceKeyRepeat=1 5 | [Advanced] 6 | CombStyleN=1 7 | CombKeyUpSPC=0 8 | -------------------------------------------------------------------------------- /src/INI Variations/かわせみ2用風/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Basic] 2 | SpaceKeyRepeat=1 3 | [Advanced] 4 | CombStyleN=0 5 | CombLimitS=0 6 | CombStyleS=0 7 | CombKeyUpS=0 8 | -------------------------------------------------------------------------------- /src/INI Variations/Soushi&ごりゅご式風/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Basic] 2 | SideShift=0 3 | SpaceKeyRepeat=1 4 | [Advanced] 5 | CombLimitN=1 6 | CombKeyUpN=2 7 | EisuSandS=0 8 | TestMode= 9 | RepeatStyle=3 10 | -------------------------------------------------------------------------------- /src/INI Variations/Benkei風/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Basic] 2 | ShiftDelay=60 3 | CombDelay=0 4 | EisuRepeat=0 5 | [Advanced] 6 | CombStyleN=2 7 | CombKeyUpN=1 8 | CombLimitS=0 9 | CombStyleS=2 10 | CombKeyUpS=1 11 | EisuSandS=0 12 | TestMode= 13 | RepeatStyle=3 14 | -------------------------------------------------------------------------------- /src/Sub/KeyBit_h.ahk: -------------------------------------------------------------------------------- 1 | global KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN 2 | , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC 3 | , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, KC_NUHS, KC_BSLS 4 | , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1 5 | , KC_SPC 6 | , NR, R 7 | , kanaGroup, keyDriver, usLike 8 | -------------------------------------------------------------------------------- /src/INI Variations/固有名詞サンプル/Hachiku.ini: -------------------------------------------------------------------------------- 1 | [Koyu1] 2 | D02=#33256#20853#38360#32773#30342#38499#28872#22312#21069 3 | D03=#22825#29399 4 | D04=#12471#12531#12452#12481 5 | D05=#12493#12512#12459#12465 6 | D06=#25165#19968 7 | D07=#12373#12367#12425 8 | D08=#37202#30000 9 | C01=#19977#31070 10 | C02=#23791 11 | C03=#23567#40201 12 | C04=#20809#22826#37070 13 | C06=#38797#39340 14 | C07=#38738#39740 15 | C08=#30334#22320 16 | C10=#19981#21205#37329#32283#12426#12398#34899 17 | B01=#28779#12424#12289#22312#12428 18 | B02=#28779#12398#21091 19 | B03=#32629#35400#38609 20 | B04=#24515#12398#38343 21 | B06=#39740#22618 22 | B07=#36196#30707 23 | B08=#20843#24161 24 | B10=#38666#27085 25 | -------------------------------------------------------------------------------- /src/Sub/Naginata-Koyu_h.ahk: -------------------------------------------------------------------------------- 1 | ; Copyright 2021 Satoru NAKAYA 2 | ; 3 | ; Licensed under the Apache License, Version 2.0 (the "License"); 4 | ; you may not use this file except in compliance with the License. 5 | ; You may obtain a copy of the License at 6 | ; 7 | ; http://www.apache.org/licenses/LICENSE-2.0 8 | ; 9 | ; Unless required by applicable law or agreed to in writing, software 10 | ; distributed under the License is distributed on an "AS IS" BASIS, 11 | ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | ; See the License for the specific language governing permissions and 13 | ; limitations under the License. 14 | 15 | global E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12, E13 16 | , D01, D02, D03, D04, D05, D06, D07, D08, D09, D10, D11, D12 17 | , C01, C02, C03, C04, C05, C06, C07, C08, C09, C10, C11, C12 18 | , B01, B02, B03, B04, B05, B06, B07, B08, B09, B10, B11 19 | , E01S, E02S, E03S, E04S, E05S, E06S, E07S, E08S, E09S, E10S, E11S, E12S, E13S 20 | , D01S, D02S, D03S, D04S, D05S, D06S, D07S, D08S, D09S, D10S, D11S, D12S 21 | , C01S, C02S, C03S, C04S, C05S, C06S, C07S, C08S, C09S, C10S, C11S, C12S 22 | , B01S, B02S, B03S, B04S, B05S, B06S, B07S, B08S, B09S, B10S, B11S 23 | -------------------------------------------------------------------------------- /src/Sub/Path.ahk: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | ファイルパス関数群 (Path.ahk) 3 | 4 | DllCallにてAPIを使用 (\ ダメ文字対応) 5 | (上位からの引数に問題がない限り本関数内で新たに文字化けを起こすことはない筈) 6 | グローバル変数 : なし 7 | 各関数の依存性 : なし(必要関数だけ切出してコピペでも使えます) 8 | 9 | AHKL Ver: 1.1.08.01 10 | Language: Japanease 11 | Platform: WinNT IE 4以上 (SHLWAPI.DLL使用) 12 | Author: eamat. 2008.01.30 13 | ************************************************************************ 14 | 2008.12.10 15 | 2009.01.24 コメント修正 16 | 2009.06.20 関数名修正 PathIs_Relative() → Path_IsRelative() 17 | 2009.07.26 パラメータ修正 Path_Canonicalize() 18 | 2009.10.22 SplitPath() 追加 (AHK本来の SplitPathコマンド互換) 19 | 2012.08.20 UTF-8保存 暫定 20 | 2012.11.08 Unicode対応 DllCall時の末尾A削除(A,W自動判別) 21 | msvcrt.dll\_mbscpy廃止 UInt & → Str 22 | MAX_PATH 260 → 520 23 | */ 24 | 25 | ;============================================================================= 26 | ; 判定系 (存在チェック) 27 | ;============================================================================= 28 | ;--- ファイルの有無をチェックする 戻り値 0:なし 1:あり --- 29 | ; ディレクトリ指定時も1が返る。UNCパス(\\%A_ComputerName%\hoge.txt 等)でもOK 30 | Path_FileExists(path) { 31 | Return DllCall("SHLWAPI.DLL\PathFileExists", Str,path, Int) 32 | } 33 | 34 | ;============================================================================= 35 | ; 変換系 36 | ;============================================================================= 37 | 38 | ;---- パス名の最後尾にバックスラッシュをつける ----- 39 | Path_AddBackslash(path) { 40 | DllCall("SHLWAPI.DLL\PathAddBackslash", Str, path) 41 | return path 42 | } 43 | 44 | ;----------------------------------------------------------- 45 | ; フルパス名から拡張子だけを変更したパス名を取得する 46 | ; path 対象パス 47 | ; ext 変更する拡張子 48 | ;----------------------------------------------------------- 49 | Path_RenameExtension(path,ext) { 50 | ext := ("." != SubStr(ext,1,1)) ? "." ext : ext ;"."がない時は付加 51 | DllCall("SHLWAPI.DLL\PathRenameExtension", Str,path, Str,ext) 52 | Return path 53 | } 54 | 55 | ;============================================================================= 56 | ; 抽出系 57 | ;============================================================================= 58 | 59 | ;---- フルパス名から拡張子のみを除いたパス名を取得する ---- 60 | Path_RemoveExtension(path) { 61 | DllCall("SHLWAPI.DLL\PathRemoveExtension", Str, path) 62 | return path 63 | } 64 | -------------------------------------------------------------------------------- /src/KanaTable/SendSP.ahk: -------------------------------------------------------------------------------- 1 | ; 特別出力 2 | SendSP(strIn, ctrlName) ; (strIn: String, ctrlName: String) -> Void 3 | { 4 | global koyuNumber, version, layoutName, layoutNameE, iniFilePath 5 | , lastSendTime 6 | 7 | SetTimer, JudgeHwnd, Off ; IME窓検出タイマー停止 8 | ; SetKeyDelay, -1, -1 9 | 10 | SendKeyUp() ; 押し下げ出力中のキーを上げる 11 | 12 | If (ctrlName == "ESCx3") 13 | SendESCx3() 14 | Else If (ctrlName == "そのまま") 15 | { 16 | Send, % strIn 17 | lastSendTime := QPC() ; 出力した時間を記録 18 | } 19 | Else If (ctrlName == "横書き") 20 | ChangeVertical(0) 21 | Else If (ctrlName == "縦書き") 22 | ChangeVertical(1) 23 | ; 固有名詞ショートカットを切り替える 24 | Else If (ctrlName == "KoyuChange") 25 | { 26 | ; 番号が変わらない時 27 | If (strIn == koyuNumber) 28 | { 29 | MsgBox, , , 固有名詞セット%koyuNumber% 30 | Return 31 | } 32 | MsgBox, 1, , 固有名詞 セット%koyuNumber% → %strIn% 33 | ; キャンセル 34 | IfMsgBox, Cancel 35 | Return 36 | 37 | koyuNumber := strIn 38 | ; 設定ファイル書き込み 39 | IniWrite, %koyuNumber%, %iniFilePath%, Naginata, KoyuNumber 40 | ; ツールチップを変更する 41 | If (layoutNameE) 42 | Menu, TRAY, Tip, Hachiku %version%`n%layoutNameE%`n+ %layoutName%`n固有名詞セット%koyuNumber% 43 | Else 44 | Menu, TRAY, Tip, Hachiku %version%`n%layoutName%`n固有名詞セット%koyuNumber% 45 | 46 | ; 固有名詞ショートカットの読み込み・登録 47 | KoyuReadAndRegist(koyuNumber) 48 | ; 出力確定する定義に印をつける 49 | SettingLayout() 50 | } 51 | ; その他、未定義のもの。念のため。 52 | Else 53 | SendEachChar(strIn) 54 | } 55 | 56 | SendESCx3() ; () -> Void 57 | { 58 | global usingKeyConfig, goodHwnd, lastSendTime, keyDriver 59 | , imeNeedDelay, imeGetConvertingInterval 60 | ; local hwnd ; Int型 61 | ; , class ; String型 62 | ; , process ; String型 63 | ; , imeName ; String型 64 | ; , delay ; Int型 65 | ; , escInterval ; Int型 66 | 67 | WinGet, hwnd, ID, A 68 | WinGetClass, class, ahk_id %hwnd% 69 | WinGet, process, ProcessName, ahk_id %hwnd% 70 | imeName := DetectIME() 71 | 72 | ; Shift+Ctrl+無変換 のキー設定利用して良いか 73 | ; (秀丸エディタ、あるいはPC-9801キーボードでは使えないので除外) 74 | If (usingKeyConfig 75 | && imeName != "OldMSIME" && imeName != "NewMSIME" 76 | && class != "Hidemaru32Class" && keyDriver != "kbdnec.dll") 77 | { 78 | SendEachChar("+^{vk1D 2}") ; ※ Shift+Ctrl+無変換 79 | lastSendTime := QPC() ; 出力した時間を記録 80 | } 81 | ; IME窓検出が当てになる(入力中のかながないのと変換1回目の区別がつく)なら 82 | ; IME窓が出ていたらEscを出力、を5回まで繰り返す 83 | Else If (hwnd == goodHwnd) 84 | { 85 | delay := imeNeedDelay - Floor(QPC() - lastSendTime) 86 | ; 時間を空けてIME検出へ 87 | If (delay > 0) 88 | Sleep, % delay 89 | ; IME ONだが、無変換ではない 90 | If (IME_GET() && IME_GetSentenceMode()) 91 | { 92 | ; Escを出力する間隔 ※ 新MS-IME の予測候補窓は消えにくいので時間をかける 93 | If (imeName != "NewMSIME") ; 新MS-IME以外 94 | escInterval := imeGetConvertingInterval 95 | Else If (osBuild >= 20000 && class == "Notepad") ; Win11メモ帳+新MS-IME 96 | escInterval := 150 97 | Else ; 新MS-IME 98 | escInterval := 120 99 | ; 時間を空けてIME窓検出へ 100 | delay := imeGetConvertingInterval - Floor(QPC() - lastSendTime) 101 | If (delay > 0) 102 | Sleep, % delay 103 | Loop, 5 { 104 | ; IME窓がなければループ終了 105 | If (!IME_GetConverting()) 106 | Break 107 | Send, {Esc} 108 | lastSendTime := QPC() ; 出力した時間を記録 109 | Sleep, % escInterval 110 | } 111 | } 112 | } 113 | ; その他 114 | Else 115 | { 116 | SendEachChar("{Esc 5}") 117 | ; 一太郎のメニューを消す 118 | If (SubStr(process, 1, 4) = "Taro") 119 | { 120 | Sleep, 500 121 | IfWinActive, ahk_class #32770 122 | Send, a 123 | } 124 | lastSendTime := QPC() ; 出力した時間を記録 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /src/Hachiku.ahk: -------------------------------------------------------------------------------- 1 | ; ********************************************************************** 2 | ; 薙刀式配列 3 | ; ローマ字入力モード 4 | ; ********************************************************************** 5 | version := "1.12.11" ; String型 6 | 7 | ; --------〈起動処理〉-------------------------------------------------- 8 | SetWorkingDir %A_ScriptDir% ; スクリプトの作業ディレクトリを変更 9 | #SingleInstance force ; 既存のプロセスを終了して実行開始 10 | #Include %A_ScriptDir%/Sub/init.ahk ; 初期設定 11 | ; --------〈AutoHotkey LIB〉------------------------------------------- 12 | #Include %A_ScriptDir%/Sub/IME.ahk ; Author: eamat. http://www6.atwiki.jp/eamat/ 13 | #Include %A_ScriptDir%/Sub/Path.ahk ; Author: eamat. http://www6.atwiki.jp/eamat/ 14 | ; --------〈サブルーチン、関数〉-------------------------------------------------- 15 | #Include %A_ScriptDir%/Sub/function.ahk 16 | ; ---------------------------------------------------------------------- 17 | 18 | 19 | ; ********************************************************************** 20 | ; 英数/かな配列の定義ファイル (サポートファイル読み込み含む) 21 | ; ********************************************************************** 22 | #Include %A_ScriptDir%/KanaTable/Naginata_v15.ahk ; 薙刀式配列v15fix版 23 | 24 | 25 | ; ********************************************************************** 26 | ; ※旧MS-IME の設定 27 | ; Microsoft IME の設定 → IME 入力モード切替の通知 → オフ: 画面中央に表示する 28 | ; 29 | ; (キー設定をユーザー定義にしている場合) 30 | ; Microsoft IME の設定 → 詳細設定(A) → キー設定(Y) 31 | ; |* キー |入力/変換済み文字なし|入力文字のみ|変換済み|候補一覧表示中|文節長変更中|変換済み文節内入力文字| 32 | ; |-----------------|:-------------------:|:----------:|:------:|:------------:|:----------:|:--------------------:| 33 | ; |半角/全角 |IME-オン/オフ |半英固定 |半英固定|半英固定 |半英固定 |半英固定 | 34 | ; |Ctrl+Shift+無変換| - |全消去 |全消去 |全消去 |全消去 |全消去 | 35 | ; |Ctrl+Shift+変換 | - |全確定 |全確定 |全確定 |全確定 |全確定 | 36 | ; Ctrl+Shift+変換 は Ctrl+Enter を選択してキー追加すると簡単 37 | ; ********************************************************************** 38 | ; ※ATOK のキーカスタマイズ 39 | ; |キー |機能 | 40 | ; |-----------------|--------------------------------------------------------------------------------------| 41 | ; |Shift+Esc |[変換中][次候補表示中]変換取消 | 42 | ; |Shift+Ctrl+変換 |Enter と同じ | 43 | ; |変換 |[文字未入力]----- | 44 | ; |Shift+Ctrl+無変換|[入力中][変換中][次候補表示中][文節区切り直し中]全文字削除[全候補表示中]全候補選択取消| 45 | ; |ひらがな |[記号入力以外]入力文字種全角ひらがな(あ) | 46 | ; |カタカナ |[記号入力以外]入力文字種全角カタカナ(ア) | 47 | ; |半角/全角 |[文字未入力][記号入力]日本語入力ON/OFF [他]入力文字種半角無変換(A) | 48 | ; ☆ATOK プロパティ → 入力・変換 → 設定項目(Y) → 入力補助 → 特殊 → 設定一覧(L) 49 | ; なし - 日本語入力オンで変更したモードを元に戻す 50 | ; ********************************************************************** 51 | ; ※Google 日本語入力 のキー設定 52 | ; |モード | 入力キー | コマンド | 53 | ; |------------|:-----------------:|:----------------:| 54 | ; |変換前入力中|Ctrl Shift Henkan | 確定 | 55 | ; |変換中 | 〃 | 〃 | 56 | ; |変換前入力中|Ctrl Shift Muhenkan| キャンセル | 57 | ; |変換中 | 〃 | 〃 | 58 | ; |変換前入力中|Shift Muhenkan |全角英数に入力切替| 59 | ; |変換中 | 〃 | 〃 | 60 | ; |入力文字なし| 〃 | 〃 | 61 | ; ********************************************************************** 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 開発中止のおしらせ 2 | 原理上、 3 | * 4キー以上の同時押しに対応できない 4 | * ロールオーバーで3キー同時惜しするのに左側のキーから押さなければいけない 5 | 6 | のですが、バグではないかと考えるようになりました。 7 | しかも、 8 | * DvorakJと比べて別に速くないこと 9 | * 開発言語Autohotkeyで起きやすい問題を放置されたままにv2に移行したこと 10 | * Autohotkey v2に移植してみたところ問題はそのままで、しかも速度が3分の1になり、IMEの状態検知が期待通りに働かない。 11 | * [薙刀式QMK版](https://github.com/tor-nky/qmk_userspace/tree/main/users/naginata_v15m)でIMEの状態検知以外のすべてが解消できること 12 | 13 | ことから開発を中止することにしました。 14 | 15 | # Hachiku - Windows で薙刀式を使うスクリプト 16 | 2023年7月28日付[【薙刀式】v15fix版、発表](http://oookaworks.seesaa.net/article/500180437.html#gsc.tab=0) 17 | から、__薙刀式v15fix版__ を Autohotkey に実装しました。 18 | 19 | --- 20 | パソコンの日本語キーボード、英語キーボードの設定に自動で合わせます。 21 | トレイアイコンを右クリックしたところに、縦書き・横書きモード切り替え、設定メニューがあります。 22 | レジストリの変更はしません。 23 | 24 | キーカスタマイズができる IME では「Shift+Ctrl+変換キー」に「全確定」、「Shift+Ctrl+無変換キー」に「全消去」を割り当てると動作を改善できます。 25 | ## 実行ファイル(薙刀式v15fix版) 26 | https://github.com/tor-nky/Hachiku/releases 27 | ## ソースコードを直接実行する方法 28 | ディレクトリ src の下にあるファイルをすべて保存します。 29 | Autohotkey をインストールし、ディレクトリ src にある Hachiku.ahk のスクリプトを実行してください。 30 | # IME の設定 31 | Hachiku のトレイアイコンを右クリックして設定を選び、IMEを選択します。 32 | ### 旧MS-IME 33 | 初期状態の設定のままで使えます。 34 | しかし秀丸エディタを使ったり、全角英数入力を使ったりすることがあるのでしたら、次の設定をおすすめします。 35 | すると(全角英数入力時に)編集モードで選択範囲を意図せず消してしまうことがなくなります。 36 | 37 | Microsoft IME の設定 → IME 入力モード切替の通知 → __オフ__: 画面中央に表示する 38 | 39 | (キー設定をユーザー定義にしている場合) 40 | Microsoft IME の設定 → 詳細設定(A) → キー設定(Y) 41 | |* キー|入力/変換済み文字なし|入力文字のみ|変換済み|候補一覧表示中|文節長変更中|変換済み文節内入力文字| 42 | |---|:---:|:---:|:---:|:---:|:---:|:---:| 43 | |半角/全角|IME-オン/オフ|__半英固定__|__半英固定__|__半英固定__|__半英固定__|__半英固定__| 44 | |Ctrl+Shift+無変換| - |__全消去__|__全消去__|__全消去__|__全消去__|__全消去__| 45 | |Ctrl+Shift+変換| - |__全確定__|__全確定__|__全確定__|__全確定__|__全確定__| 46 | 47 | Ctrl+Shift+変換 は Ctrl+Enter を選択してキー追加すると簡単です。 48 | 49 | そして Hachiku設定で「キー設定利用」をオンにしてください。 50 | ### 新MS-IME 51 | IMEの設定に関係なく使えます。 52 | Hachiku設定「キー設定利用」は無視されます。 53 | ### ATOK 54 | Hachiku のトレイアイコンを右クリックして設定を選び、ATOKを選択します。 55 | __必ず__ IMEの設定とキーカスタマイズをしてください。 56 | 57 | ATOK プロパティ → 入力・変換 → 設定項目(Y) → 入力補助 → 特殊 → 設定一覧(L) 58 | - __なし__: 日本語入力オンで変更したモードを元に戻す 59 | 60 | 環境設定 → キー・ローマ字カスタマイザ → キー・ローマ字スタイル 61 | スタイルファイル: __MS-IME風スタイル__ 62 | 63 | ATOK プロパティ → キー・ローマ字・色 → キーカスタマイズ(K) 64 | |キー|機能| 65 | |---|---| 66 | |Shift+Esc|[_変換中_][_次候補表示中_]__変換取消__| 67 | |変換|[_文字未入力_]__-----__| 68 | |Shift+Ctrl+変換|[_入力中_][_変換中_][_次候補表示中_][_文節区切り直し中_]__全文確定__[_全候補表示中_]__全候補選択確定__[_記号入力_]__記号確定__| 69 | |Shift+Ctrl+無変換|[_入力中_][_変換中_][_次候補表示中_][_文節区切り直し中_]__全文字削除__[_全候補表示中_]__全候補選択取消__| 70 | |ひらがな|[_記号入力_以外]__入力文字種全角ひらがな(あ)__| 71 | |カタカナ|[_記号入力_以外]__入力文字種全角カタカナ(ア)__| 72 | |Shift+無変換|[_記号入力_以外]__入力文字種全角無変換(A)__| 73 | |半角/全角|[_文字未入力_][_記号入力_]日本語入力ON/OFF [_他_]__入力文字種半角無変換(A)__| 74 | 75 | そして Hachiku設定で「キー設定利用」をオンにしてください。 76 | ### Google 日本語入力 77 | Hachiku のトレイアイコンを右クリックして設定を選び、Googleを選択します。 78 | 79 | なお左右シフト英数に設定し、かな入力中に左右シフトで英字を入力すると __半角/全角キー__ が自動的に押されます。 80 | かな入力へは手動で戻して下さい。 81 | Google 日本語入力 は一時的に英数入力になっていることが検出できないので、妥協の策です。 82 | 83 | 初期状態の設定のままでも使えますが、次の設定を行うと(全角英数入力時に)編集モードで選択範囲を意図せず消してしまうことがなくなります。 84 | 85 | タスクトレイのアイコンを右クリック → プロパティ → キー設定 → キー設定の選択 → 編集 86 | |モード|入力キー|コマンド| 87 | |---|:---:|:---:| 88 | |変換前入力中|Ctrl Shift Henkan|__確定__| 89 | |変換中|〃|__〃__| 90 | |変換前入力中|Ctrl Shift Muhenkan|__キャンセル__| 91 | |変換中|〃|__〃__| 92 | |変換前入力中|Shift Muhenkan|__全角英数に入力切替__| 93 | |変換中|〃|__〃__| 94 | |入力文字なし|〃|__〃__| 95 | |変換前入力中|Hankaku/Zenkaku|__半角英数に入力切替__| 96 | |変換中|〃|__〃__| 97 | 98 | そして Hachiku設定で「キー設定利用」をオンにしてください。 99 | # 独自機能 100 | * 英数単打ではリピートができ、リピートにならないうちに続くキーを押せば SandS や編集モードの入力ができます。 101 | * かな入力中でも方向キー、BS、Del を割り当てたキーにはリピートが働きます。 102 | * Q+W に横書きモード、Q+A に縦書きモード を割り当て 103 | * 編集モードD+F+H、J+K+Q、J+K+G、J+K+V、J+K+Bは、かな変換中かどうかを問いません。 104 | * 固有名詞ショートカットに第二面(スペース押下)も設定できます。 105 | スペースキーを押したまま、そこから3つのキーを素早く押すと入力されます。 106 | * 固有名詞ショートカットを最大5組切り替えられる。 107 | 切り替えは E+R+1 で1番、E+R+2 で2番、など。 108 | 「固有名詞登録」画面が出ているときに切り替えると、登録内容がコピーされます。 109 | (OK を押すと登録されます) 110 | * 「後置シフト」を設定可能 111 | ## そのほかの主な仕様 112 | * かな入力中にアプリケーションのメニューをキーボードで操作できないことがある 113 | 英数入力に切り替えてください 114 | * Excel、PowerPoint のコメント欄にかな入力する際は、__一度かな入力ON を定義したキーで切り替えてください__。 115 | * 編集モードや固有名詞の入力でIME 入力モード切替の通知が出る。 116 | 全角記号を出力するために一旦、IMEをオフにしています。IMEの設定で通知をなくすことができます。 117 | # 不具合 118 | * Windowsがスリープするときに押していたキーが、スリープ解除後も押したままの扱いになる 119 | Hachiku を再起動すれば直ります。 120 | * (秀丸エディタ)「名前を付けて保存」で IMEオフの状態だと、2文字目以降に大文字を入力してから何も入力ができない 121 | * (新MS-IME) かな変換中に英数入力に切り替え、確定しないでキーを押すと最初の文字が入力されない。 122 | 新MS-IME の仕様です。 123 | * (新MS-IME) かな入力できなくなったり、入力中のかなが消せなくなることがある 124 | まず、他のウインドウをマウスで選び、再び元のソフトに切り替えてください。 125 | それでも直らないときは、ファイルに保存してソフトを一度終了してください。 126 | * Windows 10 で、文字キーを押しながらWinキーかAltキーを長押ししてしまうとゲームバーが起動する 127 | 回避するには、Windowsの「設定」→ゲーム→Xbox Game Bar 128 | にある「コントローラーのこのボタンを使用してXbox Game Barを開く」を無効にします。 129 | こうするとレジストリに 130 | `HKEY_CURRENT_USER\SOFTWARE\Microsoft\GameBar` 内に `UseNexusForGameBarEnabled` 131 | というキーができています。 132 | これで先ほどの設定を有効にすると、間違ってゲームモードが起動したときに自動で強制無効になったりしますので、 133 | こうなったらゲームコントローラでゲームバーを起動するには、自己責任でレジストリのキーを消去することになります。 134 | # 動作確認 135 | * Windows 10 Pro version 22H2 64-bit + AutoHotkey (v1.1.37.02) U64 Unicode 64-bit.bin 136 | 新旧MS-IME、ATOK 2017、Google 日本語入力 137 | * Windows 11 Pro version 23H2 + AutoHotkey (v1.1.37.02) U64 Unicode 64-bit.bin 138 | 新旧MS-IME、Google 日本語入力 139 | __AutoHotkey v2以降では使えません__ 140 | 141 | # 参考 142 | * [【薙刀式】v15fix版、発表](http://oookaworks.seesaa.net/article/500180437.html#gsc.tab=0) 143 | ## src¥KanaTable¥*.ahk で使えるキーや記号の書き方 144 | 次の半角文字は書き換えが必要です。 145 | ``` 146 | 0 → {0} 147 | ! → {!} 148 | \# → {#} 149 | ^ → {^} 150 | + → {+} 151 | ` → `` 152 | { → {{} 153 | } → {}} 154 | " → "" 155 | ``` 156 | このほかの文字(全角文字も)はそのまま登録できます。 157 | 158 | 特殊キーは http://ahkwiki.net/Send のものが使えます。 159 | ``` 160 | {Enter} {Esc} {Space} {Tab} {BS} {Del} など 161 | ``` 162 | このほか、 163 | ``` 164 | {→} {->} {右} {←} {<-} {左} {↑} {上} {↓} {下} 165 | {ペースト} {貼付} {貼り付け} {カット} {切取} {切り取り} {コピー} 166 | {無変換} {変換} {ひらがな} {カタカナ} {改行} {後退} {取消} {削除} 167 | {全角} {タブ} {空白} {メニュー} {Caps Lock} {Back Space} 168 | {確定} {IMEOFF} {IMEON} {全英} {半カナ} {C_Clr} {C_Bkup} {C_Rstr} 169 | ``` 170 | なども使えます。 171 | 172 | ASCIIコード以外の文字や {直接} から後の文字列は、一度 IME をオフにして出力したあと IME を元に戻します。 173 | ## 動作速度 174 | * 最初の読み込み 175 | 1~2秒程度 176 | * 英数、かなの普通の文字(スペースを除く) 177 | ローマ字の文字数によって変わりますが、 178 | Windows 10 で通常 10 ms 以内、エクスプローラー 78 ms 以内。 179 | Windows 11 以降はもっとかかります。 180 | * 記号 181 | Windows 11以降のメモ帳では最大 0.5秒。他は最大 0.4秒。 182 | -------------------------------------------------------------------------------- /src/KanaTable/WorkmanLayout.ahk: -------------------------------------------------------------------------------- 1 | ; ********************************************************************** 2 | ; Workman Keyboard Layout 3 | ; ********************************************************************** 4 | 5 | ; ---------------------------------------------------------------------- 6 | ; 英数/かな配列の定義ファイル 7 | ; 8 | ;【縦書き用だけ書き、横書き用は自動変換する方法】 9 | ; 10 | ; 例: SetKana( KC_Q | KC_L | KC_SPC ,"xwa" , R) ; (ゎ) 11 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~ ~ ~~~~ 12 | ; かな定義 スペース+Q+L 縦書き用の出力 ↑ コメント 13 | ; | 14 | ; リピートあり(NRがリピートなし) 15 | ; 16 | ; 例: SetEisu( KC_H | KC_J ,"{vkF2 2}" ) ; IME ON 17 | ; ~~~~~~~ 18 | ; 英数定義 19 | ; 20 | ; 【縦書き用と横書き用を分けて書く方法】 21 | ; 22 | ; 例: SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 23 | ; 例: SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 24 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 25 | ; かな定義 J+K+Z 縦書き用の出力 横書き用の出力 26 | ; 英数定義 27 | ; 28 | ; ※ "(){確定}" はIMEに合わせ、"{一時半角}()" は半角になり、全角で定義した "()" は全角になります 29 | ; 30 | ; ※再読み込みか、再起動で有効になります 31 | ; ※全角空白の違いが見えるエディタを使うことをおすすめします 32 | ; ※UTF-8(BOM付)で保存してください 33 | ; ※順序はグループ内で自由です。同じキーの組み合わせは、後の方が有効になります。 34 | ; ---------------------------------------------------------------------- 35 | 36 | ; かな配列読み込み 37 | ReadWorkmanLayout() ; () -> Void 38 | { 39 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 40 | global layoutNameE, koyuNumber 41 | 42 | layoutNameE := "Workman Keyboard Layout" 43 | 44 | kanaGroup := "" ; グループなし 45 | SetEisu( KC_1 ,"1" ) 46 | SetEisu( KC_2 ,"2" ) 47 | SetEisu( KC_3 ,"3" ) 48 | SetEisu( KC_4 ,"4" ) 49 | SetEisu( KC_5 ,"5" ) 50 | SetEisu( KC_6 ,"6" ) 51 | SetEisu( KC_7 ,"7" ) 52 | SetEisu( KC_8 ,"8" ) 53 | SetEisu( KC_9 ,"9" ) 54 | SetEisu( KC_0 ,"{0}" ) 55 | SetEisu( KC_MINS ,"-" ) 56 | SetEisu( KC_EQL ,"=" ) 57 | SetEisu( JP_YEN ,"\" ) 58 | 59 | SetEisu( KC_Q ,"q" ) 60 | SetEisu( KC_W ,"d" ) 61 | SetEisu( KC_E ,"r" ) 62 | SetEisu( KC_R ,"w" ) 63 | SetEisu( KC_T ,"b" ) 64 | SetEisu( KC_Y ,"j" ) 65 | SetEisu( KC_U ,"f" ) 66 | SetEisu( KC_I ,"u" ) 67 | SetEisu( KC_O ,"p" ) 68 | SetEisu( KC_P ,";" ) 69 | SetEisu( KC_LBRC ,"[" ) 70 | SetEisu( KC_RBRC ,"]" ) 71 | 72 | SetEisu( KC_A ,"a" ) 73 | SetEisu( KC_S ,"s" ) 74 | SetEisu( KC_D ,"h" ) 75 | SetEisu( KC_F ,"t" ) 76 | SetEisu( KC_G ,"g" ) 77 | SetEisu( KC_H ,"y" ) 78 | SetEisu( KC_J ,"n" ) 79 | SetEisu( KC_K ,"e" ) 80 | SetEisu( KC_L ,"o" ) 81 | SetEisu( KC_SCLN ,"i" ) 82 | SetEisu( KC_QUOT ,"'" ) 83 | SetEisu( KC_NUHS ,"``" ) 84 | 85 | SetEisu( KC_Z ,"z" ) 86 | SetEisu( KC_X ,"x" ) 87 | SetEisu( KC_C ,"m" ) 88 | SetEisu( KC_V ,"c" ) 89 | SetEisu( KC_B ,"v" ) 90 | SetEisu( KC_N ,"k" ) 91 | SetEisu( KC_M ,"l" ) 92 | SetEisu( KC_COMM ,"," ) 93 | SetEisu( KC_DOT ,"." ) 94 | SetEisu( KC_SLSH ,"/" ) 95 | SetEisu( KC_INT1 ,"\" ) 96 | 97 | SetEisu( KC_SPC | KC_1 ,"{!}" ) 98 | SetEisu( KC_SPC | KC_2 ,"@" ) 99 | SetEisu( KC_SPC | KC_3 ,"{#}" ) 100 | SetEisu( KC_SPC | KC_4 ,"$" ) 101 | SetEisu( KC_SPC | KC_5 ,"%" ) 102 | SetEisu( KC_SPC | KC_6 ,"{^}" ) 103 | SetEisu( KC_SPC | KC_7 ,"&" ) 104 | SetEisu( KC_SPC | KC_8 ,"*" ) 105 | SetEisu( KC_SPC | KC_9 ,"(" ) 106 | SetEisu( KC_SPC | KC_0 ,")" ) 107 | SetEisu( KC_SPC | KC_MINS ,"_" ) 108 | SetEisu( KC_SPC | KC_EQL ,"{+}" ) 109 | SetEisu( KC_SPC | JP_YEN ,"|" ) 110 | 111 | SetEisu( KC_SPC | KC_Q ,"Q" ) 112 | SetEisu( KC_SPC | KC_W ,"D" ) 113 | SetEisu( KC_SPC | KC_E ,"R" ) 114 | SetEisu( KC_SPC | KC_R ,"W" ) 115 | SetEisu( KC_SPC | KC_T ,"B" ) 116 | SetEisu( KC_SPC | KC_Y ,"J" ) 117 | SetEisu( KC_SPC | KC_U ,"F" ) 118 | SetEisu( KC_SPC | KC_I ,"U" ) 119 | SetEisu( KC_SPC | KC_O ,"P" ) 120 | SetEisu( KC_SPC | KC_P ,":" ) 121 | SetEisu( KC_SPC | KC_LBRC ,"{{}" ) 122 | SetEisu( KC_SPC | KC_RBRC ,"{}}" ) 123 | 124 | SetEisu( KC_SPC | KC_A ,"A" ) 125 | SetEisu( KC_SPC | KC_S ,"S" ) 126 | SetEisu( KC_SPC | KC_D ,"H" ) 127 | SetEisu( KC_SPC | KC_F ,"T" ) 128 | SetEisu( KC_SPC | KC_G ,"G" ) 129 | SetEisu( KC_SPC | KC_H ,"Y" ) 130 | SetEisu( KC_SPC | KC_J ,"N" ) 131 | SetEisu( KC_SPC | KC_K ,"E" ) 132 | SetEisu( KC_SPC | KC_L ,"O" ) 133 | SetEisu( KC_SPC | KC_SCLN ,"I" ) 134 | SetEisu( KC_SPC | KC_QUOT ,"""" ) 135 | SetEisu( KC_SPC | KC_NUHS ,"~" ) 136 | 137 | SetEisu( KC_SPC | KC_Z ,"Z" ) 138 | SetEisu( KC_SPC | KC_X ,"X" ) 139 | SetEisu( KC_SPC | KC_C ,"M" ) 140 | SetEisu( KC_SPC | KC_V ,"C" ) 141 | SetEisu( KC_SPC | KC_B ,"V" ) 142 | SetEisu( KC_SPC | KC_N ,"K" ) 143 | SetEisu( KC_SPC | KC_M ,"L" ) 144 | SetEisu( KC_SPC | KC_COMM ,"<" ) 145 | SetEisu( KC_SPC | KC_DOT ,">" ) 146 | SetEisu( KC_SPC | KC_SLSH ,"?" ) 147 | SetEisu( KC_SPC | KC_INT1 ,"_" ) 148 | 149 | 150 | SetKana( KC_1 ,"1" ) 151 | SetKana( KC_2 ,"2" ) 152 | SetKana( KC_3 ,"3" ) 153 | SetKana( KC_4 ,"4" ) 154 | SetKana( KC_5 ,"5" ) 155 | SetKana( KC_6 ,"6" ) 156 | SetKana( KC_7 ,"7" ) 157 | SetKana( KC_8 ,"8" ) 158 | SetKana( KC_9 ,"9" ) 159 | SetKana( KC_0 ,"{0}" ) 160 | SetKana( KC_MINS ,"-" ) 161 | SetKana( KC_EQL ,"=" ) 162 | SetKana( JP_YEN ,"\" ) 163 | 164 | SetKana( KC_Q ,"q" ) 165 | SetKana( KC_W ,"d" ) 166 | SetKana( KC_E ,"r" ) 167 | SetKana( KC_R ,"w" ) 168 | SetKana( KC_T ,"b" ) 169 | SetKana( KC_Y ,"j" ) 170 | SetKana( KC_U ,"f" ) 171 | SetKana( KC_I ,"u" ) 172 | SetKana( KC_O ,"p" ) 173 | SetKana( KC_P ,";" ) 174 | SetKana( KC_LBRC ,"[" ) 175 | SetKana( KC_RBRC ,"]" ) 176 | 177 | SetKana( KC_A ,"a" ) 178 | SetKana( KC_S ,"s" ) 179 | SetKana( KC_D ,"h" ) 180 | SetKana( KC_F ,"t" ) 181 | SetKana( KC_G ,"g" ) 182 | SetKana( KC_H ,"y" ) 183 | SetKana( KC_J ,"n" ) 184 | SetKana( KC_K ,"e" ) 185 | SetKana( KC_L ,"o" ) 186 | SetKana( KC_SCLN ,"i" ) 187 | SetKana( KC_QUOT ,"'" ) 188 | SetKana( KC_NUHS ,"``" ) 189 | 190 | SetKana( KC_Z ,"z" ) 191 | SetKana( KC_X ,"x" ) 192 | SetKana( KC_C ,"m" ) 193 | SetKana( KC_V ,"c" ) 194 | SetKana( KC_B ,"v" ) 195 | SetKana( KC_N ,"k" ) 196 | SetKana( KC_M ,"l" ) 197 | SetKana( KC_COMM ,"," ) 198 | SetKana( KC_DOT ,"." ) 199 | SetKana( KC_SLSH ,"/" ) 200 | SetKana( KC_INT1 ,"\" ) 201 | 202 | SetKana( KC_SPC | KC_1 ,"{!}" ) 203 | SetKana( KC_SPC | KC_2 ,"@" ) 204 | SetKana( KC_SPC | KC_3 ,"{#}" ) 205 | SetKana( KC_SPC | KC_4 ,"$" ) 206 | SetKana( KC_SPC | KC_5 ,"%" ) 207 | SetKana( KC_SPC | KC_6 ,"{^}" ) 208 | SetKana( KC_SPC | KC_7 ,"&" ) 209 | SetKana( KC_SPC | KC_8 ,"*" ) 210 | SetKana( KC_SPC | KC_9 ,"(" ) 211 | SetKana( KC_SPC | KC_0 ,")" ) 212 | SetKana( KC_SPC | KC_MINS ,"_" ) 213 | SetKana( KC_SPC | KC_EQL ,"{+}" ) 214 | SetKana( KC_SPC | JP_YEN ,"|" ) 215 | 216 | SetKana( KC_SPC | KC_Q ,"Q" ) 217 | SetKana( KC_SPC | KC_W ,"D" ) 218 | SetKana( KC_SPC | KC_E ,"R" ) 219 | SetKana( KC_SPC | KC_R ,"W" ) 220 | SetKana( KC_SPC | KC_T ,"B" ) 221 | SetKana( KC_SPC | KC_Y ,"J" ) 222 | SetKana( KC_SPC | KC_U ,"F" ) 223 | SetKana( KC_SPC | KC_I ,"U" ) 224 | SetKana( KC_SPC | KC_O ,"P" ) 225 | SetKana( KC_SPC | KC_P ,":" ) 226 | SetKana( KC_SPC | KC_LBRC ,"{{}" ) 227 | SetKana( KC_SPC | KC_RBRC ,"{}}" ) 228 | 229 | SetKana( KC_SPC | KC_A ,"A" ) 230 | SetKana( KC_SPC | KC_S ,"S" ) 231 | SetKana( KC_SPC | KC_D ,"H" ) 232 | SetKana( KC_SPC | KC_F ,"T" ) 233 | SetKana( KC_SPC | KC_G ,"G" ) 234 | SetKana( KC_SPC | KC_H ,"Y" ) 235 | SetKana( KC_SPC | KC_J ,"N" ) 236 | SetKana( KC_SPC | KC_K ,"E" ) 237 | SetKana( KC_SPC | KC_L ,"O" ) 238 | SetKana( KC_SPC | KC_SCLN ,"I" ) 239 | SetKana( KC_SPC | KC_QUOT ,"""" ) 240 | SetKana( KC_SPC | KC_NUHS ,"~" ) 241 | 242 | SetKana( KC_SPC | KC_Z ,"Z" ) 243 | SetKana( KC_SPC | KC_X ,"X" ) 244 | SetKana( KC_SPC | KC_C ,"M" ) 245 | SetKana( KC_SPC | KC_V ,"C" ) 246 | SetKana( KC_SPC | KC_B ,"V" ) 247 | SetKana( KC_SPC | KC_N ,"K" ) 248 | SetKana( KC_SPC | KC_M ,"L" ) 249 | SetKana( KC_SPC | KC_COMM ,"<" ) 250 | SetKana( KC_SPC | KC_DOT ,">" ) 251 | SetKana( KC_SPC | KC_SLSH ,"?" ) 252 | SetKana( KC_SPC | KC_INT1 ,"_" ) 253 | 254 | 255 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 256 | If (keyDriver = "kbd101.dll") 257 | { 258 | SetEisu( KC_GRV ,"{sc29}" ) 259 | SetEisu( KC_GRV | KC_SPC ,"+{sc29}" ) 260 | SetKana( KC_GRV ,"{sc29}" ) 261 | SetKana( KC_GRV | KC_SPC ,"+{sc29}" ) 262 | } 263 | } 264 | -------------------------------------------------------------------------------- /src/KanaTable/StandardLayout.ahk: -------------------------------------------------------------------------------- 1 | ; ********************************************************************** 2 | ; キーボード初期配列 3 | ; ********************************************************************** 4 | 5 | ; ---------------------------------------------------------------------- 6 | ; 英数/かな配列の定義ファイル 7 | ; 8 | ;【縦書き用だけ書き、横書き用は自動変換する方法】 9 | ; 10 | ; 例: SetKana( KC_Q | KC_L | KC_SPC ,"xwa" , R) ; (ゎ) 11 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~ ~ ~~~~ 12 | ; かな定義 スペース+Q+L 縦書き用の出力 ↑ コメント 13 | ; | 14 | ; リピートあり(NRがリピートなし) 15 | ; 16 | ; 例: SetEisu( KC_H | KC_J ,"{vkF2 2}" ) ; IME ON 17 | ; ~~~~~~~ 18 | ; 英数定義 19 | ; 20 | ; 【縦書き用と横書き用を分けて書く方法】 21 | ; 22 | ; 例: SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 23 | ; 例: SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 24 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 25 | ; かな定義 J+K+Z 縦書き用の出力 横書き用の出力 26 | ; 英数定義 27 | ; 28 | ; ※ "(){確定}" はIMEに合わせ、"{一時半角}()" は半角になり、全角で定義した "()" は全角になります 29 | ; 30 | ; ※再読み込みか、再起動で有効になります 31 | ; ※全角空白の違いが見えるエディタを使うことをおすすめします 32 | ; ※UTF-8(BOM付)で保存してください 33 | ; ※順序はグループ内で自由です。同じキーの組み合わせは、後の方が有効になります。 34 | ; ---------------------------------------------------------------------- 35 | 36 | ; キーボード初期配列 37 | ReadStandardLayout() ; () -> Void 38 | { 39 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk 40 | 41 | kanaGroup := "" ; グループなし 42 | SetEisu( KC_1 ,"{sc02}" ) 43 | SetEisu( KC_2 ,"{sc03}" ) 44 | SetEisu( KC_3 ,"{sc04}" ) 45 | SetEisu( KC_4 ,"{sc05}" ) 46 | SetEisu( KC_5 ,"{sc06}" ) 47 | SetEisu( KC_6 ,"{sc07}" ) 48 | SetEisu( KC_7 ,"{sc08}" ) 49 | SetEisu( KC_8 ,"{sc09}" ) 50 | SetEisu( KC_9 ,"{sc0A}" ) 51 | SetEisu( KC_0 ,"{sc0B}" ) 52 | SetEisu( KC_MINS ,"{sc0C}" ) 53 | SetEisu( KC_EQL ,"{sc0D}" ) 54 | SetEisu( JP_YEN ,"{sc7D}" ) 55 | 56 | SetEisu( KC_Q ,"{sc10}" ) 57 | SetEisu( KC_W ,"{sc11}" ) 58 | SetEisu( KC_E ,"{sc12}" ) 59 | SetEisu( KC_R ,"{sc13}" ) 60 | SetEisu( KC_T ,"{sc14}" ) 61 | SetEisu( KC_Y ,"{sc15}" ) 62 | SetEisu( KC_U ,"{sc16}" ) 63 | SetEisu( KC_I ,"{sc17}" ) 64 | SetEisu( KC_O ,"{sc18}" ) 65 | SetEisu( KC_P ,"{sc19}" ) 66 | SetEisu( KC_LBRC ,"{sc1A}" ) 67 | SetEisu( KC_RBRC ,"{sc1B}" ) 68 | 69 | SetEisu( KC_A ,"{sc1E}" ) 70 | SetEisu( KC_S ,"{sc1F}" ) 71 | SetEisu( KC_D ,"{sc20}" ) 72 | SetEisu( KC_F ,"{sc21}" ) 73 | SetEisu( KC_G ,"{sc22}" ) 74 | SetEisu( KC_H ,"{sc23}" ) 75 | SetEisu( KC_J ,"{sc24}" ) 76 | SetEisu( KC_K ,"{sc25}" ) 77 | SetEisu( KC_L ,"{sc26}" ) 78 | SetEisu( KC_SCLN ,"{sc27}" ) 79 | SetEisu( KC_QUOT ,"{sc28}" ) 80 | SetEisu( KC_NUHS ,"{sc2B}" ) 81 | 82 | SetEisu( KC_Z ,"{sc2C}" ) 83 | SetEisu( KC_X ,"{sc2D}" ) 84 | SetEisu( KC_C ,"{sc2E}" ) 85 | SetEisu( KC_V ,"{sc2F}" ) 86 | SetEisu( KC_B ,"{sc30}" ) 87 | SetEisu( KC_N ,"{sc31}" ) 88 | SetEisu( KC_M ,"{sc32}" ) 89 | SetEisu( KC_COMM ,"{sc33}" ) 90 | SetEisu( KC_DOT ,"{sc34}" ) 91 | SetEisu( KC_SLSH ,"{sc35}" ) 92 | SetEisu( KC_INT1 ,"{sc73}" ) 93 | 94 | SetEisu( KC_SPC | KC_1 ,"+{sc02}" ) 95 | SetEisu( KC_SPC | KC_2 ,"+{sc03}" ) 96 | SetEisu( KC_SPC | KC_3 ,"+{sc04}" ) 97 | SetEisu( KC_SPC | KC_4 ,"+{sc05}" ) 98 | SetEisu( KC_SPC | KC_5 ,"+{sc06}" ) 99 | SetEisu( KC_SPC | KC_6 ,"+{sc07}" ) 100 | SetEisu( KC_SPC | KC_7 ,"+{sc08}" ) 101 | SetEisu( KC_SPC | KC_8 ,"+{sc09}" ) 102 | SetEisu( KC_SPC | KC_9 ,"+{sc0A}" ) 103 | SetEisu( KC_SPC | KC_0 ,"+{sc0B}" ) 104 | SetEisu( KC_SPC | KC_MINS ,"+{sc0C}" ) 105 | SetEisu( KC_SPC | KC_EQL ,"+{sc0D}" ) 106 | SetEisu( KC_SPC | JP_YEN ,"+{sc7D}" ) 107 | 108 | SetEisu( KC_SPC | KC_Q ,"+{sc10}" ) 109 | SetEisu( KC_SPC | KC_W ,"+{sc11}" ) 110 | SetEisu( KC_SPC | KC_E ,"+{sc12}" ) 111 | SetEisu( KC_SPC | KC_R ,"+{sc13}" ) 112 | SetEisu( KC_SPC | KC_T ,"+{sc14}" ) 113 | SetEisu( KC_SPC | KC_Y ,"+{sc15}" ) 114 | SetEisu( KC_SPC | KC_U ,"+{sc16}" ) 115 | SetEisu( KC_SPC | KC_I ,"+{sc17}" ) 116 | SetEisu( KC_SPC | KC_O ,"+{sc18}" ) 117 | SetEisu( KC_SPC | KC_P ,"+{sc19}" ) 118 | SetEisu( KC_SPC | KC_LBRC ,"+{sc1A}" ) 119 | SetEisu( KC_SPC | KC_RBRC ,"+{sc1B}" ) 120 | 121 | SetEisu( KC_SPC | KC_A ,"+{sc1E}" ) 122 | SetEisu( KC_SPC | KC_S ,"+{sc1F}" ) 123 | SetEisu( KC_SPC | KC_D ,"+{sc20}" ) 124 | SetEisu( KC_SPC | KC_F ,"+{sc21}" ) 125 | SetEisu( KC_SPC | KC_G ,"+{sc22}" ) 126 | SetEisu( KC_SPC | KC_H ,"+{sc23}" ) 127 | SetEisu( KC_SPC | KC_J ,"+{sc24}" ) 128 | SetEisu( KC_SPC | KC_K ,"+{sc25}" ) 129 | SetEisu( KC_SPC | KC_L ,"+{sc26}" ) 130 | SetEisu( KC_SPC | KC_SCLN ,"+{sc27}" ) 131 | SetEisu( KC_SPC | KC_QUOT ,"+{sc28}" ) 132 | SetEisu( KC_SPC | KC_NUHS ,"+{sc2B}" ) 133 | 134 | SetEisu( KC_SPC | KC_Z ,"+{sc2C}" ) 135 | SetEisu( KC_SPC | KC_X ,"+{sc2D}" ) 136 | SetEisu( KC_SPC | KC_C ,"+{sc2E}" ) 137 | SetEisu( KC_SPC | KC_V ,"+{sc2F}" ) 138 | SetEisu( KC_SPC | KC_B ,"+{sc30}" ) 139 | SetEisu( KC_SPC | KC_N ,"+{sc31}" ) 140 | SetEisu( KC_SPC | KC_M ,"+{sc32}" ) 141 | SetEisu( KC_SPC | KC_COMM ,"+{sc33}" ) 142 | SetEisu( KC_SPC | KC_DOT ,"+{sc34}" ) 143 | SetEisu( KC_SPC | KC_SLSH ,"+{sc35}" ) 144 | SetEisu( KC_SPC | KC_INT1 ,"+{sc73}" ) 145 | 146 | 147 | SetKana( KC_1 ,"{sc02}" ) 148 | SetKana( KC_2 ,"{sc03}" ) 149 | SetKana( KC_3 ,"{sc04}" ) 150 | SetKana( KC_4 ,"{sc05}" ) 151 | SetKana( KC_5 ,"{sc06}" ) 152 | SetKana( KC_6 ,"{sc07}" ) 153 | SetKana( KC_7 ,"{sc08}" ) 154 | SetKana( KC_8 ,"{sc09}" ) 155 | SetKana( KC_9 ,"{sc0A}" ) 156 | SetKana( KC_0 ,"{sc0B}" ) 157 | SetKana( KC_MINS ,"{sc0C}" ) 158 | SetKana( KC_EQL ,"{sc0D}" ) 159 | SetKana( JP_YEN ,"{sc7D}" ) 160 | 161 | SetKana( KC_Q ,"{sc10}" ) 162 | SetKana( KC_W ,"{sc11}" ) 163 | SetKana( KC_E ,"{sc12}" ) 164 | SetKana( KC_R ,"{sc13}" ) 165 | SetKana( KC_T ,"{sc14}" ) 166 | SetKana( KC_Y ,"{sc15}" ) 167 | SetKana( KC_U ,"{sc16}" ) 168 | SetKana( KC_I ,"{sc17}" ) 169 | SetKana( KC_O ,"{sc18}" ) 170 | SetKana( KC_P ,"{sc19}" ) 171 | SetKana( KC_LBRC ,"{sc1A}" ) 172 | SetKana( KC_RBRC ,"{sc1B}" ) 173 | 174 | SetKana( KC_A ,"{sc1E}" ) 175 | SetKana( KC_S ,"{sc1F}" ) 176 | SetKana( KC_D ,"{sc20}" ) 177 | SetKana( KC_F ,"{sc21}" ) 178 | SetKana( KC_G ,"{sc22}" ) 179 | SetKana( KC_H ,"{sc23}" ) 180 | SetKana( KC_J ,"{sc24}" ) 181 | SetKana( KC_K ,"{sc25}" ) 182 | SetKana( KC_L ,"{sc26}" ) 183 | SetKana( KC_SCLN ,"{sc27}" ) 184 | SetKana( KC_QUOT ,"{sc28}" ) 185 | SetKana( KC_NUHS ,"{sc2B}" ) 186 | 187 | SetKana( KC_Z ,"{sc2C}" ) 188 | SetKana( KC_X ,"{sc2D}" ) 189 | SetKana( KC_C ,"{sc2E}" ) 190 | SetKana( KC_V ,"{sc2F}" ) 191 | SetKana( KC_B ,"{sc30}" ) 192 | SetKana( KC_N ,"{sc31}" ) 193 | SetKana( KC_M ,"{sc32}" ) 194 | SetKana( KC_COMM ,"{sc33}" ) 195 | SetKana( KC_DOT ,"{sc34}" ) 196 | SetKana( KC_SLSH ,"{sc35}" ) 197 | SetKana( KC_INT1 ,"{sc73}" ) 198 | 199 | SetKana( KC_SPC | KC_1 ,"+{sc02}" ) 200 | SetKana( KC_SPC | KC_2 ,"+{sc03}" ) 201 | SetKana( KC_SPC | KC_3 ,"+{sc04}" ) 202 | SetKana( KC_SPC | KC_4 ,"+{sc05}" ) 203 | SetKana( KC_SPC | KC_5 ,"+{sc06}" ) 204 | SetKana( KC_SPC | KC_6 ,"+{sc07}" ) 205 | SetKana( KC_SPC | KC_7 ,"+{sc08}" ) 206 | SetKana( KC_SPC | KC_8 ,"+{sc09}" ) 207 | SetKana( KC_SPC | KC_9 ,"+{sc0A}" ) 208 | SetKana( KC_SPC | KC_0 ,"+{sc0B}" ) 209 | SetKana( KC_SPC | KC_MINS ,"+{sc0C}" ) 210 | SetKana( KC_SPC | KC_EQL ,"+{sc0D}" ) 211 | SetKana( KC_SPC | JP_YEN ,"+{sc7D}" ) 212 | 213 | SetKana( KC_SPC | KC_Q ,"+{sc10}" ) 214 | SetKana( KC_SPC | KC_W ,"+{sc11}" ) 215 | SetKana( KC_SPC | KC_E ,"+{sc12}" ) 216 | SetKana( KC_SPC | KC_R ,"+{sc13}" ) 217 | SetKana( KC_SPC | KC_T ,"+{sc14}" ) 218 | SetKana( KC_SPC | KC_Y ,"+{sc15}" ) 219 | SetKana( KC_SPC | KC_U ,"+{sc16}" ) 220 | SetKana( KC_SPC | KC_I ,"+{sc17}" ) 221 | SetKana( KC_SPC | KC_O ,"+{sc18}" ) 222 | SetKana( KC_SPC | KC_P ,"+{sc19}" ) 223 | SetKana( KC_SPC | KC_LBRC ,"+{sc1A}" ) 224 | SetKana( KC_SPC | KC_RBRC ,"+{sc1B}" ) 225 | 226 | SetKana( KC_SPC | KC_A ,"+{sc1E}" ) 227 | SetKana( KC_SPC | KC_S ,"+{sc1F}" ) 228 | SetKana( KC_SPC | KC_D ,"+{sc20}" ) 229 | SetKana( KC_SPC | KC_F ,"+{sc21}" ) 230 | SetKana( KC_SPC | KC_G ,"+{sc22}" ) 231 | SetKana( KC_SPC | KC_H ,"+{sc23}" ) 232 | SetKana( KC_SPC | KC_J ,"+{sc24}" ) 233 | SetKana( KC_SPC | KC_K ,"+{sc25}" ) 234 | SetKana( KC_SPC | KC_L ,"+{sc26}" ) 235 | SetKana( KC_SPC | KC_SCLN ,"+{sc27}" ) 236 | SetKana( KC_SPC | KC_QUOT ,"+{sc28}" ) 237 | SetKana( KC_SPC | KC_NUHS ,"+{sc2B}" ) 238 | 239 | SetKana( KC_SPC | KC_Z ,"+{sc2C}" ) 240 | SetKana( KC_SPC | KC_X ,"+{sc2D}" ) 241 | SetKana( KC_SPC | KC_C ,"+{sc2E}" ) 242 | SetKana( KC_SPC | KC_V ,"+{sc2F}" ) 243 | SetKana( KC_SPC | KC_B ,"+{sc30}" ) 244 | SetKana( KC_SPC | KC_N ,"+{sc31}" ) 245 | SetKana( KC_SPC | KC_M ,"+{sc32}" ) 246 | SetKana( KC_SPC | KC_COMM ,"+{sc33}" ) 247 | SetKana( KC_SPC | KC_DOT ,"+{sc34}" ) 248 | SetKana( KC_SPC | KC_SLSH ,"+{sc35}" ) 249 | SetKana( KC_SPC | KC_INT1 ,"+{sc73}" ) 250 | 251 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 252 | If (keyDriver = "kbd101.dll") 253 | { 254 | SetEisu( KC_GRV ,"{sc29}" ) 255 | SetEisu( KC_GRV | KC_SPC ,"+{sc29}" ) 256 | SetKana( KC_GRV ,"{sc29}" ) 257 | SetKana( KC_GRV | KC_SPC ,"+{sc29}" ) 258 | 259 | SetEisu( JP_YEN ,"\" ) 260 | SetEisu( JP_YEN | KC_SPC ,"|" ) 261 | SetKana( JP_YEN ,"\" ) 262 | SetKana( JP_YEN | KC_SPC ,"|" ) 263 | SetEisu( KC_INT1 ,"\" ) 264 | SetEisu( KC_INT1 | KC_SPC ,"_" ) 265 | SetKana( KC_INT1 ,"\" ) 266 | SetKana( KC_INT1 | KC_SPC ,"_" ) 267 | } 268 | ; 設定がPC-9800キーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 269 | Else If (keyDriver = "kbdnec.dll") 270 | { 271 | SetEisu( KC_INT1 ,"\" ) 272 | SetKana( KC_INT1 ,"\" ) 273 | } 274 | } 275 | -------------------------------------------------------------------------------- /src/Sub/IME.ahk: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | IME制御用 関数群 (IME.ahk) 3 | 4 | グローバル変数 : なし 5 | 各関数の依存性 : なし(必要関数だけ切出してコピペでも使えます) 6 | 7 | AutoHotkey: L 1.1.08.01 8 | Language: Japanease 9 | Platform: NT系 10 | Author: eamat. http://www6.atwiki.jp/eamat/ 11 | ***************************************************************************** 12 | 履歴 13 | 2008.07.11 v1.0.47以降の 関数ライブラリスクリプト対応用にファイル名を変更 14 | 2008.12.10 コメント修正 15 | 2009.07.03 IME_GetConverting() 追加 16 | Last Found Windowが有効にならない問題修正、他。 17 | 2009.12.03 18 | ・IME 状態チェック GUIThreadInfo 利用版 入れ込み 19 | (IEや秀丸8βでもIME状態が取れるように) 20 | http://blechmusik.xrea.jp/resources/keyboard_layout/DvorakJ/inc/IME.ahk 21 | ・Google日本語入力β 向け調整 22 | 入力モード 及び 変換モードは取れないっぽい 23 | IME_GET/SET() と IME_GetConverting()は有効 24 | 25 | 2012.11.10 x64 & Unicode対応 26 | 実行環境を AHK_L U64に (本家およびA32,U32版との互換性は維持したつもり) 27 | ・LongPtr対策:ポインタサイズをA_PtrSizeで見るようにした 28 | 29 | ;================================== 30 | ; GUIThreadInfo 31 | ;================================= 32 | ; 構造体 GUITreadInfo 33 | ;typedef struct tagGUITHREADINFO {(x86) (x64) 34 | ; DWORD cbSize; 0 0 35 | ; DWORD flags; 4 4 ※ 36 | ; HWND hwndActive; 8 8 37 | ; HWND hwndFocus; 12 16 ※ 38 | ; HWND hwndCapture; 16 24 39 | ; HWND hwndMenuOwner; 20 32 40 | ; HWND hwndMoveSize; 24 40 41 | ; HWND hwndCaret; 28 48 42 | ; RECT rcCaret; 32 56 43 | ;} GUITHREADINFO, *PGUITHREADINFO; 44 | 45 | ・WinTitleパラメータが実質無意味化していたのを修正 46 | 対象がアクティブウィンドウの時のみ GetGUIThreadInfoを使い 47 | そうでないときはControlハンドルを使用 48 | 一応バックグラウンドのIME情報も取れるように戻した 49 | (取得ハンドルをWindowからControlに変えたことでブラウザ以外の大半の 50 | アプリではバックグラウンドでも正しく値が取れるようになった。 51 | ※ブラウザ系でもアクティブ窓のみでの使用なら問題ないと思う、たぶん) 52 | 53 | */ 54 | 55 | ;--------------------------------------------------------------------------- 56 | ; 汎用関数 (多分どのIMEでもいけるはず) 57 | 58 | ;----------------------------------------------------------- 59 | ; IMEの状態の取得 60 | ; WinTitle="A" 対象Window 61 | ; 戻り値 1:ON / 0:OFF 62 | ;----------------------------------------------------------- 63 | IME_GET(WinTitle="A") { 64 | ControlGet,hwnd,HWND,,,%WinTitle% 65 | if (WinActive(WinTitle)) { 66 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 67 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 68 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 69 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 70 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 71 | } 72 | 73 | return DllCall("SendMessage" 74 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 75 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 76 | , Int, 0x0005 ;wParam : IMC_GETOPENSTATUS 77 | , Int, 0) ;lParam : 0 78 | } 79 | 80 | ;----------------------------------------------------------- 81 | ; IMEの状態をセット 82 | ; SetSts 1:ON / 0:OFF 83 | ; WinTitle="A" 対象Window 84 | ; 戻り値 0:成功 / 0以外:失敗 85 | ;----------------------------------------------------------- 86 | IME_SET(SetSts, WinTitle="A") { 87 | ControlGet,hwnd,HWND,,,%WinTitle% 88 | if (WinActive(WinTitle)) { 89 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 90 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 91 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 92 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 93 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 94 | } 95 | 96 | return DllCall("SendMessage" 97 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 98 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 99 | , Int, 0x006 ;wParam : IMC_SETOPENSTATUS 100 | , Int, SetSts) ;lParam : 0 or 1 101 | } 102 | 103 | ;=========================================================================== 104 | ; IME 入力モード (どの IMEでも共通っぽい) 105 | ; DEC HEX BIN 106 | ; 0 (0x00 0000 0000) かな 半英数 107 | ; 3 (0x03 0000 0011) 半カナ 108 | ; 8 (0x08 0000 1000) 全英数 109 | ; 9 (0x09 0000 1001) ひらがな 110 | ; 11 (0x0B 0000 1011) 全カタカナ 111 | ; 16 (0x10 0001 0000) ローマ字半英数 112 | ; 19 (0x13 0001 0011) 半カナ 113 | ; 24 (0x18 0001 1000) 全英数 114 | ; 25 (0x19 0001 1001) ひらがな 115 | ; 27 (0x1B 0001 1011) 全カタカナ 116 | 117 | ; ※ 地域と言語のオプション - [詳細] - 詳細設定 118 | ; - 詳細なテキストサービスのサポートをプログラムのすべてに拡張する 119 | ; が ONになってると値が取れない模様 120 | ; (Google日本語入力βはここをONにしないと駄目なので値が取れないっぽい) 121 | 122 | ;------------------------------------------------------- 123 | ; IME 入力モード取得 124 | ; WinTitle="A" 対象Window 125 | ; 戻り値 入力モード 126 | ;-------------------------------------------------------- 127 | IME_GetConvMode(WinTitle="A") { 128 | ControlGet,hwnd,HWND,,,%WinTitle% 129 | if (WinActive(WinTitle)) { 130 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 131 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 132 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 133 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 134 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 135 | } 136 | return DllCall("SendMessage" 137 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 138 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 139 | , Int, 0x001 ;wParam : IMC_GETCONVERSIONMODE 140 | , Int, 0) ;lParam : 0 141 | } 142 | 143 | ;------------------------------------------------------- 144 | ; IME 入力モードセット 145 | ; ConvMode 入力モード 146 | ; WinTitle="A" 対象Window 147 | ; 戻り値 0:成功 / 0以外:失敗 148 | ;-------------------------------------------------------- 149 | IME_SetConvMode(ConvMode,WinTitle="A") { 150 | ControlGet,hwnd,HWND,,,%WinTitle% 151 | if (WinActive(WinTitle)) { 152 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 153 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 154 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 155 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 156 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 157 | } 158 | return DllCall("SendMessage" 159 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 160 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 161 | , Int, 0x002 ;wParam : IMC_SETCONVERSIONMODE 162 | , Int, ConvMode) ;lParam : CONVERSIONMODE 163 | } 164 | 165 | ;=========================================================================== 166 | ; IME 変換モード (ATOKはver.16で調査、バージョンで多少違うかも) 167 | 168 | ; MS-IME 0:無変換 / 1:人名/地名 / 8:一般 /16:話し言葉 169 | ; ATOK系 0:固定 / 1:複合語 / 4:自動 / 8:連文節 170 | ; WXG / 1:複合語 / 2:無変換 / 4:自動 / 8:連文節 171 | ; SKK系 / 1:ノーマル (他のモードは存在しない?) 172 | ; Googleβ / 8:ノーマル 173 | ;------------------------------------------------------------------ 174 | ; IME 変換モード取得 175 | ; WinTitle="A" 対象Window 176 | ; 戻り値 MS-IME 0:無変換 1:人名/地名 8:一般 16:話し言葉 177 | ; ATOK系 0:固定 1:複合語 4:自動 8:連文節 178 | ; WXG4 1:複合語 2:無変換 4:自動 8:連文節 179 | ;------------------------------------------------------------------ 180 | IME_GetSentenceMode(WinTitle="A") { 181 | ControlGet,hwnd,HWND,,,%WinTitle% 182 | if (WinActive(WinTitle)) { 183 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 184 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 185 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 186 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 187 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 188 | } 189 | return DllCall("SendMessage" 190 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 191 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 192 | , Int, 0x003 ;wParam : IMC_GETSENTENCEMODE 193 | , Int, 0) ;lParam : 0 194 | } 195 | 196 | ;---------------------------------------------------------------- 197 | ; IME 変換モードセット 198 | ; SentenceMode 199 | ; MS-IME 0:無変換 1:人名/地名 8:一般 16:話し言葉 200 | ; ATOK系 0:固定 1:複合語 4:自動 8:連文節 201 | ; WXG 1:複合語 2:無変換 4:自動 8:連文節 202 | ; WinTitle="A" 対象Window 203 | ; 戻り値 0:成功 / 0以外:失敗 204 | ;----------------------------------------------------------------- 205 | IME_SetSentenceMode(SentenceMode,WinTitle="A") { 206 | ControlGet,hwnd,HWND,,,%WinTitle% 207 | if (WinActive(WinTitle)) { 208 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 209 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 210 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 211 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 212 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 213 | } 214 | return DllCall("SendMessage" 215 | , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd) 216 | , UInt, 0x0283 ;Message : WM_IME_CONTROL 217 | , Int, 0x004 ;wParam : IMC_SETSENTENCEMODE 218 | , Int, SentenceMode) ;lParam : SentenceMode 219 | } 220 | 221 | 222 | ;--------------------------------------------------------------------------- 223 | ; IMEの種類を選ぶかもしれない関数 224 | 225 | ;========================================================================== 226 | ; IME 文字入力の状態を返す 227 | ; (パクリ元 : http://sites.google.com/site/agkh6mze/scripts#TOC-IME- ) 228 | ; 標準対応IME : ATOK系 / MS-IME2002 2007 / WXG / SKKIME 229 | ; その他のIMEは 入力窓/変換窓を追加指定することで対応可能 230 | ; 231 | ; WinTitle="A" 対象Window 232 | ; ConvCls="" 入力窓のクラス名 (正規表現表記) 233 | ; CandCls="" 候補窓のクラス名 (正規表現表記) 234 | ; 戻り値 1 : 文字入力中 or 変換中 235 | ; 2 : 変換候補窓が出ている 236 | ; 0 : その他の状態 237 | ; 238 | ; ※ MS-Office系で 入力窓のクラス名 を正しく取得するにはIMEのシームレス表示を 239 | ; OFFにする必要がある 240 | ; オプション-編集と日本語入力-編集中の文字列を文書に挿入モードで入力する 241 | ; のチェックを外す 242 | ;========================================================================== 243 | IME_GetConverting(WinTitle="A",ConvCls="",CandCls="") { 244 | 245 | ;IME毎の 入力窓/候補窓Class一覧 ("|" 区切りで適当に足してけばOK) 246 | ConvCls .= (ConvCls ? "|" : "") ;--- 入力窓 --- 247 | . "ATOK\d+CompStr" ; ATOK系 248 | . "|imejpstcnv\d+" ; MS-IME系 249 | . "|WXGIMEConv" ; WXG 250 | . "|SKKIME\d+\.*\d+UCompStr" ; SKKIME Unicode 251 | . "|MSCTFIME Composition" ; Google日本語入力 252 | 253 | CandCls .= (CandCls ? "|" : "") ;--- 候補窓 --- 254 | . "ATOK\d+Cand" ; ATOK系 255 | . "|imejpstCandList\d+|imejpstcand\d+" ; MS-IME 2002(8.1)XP付属 256 | . "|mscandui\d+\.candidate" ; MS Office IME-2007 257 | . "|WXGIMECand" ; WXG 258 | . "|SKKIME\d+\.*\d+UCand" ; SKKIME Unicode 259 | CandGCls := "GoogleJapaneseInputCandidateWindow" ;Google日本語入力 260 | 261 | ControlGet,hwnd,HWND,,,%WinTitle% 262 | if (WinActive(WinTitle)) { 263 | ptrSize := !A_PtrSize ? 4 : A_PtrSize 264 | VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0) 265 | NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize; 266 | hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) 267 | ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd 268 | } 269 | 270 | WinGet, pid, PID,% "ahk_id " hwnd 271 | tmm:=A_TitleMatchMode 272 | SetTitleMatchMode, RegEx 273 | ret := WinExist("ahk_class " . CandCls . " ahk_pid " pid) ? 2 274 | : WinExist("ahk_class " . CandGCls ) ? 2 275 | : WinExist("ahk_class " . ConvCls . " ahk_pid " pid) ? 1 276 | : 0 277 | SetTitleMatchMode, %tmm% 278 | return ret 279 | } 280 | -------------------------------------------------------------------------------- /version.md: -------------------------------------------------------------------------------- 1 | ## おもな修正履歴 2 | 3 | ### 2024年3月23日 v1.12.11 4 | * 旧MS-IMEで左右シフトから一時英数入力中、編集モードの記号を押した後にIMEオフになったり変換未確定になったりするのを修正 5 | * サロゲートペアになるユニコードを固有名詞ショートカットなどで入力したとき、確定文字にならないことがあるのを修正 6 | * 「文字出力後に IME の状態を検出しない時間」を設定できるように 7 | 8 | ### 2024年2月11日 v1.12.10 9 | * Windows 11 のメモ帳に、動画再生をしながら新MS-IMEで入力しても表示が引っ掛かりにくくした 10 | * 秀丸エディタがIMEキャンセルで異常終了することがあるのでディレイを調整 11 | 12 | ### 2024年1月24日 v1.12.9 13 | * 割り込み禁止がすぐ解けることがあったのを修正 14 | Core 2 Duo でも1秒間に35打鍵の高速入力テストに合格しました。 15 | (v1.10.4~1.12.8では第6世代Core iシリーズ以上が合格でした) 16 | 17 | ### 2023年11月29日 v1.12.8 18 | * 定義 "[]{確定}{↑}"、"(){確定}{↑}" でかっこの中へ移動するため、確定に Shift+Ctrl+変換 でなくエンターを使う 19 | * エンター同時押しをシフトとして扱う際の挙動を修正 20 | 21 | ### 2023年11月15日 v1.12.7 22 | * Windows 11 以降のメモ帳と新MS-IMEの組み合わせで出力が引っかかることがあったのをさらに改善 23 | しかし動画再生をしながらでは入力が引っかかるのをどうしても無くすことはできませんので、 24 | そういう使い方をするのであればMS-IMEを従来型になるよう設定するか、他のIMEの利用を検討してください。 25 | * 新MS-IMEで".{確定}"、",{確定}"後に予測入力窓が残るのを軽減 26 | * 編集モード「IMEキャンセル」でもESCキーの連続の間にディレイを入れる(文字と回数の分離に修正) 27 | 秀丸エディタがIMEキャンセルの時に異常終了しなくなるのを期待しています。 28 | 29 | ### 2023年11月5日 v1.12.6 30 | * FirefoxとThunderbirdを新MS-IMEで使用している時、左右シフトから一時英数入力中にSandSが効かないのを修正 31 | v1.10での書き換えが原因です。 32 | 33 | ### 2023年11月4日 v1.12.5 34 | * Windows 11 以降のメモ帳とMS-IMEの組み合わせで出力が引っかかることがあったのを改善 35 | 36 | ### 2023年10月28日 v1.12.4 37 | * Google 日本語入力を左右シフト英数に設定し、かな入力中に左右シフトで英字を入力したときは __半角/全角キー__ が自動的に押されます。 38 | かな入力へは手動で戻します 39 | * FirefoxとThunderbirdで高速打鍵すると、シフト面文字がスペース変換+ノーマル面文字に化けるのを修正 40 | * リピートを数える時、直近以外のキーを離したときにゼロになっていたのを修正 41 | * 右シフトを押したまま終了すると、シフトを押し直さないと大文字が入力できなくなっていたのを修正 42 | * そのまま 右シフト+文字キー を押すのと、他の装飾キー+右シフト→右シフト以外離す+文字キー とで挙動が違っていたのを直す 43 | 44 | ### 2023年10月16日 v1.12.3 45 | * ほとんどの編集モードの出力を高速化 46 | * スペースキー、矢印系キーだけの定義でなければキーを下げたままにしない 47 | JK+F でリピートさせると、「」の入力後にカーソルが2~3個移動することがありました。 48 | そこでv1.11.1以前と同じ動作にしました 49 | * 旧MS-IMEで JK+W などユニコード括弧の入力が失敗することがあったので修正 50 | 51 | ### 2023年10月1日 v1.12.2 52 | * v1.12以降、後置シフトで正しくリピートできなくなっていたので修正 53 | リピートが途中で止まったり、スペースあるいはエンターのリピートになったりした 54 | 55 | ### 2023年9月30日 v1.12.1 56 | * 出力が追い付かないほどのキーリピートはやめる 57 | * "+{↑ 7}" のようなときシフトがバタバタしていたのを修正 58 | * 新MS-IME で入力キャンセルをしたときに、予測候補窓が消えないことがあったので修正 59 | 60 | ### 2023年9月9日 v1.12 61 | * 英数単打のリピートの有無を設定可能にし、初期値は「あり」とする 62 | 2キー以上の同時押しではリピートしません 63 | * リピートの好みを設定可能に(テストモードのみ) 64 | * カーソルキーのリピート時は、キーを離してからなるべく早く操作できるよう動きを加減した。 65 | なお、リピートを全てする設定にしていると制限しません。 66 | * 「キーを離せば常に全部出力する」がオンの時、無関係なキーを放してもリピートが止まったのを修正 67 | * 英数入力時に判定期限ありなら、文字キーシフトは「同グループのみ継続」か「1回のみ」に拡大 68 | * Windows 11 以降のメモ帳にはゆっくり出力する 69 | 70 | ### 2023年8月19日 v1.11.1 71 | * Edge の文字が入力できないところで「ひらがな」「カタカナ」を定義したキーを押すと、かな入力オンになっていたので修正 72 | 反対に、入力できるところでオンにしたまま入力できないところをクリックすると、かな入力オンのままになる。前もってオフにするより他はない。 73 | 74 | ### 2023年8月18日 v1.11 75 | * IME_GetConvMode() の値が 0 になった直後を英数モードに 76 | Excel で右クリックした時のメニューでは IME の状態が取れないが、すぐ英数入力にしたい。 77 | Excel、PowerPoint のコメント欄も IME の状態が取れないので一度英数モードになるが、かな入力に切り替えることはできる。 78 | 79 | ### 2023年8月18日 v1.10.4 80 | * IME の状態の検出を間違うことがあったので修正 81 | * Shift+矢印 → Shift+矢印 でShiftがバタバタしないようにした 82 | * 一太郎のカーソル移動対策 83 | ジャストシステム製品は矢印キーの上げ下げをエミュレートしない方が良いらしい 84 | * かな定義がアルファベットかハイフンだけなら {? down}{? up} 形式で出力して、入力の取りこぼしを軽減 85 | 86 | ### 2023年8月16日 v1.10.3 87 | * Excel の日本語入力を無効にしたセル上で、IMEオフにならなくなっていたので修正 88 | 89 | ### 2023年8月11日 v1.10.2 90 | * (旧MS-IMEでキー設定利用すると)開き括弧、閉じ括弧を書いて中に入るような定義がうまく動作しないことがあったので改善 91 | ATOK、Google日本語入力、秀丸エディタを使わない、全角英数入力にしない大多数の人には、キー設定利用をしない方が動作が速くなります。 92 | 93 | ### 2023年8月5日 v1.10.1 94 | * 新MS-IME のキーテンプレート「ATOK」ではIMEオン、IMEオフ が使えなかったので改善 95 | * PC-9801キーボードでは Shift+Ctrl+無変換 のキー設定を使えないので対策 96 | 97 | ### 2023年7月31日 v1.10 98 | * IME_GetConvMode() が 0 を返す場合への対応 99 | Excel、PowerPoint のコメント欄にかな入力できます 100 | 編集モードには一部のみの対応です 101 | * メモ帳にはゆっくり出力する 102 | Windows 11 版への対応です 103 | * v.1.19.12 の変更で、上キー、下キーの回数指定がうまく働かなくなったので対策 104 | * 設定ファイルに規定外の値が書かれていたら初期値にする 105 | 106 | ### 2023年7月24日 v1.9.13 107 | * Windows 11 の標準MS-IMEで "{確定}" を含むキーを押すと、余計な改行が起きることがあったので対策 108 | * IMEを変えたことを設定した直後に、正しく反映されないことがあるのを修正 109 | 110 | ### 2023年7月13日 v1.9.12 111 | * Microsoft 365版 OneNote で上キー、下キーが働かなくなることの対策 112 | * ATOKとGoogle日本語入力の入力モードによっては、意図せずユニコードを変換してしまうので対策 113 | 低速だが確実な v1.9-beta.16 以前の方法に戻した 114 | * 固有名詞ショートカットに {→} など方向を表すものを入れると、横書き用で向きが変わっていたので修正 115 | 116 | ### 2023年7月3日 v1.9.11 117 | * 一時IMEをオフにした間にアスキー文字を出力すると、IMEを元に戻したときにシフトが押されたままになることがあるので修正 118 | * テストモードで、「文字出力後に IME の状態を検出しない時間」を設定できるようにした 119 | 120 | ### 2023年6月3日 v1.9.10 121 | * 定義が"{確定}"から始まるときは、ATOKには"{確定}"を2度出力する 122 | 「全候補表示」中は、一回では「確定」しないので対策 123 | * まれに、かな入力が英字になることがあるので修正 124 | 125 | ### 2023年3月12日 v1.9.9 126 | * 文字キーシフト「ずっと」の設定で、F押→K押→O押が「かいず」とならないなどを修正 127 | 128 | ### 2023年1月28日 v1.9.8 129 | * ~~ロールオーバー入力で[入力したキーが無視される](https://github.com/tor-nky/Hachiku/issues/33)ことがあったのを改善~~ v1.9.9で解消しました 130 | * 文字キーシフト「途切れるまで」の設定で、「ぶがい」をロールオーバーで書けるように 131 | 濁音の繰り返しがつながらなかくて、編集モードになっていたのを1キー文字になるようにした 132 | * 「あ→れ」では、「あ」が確定するので「れ」で2キー同時の検索は不要 133 | 次の文字を打ったことで直前の1キー文字が確定したら、2キー同時以上の検索をしないようにした 134 | 135 | ### 2022年12月28日 v1.9.7 136 | * ディレイ再調整 137 | 138 | ### 2022年12月11日 v1.9.6 139 | * 変換1回目のIME窓検出用フラグが入のままになることがあった 140 | JK+D「?」、JK+C「!」の直後にスペースキーを押すと、IME窓の検出が当てにならないと誤判定した 141 | * DF+P「入力キャンセル」の動作の修正 142 | 143 | ### 2022年12月11日 v1.9.5 144 | * 対応しているどのIMEでも、かな入力中なら _{確定}_ で選択範囲を消さないように修正 145 | ただし、Google日本語入力では半角カタカナには対応していません 146 | * 編集モードをより失敗しにくく調整した 147 | 148 | ### 2022年12月4日 v1.9.4 149 | * 秀丸エディタをGoogle日本語入力で使うと、薙刀式v14のJK+FとJK+Gなどが動作しないのを修正 150 | 編集モード内にある、{Enter}からの文字入力ができなかった 151 | v1.9.1 でGoogle日本語入力でも、IMEをオフにしないで編集モードの記号を出すようにしたせいでした 152 | 153 | ### 2022年12月4日 v1.9.3 154 | * 秀丸エディタを新旧MS-IMEで使うと、JK+F で「」内にカーソルが入らないことがあるのを修正 155 | 156 | ### 2022年11月21日 v1.9.2 157 | * v1.9.1 の修正が、_{確定}_ から始まるかな定義でも _{Enter}_ で置き換えていたので修正 158 | * Google日本語入力以外でかな入力中なら、_{確定}_ で選択範囲を消さないように修正 159 | Google日本語入力のとき、あるいは IMEオンで英数入力中でも選択範囲を消さないようにするには、キー設定利用 (Ctrl+Shift+無変換⇒全消去、Ctrl+Shift+変換⇒全確定) 可能な IME をご利用ください 160 | * Google日本語入力と Visual Studio Code とで「選択範囲を括弧で括る」を正常に動くようにした 161 | * ATOK に加えて Google日本語入力でも、IMEをオフにしないで編集モードの記号を出すようにして高速化 162 | 163 | ### 2022年11月3日 v1.9.1 164 | * かな定義の中にある _アスキー文字→{確定}_ の _{確定}_ は _{Enter}_ で置き換える 165 | なお、__Ctrl+Shift+変換⇒全確定__ のキー設定が優先される 166 | 167 | ### 2022年10月22日 v1.9 168 | * 設定メニューの書き換え 169 | 170 | ### 2022年10月19日 v1.9-beta.20 171 | * 別の英語配列を使っていて、固有名詞セットを変えたときにツールチップに英語配列が反映されるようにした 172 | * 設定メニューの書き換え 173 | 174 | ### 2022年10月10日 v1.9-beta.19 175 | * キーを上げて同グループ優先が白紙になる条件を追加 176 | 1キー決まりの定義にグループを設定すると、同時押しが不可能になるバグがあった 177 | 178 | ### 2022年10月10日 v1.9-beta.18 179 | * キー設定利用 (Ctrl+Shift+無変換⇒全消去、Ctrl+Shift+変換⇒全確定) を隠しメニュー(詳細メニュー)内の選択制にし、利用しないのを初期設定にした 180 | 181 | ### 2022年9月20日 v1.9-beta.17 182 | * 後置シフトでリピートを使うと Shift+Space の連続になるのを修正 183 | * 秀丸エディタで、スペースキーを押してもカーソル移動が止まらない可能性を潰した 184 | * スペースキーを押しているときの左右シフトを、空白キャンセルとして使えるようにした 185 | * ATOK ではIMEをオフにしないで編集モードの記号を出すようにして高速化 186 | 187 | ### 2022年9月9日 v1.9-beta.16 188 | * 判定期限を設けると、「キーを離すとシフト全復活」が働かない不具合を解消 189 | * 固有名詞を定義していないキーバインドでは普通のかなを出力するようにした 190 | 定義を不要なのに登録していたためです 191 | * ~~ATOK と Google日本語入力では、IMEをオフにしないで編集モードの記号を出すようにして高速化~~ 192 | Visual Studio Code で「選択範囲を括弧で括る」が正常に動かず、元の方法に戻す 193 | 194 | ### 2022年8月30日 v1.9-beta.15 195 | * Windows 11 の標準(新)MS-IME への対応 196 | * IME操作ができる {vk19} のような定義の取り扱いを追加 197 | * 下記の仕様変更で不要になったコードを削除 198 | 旧MS-IME、ATOK、Google日本語入力 で Shift+Ctrl+変換キー を Enterキー と同じキー設定にしたこと(_v1.9-beta.12_) 199 | IME状態の取得をする前になるべく Sleep を使わない(_v1.9-beta.14_) 200 | 201 | ### 2022年8月22日 v1.9-beta.14 202 | * 英語配列を変えているときはトレイチップに表示 203 | * 設定「英数入力時のSandS」をオフにすると大文字が書けなくなっていたので修正 204 | * ATOK で貼り付けを含む編集モードを使えるようにした 205 | * IME状態の取得をする前になるべく Sleep を使わないようにした 206 | ~~新MS-IMEで Sleep を使った後に、IME状態を正しく取得できないことがあるためです。~~効果はありませんでした。 207 | 208 | ### 2022年8月9日 v1.9-beta.13 209 | * Issue #18 の改修で不具合があったので直した 210 | 211 | ### 2022年7月31日 v1.9-beta.12 212 | * 旧MS-IME、ATOK、Google日本語入力 では Shift+Ctrl+変換キー を Enterキー と同じキー設定にすることで 213 | {確定}する際に選択範囲を消さなくて済むようにした 214 | (v1.9-beta.11 と方式を変えました) 215 | * 文字キーシフト「同グループのみ継続」を改善(Issue #18) 216 | * IME窓の検出が当てにできるかの調べるのに、スリープ利用からタイマーに変えてスペースキーの反応を改善した 217 | * 変数名変更 218 | * 関数 StoreBuf() の引数順変更 219 | 220 | ### 2022年7月17日 v1.9-beta.11 221 | * Google日本語入力で、{確定}する際に選択範囲を消さなくする 222 | 223 | ### 2022年7月17日 v1.9-beta.10 224 | 多数のソフトウェアで正常に動作しないため、廃止 225 | 226 | ### 2022年7月9日 v1.9-beta.9 227 | * 同時押しのキーを全部離してからキーを押したときの検索の無駄をなくした 228 | * 配列を読み直すときにはトレイアイコンを変える 229 | * 「キーを離せば常に全部出力する」を標準で切るにした(Issue #23) 230 | 231 | ### 2022年7月2日 v1.9-beta.8 232 | * 各種ディレイを調整 233 | * 英数→かな、または かな→英数 の次のキーを新しいモードで処理 234 | 235 | シフト+英数 で一時的に英数入力し改行となるキーからのロールオーバーしても、かな入力にならない不具合が残っています。 236 | 237 | ### 2022年6月9日 v1.9-beta.7 238 | * ゲームモードの暴発を低減 239 | 240 | ### 2022年6月8日 v1.9-beta.6 241 | * 薙刀式中断・再開で左右シフトが残る現象を対策 → ゲームモード暴発が増えた 242 | * 1字ごとに Sleep, -1 または Sleep, 0 を入れられるようにした 243 | 244 | ### 2022年5月17日 v1.9-beta.5 245 | * 秀丸エディタで"_"が残る問題を修正 246 | 247 | ### 2022年5月15日 v1.9-beta.4 248 | * 秀丸エディタでのディレイを修正 249 | 250 | ### 2022年5月7日 v1.9-beta.3 251 | * Google 日本語入力対応の設定を追加 252 | * 左右のシフトを押しながらアルファベットを押すと、一時的に半角英数入力ができるのを初期設定とした。(左右シフト「英数」) 253 | * 「ので」を打ちやすくしていたのを、初期設定では DvorakJ 版に合わせるために取りやめた。 254 | 255 | ### 2022年3月28日 v1.8.5 256 | * ATOKで「後でカッコ付け」が失敗する問題を解消 257 | 258 | ### 2022年3月21日 v1.8.4 259 | * 編集モードの記号入力の速度改善(ブラウザを除く) 260 | * 「後からカッコ付け」の動作修復 261 | 262 | ### 2022年3月19日 v1.8.3 263 | * IME窓検知の修復 264 | * ブラウザ上でGitHubのファイル修正するときに、編集モードの記号入力が予期せぬ動作を引き起こさないようにした。 265 | 266 | ### 2022年3月6日 v1.8.2 267 | * 「以前のバージョンの Microsoft IME を使う」設定があるのに一度もオンにしたことがないパソコンで不具合を修正 268 | * 「シフト+スペース」と「シフト+矢印」と、押した後の動作修正 269 | 270 | ### 2022年3月3日 v1.8.1 271 | * 縦書き・横書きでタスクトレイのアイコンが変化するようにした 272 | * Hachiku があるパス名にスペースが含まれると iniファイルの読み書きができなかったのを修正 273 | 274 | ### 2022年3月1日 v1.8 275 | 276 | * 秀丸エディタのカーソル加速への対応(方向キーのリピートが、キーを上げることなく連打するように) 277 | * 左右シフト「英数2」にした時のレジストリの編集を不要にした 278 | * 設定によっては、キーの上げ下げのタイミングから出力が持ち越しになってしまう不具合を解消 279 | * 左右シフトを押しながら英字を入力し始め、わずかでも間をおいてから超高速で英字を入力したときは、ローマ字にならなくした 280 | 281 | 間を開けずに、超高速英字入力すると誤作動を避けられません。 282 | 283 | ### 2022年2月6日 v1.7.6 284 | * 「後置シフトの待ち時間」「同時打鍵判定」の時間が「未満」だったのを「以下」にした 285 | * ログ表示(直前のキー入力31個分)を追加 286 | * 新MS-IMEで、変換候補窓が最大のときに、確定せず編集モードの記号を入力すると、未変換のまま記号が前に入るを修正 287 | * 配列変換しないでまれに素通りするのを対策 288 | * テストモードを見えなくした 289 | 290 | ### 2022年1月4日 v1.7.5 291 | * 後置シフト、同時打鍵判定 Issue #21 の修正 292 | * タイマー割込みとキー割込みの行き違いが起きうる Issue #19 のを修正 293 | * 文字キーシフト「同グループのみ継続」の動作を再修正 294 | 295 | ### 2021年12月31日 v1.7.3 296 | * 1キー→2キー の時、1キーの文字が確定しているのに出力されなかったので修正 297 | 薙刀式で、I押→J押→E押 の時点で「る」は出力したい。「で」はまだ確定していない。 298 | 299 | ### 2021年12月29日 v1.7.2 300 | * 文字キーシフト「同グループのみ継続」の動作を修正 301 | * キーリピートが始まる時に2文字出力されることがないようにした 302 | 303 | ### 2021年12月20日 v1.7.1 304 | * 入力取りこぼしを減らした 305 | 306 | ### 2021年12月11日 v1.7 307 | 308 | ### 2021年11月23日 309 | * 英数時の同時打鍵期限を強制する設定を作った 310 | 311 | ### 2021年11月3日 312 | * スペースキーの長押しを 0: 何もしない, 1: 空白キャンセル, 2: 空白リピート から設定で選ぶ 313 | * 詳細メニューの変更 314 | 1. 同時打鍵の判定期限を通常面、スペース押下時それぞれでオンオフ切り替え可能に 315 | 2. 文字キーシフトを 0: ずっと, 1: 途切れるまで, 2: 同グループのみ継続, 3: 1回のみ から選べる 316 | 3. キーを離したときに文字キーシフトを 0: 全復活, 1: そのまま, 2: 全解除 から選べる 317 | 4. これまで「出力済みのキーを上げても全部出力する」だけだったが、しなくもできる 318 | * かな定義に使えるものを追加 319 | 1. {NoIME}、{UndoIME}: 320 | {NoIME} でユニコード文字を出力するために入力モードを控えてから IMEオフ にし、対する {UndoIME} は IMEオンにして入力モードを元に戻す。 321 | 通常、ユニコード文字が定義にあると自動で適用されるので、IME にローマ字を渡して入力モードに合わせた変換をしたいときなどに {UndoIME} を使う。 322 | 2. {IMEOFF}: 323 | IME.ahk の関数で IMEオフ にする 324 | 3. {IMEON}: 325 | IME.ahk の関数で IMEオン にする 326 | 4. {全英}: 327 | IME.ahk の関数で 全角英数入力モード にする 328 | 5. {半カナ}: 329 | IME.ahk の関数で 半角カタカナモード にする 330 | 331 | ### 2021年10月24日 332 | * (10日より)IME窓の有無をIME.ahkを使って判定していいかを見極めるルーチンを追加、(24日)見極めの精度を上げた 333 | 334 | ### 2021年10月17日 335 | * 英数入力時のSandSをオフにする設定項目を作った 336 | 337 | ### 2021年10月2日 338 | * 縦書き・横書きでまるで違う定義を登録する関数を追加 339 | 340 | SetKana2(キービットの集合, 縦書き, 横書き, コントロール) 341 | 342 | SetEisu2(キービットの集合, 縦書き, 横書き, コントロール) 343 | 344 | 従来からの SetKana()、SetEisu() は縦書き用からカーソル移動の向きを変換しています。 345 | 346 | ### 2021年10月1日 347 | * スペースキーのリピートをオンオフできる設定を追加 348 | 349 | スペースキーのリピート中の日本語入力は、変換取消してシフト側文字が出力されます。 350 | 351 | ### 2021年9月21日 352 | * 固有名詞ショートカットのシフト面(スペース押下)を追加 353 | 354 | ### 2021年9月8日 355 | * 配列の定義を書き換えるのに src¥KanaTable¥ 内の定義1ファイルだけで良くなるよう、サブルーチンを関数に書き換え、ファイル構成を改めた。 356 | * そのため、これまでのバージョンの配列定義ファイルからは書き換えが必要です。 357 | * MS-IMEの新旧バージョンをときどき自動検知して、編集モード、固有名詞ショートカットの速さを最適化 (将来の Windows に対応できるかは不明) 358 | 359 | ### 2021年8月28日 360 | * 漢字変換中に英数入力に切り替え編集モードの記号を入力すると、記号は未確定で、かな入力のままになるバグを修正 361 | * 薙刀式中断 Shift+Ctrl+0、薙刀式再開 Shift+Ctrl+1 の実装 362 | * DvrakJ版の定義とコメントの順番に直した 363 | 364 | ### 2021年7月21日 365 | * 左右シフトかなを初期設定とした 366 | * スペース+エンターを Shift+Enter に変換するようにした 367 | * 2キー同時押しの次に押したキーが1キー単打だったら、前の文字を出力して Issue #7 を回避する 368 | 369 | ### 2021年7月18日 370 | * 固有名詞ショートカットの変更画面を作った。 371 | 372 | ### 2021年7月10日 373 | * Enterキーをシフトを兼ねられるようにした。 374 | * トレイアイコンを右クリックして設定画面が出せるようにした。 375 | * 記号をUSキーボード風にする設定を追加 376 | 377 | ### 2021年6月19日 378 | * (Naginata.ahk) 冗長シフトを復活 379 | * (Conv.ahk)(init.ahk) 左右シフトを英数入力、かな入力からコンパイル前に選択 380 | * (Conv.ahk) ATOK可のとき、秀丸エディタの使用時とそれ以外でディレイを自動変更 381 | * (Conv.ahk)(init.ahk) シフトを押しながらの同時押しに制限時間を設けた 382 | 383 | ### 2021年5月28日 384 | * (Conv.ahk) ATOK の自動検出を廃止。 385 | 386 | ### 2021年5月24日 387 | * (Conv.ahk) Microsoft Word に対応させるための応急処置 388 | 389 | ### 2021年5月23日 390 | * (Naginata.ahk)(Conv.ahk)(init.ahk) 固有名詞の定義方法を変更。全角・半角ともにそのまま入力されるようにした。 391 | * (Conv.ahk) 何も出力しない {Null} を定義した。「Q」単打などに使用。 392 | * (Conv.ahk) ATOK 対策の強化と、ATOK の誤検出を減らす対策。 393 | * (NaginataTable.ahk)(OldNaginataTable.ahk) 固有名詞ショートカット(U+I)を押し続けて、前文字削除(U)のリピートが起きる場合があるので対策 394 | 395 | ### 2021年5月22日 396 | * (Conv.ahk)(init.ahk) 記号入力と固有名詞をIMEオフにして出力するように変更。その際の ATOK 対策。 397 | 398 | ### 2021年5月10日 399 | * (Conv.ahk)(init.ahk) ユニコード文字の前後で、ディレイを置きつつ未確定状態が検出できたら確定するように変更。 400 | 401 | ATOK でストアアプリに記号入力すると、「ん」を入力したままになってしまったため。 402 | 403 | ATOK で全角空白をユニコード入力すると、変換途中にも関わらず未確定状態として認識できないので、対策をした。 404 | 405 | ### 2021年4月28日 406 | * (Conv.ahk) かなと英数を切り変えた時、薙刀式に変換せずにそのまま通ってしまうことがあるのを軽減(失敗) 407 | 408 | ### 2021年4月24日 409 | * (Conv.ahk) 後置シフト有効時に、3キー同時→3キー同時でロールオーバーができなかったのを直した 410 | * (Conv.ahk) 後置シフトの判定期限に確定できる時は、出力する 411 | 412 | ### 2021年4月20日 413 | * (IME.ahk) コメント追加 414 | * (Conv.ahk) 薙刀式に変換せずにそのまま通ってしまうことがあるのを修正(失敗) 415 | 416 | ### 2021年4月11日 417 | * (Conv.ahk) タスクトレイメニューに“縦書きモード”切り替えを追加 418 | 419 | ### 2021年4月8日 420 | * (Conv.ahk) 後置シフトが有効の時だけ、高精度タイマーを使うようにした 421 | 422 | ### 2021年3月14日 423 | * ファイル構成の変更 424 | * 時限式の後置シフトを実装(初期設定は通常シフト) 425 | 426 | Naginata.ahk 24行目に設定があります。 427 | たとえば後置シフトを60ミリ秒まで認める場合、 428 | ShiftDelay := 60 429 | とします。 430 | 431 | * 冗長シフトの削除 432 | 433 | Naginata.ahk 17行目を 434 | #Include KanaTable/OldNaginataTable.ahk 435 | と書き換えれば、以前のものと同じになります。 436 | このとき後置シフトにすると、どれかキーを上げるまで字が入らないことがあります。 437 | 438 | ### 2021年3月1日 439 | * (KanaTable.ahk) 内容は薙刀式創作者である大岡様の著作物のため、著作権表記を変更した。 440 | 441 | ### 2021年2月27日 442 | * (Naginata.ahk) キーを離してもシフトが残ることがあるのを修正 443 | 444 | ### 2021年2月26日 445 | * (KanaTable.ahk) Shift+ろ → _ 446 | 447 | ### 2021年2月24日 448 | * (init.ahk) × はユニコード文字でないことがわかったので、調整 449 | * (Naginata.ahk) ATOK に対応させるために出力タイミングを調整 450 | 451 | ### 2021年2月23日 452 | * (Naginata.ahk) スペースキーを押しながらのカーソルキー、Home、End、PageUp、PageDown をシフトキーを押しながらと同じ動作になるようにした 453 | * (init.ahk) ユニコード文字の前後でかな入力を確定する操作を入れた。「nn」→Control+Enter→BS 454 | * (init.ahk)(KanaTable.ahk) そのため、{確定} {固定} 機能を廃止 455 | 456 | ### 2021年2月21日 457 | * 編集モードでロールオーバーができない組み合わせを解消した 458 | * (init.ahk) {確定}機能を再実装。Ctrl+Enter を入力します。 459 | * (init.ahk) {固定}機能を実装。「n」→改行→BS を入力します。新MS-IMEでユニコード入力の前に使います。 460 | * (KanaTable.ahk) 記号入力で改行されすぎる不具合の再度の解消 461 | * (Naginata.ahk) 入力バッファの大きさを調節(キーを押す時は6個残す) 462 | 463 | すべてのファイルを入れ替えた場合のみ、修正が有効になります。 464 | 465 | ### 2021年2月19日 466 | * 同じキーを連打して取りこぼすことが、主に編集モードで起きていたのを解消した 467 | * Shift + 半角/全角 の動作を直した 468 | 469 | ### 2021年2月18日 470 | * 出力速度の最適化 471 | * ディレイの設定を不要にした。ある場合はこれまでと同様の動作、ない場合は自動設定される。 472 | 473 | ### 2021年2月13日 474 | * (Naginata.ahk) 入力部分の強化 475 | * (init.ahk) 定義をされているかなを元に戻せるようにした 476 | * (KanaTable.ahk) 一部かな定義の間違いを訂正。ディレイの修正 477 | 478 | ### 2021年2月12日 479 | * (Naginata.ahk) リセット機能の不完全な実装を解消 480 | * (KanaTable.ahk) 何も入力しない「Q」単打は、Windows が無反応だった頃の「かな」キーのスキャンコードを出力するように変更 481 | 482 | ### 2021年2月11日 483 | * (Naginata.ahk) リセット機能を強化 484 | * (init.ahk) {確定}機能の最初の実装 485 | * (KanaTable.ahk) 記号入力で改行されすぎる不具合の解消 486 | 487 | ### 2021年2月10日 488 | * (KanaTable.ahk) エクスプローラーの検索欄で入力が失敗する、3文字のローマ字のディレイを設定し直した 489 | 490 | ### 2021年2月9日 491 | * (Naginata.ahk) 例えば「う」押す→「スペース」押す→「う」離す、でスペースが発行されていたのを修正(大岡様ありがとうございました) 492 | * (Naginata.ahk) 3キー以上を限りなく同時に押すと、2文字までしか入力されないことがある、のを修正 493 | -------------------------------------------------------------------------------- /src/Sub/Naginata-Koyu.ahk: -------------------------------------------------------------------------------- 1 | ; Copyright 2021 Satoru NAKAYA 2 | ; 3 | ; Licensed under the Apache License, Version 2.0 (the "License"); 4 | ; you may not use this file except in compliance with the License. 5 | ; You may obtain a copy of the License at 6 | ; 7 | ; http://www.apache.org/licenses/LICENSE-2.0 8 | ; 9 | ; Unless required by applicable law or agreed to in writing, software 10 | ; distributed under the License is distributed on an "AS IS" BASIS, 11 | ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | ; See the License for the specific language governing permissions and 13 | ; limitations under the License. 14 | 15 | ; ********************************************************************** 16 | ; 固有名詞ショートカット関連 17 | ; ********************************************************************** 18 | 19 | ; ---------------------------------------------------------------------- 20 | ; サブルーチン 21 | ; ---------------------------------------------------------------------- 22 | 23 | ; 「固有名詞」画面のOKボタン 24 | KoyuOK: 25 | Gui, Submit 26 | KoyuWriteAndRegist(koyuNumber) ; 固有名詞ショートカットの書き込み・登録 27 | SettingLayout() ; 出力確定する定義に印をつける 28 | KoyuCancel: 29 | Gui, Destroy 30 | Return 31 | 32 | ; 「固有名詞」編集画面 33 | KoyuMenu: 34 | Gui, Destroy 35 | Gui, Add, Text, , 固有名詞ショートカット設定 36 | ; Gui, Add, Text, x+15, 〈セット%koyuNumber%〉 37 | Gui, Add, Tab2, xm+560 y+0 Section Buttons Center, 第一面|第二面 38 | 39 | ; E列 40 | Gui, Add, Text, xm+0 ys+25 W90 Center, 1 41 | Gui, Add, Text, xp+95 W92 Center, 2 42 | Gui, Add, Text, xp+95 W92 Center, 3 43 | Gui, Add, Text, xp+95 W92 Center, 4 44 | Gui, Add, Text, xp+95 W92 Center, 5 45 | Gui, Add, Text, xp+115 W92 Center, 6 46 | Gui, Add, Text, xp+95 W92 Center, 7 47 | Gui, Add, Text, xp+95 W92 Center, 8 48 | Gui, Add, Text, xp+95 W92 Center, 9 49 | Gui, Add, Text, xp+95 W92 Center, 0 50 | Gui, Add, Text, xp+95 W92 Center, - 51 | Gui, Add, Text, xp+95 W92 Center, ^ (US)= 52 | Gui, Add, Text, xp+95 W92 Center, \ (US)\ 53 | 54 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vE01, %E01% 55 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE02, %E02% 56 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE03, %E03% 57 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE04, %E04% 58 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE05, %E05% 59 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vE06, %E06% 60 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE07, %E07% 61 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE08, %E08% 62 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE09, %E09% 63 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE10, %E10% 64 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE11, %E11% 65 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE12, %E12% 66 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE13, %E13% 67 | 68 | ; D列 69 | Gui, Add, Text, xm+0 y+15 W92 Center, Q 70 | Gui, Add, Text, xp+95 W92 Center, W 71 | Gui, Add, Text, xp+95 W92 Center, E 72 | Gui, Add, Text, xp+95 W92 Center, R 73 | Gui, Add, Text, xp+95 W92 Center, T 74 | Gui, Add, Text, xp+115 W92 Center, Y 75 | Gui, Add, Text, xp+95 W92 Center, U 76 | Gui, Add, Text, xp+95 W92 Center, I 77 | Gui, Add, Text, xp+95 W92 Center, O 78 | Gui, Add, Text, xp+95 W92 Center, P 79 | Gui, Add, Text, xp+95 W92 Center, @ (US)[ 80 | Gui, Add, Text, xp+95 W92 Center, [ (US)] 81 | 82 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vD01, %D01% 83 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD02, %D02% 84 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD03, %D03% 85 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD04, %D04% 86 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD05, %D05% 87 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vD06, %D06% 88 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD07, %D07% 89 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD08, %D08% 90 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD09, %D09% 91 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD10, %D10% 92 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD11, %D11% 93 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD12, %D12% 94 | 95 | ; C列 96 | Gui, Add, Text, xm+0 y+15 W92 Center, A 97 | Gui, Add, Text, xp+95 W92 Center, S 98 | Gui, Add, Text, xp+95 W92 Center, D 99 | Gui, Add, Text, xp+95 W92 Center, F 100 | Gui, Add, Text, xp+95 W92 Center, G 101 | Gui, Add, Text, xp+115 W92 Center, H 102 | Gui, Add, Text, xp+95 W92 Center, J 103 | Gui, Add, Text, xp+95 W92 Center, K 104 | Gui, Add, Text, xp+95 W92 Center, L 105 | Gui, Add, Text, xp+95 W92 Center, `; 106 | Gui, Add, Text, xp+95 W92 Center, : (US)' 107 | Gui, Add, Text, xp+95 W92 Center, ] (US)`` 108 | 109 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vC01, %C01% 110 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC02, %C02% 111 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC03, %C03% 112 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC04, %C04% 113 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC05, %C05% 114 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vC06, %C06% 115 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC07, %C07% 116 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC08, %C08% 117 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC09, %C09% 118 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC10, %C10% 119 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC11, %C11% 120 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC12, %C12% 121 | 122 | ; B列 123 | Gui, Add, Text, xm+0 y+15 W92 Center, Z 124 | Gui, Add, Text, xp+95 W92 Center, X 125 | Gui, Add, Text, xp+95 W92 Center, C 126 | Gui, Add, Text, xp+95 W92 Center, V 127 | Gui, Add, Text, xp+95 W92 Center, B 128 | Gui, Add, Text, xp+115 W92 Center, N 129 | Gui, Add, Text, xp+95 W92 Center, M 130 | Gui, Add, Text, xp+95 W92 Center, `, 131 | Gui, Add, Text, xp+95 W92 Center, `. 132 | Gui, Add, Text, xp+95 W92 Center, / 133 | Gui, Add, Text, xp+95 W92 Center, _ (US)なし 134 | 135 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vB01, %B01% 136 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB02, %B02% 137 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB03, %B03% 138 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB04, %B04% 139 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB05, %B05% 140 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vB06, %B06% 141 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB07, %B07% 142 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB08, %B08% 143 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB09, %B09% 144 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB10, %B10% 145 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB11, %B11% 146 | 147 | 148 | Gui, Tab, 第二面 149 | ; E列 150 | Gui, Add, Text, xm+0 ys+25 W90 Center, 1 151 | Gui, Add, Text, xp+95 W92 Center, 2 152 | Gui, Add, Text, xp+95 W92 Center, 3 153 | Gui, Add, Text, xp+95 W92 Center, 4 154 | Gui, Add, Text, xp+95 W92 Center, 5 155 | Gui, Add, Text, xp+115 W92 Center, 6 156 | Gui, Add, Text, xp+95 W92 Center, 7 157 | Gui, Add, Text, xp+95 W92 Center, 8 158 | Gui, Add, Text, xp+95 W92 Center, 9 159 | Gui, Add, Text, xp+95 W92 Center, 0 160 | Gui, Add, Text, xp+95 W92 Center, - 161 | Gui, Add, Text, xp+95 W92 Center, ^ (US)= 162 | Gui, Add, Text, xp+95 W92 Center, \ (US)\ 163 | 164 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vE01S, %E01S% 165 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE02S, %E02S% 166 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE03S, %E03S% 167 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE04S, %E04S% 168 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE05S, %E05S% 169 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vE06S, %E06S% 170 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE07S, %E07S% 171 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE08S, %E08S% 172 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE09S, %E09S% 173 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE10S, %E10S% 174 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE11S, %E11S% 175 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE12S, %E12S% 176 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vE13S, %E13S% 177 | 178 | ; D列 179 | Gui, Add, Text, xm+0 y+15 W92 Center, Q 180 | Gui, Add, Text, xp+95 W92 Center, W 181 | Gui, Add, Text, xp+95 W92 Center, E 182 | Gui, Add, Text, xp+95 W92 Center, R 183 | Gui, Add, Text, xp+95 W92 Center, T 184 | Gui, Add, Text, xp+115 W92 Center, Y 185 | Gui, Add, Text, xp+95 W92 Center, U 186 | Gui, Add, Text, xp+95 W92 Center, I 187 | Gui, Add, Text, xp+95 W92 Center, O 188 | Gui, Add, Text, xp+95 W92 Center, P 189 | Gui, Add, Text, xp+95 W92 Center, @ (US)[ 190 | Gui, Add, Text, xp+95 W92 Center, [ (US)] 191 | 192 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vD01S, %D01S% 193 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD02S, %D02S% 194 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD03S, %D03S% 195 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD04S, %D04S% 196 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD05S, %D05S% 197 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vD06S, %D06S% 198 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD07S, %D07S% 199 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD08S, %D08S% 200 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD09S, %D09S% 201 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD10S, %D10S% 202 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD11S, %D11S% 203 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vD12S, %D12S% 204 | 205 | ; C列 206 | Gui, Add, Text, xm+0 y+15 W92 Center, A 207 | Gui, Add, Text, xp+95 W92 Center, S 208 | Gui, Add, Text, xp+95 W92 Center, D 209 | Gui, Add, Text, xp+95 W92 Center, F 210 | Gui, Add, Text, xp+95 W92 Center, G 211 | Gui, Add, Text, xp+115 W92 Center, H 212 | Gui, Add, Text, xp+95 W92 Center, J 213 | Gui, Add, Text, xp+95 W92 Center, K 214 | Gui, Add, Text, xp+95 W92 Center, L 215 | Gui, Add, Text, xp+95 W92 Center, `; 216 | Gui, Add, Text, xp+95 W92 Center, : (US)' 217 | Gui, Add, Text, xp+95 W92 Center, ] (US)`` 218 | 219 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vC01S, %C01S% 220 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC02S, %C02S% 221 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC03S, %C03S% 222 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC04S, %C04S% 223 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC05S, %C05S% 224 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vC06S, %C06S% 225 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC07S, %C07S% 226 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC08S, %C08S% 227 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC09S, %C09S% 228 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC10S, %C10S% 229 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC11S, %C11S% 230 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vC12S, %C12S% 231 | 232 | ; B列 233 | Gui, Add, Text, xm+0 y+15 W92 Center, Z 234 | Gui, Add, Text, xp+95 W92 Center, X 235 | Gui, Add, Text, xp+95 W92 Center, C 236 | Gui, Add, Text, xp+95 W92 Center, V 237 | Gui, Add, Text, xp+95 W92 Center, B 238 | Gui, Add, Text, xp+115 W92 Center, N 239 | Gui, Add, Text, xp+95 W92 Center, M 240 | Gui, Add, Text, xp+95 W92 Center, `, 241 | Gui, Add, Text, xp+95 W92 Center, `. 242 | Gui, Add, Text, xp+95 W92 Center, / 243 | Gui, Add, Text, xp+95 W92 Center, _ (US)なし 244 | 245 | Gui, Add, Edit, xm+0 y+2 W92 R2.4 -VScroll vB01S, %B01S% 246 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB02S, %B02S% 247 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB03S, %B03S% 248 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB04S, %B04S% 249 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB05S, %B05S% 250 | Gui, Add, Edit, xp+115 W92 R2.4 -VScroll vB06S, %B06S% 251 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB07S, %B07S% 252 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB08S, %B08S% 253 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB09S, %B09S% 254 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB10S, %B10S% 255 | Gui, Add, Edit, xp+95 W92 R2.4 -VScroll vB11S, %B11S% 256 | 257 | 258 | Gui, Tab 259 | Gui, Add, Button, W60 xm+566 y+15 GKoyuOK, OK 260 | Gui, Add, Button, W60 x+0 GKoyuCancel, Cancel 261 | Gui, Show 262 | Return 263 | 264 | 265 | ; ---------------------------------------------------------------------- 266 | ; 関数 267 | ; ---------------------------------------------------------------------- 268 | 269 | ; INIファイルからの読み出し(1個のみ) 270 | KoyuIniRead(number, keyName) ; (number: Int, keyName: String) -> String 271 | { 272 | global iniFilePath 273 | ; local i ; Int型 274 | ; , c, strChopped, strIn, strOut ; String型 275 | 276 | ; 設定ファイル読み込み 277 | IniRead, strIn, %iniFilePath%, Koyu%number%, %keyName%, "" 278 | 279 | strOut := "" 280 | strChopped := "" 281 | i := StrLen(strIn) 282 | While (i > 0) 283 | { 284 | c := SubStr(strIn, i, 1) 285 | If (c == "#") 286 | { 287 | ; サロゲートペア 288 | If (strChopped >= 0x10000 && strChopped <= 0x10FFFF) 289 | { 290 | strChopped -= 0x10000 291 | strOut := Chr(0xD800 + (strChopped >> 10)) . Chr(0xDC00 + (strChopped & 0x3FF)) . strOut 292 | } 293 | ; その他 294 | Else 295 | { 296 | strOut := Chr(strChopped) . strOut 297 | } 298 | strChopped := "" 299 | } 300 | Else 301 | strChopped := c . strChopped 302 | i-- 303 | } 304 | 305 | Return strOut 306 | } 307 | 308 | ; INIファイルへの書き出し(1個のみ) 309 | KoyuIniWrite(number, keyName, strIn:="") ; (number: Int, keyName: Srting, strIn: String) -> Void 310 | { 311 | global iniFilePath 312 | ; local i, len, c, strOut 313 | 314 | If (strIn == "") ; 空白の時は、キーを削除する 315 | IniDelete, %iniFilePath%, Koyu%number% , %keyName% 316 | Else 317 | { 318 | strOut := "" 319 | i := 1 320 | len := StrLen(strIn) 321 | While (i <= len) 322 | { 323 | c := Asc(SubStr(strIn, i, 1)) 324 | i++ 325 | strOut .= "#" . c 326 | } 327 | ; 設定ファイル書き込み 328 | IniWrite, %strOut%, %iniFilePath%, Koyu%number%, %keyName% 329 | } 330 | Return 331 | } 332 | 333 | ; 固有名詞ショートカットの読み込み・登録 334 | KoyuReadAndRegist(number) ; (number: Int) -> Void 335 | { 336 | #IncludeAgain %A_ScriptDir%/Sub/Naginata-Koyu_h.ahk 337 | 338 | E01 := KoyuIniRead(number, "E01") 339 | E02 := KoyuIniRead(number, "E02") 340 | E03 := KoyuIniRead(number, "E03") 341 | E04 := KoyuIniRead(number, "E04") 342 | E05 := KoyuIniRead(number, "E05") 343 | E06 := KoyuIniRead(number, "E06") 344 | E07 := KoyuIniRead(number, "E07") 345 | E08 := KoyuIniRead(number, "E08") 346 | E09 := KoyuIniRead(number, "E09") 347 | E10 := KoyuIniRead(number, "E10") 348 | E11 := KoyuIniRead(number, "E11") 349 | E12 := KoyuIniRead(number, "E12") 350 | E13 := KoyuIniRead(number, "E13") 351 | 352 | D01 := KoyuIniRead(number, "D01") 353 | D02 := KoyuIniRead(number, "D02") 354 | D03 := KoyuIniRead(number, "D03") 355 | D04 := KoyuIniRead(number, "D04") 356 | D05 := KoyuIniRead(number, "D05") 357 | D06 := KoyuIniRead(number, "D06") 358 | D07 := KoyuIniRead(number, "D07") 359 | D08 := KoyuIniRead(number, "D08") 360 | D09 := KoyuIniRead(number, "D09") 361 | D10 := KoyuIniRead(number, "D10") 362 | D11 := KoyuIniRead(number, "D11") 363 | D12 := KoyuIniRead(number, "D12") 364 | 365 | C01 := KoyuIniRead(number, "C01") 366 | C02 := KoyuIniRead(number, "C02") 367 | C03 := KoyuIniRead(number, "C03") 368 | C04 := KoyuIniRead(number, "C04") 369 | C05 := KoyuIniRead(number, "C05") 370 | C06 := KoyuIniRead(number, "C06") 371 | C07 := KoyuIniRead(number, "C07") 372 | C08 := KoyuIniRead(number, "C08") 373 | C09 := KoyuIniRead(number, "C09") 374 | C10 := KoyuIniRead(number, "C10") 375 | C11 := KoyuIniRead(number, "C11") 376 | C12 := KoyuIniRead(number, "C12") 377 | 378 | B01 := KoyuIniRead(number, "B01") 379 | B02 := KoyuIniRead(number, "B02") 380 | B03 := KoyuIniRead(number, "B03") 381 | B04 := KoyuIniRead(number, "B04") 382 | B05 := KoyuIniRead(number, "B05") 383 | B06 := KoyuIniRead(number, "B06") 384 | B07 := KoyuIniRead(number, "B07") 385 | B08 := KoyuIniRead(number, "B08") 386 | B09 := KoyuIniRead(number, "B09") 387 | B10 := KoyuIniRead(number, "B10") 388 | B11 := KoyuIniRead(number, "B11") 389 | 390 | E01S := KoyuIniRead(number, "E01S") 391 | E02S := KoyuIniRead(number, "E02S") 392 | E03S := KoyuIniRead(number, "E03S") 393 | E04S := KoyuIniRead(number, "E04S") 394 | E05S := KoyuIniRead(number, "E05S") 395 | E06S := KoyuIniRead(number, "E06S") 396 | E07S := KoyuIniRead(number, "E07S") 397 | E08S := KoyuIniRead(number, "E08S") 398 | E09S := KoyuIniRead(number, "E09S") 399 | E10S := KoyuIniRead(number, "E10S") 400 | E11S := KoyuIniRead(number, "E11S") 401 | E12S := KoyuIniRead(number, "E12S") 402 | E13S := KoyuIniRead(number, "E13S") 403 | 404 | D01S := KoyuIniRead(number, "D01S") 405 | D02S := KoyuIniRead(number, "D02S") 406 | D03S := KoyuIniRead(number, "D03S") 407 | D04S := KoyuIniRead(number, "D04S") 408 | D05S := KoyuIniRead(number, "D05S") 409 | D06S := KoyuIniRead(number, "D06S") 410 | D07S := KoyuIniRead(number, "D07S") 411 | D08S := KoyuIniRead(number, "D08S") 412 | D09S := KoyuIniRead(number, "D09S") 413 | D10S := KoyuIniRead(number, "D10S") 414 | D11S := KoyuIniRead(number, "D11S") 415 | D12S := KoyuIniRead(number, "D12S") 416 | 417 | C01S := KoyuIniRead(number, "C01S") 418 | C02S := KoyuIniRead(number, "C02S") 419 | C03S := KoyuIniRead(number, "C03S") 420 | C04S := KoyuIniRead(number, "C04S") 421 | C05S := KoyuIniRead(number, "C05S") 422 | C06S := KoyuIniRead(number, "C06S") 423 | C07S := KoyuIniRead(number, "C07S") 424 | C08S := KoyuIniRead(number, "C08S") 425 | C09S := KoyuIniRead(number, "C09S") 426 | C10S := KoyuIniRead(number, "C10S") 427 | C11S := KoyuIniRead(number, "C11S") 428 | C12S := KoyuIniRead(number, "C12S") 429 | 430 | B01S := KoyuIniRead(number, "B01S") 431 | B02S := KoyuIniRead(number, "B02S") 432 | B03S := KoyuIniRead(number, "B03S") 433 | B04S := KoyuIniRead(number, "B04S") 434 | B05S := KoyuIniRead(number, "B05S") 435 | B06S := KoyuIniRead(number, "B06S") 436 | B07S := KoyuIniRead(number, "B07S") 437 | B08S := KoyuIniRead(number, "B08S") 438 | B09S := KoyuIniRead(number, "B09S") 439 | B10S := KoyuIniRead(number, "B10S") 440 | B11S := KoyuIniRead(number, "B11S") 441 | 442 | KoyuRegist() ; 固有名詞ショートカットの登録 443 | Return 444 | } 445 | 446 | ; 固有名詞ショートカットの書き込み・登録 447 | KoyuWriteAndRegist(number) ; (number: Int) -> Void 448 | { 449 | #IncludeAgain %A_ScriptDir%/Sub/Naginata-Koyu_h.ahk 450 | 451 | ; 固有名詞ショートカットの書き出し 452 | KoyuIniWrite(number, "E01", E01) 453 | KoyuIniWrite(number, "E02", E02) 454 | KoyuIniWrite(number, "E03", E03) 455 | KoyuIniWrite(number, "E04", E04) 456 | KoyuIniWrite(number, "E05", E05) 457 | KoyuIniWrite(number, "E06", E06) 458 | KoyuIniWrite(number, "E07", E07) 459 | KoyuIniWrite(number, "E08", E08) 460 | KoyuIniWrite(number, "E09", E09) 461 | KoyuIniWrite(number, "E10", E10) 462 | KoyuIniWrite(number, "E11", E11) 463 | KoyuIniWrite(number, "E12", E12) 464 | KoyuIniWrite(number, "E13", E13) 465 | 466 | KoyuIniWrite(number, "D01", D01) 467 | KoyuIniWrite(number, "D02", D02) 468 | KoyuIniWrite(number, "D03", D03) 469 | KoyuIniWrite(number, "D04", D04) 470 | KoyuIniWrite(number, "D05", D05) 471 | KoyuIniWrite(number, "D06", D06) 472 | KoyuIniWrite(number, "D07", D07) 473 | KoyuIniWrite(number, "D08", D08) 474 | KoyuIniWrite(number, "D09", D09) 475 | KoyuIniWrite(number, "D10", D10) 476 | KoyuIniWrite(number, "D11", D11) 477 | KoyuIniWrite(number, "D12", D12) 478 | 479 | KoyuIniWrite(number, "C01", C01) 480 | KoyuIniWrite(number, "C02", C02) 481 | KoyuIniWrite(number, "C03", C03) 482 | KoyuIniWrite(number, "C04", C04) 483 | KoyuIniWrite(number, "C05", C05) 484 | KoyuIniWrite(number, "C06", C06) 485 | KoyuIniWrite(number, "C07", C07) 486 | KoyuIniWrite(number, "C08", C08) 487 | KoyuIniWrite(number, "C09", C09) 488 | KoyuIniWrite(number, "C10", C10) 489 | KoyuIniWrite(number, "C11", C11) 490 | KoyuIniWrite(number, "C12", C12) 491 | 492 | KoyuIniWrite(number, "B01", B01) 493 | KoyuIniWrite(number, "B02", B02) 494 | KoyuIniWrite(number, "B03", B03) 495 | KoyuIniWrite(number, "B04", B04) 496 | KoyuIniWrite(number, "B05", B05) 497 | KoyuIniWrite(number, "B06", B06) 498 | KoyuIniWrite(number, "B07", B07) 499 | KoyuIniWrite(number, "B08", B08) 500 | KoyuIniWrite(number, "B09", B09) 501 | KoyuIniWrite(number, "B10", B10) 502 | KoyuIniWrite(number, "B11", B11) 503 | 504 | KoyuIniWrite(number, "E01S", E01S) 505 | KoyuIniWrite(number, "E02S", E02S) 506 | KoyuIniWrite(number, "E03S", E03S) 507 | KoyuIniWrite(number, "E04S", E04S) 508 | KoyuIniWrite(number, "E05S", E05S) 509 | KoyuIniWrite(number, "E06S", E06S) 510 | KoyuIniWrite(number, "E07S", E07S) 511 | KoyuIniWrite(number, "E08S", E08S) 512 | KoyuIniWrite(number, "E09S", E09S) 513 | KoyuIniWrite(number, "E10S", E10S) 514 | KoyuIniWrite(number, "E11S", E11S) 515 | KoyuIniWrite(number, "E12S", E12S) 516 | KoyuIniWrite(number, "E13S", E13S) 517 | 518 | KoyuIniWrite(number, "D01S", D01S) 519 | KoyuIniWrite(number, "D02S", D02S) 520 | KoyuIniWrite(number, "D03S", D03S) 521 | KoyuIniWrite(number, "D04S", D04S) 522 | KoyuIniWrite(number, "D05S", D05S) 523 | KoyuIniWrite(number, "D06S", D06S) 524 | KoyuIniWrite(number, "D07S", D07S) 525 | KoyuIniWrite(number, "D08S", D08S) 526 | KoyuIniWrite(number, "D09S", D09S) 527 | KoyuIniWrite(number, "D10S", D10S) 528 | KoyuIniWrite(number, "D11S", D11S) 529 | KoyuIniWrite(number, "D12S", D12S) 530 | 531 | KoyuIniWrite(number, "C01S", C01S) 532 | KoyuIniWrite(number, "C02S", C02S) 533 | KoyuIniWrite(number, "C03S", C03S) 534 | KoyuIniWrite(number, "C04S", C04S) 535 | KoyuIniWrite(number, "C05S", C05S) 536 | KoyuIniWrite(number, "C06S", C06S) 537 | KoyuIniWrite(number, "C07S", C07S) 538 | KoyuIniWrite(number, "C08S", C08S) 539 | KoyuIniWrite(number, "C09S", C09S) 540 | KoyuIniWrite(number, "C10S", C10S) 541 | KoyuIniWrite(number, "C11S", C11S) 542 | KoyuIniWrite(number, "C12S", C12S) 543 | 544 | KoyuIniWrite(number, "B01S", B01S) 545 | KoyuIniWrite(number, "B02S", B02S) 546 | KoyuIniWrite(number, "B03S", B03S) 547 | KoyuIniWrite(number, "B04S", B04S) 548 | KoyuIniWrite(number, "B05S", B05S) 549 | KoyuIniWrite(number, "B06S", B06S) 550 | KoyuIniWrite(number, "B07S", B07S) 551 | KoyuIniWrite(number, "B08S", B08S) 552 | KoyuIniWrite(number, "B09S", B09S) 553 | KoyuIniWrite(number, "B10S", B10S) 554 | KoyuIniWrite(number, "B11S", B11S) 555 | 556 | KoyuRegist() ; 固有名詞ショートカットの登録 557 | Return 558 | } 559 | -------------------------------------------------------------------------------- /src/KanaTable/Naginata_v15.ahk: -------------------------------------------------------------------------------- 1 | ; ********************************************************************** 2 | ; 【薙刀式】v15fix版、発表 3 | ; http://oookaworks.seesaa.net/article/500180437.html#gsc.tab=0 4 | ; (2023年7月28日)より 5 | ; 6 | ; DvorakJ版からの変更部分: 7 | ; 冗長シフトを削除 8 | ; 編集モードD+F+H、J+K+Q、J+K+G、J+K+V、J+K+Bは変換中かどうかを問わない 9 | ; 編集モードM+Comma+W、M+Comma+S、M+Comma+F、M+Cooma+B の動作後にはクリップボードは空になる。ダミーの空白も入らない。 10 | ; 固有名詞ショートカットの第二面(スペース押下)を追加 11 | ; 固有名詞ショートカットを最大5組を切り替えられる。切り替えは E+R+1 で1番、E+R+2 で2番、など。 12 | ; Q+W に横書きモード、Q+A に縦書きモード を割り当て 13 | ; ********************************************************************** 14 | 15 | #Include %A_ScriptDir%/KanaTable/StandardLayout.ahk ; キーボード初期配列 16 | 17 | ; ---------------------------------------------------------------------- 18 | ; 英数/かな配列の定義ファイル 19 | ; 20 | ;【縦書き用だけ書き、横書き用は自動変換する方法】 21 | ; 22 | ; 例: SetKana( KC_Q | KC_L | KC_SPC ,"xwa" , R) ; (ゎ) 23 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~ ~ ~~~~ 24 | ; かな定義 スペース+Q+L 縦書き用の出力 ↑ コメント 25 | ; | 26 | ; リピートあり(NRがリピートなし) 27 | ; 28 | ; 例: SetEisu( KC_H | KC_J ,"{vkF2 2}" ) ; IME ON 29 | ; ~~~~~~~ 30 | ; 英数定義 31 | ; 32 | ; 【縦書き用と横書き用を分けて書く方法】 33 | ; 34 | ; 例: SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 35 | ; 例: SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 36 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 37 | ; かな定義 J+K+Z 縦書き用の出力 横書き用の出力 38 | ; 英数定義 39 | ; 40 | ; ※ "(){確定}" はIMEに合わせ、"{一時半角}()" は半角になり、全角で定義した "()" は全角になります 41 | ; 42 | ; ※再読み込みか、再起動で有効になります 43 | ; ※全角空白の違いが見えるエディタを使うことをおすすめします 44 | ; ※UTF-8(BOM付)で保存してください 45 | ; ※順序はグループ内で自由です。同じキーの組み合わせは、後の方が有効になります。 46 | ; ---------------------------------------------------------------------- 47 | 48 | ; 薙刀式配列固有名詞ショートカットを実装するためのルーチン 49 | #Include %A_ScriptDir%/Sub/Naginata-Koyu.ahk 50 | ; 特別出力 51 | #Include %A_ScriptDir%/KanaTable/SendSP.ahk 52 | 53 | ; かな配列読み込み 54 | ReadLayout() ; () -> Void 55 | { 56 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 57 | global layoutName, koyuNumber 58 | 59 | layoutName := "薙刀式配列`nv15fix版" 60 | 61 | ReadStandardLayout() ; キーボード初期配列を読み込み 62 | 63 | ; ----------------------------------------- 64 | ; 別名登録 Int64型 65 | ; ----------------------------------------- 66 | AL_ヴ := AL_小 := KC_Q 67 | AL_き := AL_ぬ := KC_W 68 | AL_て := AL_り := KC_E 69 | AL_し := AL_ね := KC_R 70 | AL_左 := KC_T 71 | AL_右 := KC_Y 72 | AL_BS := AL_さ := KC_U 73 | AL_る := AL_よ := KC_I 74 | AL_す := AL_え := KC_O 75 | AL_へ := AL_ゆ := KC_P 76 | 77 | AL_ろ := AL_せ := KC_A 78 | AL_け := AL_め := KC_S 79 | AL_と := AL_に := KC_D 80 | AL_か := AL_ま := AL_左濁 := KC_F 81 | AL_っ := AL_ち := KC_G 82 | AL_く := AL_や := KC_H 83 | AL_あ := AL_の := AL_右濁 := KC_J 84 | AL_い := AL_も := KC_K 85 | AL_う := AL_つ := KC_L 86 | AL_ー := AL_ふ := KC_SCLN 87 | 88 | AL_ほ := KC_Z 89 | AL_ひ := KC_X 90 | AL_は := AL_を := KC_C 91 | AL_こ := AL_、 := AL_左半 := KC_V 92 | AL_そ := AL_み := KC_B 93 | AL_た := AL_お := KC_N 94 | AL_な := AL_。 := AL_右半 := KC_M 95 | AL_ん := AL_む := KC_COMM 96 | AL_ら := AL_わ := KC_DOT 97 | AL_れ := KC_SLSH 98 | ; ----------------------------------------- 99 | 100 | 101 | ;********************************************** 102 | ;********************************************** 103 | ; メイン部分; 単打とシフト 104 | ;********************************************** 105 | ;********************************************** 106 | 107 | ; 単打 108 | kanaGroup := "" ; グループなし 109 | SetKana( AL_ヴ ,"vu" ) ; ヴ 110 | SetKana( AL_き ,"ki" ) ; き 111 | SetKana( AL_て ,"te" ) ; て 112 | SetKana( AL_し ,"si" ) ; し 113 | SetKana( AL_左 ,"{←}" , R) ; 左 114 | SetKana( AL_右 ,"{→}" , R) ; 右 115 | SetKana( AL_BS ,"{BS}" , R) ; 前文字削除 116 | SetKana( AL_る ,"ru" ) ; る 117 | SetKana( AL_す ,"su" ) ; す 118 | SetKana( AL_へ ,"he" ) ; へ 119 | SetKana( AL_ろ ,"ro" ) ; ろ 120 | SetKana( AL_け ,"ke" ) ; け 121 | SetKana( AL_と ,"to" ) ; と 122 | SetKana( AL_か ,"ka" ) ; か 123 | SetKana( AL_っ ,"xtu" ) ; (っ) 124 | SetKana( AL_く ,"ku" ) ; く 125 | SetKana( AL_あ ,"a" ) ; あ 126 | SetKana( AL_い ,"i" ) ; い 127 | SetKana( AL_う ,"u" ) ; う 128 | SetKana( AL_ー ,"-" ) ; ー 129 | SetKana( AL_ほ ,"ho" ) ; ほ 130 | SetKana( AL_ひ ,"hi" ) ; ひ 131 | SetKana( AL_は ,"ha" ) ; は 132 | SetKana( AL_こ ,"ko" ) ; こ 133 | SetKana( AL_そ ,"so" ) ; そ 134 | SetKana( AL_た ,"ta" ) ; た 135 | SetKana( AL_な ,"na" ) ; な 136 | SetKana( AL_ん ,"nn" ) ; ん 137 | SetKana( AL_ら ,"ra" ) ; ら 138 | SetKana( AL_れ ,"re" ) ; れ 139 | 140 | ; センターシフト 141 | SetKana( AL_ヴ | KC_SPC ,"vu" ) ; ヴ 142 | SetKana( AL_ぬ | KC_SPC ,"nu" ) ; ぬ 143 | SetKana( AL_り | KC_SPC ,"ri" ) ; り 144 | SetKana( AL_ね | KC_SPC ,"ne" ) ; ね 145 | SetKana( AL_左 | KC_SPC ,"+{←}" , R) ; シフト + 左 146 | SetKana( AL_右 | KC_SPC ,"+{→}" , R) ; シフト + 右 147 | SetKana( AL_さ | KC_SPC ,"sa" ) ; さ 148 | SetKana( AL_よ | KC_SPC ,"yo" ) ; よ 149 | SetKana( AL_え | KC_SPC ,"e" ) ; え 150 | SetKana( AL_ゆ | KC_SPC ,"yu" ) ; ゆ 151 | SetKana( AL_せ | KC_SPC ,"se" ) ; せ 152 | SetKana( AL_め | KC_SPC ,"me" ) ; め 153 | SetKana( AL_に | KC_SPC ,"ni" ) ; に 154 | SetKana( AL_ま | KC_SPC ,"ma" ) ; ま 155 | SetKana( AL_ち | KC_SPC ,"ti" ) ; ち 156 | SetKana( AL_や | KC_SPC ,"ya" ) ; や 157 | SetKana( AL_の | KC_SPC ,"no" ) ; の 158 | SetKana( AL_も | KC_SPC ,"mo" ) ; も 159 | SetKana( AL_つ | KC_SPC ,"tu" ) ; つ 160 | SetKana( AL_ふ | KC_SPC ,"hu" ) ; ふ 161 | SetKana( AL_ほ | KC_SPC ,"ho" ) ; ほ 162 | SetKana( AL_ひ | KC_SPC ,"hi" ) ; ひ 163 | SetKana( AL_を | KC_SPC ,"wo" ) ; を 164 | SetKana( AL_、 | KC_SPC ,",{確定}" ) ; 、 165 | SetKana( AL_み | KC_SPC ,"mi" ) ; み 166 | SetKana( AL_お | KC_SPC ,"o" ) ; お 167 | SetKana( AL_。 | KC_SPC ,".{確定}" ) ; 。 168 | SetKana( AL_む | KC_SPC ,"mu" ) ; む 169 | SetKana( AL_わ | KC_SPC ,"wa" ) ; わ 170 | SetKana( AL_れ | KC_SPC ,"re" ) ; れ 171 | 172 | ;********************************************** 173 | ;********************************************** 174 | ; 同時押し; 濁音、半濁音、小書き、拗音、外来音 175 | ;********************************************** 176 | ;********************************************** 177 | 178 | ;**************************** 179 | ; 濁音: 逆手の人差指中段 180 | ; 連続シフト中も有効 181 | 182 | ; 右手の濁音 183 | kanaGroup := "DA" 184 | SetKana( AL_左濁 | AL_さ ,"za" ) ; ざ 185 | SetKana( AL_左濁 | AL_す ,"zu" ) ; ず 186 | SetKana( AL_左濁 | AL_へ ,"be" ) ; べ 187 | SetKana( AL_左濁 | AL_く ,"gu" ) ; ぐ 188 | SetKana( AL_左濁 | AL_つ ,"du" ) ; づ 189 | SetKana( AL_左濁 | AL_ふ ,"bu" ) ; ぶ 190 | SetKana( AL_左濁 | AL_た ,"da" ) ; だ 191 | 192 | ; 左手の濁音 193 | SetKana( AL_右濁 | AL_き ,"gi" ) ; ぎ 194 | SetKana( AL_右濁 | AL_て ,"de" ) ; で 195 | SetKana( AL_右濁 | AL_し ,"zi" ) ; じ 196 | SetKana( AL_右濁 | AL_せ ,"ze" ) ; ぜ 197 | SetKana( AL_右濁 | AL_け ,"ge" ) ; げ 198 | SetKana( AL_右濁 | AL_と ,"do" ) ; ど 199 | SetKana( AL_右濁 | AL_か ,"ga" ) ; が 200 | SetKana( AL_右濁 | AL_ち ,"di" ) ; ぢ 201 | SetKana( AL_右濁 | AL_ほ ,"bo" ) ; ぼ 202 | SetKana( AL_右濁 | AL_ひ ,"bi" ) ; び 203 | SetKana( AL_右濁 | AL_は ,"ba" ) ; ば 204 | SetKana( AL_右濁 | AL_こ ,"go" ) ; ご 205 | SetKana( AL_右濁 | AL_そ ,"zo" ) ; ぞ 206 | 207 | ;**************************** 208 | ; 半濁音: 逆手の下段人差し指 209 | ; 連続シフト中も有効 210 | 211 | ; 右の半濁音 212 | kanaGroup := "HA" 213 | SetKana( AL_左半 | AL_へ ,"pe" ) ; ぺ 214 | SetKana( AL_左半 | AL_ふ ,"pu" ) ; ぷ 215 | 216 | ; 左の半濁音 217 | SetKana( AL_右半 | AL_ほ ,"po" ) ; ぽ 218 | SetKana( AL_右半 | AL_ひ ,"pi" ) ; ぴ 219 | SetKana( AL_右半 | AL_は ,"pa" ) ; ぱ 220 | 221 | ;**************************** 222 | ; 小書き: Qと同時押し 223 | kanaGroup := "KO" 224 | SetKana( AL_小 | AL_よ ,"xyo" ) ; (ょ) 225 | SetKana( AL_小 | AL_え ,"xe" ) ; (ぇ) 226 | SetKana( AL_小 | AL_ゆ ,"xyu" ) ; (ゅ) 227 | SetKana( AL_小 | AL_や ,"xya" ) ; (ゃ) 228 | SetKana( AL_小 | AL_あ ,"xa" ) ; (ぁ) 229 | SetKana( AL_小 | AL_い ,"xi" ) ; (ぃ) 230 | SetKana( AL_小 | AL_う ,"xu" ) ; (ぅ) 231 | SetKana( AL_小 | AL_お ,"xo" ) ; (ぉ) 232 | SetKana( AL_小 | AL_わ ,"xwa" ) ; (ゎ) 233 | 234 | ;********************************************** 235 | ; 拗音、外来音(3キー同時を含む) 236 | ;********************************************** 237 | ;**************************** 238 | ; 清音拗音; やゆよと同時押しで、ゃゅょが付く 239 | kanaGroup := "" ; グループなし 240 | SetKana( AL_き | AL_や ,"kya" ) ; きゃ 241 | SetKana( AL_り | AL_や ,"rya" ) ; りゃ 242 | SetKana( AL_し | AL_や ,"sya" ) ; しゃ 243 | SetKana( AL_に | AL_や ,"nya" ) ; にゃ 244 | SetKana( AL_ち | AL_や ,"tya" ) ; ちゃ 245 | SetKana( AL_ひ | AL_や ,"hya" ) ; ひゃ 246 | SetKana( AL_み | AL_や ,"mya" ) ; みゃ 247 | 248 | SetKana( AL_き | AL_ゆ ,"kyu" ) ; きゅ 249 | SetKana( AL_り | AL_ゆ ,"ryu" ) ; りゅ 250 | SetKana( AL_し | AL_ゆ ,"syu" ) ; しゅ 251 | SetKana( AL_に | AL_ゆ ,"nyu" ) ; にゅ 252 | SetKana( AL_ち | AL_ゆ ,"tyu" ) ; ちゅ 253 | SetKana( AL_ひ | AL_ゆ ,"hyu" ) ; ひゅ 254 | SetKana( AL_み | AL_ゆ ,"myu" ) ; みゅ 255 | 256 | SetKana( AL_き | AL_よ ,"kyo" ) ; きょ 257 | SetKana( AL_り | AL_よ ,"ryo" ) ; りょ 258 | SetKana( AL_し | AL_よ ,"syo" ) ; しょ 259 | SetKana( AL_に | AL_よ ,"nyo" ) ; にょ 260 | SetKana( AL_ち | AL_よ ,"tyo" ) ; ちょ 261 | SetKana( AL_ひ | AL_よ ,"hyo" ) ; ひょ 262 | SetKana( AL_み | AL_よ ,"myo" ) ; みょ 263 | 264 | ;**************************** 265 | ; 濁音拗音 266 | kanaGroup := "DA" 267 | SetKana( AL_右濁 | AL_き | AL_や ,"gya" ) ; ぎゃ 268 | SetKana( AL_右濁 | AL_し | AL_や ,"ja" ) ; じゃ 269 | SetKana( AL_右濁 | AL_ち | AL_や ,"dya" ) ; ぢゃ 270 | SetKana( AL_右濁 | AL_ひ | AL_や ,"bya" ) ; びゃ 271 | 272 | SetKana( AL_右濁 | AL_き | AL_ゆ ,"gyu" ) ; ぎゅ 273 | SetKana( AL_右濁 | AL_し | AL_ゆ ,"ju" ) ; じゅ 274 | SetKana( AL_右濁 | AL_ち | AL_ゆ ,"dyu" ) ; ぢゅ 275 | SetKana( AL_右濁 | AL_ひ | AL_ゆ ,"byu" ) ; びゅ 276 | 277 | SetKana( AL_右濁 | AL_き | AL_よ ,"gyo" ) ; ぎょ 278 | SetKana( AL_右濁 | AL_し | AL_よ ,"jo" ) ; じょ 279 | SetKana( AL_右濁 | AL_ち | AL_よ ,"dyo" ) ; ぢょ 280 | SetKana( AL_右濁 | AL_ひ | AL_よ ,"byo" ) ; びょ 281 | 282 | ;**************************** 283 | ; 半濁音拗音 284 | kanaGroup := "HA" 285 | SetKana( AL_右半 | AL_ひ | AL_よ ,"pyo" ) ; ぴょ 286 | SetKana( AL_右半 | AL_ひ | AL_ゆ ,"pyu" ) ; ぴゅ 287 | SetKana( AL_右半 | AL_ひ | AL_や ,"pya" ) ; ぴゃ 288 | 289 | ;************************************* 290 | ; 外来音は3キー同時押しに統一しました 291 | ;************************************* 292 | ; 清音外来音は半濁音キーと使用二音の三音同時 293 | ; 濁音外来音は濁音キーと使用二音の三音同時 294 | ;**************************** 295 | 296 | ; テ; ティテュディデュ 297 | kanaGroup := "HA" 298 | SetKana( AL_右半 | AL_て | AL_ゆ ,"thu" ) ; てゅ 299 | SetKana( AL_右半 | AL_て | AL_い ,"thi" ) ; てぃ 300 | 301 | kanaGroup := "DA" 302 | SetKana( AL_右濁 | AL_て | AL_ゆ ,"dhu" ) ; でゅ 303 | SetKana( AL_右濁 | AL_て | AL_い ,"dhi" ) ; でぃ 304 | 305 | ; ト; トゥドゥ 306 | kanaGroup := "HA" 307 | SetKana( AL_右半 | AL_と | AL_う ,"twu" ) ; とぅ 308 | kanaGroup := "DA" 309 | SetKana( AL_右濁 | AL_と | AL_う ,"dwu" ) ; どぅ 310 | 311 | ; シチ ェ; シェジェチェヂェ 312 | kanaGroup := "HA" 313 | SetKana( AL_右半 | AL_し | AL_え ,"sye" ) ; しぇ 314 | SetKana( AL_右半 | AL_ち | AL_え ,"tye" ) ; ちぇ 315 | kanaGroup := "DA" 316 | SetKana( AL_右濁 | AL_し | AL_え ,"je" ) ; じぇ 317 | SetKana( AL_右濁 | AL_ち | AL_え ,"dye" ) ; ぢぇ 318 | 319 | ;**************************** 320 | ; フ; ファフィフェフォフュ 321 | kanaGroup := "HA" 322 | SetKana( AL_左半 | AL_ふ | AL_え ,"fe" ) ; ふぇ 323 | SetKana( AL_左半 | AL_ふ | AL_ゆ ,"fyu" ) ; ふゅ 324 | SetKana( AL_左半 | AL_ふ | AL_あ ,"fa" ) ; ふぁ 325 | SetKana( AL_左半 | AL_ふ | AL_い ,"fi" ) ; ふぃ 326 | SetKana( AL_左半 | AL_ふ | AL_お ,"fo" ) ; ふぉ 327 | 328 | ; ヴ; ヴァヴィヴェヴォヴュ 329 | SetKana( AL_右半 | AL_ヴ | AL_え ,"ve" ) ; ヴぇ 330 | SetKana( AL_右半 | AL_ヴ | AL_ゆ ,"vuxyu" ) ; ヴゅ 331 | SetKana( AL_右半 | AL_ヴ | AL_あ ,"va" ) ; ヴぁ 332 | SetKana( AL_右半 | AL_ヴ | AL_い ,"vi" ) ; ヴぃ 333 | SetKana( AL_右半 | AL_ヴ | AL_お ,"vo" ) ; ヴぉ 334 | 335 | ; う; ウィウェウォ い;イェ 336 | SetKana( AL_左半 | AL_う | AL_え ,"we" ) ; うぇ 337 | SetKana( AL_左半 | AL_う | AL_い ,"wi" ) ; うぃ 338 | SetKana( AL_左半 | AL_う | AL_お ,"uxo" ) ; うぉ 339 | 340 | SetKana( AL_左半 | AL_い | AL_え ,"ye" ) ; いぇ 341 | 342 | ; ツァ行はウァ行と被るが、ツァだけ被らないので定義 343 | SetKana( AL_左半 | AL_つ | AL_あ ,"tsa" ) ; つぁ 344 | 345 | ; ク; クァクィクェクォ 346 | SetKana( AL_左半 | AL_く | AL_え ,"kuxe" ) ; くぇ 347 | SetKana( AL_左半 | AL_く | AL_あ ,"kuxa" ) ; くぁ 348 | SetKana( AL_左半 | AL_く | AL_い ,"kuxi" ) ; くぃ 349 | SetKana( AL_左半 | AL_く | AL_お ,"kuxo" ) ; くぉ 350 | SetKana( AL_左半 | AL_く | AL_わ ,"kuxwa" ) ; くゎ 351 | 352 | ; グ; グァグィグェグォ 353 | kanaGroup := "DA" 354 | SetKana( AL_左濁 | AL_く | AL_え ,"guxe" ) ; ぐぇ 355 | SetKana( AL_左濁 | AL_く | AL_あ ,"gwa" ) ; ぐぁ 356 | SetKana( AL_左濁 | AL_く | AL_い ,"guxi" ) ; ぐぃ 357 | SetKana( AL_左濁 | AL_く | AL_お ,"guxo" ) ; ぐぉ 358 | SetKana( AL_左濁 | AL_く | AL_わ ,"guxwa" ) ; ぐゎ 359 | 360 | ;**************************** 361 | ; IME ON/OFF 362 | ; HJ: ON / FG: OFF 363 | ; 無変換{vkF2sc070} ひらがなカタカナ{vk1Dsc07B} 364 | ; LANG1{vkF2} LANG2{vk1D} 365 | kanaGroup := "" ; グループなし 366 | SetKana( KC_H | KC_J ,"{ひらがな}" , NR) ; IME ON 367 | SetEisu( KC_H | KC_J ,"{ひらがな}" , NR) 368 | SetKana( KC_F | KC_G ,"{ひらがな}{全角}" , NR) ; IME OFF 369 | SetEisu( KC_F | KC_G ,"{ひらがな}{全角}" , NR) ; (ATOK)英語入力ON は "{ひらがな}{英数}") 370 | 371 | ; Enter 372 | ; VとMの同時押し 373 | kanaGroup := "HA" 374 | SetKana( KC_V | KC_M ,"{Enter}" ) ; 行送り 375 | SetEisu( KC_V | KC_M ,"{Enter}" ) ; 行送り 376 | 377 | ;*********************************** 378 | ;*********************************** 379 | ; 編集モード、固有名詞ショートカット 380 | ;*********************************** 381 | ;*********************************** 382 | 383 | ; 編集モード1 384 | ; 中段人差し指+中指を押しながら 385 | ; 「て」の部分は定義できない。「ディ」があるため 386 | ; 右手 387 | kanaGroup := "1R" 388 | SetKana( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 389 | SetKana( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 390 | SetKana( KC_D | KC_F | KC_N ,"{End}" ) ; End 391 | SetKana( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 392 | SetKana( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 393 | SetKana( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 394 | SetKana( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 395 | SetKana( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 396 | SetKana( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 397 | SetKana( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 398 | SetKana( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 399 | SetKana( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 400 | SetKana( KC_D | KC_F | KC_P ,"{Esc 3}", "ESCx3") ; 入力キャンセル 401 | SetKana( KC_D | KC_F | KC_SCLN ,"^i" ) ; カタカナ 402 | SetKana( KC_D | KC_F | KC_SLSH ,"^u" ) ; ひらがな 403 | 404 | SetEisu( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 405 | SetEisu( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 406 | SetEisu( KC_D | KC_F | KC_N ,"{End}" ) ; End 407 | SetEisu( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 408 | SetEisu( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 409 | SetEisu( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 410 | SetEisu( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 411 | SetEisu( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 412 | SetEisu( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 413 | SetEisu( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 414 | SetEisu( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 415 | SetEisu( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 416 | SetEisu( KC_D | KC_F | KC_P ,"{Esc 3}", "ESCx3") ; 入力キャンセル 417 | SetEisu( KC_D | KC_F | KC_SCLN ,"^i" ) ; カタカナ 418 | SetEisu( KC_D | KC_F | KC_SLSH ,"^u" ) ; ひらがな 419 | 420 | ; 左手 421 | kanaGroup := "1L" 422 | SetKana( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 423 | SetKana( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 424 | SetKana( KC_J | KC_K | KC_Z ,"――{確定}" ) ; ── 425 | SetKana( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 426 | SetKana( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 427 | SetKana( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 428 | ; SetKana( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 429 | SetKana( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 430 | SetKana( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 431 | SetKana( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 432 | SetKana( KC_J | KC_K | KC_F ,"[]{確定}{↑}" ) ; 「」 433 | SetKana( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 434 | SetKana( KC_J | KC_K | KC_T ,"/" ) ; ・未確定 435 | SetKana( KC_J | KC_K | KC_G ,"《》{確定}{↑}" ) ; 《》 436 | SetKana( KC_J | KC_K | KC_B ,"{確定}{←}" ) ; 確定← 437 | 438 | SetEisu( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 439 | SetEisu( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 440 | SetEisu( KC_J | KC_K | KC_Z ,"――{確定}" ) ; ── 441 | SetEisu( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 442 | SetEisu( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 443 | SetEisu( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 444 | ; SetEisu( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 445 | SetEisu( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 446 | SetEisu( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 447 | SetEisu( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 448 | SetEisu( KC_J | KC_K | KC_F ,"「」{確定}{↑}" ) ; 「」 449 | SetEisu( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 450 | SetEisu( KC_J | KC_K | KC_T ,"・" ) ; ・未確定 451 | SetEisu( KC_J | KC_K | KC_G ,"《》{確定}{↑}" ) ; 《》 452 | SetEisu( KC_J | KC_K | KC_B ,"{確定}{←}" ) ; 確定← 453 | 454 | 455 | ; 編集モード2 456 | ; 下段人差指+中指 457 | ; 右手 458 | kanaGroup := "2R" 459 | SetKana( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 460 | SetKana( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 461 | SetKana( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 462 | SetKana( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 463 | SetKana( KC_C | KC_V | KC_J ,"{→}" , R) ; → 464 | SetKana( KC_C | KC_V | KC_M ,"{←}" , R) ; ← 465 | SetKana( KC_C | KC_V | KC_I ,"^v" ) ; Paste 466 | SetKana( KC_C | KC_V | KC_K ,"+{→}" , R) ; +→ 467 | SetKana( KC_C | KC_V | KC_COMM ,"+{←}" , R) ; +← 468 | SetKana( KC_C | KC_V | KC_O ,"^y" ) ; Redo 469 | SetKana( KC_C | KC_V | KC_L ,"+{→ 5}" , R) ; +→5 470 | SetKana( KC_C | KC_V | KC_DOT ,"+{← 5}" , R) ; +←5 471 | SetKana( KC_C | KC_V | KC_P ,"^z" ) ; Undo 472 | SetKana( KC_C | KC_V | KC_SCLN ,"+{→ 20}" , R) ; +→20 473 | SetKana( KC_C | KC_V | KC_SLSH ,"+{← 20}" , R) ; +←20 474 | 475 | SetEisu( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 476 | SetEisu( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 477 | SetEisu( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 478 | SetEisu( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 479 | SetEisu( KC_C | KC_V | KC_J ,"{→}" , R) ; → 480 | SetEisu( KC_C | KC_V | KC_M ,"{←}" , R) ; ← 481 | SetEisu( KC_C | KC_V | KC_I ,"^v" ) ; Paste 482 | SetEisu( KC_C | KC_V | KC_K ,"+{→}" , R) ; +→ 483 | SetEisu( KC_C | KC_V | KC_COMM ,"+{←}" , R) ; +← 484 | SetEisu( KC_C | KC_V | KC_O ,"^y" ) ; Redo 485 | SetEisu( KC_C | KC_V | KC_L ,"+{→ 5}" , R) ; +→5 486 | SetEisu( KC_C | KC_V | KC_DOT ,"+{← 5}" , R) ; +←5 487 | SetEisu( KC_C | KC_V | KC_P ,"^z" ) ; Undo 488 | SetEisu( KC_C | KC_V | KC_SCLN ,"+{→ 20}" , R) ; +→20 489 | SetEisu( KC_C | KC_V | KC_SLSH ,"+{← 20}" , R) ; +←20 490 | 491 | ; 左手 492 | kanaGroup := "2L" 493 | SetKana( KC_M | KC_COMM | KC_Q ,"{Home}{→}{End}{Del 4}{←}" ) ; 前行につける(ト書き) 494 | SetKana( KC_M | KC_COMM | KC_A ,"{Home}{→}{End}{Del 2}{←}" ) ; 前行につける(セリフ) 495 | SetKana( KC_M | KC_COMM | KC_Z ,"   ×   ×   ×{確定}{改行}" ) ; x x x 496 | SetKana( KC_M | KC_COMM | KC_W ,"^x『^v』{確定}{C_Clr}" , NR) ; +『』 497 | SetKana( KC_M | KC_COMM | KC_S ,"^x(^v){確定}{C_Clr}" , NR) ; +() 498 | SetKana( KC_M | KC_COMM | KC_X ,"^x【^v】{確定}{C_Clr}" , NR) ; +【】 499 | SetKana( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {←}" ) ; 行頭そろえ(ト書き) 500 | SetKana( KC_M | KC_COMM | KC_D ,"{Home}{改行} {←}" ) ; 行頭そろえ(セリフ) 501 | SetKana( KC_M | KC_COMM | KC_C ,"/{確定}" ) ; / 502 | SetKana( KC_M | KC_COMM | KC_R ,"   " ) ; □□□ 503 | SetKana( KC_M | KC_COMM | KC_F ,"^x[^v]{確定}{C_Clr}" , NR) ; +「」 504 | SetKana( KC_M | KC_COMM | KC_V ,"{確定}{End}{改行}[]{確定}{↑}" ) ; 確定「」 505 | SetKana( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 506 | SetKana( KC_M | KC_COMM | KC_G ,"^x|{確定}^v《》{確定}{↑}{C_Clr}" , NR) ; +|《》 507 | SetKana( KC_M | KC_COMM | KC_B ,"{確定}{End}{改行} " ) ; 確定□ 508 | 509 | SetEisu( KC_M | KC_COMM | KC_Q ,"{Home}{→}{End}{Del 4}{←}" ) ; 前行につける(ト書き) 510 | SetEisu( KC_M | KC_COMM | KC_A ,"{Home}{→}{End}{Del 2}{←}" ) ; 前行につける(セリフ) 511 | SetEisu( KC_M | KC_COMM | KC_Z ,"   ×   ×   ×{確定}{改行}" ) ; x x x 512 | SetEisu( KC_M | KC_COMM | KC_W ,"^x『^v』{確定}{C_Clr}" , NR) ; +『』 513 | SetEisu( KC_M | KC_COMM | KC_S ,"^x(^v){確定}{C_Clr}" , NR) ; +() 514 | SetEisu( KC_M | KC_COMM | KC_X ,"^x【^v】{確定}{C_Clr}" , NR) ; +【】 515 | SetEisu( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {←}" ) ; 行頭そろえ(ト書き) 516 | SetEisu( KC_M | KC_COMM | KC_D ,"{Home}{改行} {←}" ) ; 行頭そろえ(セリフ) 517 | SetEisu( KC_M | KC_COMM | KC_C ,"/{確定}" ) ; / 518 | SetEisu( KC_M | KC_COMM | KC_R ,"   " ) ; □□□ 519 | SetEisu( KC_M | KC_COMM | KC_F ,"^x「^v」{確定}{C_Clr}" , NR) ; +「」 520 | SetEisu( KC_M | KC_COMM | KC_V ,"{確定}{End}{改行}「」{確定}{↑}" ) ; 確定「」 521 | SetEisu( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 522 | SetEisu( KC_M | KC_COMM | KC_G ,"^x|{確定}^v《》{確定}{↑}{C_Clr}" , NR) ; +|《》 523 | SetEisu( KC_M | KC_COMM | KC_B ,"{確定}{End}{改行} " ) ; 確定□ 524 | 525 | 526 | kanaGroup := "" ; グループなし 527 | SetKana( KC_Q | KC_W ,"Null" ,"横書き") 528 | SetEisu( KC_Q | KC_W ,"Null" ,"横書き") 529 | SetKana( KC_Q | KC_A ,"Null" ,"縦書き") 530 | SetEisu( KC_Q | KC_A ,"Null" ,"縦書き") 531 | 532 | 533 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 534 | If (keyDriver = "kbd101.dll") 535 | { 536 | ; おまけ 537 | SetEisu( JP_YEN ,"\" ) ; ¥ 538 | SetEisu( KC_INT1 ,"\" ) ; ¥ 539 | SetEisu( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 540 | SetEisu( KC_INT1 | KC_SPC ,"_" ) ; _ スペース押しながら 541 | 542 | SetKana( JP_YEN ,"\" ) ; ¥ 543 | SetKana( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 544 | } 545 | 546 | If (usLike > 0) 547 | USLikeLayout() ; USキーボード風の配列へ 548 | 549 | KoyuReadAndRegist(koyuNumber) ; 固有名詞ショートカットの読み込み・登録 550 | 551 | Return 552 | } 553 | 554 | ; USキーボード風の配列へ 555 | USLikeLayout() ; () -> Void 556 | { 557 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 558 | 559 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 560 | If (keyDriver = "kbd101.dll") 561 | Return 562 | 563 | kanaGroup := "" ; グループなし 564 | SetEisu( KC_EQL ,"+{sc0C}" ) ; = 565 | SetEisu( KC_LBRC ,"{sc1B}" ) ; [ 566 | SetEisu( KC_RBRC ,"{sc2B}" ) ; ] 567 | SetEisu( KC_QUOT ,"+{sc08}" ) ; ' 568 | SetEisu( KC_NUHS ,"+{sc1A}" ) ; ` 569 | 570 | SetEisu( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 571 | SetEisu( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 572 | SetEisu( KC_SPC | KC_7 ,"+{sc07}" ) ; & 573 | SetEisu( KC_SPC | KC_8 ,"+{sc28}" ) ; * 574 | SetEisu( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 575 | SetEisu( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 576 | SetEisu( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 577 | SetEisu( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 578 | SetEisu( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 579 | SetEisu( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 580 | SetEisu( KC_SPC | KC_SCLN ,"{sc28}" ) ; : 581 | SetEisu( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 582 | SetEisu( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 583 | 584 | 585 | SetKana( KC_EQL ,"+{sc0C}" ) ; = 586 | SetKana( KC_LBRC ,"{sc1B}" ) ; [ 587 | SetKana( KC_RBRC ,"{sc2B}" ) ; ] 588 | SetKana( KC_QUOT ,"+{sc08}" ) ; ' 589 | SetKana( KC_NUHS ,"+{sc1A}" ) ; ` 590 | 591 | SetKana( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 592 | SetKana( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 593 | SetKana( KC_SPC | KC_7 ,"+{sc07}" ) ; & 594 | SetKana( KC_SPC | KC_8 ,"+{sc28}" ) ; * 595 | SetKana( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 596 | SetKana( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 597 | SetKana( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 598 | SetKana( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 599 | SetKana( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 600 | SetKana( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 601 | ; SetKana( KC_SPC | KC_SCLN ,"{sc28}" ) ; : (薙刀式で使用) 602 | SetKana( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 603 | SetKana( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 604 | 605 | ; 設定がPC-9800キーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 606 | If (keyDriver = "kbdnec.dll") 607 | { 608 | SetEisu( KC_NUHS ,"+{sc0D}" ) ; ` 609 | SetEisu( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 610 | 611 | SetKana( KC_NUHS ,"+{sc0D}" ) ; ` 612 | SetKana( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 613 | } 614 | 615 | Return 616 | } 617 | 618 | ; 固有名詞ショートカットの登録 619 | KoyuRegist() ; () -> Void 620 | { 621 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 622 | #IncludeAgain %A_ScriptDir%/Sub/Naginata-Koyu_h.ahk 623 | 624 | ;************************************** 625 | ; 固有名詞ショートカット 626 | ; 薙刀式のカナで始まる言葉を登録すると使いやすい */ 627 | 628 | ; 第一面 629 | ; UIを押しながら左手*/ 630 | kanaGroup := "KL" ; 左手側 631 | SetKana(KC_U | KC_I | KC_1 ,"{直接}" . E01) 632 | SetKana(KC_U | KC_I | KC_2 ,"{直接}" . E02) 633 | SetKana(KC_U | KC_I | KC_3 ,"{直接}" . E03) 634 | SetKana(KC_U | KC_I | KC_4 ,"{直接}" . E04) 635 | SetKana(KC_U | KC_I | KC_5 ,"{直接}" . E05) 636 | 637 | SetKana(KC_U | KC_I | KC_Q ,"{直接}" . D01) 638 | SetKana(KC_U | KC_I | KC_W ,"{直接}" . D02) 639 | SetKana(KC_U | KC_I | KC_E ,"{直接}" . D03) 640 | SetKana(KC_U | KC_I | KC_R ,"{直接}" . D04) 641 | SetKana(KC_U | KC_I | KC_T ,"{直接}" . D05) 642 | 643 | SetKana(KC_U | KC_I | KC_A ,"{直接}" . C01) 644 | SetKana(KC_U | KC_I | KC_S ,"{直接}" . C02) 645 | SetKana(KC_U | KC_I | KC_D ,"{直接}" . C03) 646 | SetKana(KC_U | KC_I | KC_F ,"{直接}" . C04) 647 | SetKana(KC_U | KC_I | KC_G ,"{直接}" . C05) 648 | 649 | SetKana(KC_U | KC_I | KC_Z ,"{直接}" . B01) 650 | SetKana(KC_U | KC_I | KC_X ,"{直接}" . B02) 651 | SetKana(KC_U | KC_I | KC_C ,"{直接}" . B03) 652 | SetKana(KC_U | KC_I | KC_V ,"{直接}" . B04) 653 | SetKana(KC_U | KC_I | KC_B ,"{直接}" . B05) 654 | 655 | ; ERを押しながら右手 656 | kanaGroup := "KR" ; 右手側 657 | SetKana(KC_E | KC_R | KC_6 ,"{直接}" . E06) 658 | SetKana(KC_E | KC_R | KC_7 ,"{直接}" . E07) 659 | SetKana(KC_E | KC_R | KC_8 ,"{直接}" . E08) 660 | SetKana(KC_E | KC_R | KC_9 ,"{直接}" . E09) 661 | SetKana(KC_E | KC_R | KC_0 ,"{直接}" . E10) 662 | SetKana(KC_E | KC_R | KC_MINS ,"{直接}" . E11) 663 | SetKana(KC_E | KC_R | KC_EQL ,"{直接}" . E12) 664 | SetKana(KC_E | KC_R | JP_YEN ,"{直接}" . E13) 665 | 666 | SetKana(KC_E | KC_R | KC_Y ,"{直接}" . D06) 667 | SetKana(KC_E | KC_R | KC_U ,"{直接}" . D07) 668 | SetKana(KC_E | KC_R | KC_I ,"{直接}" . D08) 669 | SetKana(KC_E | KC_R | KC_O ,"{直接}" . D09) 670 | SetKana(KC_E | KC_R | KC_P ,"{直接}" . D10) 671 | SetKana(KC_E | KC_R | KC_LBRC ,"{直接}" . D11) 672 | SetKana(KC_E | KC_R | KC_RBRC ,"{直接}" . D12) 673 | 674 | SetKana(KC_E | KC_R | KC_H ,"{直接}" . C06) 675 | SetKana(KC_E | KC_R | KC_J ,"{直接}" . C07) 676 | SetKana(KC_E | KC_R | KC_K ,"{直接}" . C08) 677 | SetKana(KC_E | KC_R | KC_L ,"{直接}" . C09) 678 | SetKana(KC_E | KC_R | KC_SCLN ,"{直接}" . C10) 679 | SetKana(KC_E | KC_R | KC_QUOT ,"{直接}" . C11) 680 | SetKana(KC_E | KC_R | KC_NUHS ,"{直接}" . C12) 681 | 682 | SetKana(KC_E | KC_R | KC_N ,"{直接}" . B06) 683 | SetKana(KC_E | KC_R | KC_M ,"{直接}" . B07) 684 | SetKana(KC_E | KC_R | KC_COMM ,"{直接}" . B08) 685 | SetKana(KC_E | KC_R | KC_DOT ,"{直接}" . B09) 686 | SetKana(KC_E | KC_R | KC_SLSH ,"{直接}" . B10) 687 | SetKana(KC_E | KC_R | KC_INT1 ,"{直接}" . B11) 688 | 689 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 690 | If (keyDriver == "kbd101.dll") 691 | { 692 | SetKana(KC_E | KC_R | KC_BSLS ,"{直接}" . E13) 693 | SetKana(KC_E | KC_R | KC_GRV ,"{直接}" . C12) 694 | } 695 | 696 | ; 第二面 697 | ; UIを押しながら左手*/ 698 | kanaGroup := "KL" ; 左手側 699 | SetKana(KC_SPC | KC_U | KC_I | KC_1 ,"{直接}" . E01S) 700 | SetKana(KC_SPC | KC_U | KC_I | KC_2 ,"{直接}" . E02S) 701 | SetKana(KC_SPC | KC_U | KC_I | KC_3 ,"{直接}" . E03S) 702 | SetKana(KC_SPC | KC_U | KC_I | KC_4 ,"{直接}" . E04S) 703 | SetKana(KC_SPC | KC_U | KC_I | KC_5 ,"{直接}" . E05S) 704 | 705 | SetKana(KC_SPC | KC_U | KC_I | KC_Q ,"{直接}" . D01S) 706 | SetKana(KC_SPC | KC_U | KC_I | KC_W ,"{直接}" . D02S) 707 | SetKana(KC_SPC | KC_U | KC_I | KC_E ,"{直接}" . D03S) 708 | SetKana(KC_SPC | KC_U | KC_I | KC_R ,"{直接}" . D04S) 709 | SetKana(KC_SPC | KC_U | KC_I | KC_T ,"{直接}" . D05S) 710 | 711 | SetKana(KC_SPC | KC_U | KC_I | KC_A ,"{直接}" . C01S) 712 | SetKana(KC_SPC | KC_U | KC_I | KC_S ,"{直接}" . C02S) 713 | SetKana(KC_SPC | KC_U | KC_I | KC_D ,"{直接}" . C03S) 714 | SetKana(KC_SPC | KC_U | KC_I | KC_F ,"{直接}" . C04S) 715 | SetKana(KC_SPC | KC_U | KC_I | KC_G ,"{直接}" . C05S) 716 | 717 | SetKana(KC_SPC | KC_U | KC_I | KC_Z ,"{直接}" . B01S) 718 | SetKana(KC_SPC | KC_U | KC_I | KC_X ,"{直接}" . B02S) 719 | SetKana(KC_SPC | KC_U | KC_I | KC_C ,"{直接}" . B03S) 720 | SetKana(KC_SPC | KC_U | KC_I | KC_V ,"{直接}" . B04S) 721 | SetKana(KC_SPC | KC_U | KC_I | KC_B ,"{直接}" . B05S) 722 | 723 | ; ERを押しながら右手 724 | kanaGroup := "KR" ; 右手側 725 | SetKana(KC_SPC | KC_E | KC_R | KC_6 ,"{直接}" . E06S) 726 | SetKana(KC_SPC | KC_E | KC_R | KC_7 ,"{直接}" . E07S) 727 | SetKana(KC_SPC | KC_E | KC_R | KC_8 ,"{直接}" . E08S) 728 | SetKana(KC_SPC | KC_E | KC_R | KC_9 ,"{直接}" . E09S) 729 | SetKana(KC_SPC | KC_E | KC_R | KC_0 ,"{直接}" . E10S) 730 | SetKana(KC_SPC | KC_E | KC_R | KC_MINS ,"{直接}" . E11S) 731 | SetKana(KC_SPC | KC_E | KC_R | KC_EQL ,"{直接}" . E12S) 732 | SetKana(KC_SPC | KC_E | KC_R | JP_YEN ,"{直接}" . E13S) 733 | 734 | SetKana(KC_SPC | KC_E | KC_R | KC_Y ,"{直接}" . D06S) 735 | SetKana(KC_SPC | KC_E | KC_R | KC_U ,"{直接}" . D07S) 736 | SetKana(KC_SPC | KC_E | KC_R | KC_I ,"{直接}" . D08S) 737 | SetKana(KC_SPC | KC_E | KC_R | KC_O ,"{直接}" . D09S) 738 | SetKana(KC_SPC | KC_E | KC_R | KC_P ,"{直接}" . D10S) 739 | SetKana(KC_SPC | KC_E | KC_R | KC_LBRC ,"{直接}" . D11S) 740 | SetKana(KC_SPC | KC_E | KC_R | KC_RBRC ,"{直接}" . D12S) 741 | 742 | SetKana(KC_SPC | KC_E | KC_R | KC_H ,"{直接}" . C06S) 743 | SetKana(KC_SPC | KC_E | KC_R | KC_J ,"{直接}" . C07S) 744 | SetKana(KC_SPC | KC_E | KC_R | KC_K ,"{直接}" . C08S) 745 | SetKana(KC_SPC | KC_E | KC_R | KC_L ,"{直接}" . C09S) 746 | SetKana(KC_SPC | KC_E | KC_R | KC_SCLN ,"{直接}" . C10S) 747 | SetKana(KC_SPC | KC_E | KC_R | KC_QUOT ,"{直接}" . C11S) 748 | SetKana(KC_SPC | KC_E | KC_R | KC_NUHS ,"{直接}" . C12S) 749 | 750 | SetKana(KC_SPC | KC_E | KC_R | KC_N ,"{直接}" . B06S) 751 | SetKana(KC_SPC | KC_E | KC_R | KC_M ,"{直接}" . B07S) 752 | SetKana(KC_SPC | KC_E | KC_R | KC_COMM ,"{直接}" . B08S) 753 | SetKana(KC_SPC | KC_E | KC_R | KC_DOT ,"{直接}" . B09S) 754 | SetKana(KC_SPC | KC_E | KC_R | KC_SLSH ,"{直接}" . B10S) 755 | SetKana(KC_SPC | KC_E | KC_R | KC_INT1 ,"{直接}" . B11S) 756 | 757 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 758 | If (keyDriver == "kbd101.dll") 759 | { 760 | SetKana(KC_SPC | KC_E | KC_R | KC_BSLS ,"{直接}" . E13S) 761 | SetKana(KC_SPC | KC_E | KC_R | KC_GRV ,"{直接}" . C12S) 762 | } 763 | 764 | ; 固有名詞ショートカットを切り替える 765 | kanaGroup := "" ; グループなし 766 | SetKana( KC_E | KC_R | KC_1 , 1, "KoyuChange") ; 固有名詞ショートカット1 767 | SetKana( KC_E | KC_R | KC_2 , 2, "KoyuChange") ; 固有名詞ショートカット2 768 | SetKana( KC_E | KC_R | KC_3 , 3, "KoyuChange") ; 固有名詞ショートカット3 769 | SetKana( KC_E | KC_R | KC_4 , 4, "KoyuChange") ; 固有名詞ショートカット4 770 | SetKana( KC_E | KC_R | KC_5 , 5, "KoyuChange") ; 固有名詞ショートカット5 771 | 772 | Return 773 | } 774 | 775 | ; ---------------------------------------------------------------------- 776 | ; 追加のホットキー 777 | ; ---------------------------------------------------------------------- 778 | +^sc0B::Suspend, On ; 薙刀式中断 Shift+Ctrl+0 779 | +^sc02::Suspend, Off ; 薙刀式再開 Shift+Ctrl+1 780 | -------------------------------------------------------------------------------- /src/Sub/init.ahk: -------------------------------------------------------------------------------- 1 | ; Copyright 2021 Satoru NAKAYA 2 | ; 3 | ; Licensed under the Apache License, Version 2.0 (the "License"); 4 | ; you may not use this file except in compliance with the License. 5 | ; You may obtain a copy of the License at 6 | ; 7 | ; http://www.apache.org/licenses/LICENSE-2.0 8 | ; 9 | ; Unless required by applicable law or agreed to in writing, software 10 | ; distributed under the License is distributed on an "AS IS" BASIS, 11 | ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | ; See the License for the specific language governing permissions and 13 | ; limitations under the License. 14 | 15 | ; ********************************************************************** 16 | ; 3キー同時押し配列 初期設定 17 | ; ********************************************************************** 18 | 19 | #NoEnv ; 変数名を解釈するとき、環境変数を無視する 20 | SetBatchLines, -1 ; 自動Sleepなし 21 | ListLines, Off ; スクリプトの実行履歴を取らない 22 | SetKeyDelay, -1, -1 ; キーストローク間のディレイを変更 23 | ;Process, Priority, , High ; スクリプトを実行するプロセスの優先度を上げる 24 | #MenuMaskKey vk07 ; Win または Alt の押下解除時のイベントを隠蔽するためのキーを変更する 25 | #UseHook ; ホットキーはすべてフックを使用する 26 | Thread, Interrupt, 33, 11 ; スレッド開始から約33ミリ秒ないし11行以内の割り込みを禁止 27 | SetStoreCapslockMode, Off ; Sendコマンド実行時にCapsLockの状態を自動的に変更しない 28 | 29 | ;SetFormat, Integer, H ; 数値演算の結果を、16進数の整数による文字列で表現する 30 | ;CoordMode, ToolTip, Screen ; ToolTipの表示座標の扱いをスクリーン上での絶対座標にする 31 | 32 | #HotkeyInterval 1000 ; 指定時間(ミリ秒単位)の間に実行できる最大のホットキー数 33 | #MaxHotkeysPerInterval 120 ; 指定時間の間に実行できる最大のホットキー数 34 | 35 | 36 | ; ---------------------------------------------------------------------- 37 | ; 配列定義で使う定数 Int64型定数 38 | ; 関数内では #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk で利用可能 39 | ; ---------------------------------------------------------------------- 40 | ; キーを64bitの各ビットに割り当てる 41 | ; 右側の数字は仮想キーコードになっている 42 | KC_1 := 1 << 0x02 43 | KC_2 := 1 << 0x03 44 | KC_3 := 1 << 0x04 45 | KC_4 := 1 << 0x05 46 | KC_5 := 1 << 0x06 47 | KC_6 := 1 << 0x07 48 | 49 | KC_7 := 1 << 0x08 50 | KC_8 := 1 << 0x09 51 | KC_9 := 1 << 0x0A 52 | KC_0 := 1 << 0x0B 53 | KC_MINS := 1 << 0x0C 54 | KC_EQL := 1 << 0x0D 55 | JP_YEN := 1 << 0x37 ; sc7D 56 | 57 | KC_Q := 1 << 0x10 58 | KC_W := 1 << 0x11 59 | KC_E := 1 << 0x12 60 | KC_R := 1 << 0x13 61 | KC_T := 1 << 0x14 62 | 63 | KC_Y := 1 << 0x15 64 | KC_U := 1 << 0x16 65 | KC_I := 1 << 0x17 66 | KC_O := 1 << 0x18 67 | KC_P := 1 << 0x19 68 | KC_LBRC := 1 << 0x1A 69 | KC_RBRC := 1 << 0x1B 70 | 71 | KC_A := 1 << 0x1E 72 | KC_S := 1 << 0x1F 73 | KC_D := 1 << 0x20 74 | KC_F := 1 << 0x21 75 | KC_G := 1 << 0x22 76 | 77 | KC_H := 1 << 0x23 78 | KC_J := 1 << 0x24 79 | KC_K := 1 << 0x25 80 | KC_L := 1 << 0x26 81 | KC_SCLN := 1 << 0x27 82 | KC_QUOT := 1 << 0x28 83 | KC_GRV := 1 << 0x29 84 | KC_NUHS := 1 << 0x2B 85 | KC_BSLS := 1 << 0x2B 86 | 87 | KC_Z := 1 << 0x2C 88 | KC_X := 1 << 0x2D 89 | KC_C := 1 << 0x2E 90 | KC_V := 1 << 0x2F 91 | KC_B := 1 << 0x30 92 | 93 | KC_N := 1 << 0x31 94 | KC_M := 1 << 0x32 95 | KC_COMM := 1 << 0x33 96 | KC_DOT := 1 << 0x34 97 | KC_SLSH := 1 << 0x35 98 | KC_INT1 := 1 << 0x38 ; sc73 99 | 100 | KC_SPC := 1 << 0x39 101 | 102 | ; リピート定義用 103 | NR := "NonRepeat" ; String型定数 104 | R := "Repeat" ; String型定数 105 | 106 | ;imeState ; Bool?型 IMEの状態 IME_GET()用 107 | ;imeSentenceMode ; Int?型 IME 変換モード IME_GetSentenceMode()用 108 | 109 | ; Send から IME_GET() までに Sleep で必要な時間(ミリ秒) 110 | ;imeNeedDelay ; Int型定数 111 | ; Send から IME_GetConverting() までに Sleep で必要な時間(ミリ秒) 112 | ;imeGetConvertingInterval ; Int型定数 113 | 114 | ; ---------------------------------------------------------------------- 115 | ; 共用変数(メニュー用は別途) 116 | ; ---------------------------------------------------------------------- 117 | lastSendTime := 0.0 ; Double型 最後に出力した時間 118 | kanaMode := 0 ; Bool型 0: 英数入力, 1: かな入力 119 | layoutNameE := "" ; String型 英語配列の名前 120 | layoutName := "" ; String型 かな配列の名前 121 | kanaGroup := "" ; String型 配列定義のグループ名 ※0または空はグループなし 122 | ; かな配列の入れ物 123 | defsKey := [] ; [Int64]型 キービットの集合 124 | defsGroup := [] ; [String]型 定義のグループ名 125 | defsKanaMode := [] ; [Int]型 0: 英数入力用, 1: かな入力用 126 | defsTateStr := [] ; [String]型 縦書き用定義 127 | defsYokoStr := [] ; [String]型 横書き用定義 128 | defsCtrlName := [] ; [String]型 0または空: なし, R: リピートできる, 他: 特別出力(かな定義ファイルで操作) 129 | defsCombinableBit := [] ; [Int64]型 130 | defBegin := [1, 1, 1] ; [Int]型 定義の始め 1キー, 2キー同時, 3キー同時 131 | defEnd := [1, 1, 1] ; [Int]型 定義の終わり+1 1キー, 2キー同時, 3キー同時 132 | ; 入力バッファ 133 | inBufsKey := [] ; [String]型 134 | inBufsTime := [] ; [Double]型 入力の時間 135 | inBufReadPos := 0 ; Int型 読み出し位置 136 | inBufWritePos := 0 ; Int型 書き込み位置 137 | inBufRest := 31 ; Int型 138 | ; 仮出力バッファ 139 | outStrs := [] ; [String]型 140 | outCtrlNames := [] ; [String]型 141 | outStrsLength := 0 ; Int型 保存されている個数 142 | restStr := "" ; [String]型 下げたままのキー 例: +{Up} 143 | ; シフト用キーの状態 144 | spc := 0 ; Int型 スペースキー 0: 押していない, 1: 単独押し, 2: シフト継続中, 3, 5: リピート中(3: かなを押すと変換取消→シフト側文字) 145 | ent := 0 ; Int型 エンター 0: 押していない, 1: 単独押し, 2: シフト継続中, 5: リピート中 146 | repeatCount := 0 ; Int型 リピート回数 147 | 148 | goodHwnd := badHwnd := 0 ; Int型 IME窓の検出可否 149 | 150 | ; ---------------------------------------------------------------------- 151 | ; OS情報 152 | ; ---------------------------------------------------------------------- 153 | osBuild := SubStr(A_OSVersion, 6) ; 例えば 10.0.19043 は Windows 10 build 19043 (21H2) 154 | 155 | ; ---------------------------------------------------------------------- 156 | ; 設定ファイル読み込み ※規定外の値が書かれていたら、初期値になる 157 | ; ---------------------------------------------------------------------- 158 | 159 | ; スクリプトのパス名の拡張子をiniに付け替え、スペースを含んでいたら""でくくる 160 | iniFilePath := Path_RenameExtension(A_ScriptFullPath, "ini") ; String型 161 | 162 | ; 参考: https://so-zou.jp/software/tool/system/auto-hot-key/commands/file.htm 163 | ; [general] 164 | ; バージョン記録 165 | IniRead, iniVersion, %iniFilePath%, general, Version, "" 166 | 167 | ; [Basic] 168 | ; IMESelect 0: MS-IME専用, 1: ATOK使用, 2: Google 日本語入力 169 | IniRead, imeSelect, %iniFilePath%, Basic, IMESelect 170 | If (imeSelect != Floor(imeSelect) || imeSelect < 0 || imeSelect > 2) 171 | imeSelect := 0 ; 初期値 172 | ; UsingKeyConfig 0: なし, 1: あり 173 | IniRead, usingKeyConfig, %iniFilePath%, Basic, UsingKeyConfig 174 | If (usingKeyConfig != Floor(usingKeyConfig) || usingKeyConfig < 0 || usingKeyConfig > 1) 175 | usingKeyConfig := 0 ; 初期値 176 | ; USLike 0: 英数表記通り, 1: USキーボード風配列 177 | IniRead, usLike, %iniFilePath%, Basic, USLike 178 | If (usLike != Floor(usLike) || usLike < 0 || usLike > 1) 179 | usLike := 0 ; 初期値 180 | ; SideShift 左右シフト 0または1: 英数2, 2: かな 181 | IniRead, sideShift, %iniFilePath%, Basic, SideShift 182 | If (sideShift != Floor(sideShift) || sideShift < 0 || sideShift > 2) 183 | sideShift := 1 ; 初期値 184 | ; EnterShift 0: 通常のエンター, 1: エンター同時押しをシフトとして扱う 185 | IniRead, enterShift, %iniFilePath%, Basic, EnterShift 186 | If (enterShift != Floor(enterShift) || enterShift < 0 || enterShift > 1) 187 | enterShift := 0 ; 初期値 188 | ; ShiftDelay 0: 通常シフト, 1-200: 後置シフトの待ち時間(ミリ秒) 189 | IniRead, shiftDelay, %iniFilePath%, Basic, ShiftDelay 190 | If (shiftDelay < 0 || shiftDelay > 200) 191 | shiftDelay := 0 ; 初期値 192 | ; CombDelay 0: 同時押しは時間無制限 193 | ; 1-200: シフト中の同時打鍵判定時間(ミリ秒) 194 | IniRead, combDelay, %iniFilePath%, Basic, CombDelay 195 | If (combDelay < 0 || combDelay > 200) 196 | combDelay := 50 ; 初期値 197 | ; SpaceKeyRepeat スペースキーの長押し 0: 何もしない, 1: 空白キャンセル, 2: 空白リピート 198 | IniRead, spaceKeyRepeat, %iniFilePath%, Basic, SpaceKeyRepeat 199 | If (spaceKeyRepeat != Floor(spaceKeyRepeat) || spaceKeyRepeat < 0 || spaceKeyRepeat > 2) 200 | spaceKeyRepeat := 0 ; 初期値 201 | ; 英数単打のリピート 0: なし, 1: あり 202 | IniRead, eisuRepeat, %iniFilePath%, Basic, EisuRepeat 203 | If (eisuRepeat != Floor(eisuRepeat) || eisuRepeat < 0 || eisuRepeat > 1) 204 | eisuRepeat := 1 ; 初期値 205 | 206 | ; [Naginata] 207 | ; Vertical 0: 横書き用, 1: 縦書き用 208 | IniRead, vertical, %iniFilePath%, Naginata, Vertical 209 | If (vertical != Floor(vertical) || vertical < 0 || vertical > 1) 210 | vertical := 1 ; 初期値 211 | ; 固有名詞ショートカットの選択 212 | IniRead, koyuNumber, %iniFilePath%, Naginata, KoyuNumber, 1 213 | 214 | ; [Advanced] 215 | ; 通常時 216 | ; 同時打鍵の判定期限 0: なし, 1: あり 217 | IniRead, combLimitN, %iniFilePath%, Advanced, CombLimitN 218 | If (combLimitN != Floor(combLimitN) || combLimitN < 0 || combLimitN > 1) 219 | combLimitN := 0 ; 初期値 220 | ; 文字キーシフト 0: ずっと, 1: 途切れるまで, 2: 同グループのみ継続, 3: 1回のみ 221 | IniRead, combStyleN, %iniFilePath%, Advanced, CombStyleN 222 | If (combStyleN != Floor(combStyleN) || combStyleN < 0 || combStyleN > 3) 223 | combStyleN := 3 ; 初期値 224 | ; キーを離すと 0: 全復活, 1: そのまま, 2: 全部出力済みなら解除 225 | IniRead, combKeyUpN, %iniFilePath%, Advanced, CombKeyUpN 226 | If (combKeyUpN != Floor(combKeyUpN) || combKeyUpN < 0 || combKeyUpN > 2) 227 | combKeyUpN := 0 ; 初期値 228 | ; スペース押下時 229 | ; 同時打鍵の判定期限 0: なし, 1: あり 230 | IniRead, combLimitS, %iniFilePath%, Advanced, CombLimitS 231 | If (combLimitS != Floor(combLimitS) || combLimitS < 0 || combLimitS > 1) 232 | combLimitS := 1 ; 初期値 233 | ; 文字キーシフト 0: ずっと, 1: 途切れるまで, 2: 同グループのみ継続, 3: 1回のみ 234 | IniRead, combStyleS, %iniFilePath%, Advanced, CombStyleS 235 | If (combStyleS != Floor(combStyleS) || combStyleS < 0 || combStyleS > 3) 236 | combStyleS := 3 ; 初期値 237 | ; キーを離すと 0: 全復活, 1: そのまま, 2: 全部出力済みなら解除 238 | IniRead, combKeyUpS, %iniFilePath%, Advanced, CombKeyUpS 239 | If (combKeyUpS != Floor(combKeyUpS) || combKeyUpS < 0 || combKeyUpS > 2) 240 | combKeyUpS := 2 ; 初期値 241 | ; 英数時の同時打鍵期限を強制する 0: なし, 1: あり 242 | IniRead, combLimitE, %iniFilePath%, Advanced, CombLimitE 243 | If (combLimitE != Floor(combLimitE) || combLimitE < 0 || combLimitE > 1) 244 | combLimitE := 0 ; 初期値 245 | ; スペースキーを離した時の設定 0: 通常時, 1: スペース押下時 246 | IniRead, combKeyUpSPC, %iniFilePath%, Advanced, CombKeyUpSPC 247 | If (combKeyUpSPC != Floor(combKeyUpSPC) || combKeyUpSPC < 0 || combKeyUpSPC > 1) 248 | combKeyUpSPC := 1 ; 初期値 249 | ; 英数入力時のSandS 0: なし, 1: あり 250 | IniRead, eisuSandS, %iniFilePath%, Advanced, EisuSandS 251 | If (eisuSandS != Floor(eisuSandS) || eisuSandS < 0 || eisuSandS > 1) 252 | eisuSandS := 1 ; 初期値 253 | ; キーを離せば常に全部出力する 0: しない, 1: する 254 | IniRead, keyUpToOutputAll, %iniFilePath%, Advanced, KeyUpToOutputAll 255 | If (keyUpToOutputAll != Floor(keyUpToOutputAll) || keyUpToOutputAll < 0 || keyUpToOutputAll > 1) 256 | keyUpToOutputAll := 0 ; 初期値 257 | ; テスト表示 0: なし, 1: 処理時間, 2: 表示待ち文字列, 3: 出力文字列 ※iniになければ設定画面に表示しない 258 | IniRead, testMode, %iniFilePath%, Advanced, TestMode 259 | If (testMode != "ERROR" && (testMode != Floor(testMode) || testMode < 0 || testMode > 3)) 260 | testMode := 0 ; 初期値 261 | ; リピートの好み 0: 常に無制限, 1: 基本する, 2: 基本しない, 3: 全くしない 262 | IniRead, repeatStyle, %iniFilePath%, Advanced, RepeatStyle 263 | If (repeatStyle != Floor(repeatStyle) || repeatStyle < 0 || repeatStyle > 3) 264 | repeatStyle := 2 ; 初期値 265 | ; IME_Get_Interval 文字出力後に IME の状態を検出しない時間(ミリ秒) 266 | IniRead, imeGetInterval, %iniFilePath%, Advanced, IME_Get_Interval 267 | If (imeGetInterval < 0 || imeGetInterval > 2000) 268 | imeGetInterval := 125 ; 初期値 269 | 270 | ; ---------------------------------------------------------------------- 271 | ; かな配列読み込み 272 | ; ---------------------------------------------------------------------- 273 | ; キーボードドライバを調べて keyDriver に格納する 274 | ; 参考: https://ixsvr.dyndns.org/blog/764 275 | RegRead, keyDriver, HKEY_LOCAL_MACHINE, SYSTEM\CurrentControlSet\Services\i8042prt\Parameters, LayerDriver JPN 276 | USKB := (keyDriver = "kbd101.dll" ? True : False) ; Bool型 277 | 278 | ReadLayout() ; かな配列読み込み 279 | SettingLayout() ; 出力確定する定義に印をつける 280 | 281 | ; ---------------------------------------------------------------------- 282 | ; メニューで使う変数 Bool型 283 | ; ---------------------------------------------------------------------- 284 | ; [Basic] 285 | imeSelect0 := (imeSelect == 0 ? 1 : 0) 286 | imeSelect1 := (imeSelect == 1 ? 1 : 0) 287 | imeSelect2 := (imeSelect == 2 ? 1 : 0) 288 | sideShift1 := (sideShift <= 1 ? 1 : 0) 289 | sideShift2 := (sideShift > 1 ? 1 : 0) 290 | enterShift0 := (!enterShift ? 1 : 0) 291 | enterShift1 := (enterShift 1 ? 1 : 0) 292 | spaceKeyRepeat0 := (spaceKeyRepeat == 0 ? 1 : 0) 293 | spaceKeyRepeat1 := (spaceKeyRepeat == 1 ? 1 : 0) 294 | spaceKeyRepeat2 := (spaceKeyRepeat == 2 ? 1 : 0) 295 | ; [Advanced] 296 | combStyleN0 := (combStyleN == 0 ? 1 : 0) 297 | combStyleN1 := (combStyleN == 1 ? 1 : 0) 298 | combStyleN2 := (combStyleN == 2 ? 1 : 0) 299 | combStyleN3 := (combStyleN == 3 ? 1 : 0) 300 | combKeyUpN0 := (combKeyUpN == 0 ? 1 : 0) 301 | combKeyUpN1 := (combKeyUpN == 1 ? 1 : 0) 302 | combKeyUpN2 := (combKeyUpN == 2 ? 1 : 0) 303 | combStyleS0 := (combStyleS == 0 ? 1 : 0) 304 | combStyleS1 := (combStyleS == 1 ? 1 : 0) 305 | combStyleS2 := (combStyleS == 2 ? 1 : 0) 306 | combStyleS3 := (combStyleS == 3 ? 1 : 0) 307 | combKeyUpS0 := (combKeyUpS == 0 ? 1 : 0) 308 | combKeyUpS1 := (combKeyUpS == 1 ? 1 : 0) 309 | combKeyUpS2 := (combKeyUpS == 2 ? 1 : 0) 310 | combKeyUpSPC0 := (!combKeyUpSPC ? 1 : 0) 311 | combKeyUpSPC1 := (combKeyUpSPC ? 1 : 0) 312 | If (testMode != "ERROR") 313 | { 314 | testMode0 := (testMode == 0 ? 1 : 0) 315 | testMode1 := (testMode == 1 ? 1 : 0) 316 | testMode2 := (testMode == 2 ? 1 : 0) 317 | testMode3 := (testMode == 3 ? 1 : 0) 318 | repeatStyle0 := (repeatStyle == 0 ? 1 : 0) 319 | repeatStyle1 := (repeatStyle == 1 ? 1 : 0) 320 | repeatStyle2 := (repeatStyle == 2 ? 1 : 0) 321 | repeatStyle3 := (repeatStyle == 3 ? 1 : 0) 322 | } 323 | 324 | ; ---------------------------------------------------------------------- 325 | ; メニュー表示 326 | ; ---------------------------------------------------------------------- 327 | ; ツールチップを変更する 328 | If (layoutNameE) 329 | Menu, TRAY, Tip, Hachiku %version%`n%layoutNameE%`n+ %layoutName%`n固有名詞セット%koyuNumber% 330 | Else 331 | Menu, TRAY, Tip, Hachiku %version%`n%layoutName%`n固有名詞セット%koyuNumber% 332 | ; 標準メニュー項目を削除する 333 | Menu, TRAY, NoStandard 334 | 335 | ; 薙刀式配列用メニュー 336 | If (IsFunc("KoyuRegist")) ; 関数 KoyuRegist が存在するか 337 | { 338 | ; 縦書きモード切替を追加 339 | Menu, TRAY, Add, 縦書きモード, VerticalMode 340 | ChangeVertical(vertical) 341 | ; 「固有名詞」編集画面を追加 342 | Menu, TRAY, Add, 固有名詞登録, KoyuMenu 343 | } 344 | 345 | Menu, TRAY, Add, 設定..., PrefMenu ; 設定画面を追加 346 | Menu, TRAY, Add ; セパレーター 347 | Menu, TRAY, Add, ログ表示, DispLog ; ログ 348 | Menu, TRAY, Add ; セパレーター 349 | Menu, TRAY, Standard ; 標準メニュー項目を追加する 350 | 351 | ; iniファイルがなけれは設定画面を表示 352 | If (!Path_FileExists(iniFilePath)) 353 | Gosub, PrefMenu 354 | 355 | ; ---------------------------------------------------------------------- 356 | ; スクリプト終了時に実行させたいサブルーチンを指定 357 | ; ---------------------------------------------------------------------- 358 | OnExit, ExitSub 359 | 360 | Exit ; 起動時はここまで実行 361 | 362 | ; ---------------------------------------------------------------------- 363 | ; スクリプト終了時に実行するサブルーチン 364 | ; ---------------------------------------------------------------------- 365 | ExitSub: 366 | ; 押し下げ出力中のキーを上げる 367 | SendKeyUp() 368 | ; 右シフトが押されていればキーを下げる 369 | If (GetKeyState("RShift", "P")) 370 | Send, {RShift down} 371 | ExitApp 372 | 373 | ; ---------------------------------------------------------------------- 374 | ; メニュー動作 375 | ; ---------------------------------------------------------------------- 376 | ; 参考: https://rcmdnk.com/blog/2017/11/07/computer-windows-autohotkey/ 377 | 378 | ; 縦書きモード切替 379 | VerticalMode: 380 | Menu, TRAY, ToggleCheck, 縦書きモード 381 | ChangeVertical(vertical == 0 ? 1 : 0) 382 | Return 383 | 384 | ButtonOK: 385 | Gui, Submit 386 | ; [general] 387 | iniVersion := version 388 | ; [Basic] 389 | imeSelect := (imeSelect0 ? 0 : (imeSelect1 ? 1 : 2)) 390 | sideShift := (sideShift1 ? 1 : 2) 391 | enterShift := (enterShift0 ? 0 : 1) 392 | spaceKeyRepeat := (spaceKeyRepeat0 ? 0 : (spaceKeyRepeat1 ? 1 : 2)) 393 | ; [Advanced] 394 | combStyleN := (combStyleN0 ? 0 : (combStyleN1 ? 1 : (combStyleN2 ? 2 : 3))) 395 | combKeyUpN := (combKeyUpN0 ? 0 : (combKeyUpN1 ? 1 : 2)) 396 | combStyleS := (combStyleS0 ? 0 : (combStyleS1 ? 1 : (combStyleS2 ? 2 : 3))) 397 | combKeyUpS := (combKeyUpS0 ? 0 : (combKeyUpS1 ? 1 : 2)) 398 | combKeyUpSPC := (combKeyUpSPC0 ? 0 : 1) 399 | If (testMode != "ERROR") 400 | { 401 | testMode := (testMode0 ? 0 : (testMode1 ? 1 : (testMode2 ? 2 : 3))) 402 | repeatStyle := (repeatStyle0 ? 0 : (repeatStyle1 ? 1 : (repeatStyle2 ? 2 : 3))) 403 | } 404 | ; 設定ファイル書き込み 405 | ; [general] 406 | IniWrite, %iniVersion%, %iniFilePath%, general, Version 407 | ; [Basic] 408 | IniWrite, %imeSelect%, %iniFilePath%, Basic, IMESelect 409 | IniWrite, %usingKeyConfig%, %iniFilePath%, Basic, UsingKeyConfig 410 | IniWrite, %usLike%, %iniFilePath%, Basic, USLike 411 | IniWrite, %sideShift%, %iniFilePath%, Basic, SideShift 412 | IniWrite, %enterShift%, %iniFilePath%, Basic, EnterShift 413 | IniWrite, %shiftDelay%, %iniFilePath%, Basic, ShiftDelay 414 | IniWrite, %combDelay%, %iniFilePath%, Basic, CombDelay 415 | IniWrite, %spaceKeyRepeat%, %iniFilePath%, Basic, SpaceKeyRepeat 416 | IniWrite, %eisuRepeat%, %iniFilePath%, Basic, EisuRepeat 417 | ; [Naginata] 418 | IniWrite, %vertical%, %iniFilePath%, Naginata, Vertical 419 | IniWrite, %koyuNumber%, %iniFilePath%, Naginata, KoyuNumber 420 | ; [Advanced] 421 | IniWrite, %combLimitN%, %iniFilePath%, Advanced, CombLimitN 422 | IniWrite, %combStyleN%, %iniFilePath%, Advanced, CombStyleN 423 | IniWrite, %combKeyUpN%, %iniFilePath%, Advanced, CombKeyUpN 424 | IniWrite, %combLimitS%, %iniFilePath%, Advanced, CombLimitS 425 | IniWrite, %combStyleS%, %iniFilePath%, Advanced, CombStyleS 426 | IniWrite, %combKeyUpS%, %iniFilePath%, Advanced, CombKeyUpS 427 | IniWrite, %combLimitE%, %iniFilePath%, Advanced, CombLimitE 428 | IniWrite, %combKeyUpSPC%, %iniFilePath%, Advanced, CombKeyUpSPC 429 | IniWrite, %eisuSandS%, %iniFilePath%, Advanced, EisuSandS 430 | IniWrite, %keyUpToOutputAll%, %iniFilePath%, Advanced, KeyUpToOutputAll 431 | If (testMode != "ERROR") { 432 | IniWrite, %testMode%, %iniFilePath%, Advanced, TestMode 433 | IniWrite, %repeatStyle%, %iniFilePath%, Advanced, RepeatStyle 434 | } 435 | IniWrite, %imeGetInterval%, %iniFilePath%, Advanced, IME_Get_Interval 436 | 437 | Menu, TRAY, Icon, * ; トレイアイコンをいったん起動時のものに 438 | DeleteDefs() ; 配列定義をすべて消去する 439 | ReadLayout() ; かな配列読み込み 440 | SettingLayout() ; 出力確定する定義に印をつける 441 | ; 関数 KoyuRegist が存在したらトレイアイコン変更 442 | If (IsFunc("KoyuRegist")) 443 | ChangeVertical(vertical) 444 | GuiEscape: 445 | ButtonCancel: 446 | ButtonClose: 447 | GuiClose: 448 | ; IME窓の検出可否をリセット 449 | goodHwnd := badHwnd := 0 450 | Gui, Destroy 451 | Return 452 | 453 | ; 設定画面 454 | PrefMenu: 455 | Gui, Destroy 456 | Gui, -MinimizeBox 457 | Gui, Add, Text, , 設定 458 | 459 | Gui, Add, Text, x+200 W180 Right, %version% 460 | Gui, Add, Tab2, xm+140 y+0 Section Buttons Center, 基本|キー|同時打鍵 461 | 462 | ; 「基本」メニュー 463 | Gui, Tab, 基本 464 | ; IMEの選択 465 | Gui, Add, Text, xm ys+40, IMEの選択 466 | Gui, Add, Radio, xm+68 yp+0 Group VimeSelect0, MS-IME 467 | Gui, Add, Radio, x+0 VimeSelect1, ATOK 468 | Gui, Add, Radio, x+0 VimeSelect2, Google 469 | If (imeSelect0) 470 | GuiControl, , imeSelect0, 1 471 | Else If (imeSelect1) 472 | GuiControl, , imeSelect1, 1 473 | Else 474 | GuiControl, , imeSelect2, 1 475 | ; キー設定利用 476 | Gui, Add, Checkbox, xm+18 y+5 VusingKeyConfig, キー設定利用 (Ctrl+Shift+変換⇒全確定、Ctrl+Shift+無変換⇒全消去) 477 | If (usingKeyConfig) 478 | GuiControl, , usingKeyConfig, 1 479 | ; 後置シフトの待ち時間 480 | Gui, Add, Text, xm y+15, 後置シフトの待ち時間 481 | Gui, Add, Edit, xm+122 yp-3 W45 Number Right 482 | Gui, Add, UpDown, VshiftDelay Range0-200, %shiftDelay% 483 | Gui, Add, Text, x+5 yp+3, ミリ秒 484 | ; 英数単打のリピート 485 | Gui, Add, Checkbox, x+55 VeisuRepeat, 英数単打のリピート 486 | If (eisuRepeat) 487 | GuiControl, , eisuRepeat, 1 488 | ; テストモードが無効の時 489 | If (testMode = "ERROR") 490 | { 491 | ; 文字出力後に IME の状態を検出しない時間 492 | Gui, Add, Text, xm y+30, 文字出力後に IME の状態を検出しない時間 493 | Gui, Add, Edit, xm+235 yp-3 W51 Number Right 494 | Gui, Add, UpDown, VimeGetInterval Range0-500 128, %imeGetInterval% 495 | Gui, Add, Text, x+5 yp+3, ミリ秒 496 | } 497 | ; テストモード 498 | Else 499 | { 500 | ; テスト表示 501 | Gui, Add, Text, xm ys+132, テスト表示 502 | Gui, Add, Radio, xm+75 yp+0 Group VtestMode0, なし 503 | Gui, Add, Radio, x+0 VtestMode1, 処理時間 504 | Gui, Add, Radio, x+0 VtestMode2, 表示待ち文字列 505 | Gui, Add, Radio, x+0 VtestMode3, 出力文字列 506 | If (testMode0) 507 | GuiControl, , testMode0, 1 508 | Else If (testMode1) 509 | GuiControl, , testMode1, 1 510 | Else If (testMode2) 511 | GuiControl, , testMode2, 1 512 | Else 513 | GuiControl, , testMode3, 1 514 | ; リピートの好み 515 | Gui, Add, Text, xm y+8, リピートの好み 516 | Gui, Add, Radio, xm+75 yp+0 Group VrepeatStyle0, 常に無制限 517 | Gui, Add, Radio, x+0 VrepeatStyle1, 基本する 518 | Gui, Add, Radio, x+0 VrepeatStyle2, 基本しない 519 | Gui, Add, Radio, x+0 VrepeatStyle3, 全くしない 520 | If (repeatStyle0) 521 | GuiControl, , repeatStyle0, 1 522 | Else If (repeatStyle1) 523 | GuiControl, , repeatStyle1, 1 524 | Else If (repeatStyle2) 525 | GuiControl, , repeatStyle2, 1 526 | Else 527 | GuiControl, , repeatStyle3, 1 528 | ; 文字出力後に IME の状態を検出しない時間 529 | Gui, Add, Text, xm y+10, 文字出力後に IME の状態を検出しない時間 530 | Gui, Add, Edit, xm+235 yp-3 W51 Number Right 531 | Gui, Add, UpDown, VimeGetInterval Range0-2000 128, %imeGetInterval% 532 | Gui, Add, Text, x+5 yp+3, ミリ秒 533 | } 534 | ; 「キー」メニュー 535 | Gui, Tab, キー 536 | ; 記号をUSキーボード風にする 537 | ; 関数 USLikeLayout が存在したら 538 | If (IsFunc("USLikeLayout")) 539 | { 540 | Gui, Add, Checkbox, xm y+10 VusLike, 記号をUSキーボード風にする 541 | If (usLike) 542 | GuiControl, , usLike, 1 543 | Gui, Add, Text, xm+18 y+1, ※ 日本語キーボードの時のみ有効です 544 | } 545 | ; 左右シフト 546 | Gui, Add, Text, xm y+10, 左右シフト 547 | Gui, Add, Radio, xm+68 yp+0 Group VsideShift1, 英数 548 | Gui, Add, Radio, x+0 VsideShift2, かな 549 | If (sideShift1) 550 | GuiControl, , sideShift1, 1 551 | Else 552 | GuiControl, , sideShift2, 1 553 | ; エンター 554 | Gui, Add, Text, xm y+5, エンター 555 | Gui, Add, Radio, xm+68 yp+0 Group VenterShift0, 通常 556 | Gui, Add, Radio, x+0 VenterShift1, 同時押しシフト 557 | If (enterShift0) 558 | GuiControl, , enterShift0, 1 559 | Else 560 | GuiControl, , enterShift1, 1 561 | ; スペースキーの長押し 562 | Gui, Add, Text, xm y+10, スペースキーの長押し 563 | Gui, Add, Radio, xm+18 y+3 Group VspaceKeyRepeat0, 何もしない 564 | Gui, Add, Radio, x+0 VspaceKeyRepeat1, 空白キャンセル 565 | Gui, Add, Radio, x+0 VspaceKeyRepeat2, 空白リピート 566 | If (spaceKeyRepeat0) 567 | GuiControl, , spaceKeyRepeat0, 1 568 | Else If (spaceKeyRepeat1) 569 | GuiControl, , spaceKeyRepeat1, 1 570 | Else 571 | GuiControl, , spaceKeyRepeat2, 1 572 | ; 英数入力時のSandS 573 | Gui, Add, Checkbox, xm y+15 VeisuSandS, 英数入力時のSandS 574 | If (eisuSandS) 575 | GuiControl, , eisuSandS, 1 576 | ; キーを離せば常に全部出力する 577 | Gui, Add, Checkbox, xm y+15 VkeyUpToOutputAll, キーを離せば常に全部出力する 578 | If (keyUpToOutputAll) 579 | GuiControl, , keyUpToOutputAll, 1 580 | ; 「同時打鍵」メニュー 581 | Gui, Tab, 同時打鍵 582 | ; 同時打鍵判定 583 | Gui, Add, Text, xm y+10, 同時打鍵判定 584 | Gui, Add, Edit, xm+95 yp-3 W45 Number Right 585 | Gui, Add, UpDown, VcombDelay Range0-200, %combDelay% 586 | Gui, Add, Text, x+5 yp+3, ミリ秒 ※ 0 は無制限 587 | ; 通常 588 | Gui, Add, Text, xm+10 y+10, 通常 589 | ; 判定期限 590 | Gui, Add, Checkbox, xm+95 yp+0 VcombLimitN, 判定期限 591 | If (combLimitN) 592 | GuiControl, , combLimitN, 1 593 | ; 文字キーシフト 594 | Gui, Add, Text, xm+20 y+5, 文字キーシフト 595 | Gui, Add, Radio, xm+105 yp+0 Group VcombStyleN0, ずっと 596 | Gui, Add, Radio, x+0 VcombStyleN1, 途切れるまで 597 | Gui, Add, Radio, x+0 VcombStyleN2, 同グループのみ継続 598 | Gui, Add, Radio, x+0 VcombStyleN3, 1回のみ 599 | If (combStyleN0) 600 | GuiControl, , combStyleN0, 1 601 | Else If (combStyleN1) 602 | GuiControl, , combStyleN1, 1 603 | Else If (combStyleN2) 604 | GuiControl, , combStyleN2, 1 605 | Else 606 | GuiControl, , combStyleN3, 1 607 | ; キーを離すと 608 | Gui, Add, Text, xm+20 y+5, キーを離すと 609 | Gui, Add, Radio, xm+105 yp+0 Group VcombKeyUpN0, 全復活 610 | Gui, Add, Radio, x+0 VcombKeyUpN1, そのまま 611 | Gui, Add, Radio, x+0 VcombKeyUpN2, 全部出力済みなら解除 612 | If (combKeyUpN0) 613 | GuiControl, , combKeyUpN0, 1 614 | Else If (combKeyUpN1) 615 | GuiControl, , combKeyUpN1, 1 616 | Else 617 | GuiControl, , combKeyUpN2, 1 618 | ; スペース押下時 619 | Gui, Add, Text, xm+10 y+5, スペース押下時 620 | ; 判定期限 621 | Gui, Add, Checkbox, xm+95 yp+0 VcombLimitS, 判定期限 622 | If (combLimitS) 623 | GuiControl, , combLimitS, 1 624 | ; 文字キーシフト 625 | Gui, Add, Text, xm+20 y+5, 文字キーシフト 626 | Gui, Add, Radio, xm+105 yp+0 Group VcombStyleS0, ずっと 627 | Gui, Add, Radio, x+0 VcombStyleS1, 途切れるまで 628 | Gui, Add, Radio, x+0 VcombStyleS2, 同グループのみ継続 629 | Gui, Add, Radio, x+0 VcombStyleS3, 1回のみ 630 | If (combStyleS0) 631 | GuiControl, , combStyleS0, 1 632 | Else If (combStyleS1) 633 | GuiControl, , combStyleS1, 1 634 | Else If (combStyleS2) 635 | GuiControl, , combStyleS2, 1 636 | Else 637 | GuiControl, , combStyleS3, 1 638 | ; キーを離すと 639 | Gui, Add, Text, xm+20 y+5, キーを離すと 640 | Gui, Add, Radio, xm+105 yp+0 Group VcombKeyUpS0, 全復活 641 | Gui, Add, Radio, x+0 VcombKeyUpS1, そのまま 642 | Gui, Add, Radio, x+0 VcombKeyUpS2, 全部出力済みなら解除 643 | If (combKeyUpS0) 644 | GuiControl, , combKeyUpS0, 1 645 | Else If (combKeyUpS1) 646 | GuiControl, , combKeyUpS1, 1 647 | Else 648 | GuiControl, , combKeyUpS2, 1 649 | ; 英数入力時 650 | Gui, Add, Text, xm+10 y+5, 英数入力時 651 | ; 判定期限ありを強制する 652 | Gui, Add, Checkbox, xm+95 yp+0 VcombLimitE, 判定期限強制 ※文字キーシフトは「同グループのみ」か「1回のみ」 653 | If (combLimitE) 654 | GuiControl, , combLimitE, 1 655 | ; スペースキーを離した時の設定 656 | Gui, Add, Text, xm+10 y+5, スペースキーを離した時の設定 657 | Gui, Add, Radio, xm+160 yp+0 Group VcombKeyUpSPC0, 通常時 658 | Gui, Add, Radio, x+0 VcombKeyUpSPC1, スペース押下時 659 | If (combKeyUpSPC0) 660 | GuiControl, , combKeyUpSPC0, 1 661 | Else 662 | GuiControl, , combKeyUpSPC1, 1 663 | 664 | Gui, Tab 665 | Gui, Add, Button, W60 xm+146 ys+200 Default, OK 666 | Gui, Add, Button, W60 x+0, Cancel 667 | 668 | Gui, Show 669 | Return 670 | 671 | ; ログ表示 672 | DispLog: 673 | DispLogFunc() 674 | Return 675 | ; ログ表示(本体) 676 | DispLogFunc() ; () -> Void型 677 | { 678 | global inBufsKey, inBufReadPos, inBufsTime, USKB, testMode 679 | ; local scanCodeArray ; [String]型 680 | ; , lastKeyTime, keyTime, diff ; Double型 681 | ; , pos, number ; Int型 682 | ; , str, c, preStr, term, temp ; String型 683 | 684 | ; USキーボード 685 | If (USKB) 686 | scanCodeArray := ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Ø", "-", "=", "BackSpace", "Tab" 687 | , "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "", "", "A", "S" 688 | , "D", "F", "G", "H", "J", "K", "L", ";", "'", "`", "LShift", "\", "Z", "X", "C", "V" 689 | , "B", "N", "M", ",", ".", "/", "", "", "", "Space", "CapsLock", "F1", "F2", "F3", "F4", "F5" 690 | , "F6", "F7", "F8", "F9", "F10", "Pause", "ScrollLock", "", "", "", "", "", "", "", "", "" 691 | , "", "", "", "", "SysRq", "", "KC_NUBS", "F11", "F12", "(Mac)=", "", "", "(NEC),", "", "", "" 692 | , "", "", "", "", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "" 693 | , "(JIS)ひらがな", "(Mac)英数", "(Mac)かな", "(JIS)_", "", "", "F24", "KC_LANG4" 694 | , "KC_LANG3", "(JIS)変換", "", "(JIS)無変換", "", "(JIS)¥", "(Mac),", ""] 695 | ; USキーボード以外 696 | Else 697 | scanCodeArray := ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Ø", "-", "^", "BackSpace", "Tab" 698 | , "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "@", "[", "", "", "A", "S" 699 | , "D", "F", "G", "H", "J", "K", "L", ";", ":", "半角/全角", "LShift", "]", "Z", "X", "C", "V" 700 | , "B", "N", "M", ",", ".", "/", "", "", "", "Space", "英数", "F1", "F2", "F3", "F4", "F5" 701 | , "F6", "F7", "F8", "F9", "F10", "Pause", "ScrollLock", "", "", "", "", "", "", "", "", "" 702 | , "", "", "", "", "SysRq", "", "KC_NUBS", "F11", "F12", "(Mac)=", "", "", "(NEC),", "", "", "" 703 | , "", "", "", "", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "" 704 | , "(JIS)ひらがな", "(Mac)英数", "(Mac)かな", "(JIS)_", "", "", "F24", "KC_LANG4" 705 | , "KC_LANG3", "(JIS)変換", "", "(JIS)無変換", "", "(JIS)¥", "(Mac),", ""] 706 | 707 | Gui, Destroy 708 | Gui, -MinimizeBox 709 | Gui, Add, Text, xm, ≪ログ≫ 710 | lastKeyTime := 0.0 711 | pos := inBufReadPos 712 | While ((pos := ++pos & 31) != inBufReadPos) 713 | { 714 | str := inBufsKey[pos], keyTime := inBufsTime[pos] 715 | If (str) 716 | { 717 | ; 時間を書き出し 718 | If (lastKeyTime) 719 | { 720 | If (testMode != "ERROR") 721 | diff := round(keyTime - lastKeyTime, 1) 722 | Else 723 | diff := round(keyTime - lastKeyTime) 724 | Gui, Add, Text, xm, % "(" . diff . "ms) " 725 | } 726 | Else 727 | Gui, Add, Text, xm 728 | 729 | ; 修飾キー 730 | preStr := "" 731 | While (c := SubStr(str, 1, 1)) 732 | { 733 | If (c == "+" || c == "^" || c == "!" || c == "#" 734 | || c == "<" || c == ">") 735 | { 736 | ; 先頭の文字を分離 737 | preStr .= c 738 | str := SubStr(str, 2) 739 | } 740 | Else If (c == "*" || c == "~" || c == "$") 741 | ; 表示させたくない先頭の文字を消去 742 | str := SubStr(str, 2) 743 | Else 744 | Break 745 | } 746 | ; キーの上げ下げを調べる 747 | StringRight, term, str, 3 ; term に入力末尾の2文字を入れる 748 | If (term = " up") 749 | { 750 | ; キーが離されたとき 751 | term := "↑" 752 | str := SubStr(str, 1, StrLen(str) - 3) 753 | } 754 | Else 755 | term := "" 756 | 757 | ; 書き出し 758 | If (str = "KeyTimer") 759 | str := "[KeyTimer]" 760 | Else If (str = "vk1A") 761 | str := "(Mac)英数" 762 | Else If (str = "vk16") 763 | str := "(Mac)かな" 764 | Else If (SubStr(str, 1, 2) = "sc") 765 | { 766 | number := "0x" . SubStr(str, 3, 2) 767 | temp := scanCodeArray[number] 768 | If (temp != "") 769 | str := temp 770 | } 771 | Gui, Add, Text, xm+60 yp, % preStr . str . term 772 | } 773 | ; 押した時間を保存 774 | lastKeyTime := keyTime 775 | } 776 | Gui, Add, Button, W60 xm+30 y+10 Default, Close 777 | Gui, Show 778 | Return 779 | } 780 | -------------------------------------------------------------------------------- /src/KanaTable/Naginata_v14.ahk: -------------------------------------------------------------------------------- 1 | ; ********************************************************************** 2 | ; 【薙刀式】v14集大成版 3 | ; http://oookaworks.seesaa.net/article/484704326.html#gsc.tab=0 4 | ; (2021年12月10日)より 5 | ; 6 | ; DvorakJ版からの変更部分: 7 | ; 編集モードD+F+H、J+K+Q、J+K+G、J+K+V、J+K+Bは変換中かどうかを問わない 8 | ; 編集モードM+Comma+W、M+Comma+S、M+Comma+F、M+Cooma+B の動作後にはクリップボードは空になる。ダミーの空白も入らない。 9 | ; 固有名詞ショートカットの第二面(スペース押下)を追加 10 | ; 固有名詞ショートカットを最大5組を切り替えられる。切り替えは E+R+1 で1番、E+R+2 で2番、など。 11 | ; Q+W に横書きモード、Q+A に縦書きモード を割り当て 12 | ; ********************************************************************** 13 | 14 | #Include %A_ScriptDir%/KanaTable/StandardLayout.ahk ; キーボード初期配列 15 | 16 | ; ---------------------------------------------------------------------- 17 | ; 英数/かな配列の定義ファイル 18 | ; 19 | ;【縦書き用だけ書き、横書き用は自動変換する方法】 20 | ; 21 | ; 例: SetKana( KC_Q | KC_L | KC_SPC ,"xwa" , R) ; (ゎ) 22 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~ ~ ~~~~ 23 | ; かな定義 スペース+Q+L 縦書き用の出力 ↑ コメント 24 | ; | 25 | ; リピートあり(NRがリピートなし) 26 | ; 27 | ; 例: SetEisu( KC_H | KC_J ,"{vkF2 2}" ) ; IME ON 28 | ; ~~~~~~~ 29 | ; 英数定義 30 | ; 31 | ; 【縦書き用と横書き用を分けて書く方法】 32 | ; 33 | ; 例: SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 34 | ; 例: SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 35 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 36 | ; かな定義 J+K+Z 縦書き用の出力 横書き用の出力 37 | ; 英数定義 38 | ; 39 | ; ※ "(){確定}" はIMEに合わせ、"{一時半角}()" は半角になり、全角で定義した "()" は全角になります 40 | ; 41 | ; ※再読み込みか、再起動で有効になります 42 | ; ※全角空白の違いが見えるエディタを使うことをおすすめします 43 | ; ※UTF-8(BOM付)で保存してください 44 | ; ※順序はグループ内で自由です。同じキーの組み合わせは、後の方が有効になります。 45 | ; ---------------------------------------------------------------------- 46 | 47 | ; 薙刀式配列固有名詞ショートカットを実装するためのルーチン 48 | #Include %A_ScriptDir%/Sub/Naginata-Koyu.ahk 49 | ; 特別出力 50 | #Include %A_ScriptDir%/KanaTable/SendSP.ahk 51 | 52 | ; かな配列読み込み 53 | ReadLayout() ; () -> Void 54 | { 55 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 56 | global layoutName, koyuNumber 57 | 58 | layoutName := "薙刀式配列v14(集大成版)" 59 | 60 | ReadStandardLayout() ; キーボード初期配列を読み込み 61 | 62 | ; ----------------------------------------- 63 | ; 別名登録 Int64型 64 | ; ----------------------------------------- 65 | AL_小 := KC_Q 66 | AL_き := AL_む := KC_W 67 | AL_て := AL_り := KC_E 68 | AL_し := AL_ぬ := KC_R 69 | AL_左 := KC_T 70 | AL_右 := KC_Y 71 | AL_BS := AL_さ := KC_U 72 | AL_る := AL_よ := KC_I 73 | AL_す := AL_え := KC_O 74 | AL_へ := AL_ゆ := KC_P 75 | 76 | AL_ろ := AL_せ := KC_A 77 | AL_け := AL_め := KC_S 78 | AL_と := AL_に := KC_D 79 | AL_か := AL_ま := AL_左濁 := KC_F 80 | AL_っ := AL_ち := KC_G 81 | AL_く := AL_や := KC_H 82 | AL_あ := AL_の := AL_右濁 := KC_J 83 | AL_い := AL_も := KC_K 84 | AL_う := AL_わ := KC_L 85 | AL_ー := AL_つ := KC_SCLN 86 | 87 | AL_ほ := KC_Z 88 | AL_ひ := KC_X 89 | AL_は := AL_を := KC_C 90 | AL_こ := AL_、 := AL_左半 := KC_V 91 | AL_そ := AL_み := KC_B 92 | AL_た := AL_お := KC_N 93 | AL_な := AL_。 := AL_右半 := KC_M 94 | AL_ん := AL_ね := KC_COMM 95 | AL_ら := AL_ふ := KC_DOT 96 | AL_れ := KC_SLSH 97 | ; ----------------------------------------- 98 | 99 | 100 | ;********************************************** 101 | ;********************************************** 102 | ; メイン部分; 単打とシフト 103 | ;********************************************** 104 | ;********************************************** 105 | 106 | ; 単打 107 | kanaGroup := "" ; グループなし 108 | SetKana( AL_小 ,"{Null}" ) ; ダミー 109 | SetKana( AL_き ,"ki" ) ; き 110 | SetKana( AL_て ,"te" ) ; て 111 | SetKana( AL_し ,"si" ) ; し 112 | SetKana( AL_左 ,"{←}" , R) ; 左 113 | SetKana( AL_右 ,"{→}" , R) ; 右 114 | SetKana( AL_BS ,"{BS}" , R) ; 前文字削除 115 | SetKana( AL_る ,"ru" ) ; る 116 | SetKana( AL_す ,"su" ) ; す 117 | SetKana( AL_へ ,"he" ) ; へ 118 | SetKana( AL_ろ ,"ro" ) ; ろ 119 | SetKana( AL_け ,"ke" ) ; け 120 | SetKana( AL_と ,"to" ) ; と 121 | SetKana( AL_か ,"ka" ) ; か 122 | SetKana( AL_っ ,"xtu" ) ; (っ) 123 | SetKana( AL_く ,"ku" ) ; く 124 | SetKana( AL_あ ,"a" ) ; あ 125 | SetKana( AL_い ,"i" ) ; い 126 | SetKana( AL_う ,"u" ) ; う 127 | SetKana( AL_ー ,"-" ) ; ー 128 | SetKana( AL_ほ ,"ho" ) ; ほ 129 | SetKana( AL_ひ ,"hi" ) ; ひ 130 | SetKana( AL_は ,"ha" ) ; は 131 | SetKana( AL_こ ,"ko" ) ; こ 132 | SetKana( AL_そ ,"so" ) ; そ 133 | SetKana( AL_た ,"ta" ) ; た 134 | SetKana( AL_な ,"na" ) ; な 135 | SetKana( AL_ん ,"nn" ) ; ん 136 | SetKana( AL_ら ,"ra" ) ; ら 137 | SetKana( AL_れ ,"re" ) ; れ 138 | 139 | ; センターシフト 140 | SetKana( AL_小 | KC_SPC ,"{Null}" ) ; ダミー 141 | SetKana( AL_む | KC_SPC ,"mu" ) ; む 142 | SetKana( AL_り | KC_SPC ,"ri" ) ; り 143 | SetKana( AL_ぬ | KC_SPC ,"nu" ) ; ぬ 144 | SetKana( AL_左 | KC_SPC ,"+{←}" , R) ; シフト + 左 145 | SetKana( AL_右 | KC_SPC ,"+{→}" , R) ; シフト + 右 146 | SetKana( AL_さ | KC_SPC ,"sa" ) ; さ 147 | SetKana( AL_よ | KC_SPC ,"yo" ) ; よ 148 | SetKana( AL_え | KC_SPC ,"e" ) ; え 149 | SetKana( AL_ゆ | KC_SPC ,"yu" ) ; ゆ 150 | SetKana( AL_せ | KC_SPC ,"se" ) ; せ 151 | SetKana( AL_め | KC_SPC ,"me" ) ; め 152 | SetKana( AL_に | KC_SPC ,"ni" ) ; に 153 | SetKana( AL_ま | KC_SPC ,"ma" ) ; ま 154 | SetKana( AL_ち | KC_SPC ,"ti" ) ; ち 155 | SetKana( AL_や | KC_SPC ,"ya" ) ; や 156 | SetKana( AL_の | KC_SPC ,"no" ) ; の 157 | SetKana( AL_も | KC_SPC ,"mo" ) ; も 158 | SetKana( AL_わ | KC_SPC ,"wa" ) ; わ 159 | SetKana( AL_つ | KC_SPC ,"tu" ) ; つ 160 | SetKana( AL_ほ | KC_SPC ,"ho" ) ; ほ 161 | SetKana( AL_ひ | KC_SPC ,"hi" ) ; ひ 162 | SetKana( AL_を | KC_SPC ,"wo" ) ; を 163 | SetKana( AL_、 | KC_SPC ,"," ) ; 、 164 | SetKana( AL_み | KC_SPC ,"mi" ) ; み 165 | SetKana( AL_お | KC_SPC ,"o" ) ; お 166 | SetKana( AL_。 | KC_SPC ,".{確定}" ) ; 。 167 | SetKana( AL_ね | KC_SPC ,"ne" ) ; ね 168 | SetKana( AL_ふ | KC_SPC ,"hu" ) ; ふ 169 | SetKana( AL_れ | KC_SPC ,"re" ) ; れ 170 | 171 | ;********************************************** 172 | ;********************************************** 173 | ; 同時押し; 濁音、半濁音、小書き、拗音、外来音 174 | ;********************************************** 175 | ;********************************************** 176 | 177 | ;**************************** 178 | ; 濁音: 逆手の人差指中段 179 | ; 連続シフト中も有効 180 | 181 | ; 右手の濁音 182 | kanaGroup := "DA" 183 | SetKana( AL_左濁 | AL_さ ,"za" ) ; ざ 184 | SetKana( AL_左濁 | AL_す ,"zu" ) ; ず 185 | SetKana( AL_左濁 | AL_へ ,"be" ) ; べ 186 | SetKana( AL_左濁 | AL_く ,"gu" ) ; ぐ 187 | SetKana( AL_左濁 | AL_う ,"vu" ) ; ヴ 188 | SetKana( AL_左濁 | AL_つ ,"du" ) ; づ 189 | SetKana( AL_左濁 | AL_た ,"da" ) ; だ 190 | SetKana( AL_左濁 | AL_ふ ,"bu" ) ; ぶ 191 | 192 | ; 左手の濁音 193 | SetKana( AL_右濁 | AL_き ,"gi" ) ; ぎ 194 | SetKana( AL_右濁 | AL_て ,"de" ) ; で 195 | SetKana( AL_右濁 | AL_し ,"zi" ) ; じ 196 | SetKana( AL_右濁 | AL_せ ,"ze" ) ; ぜ 197 | SetKana( AL_右濁 | AL_け ,"ge" ) ; げ 198 | SetKana( AL_右濁 | AL_と ,"do" ) ; ど 199 | SetKana( AL_右濁 | AL_か ,"ga" ) ; が 200 | SetKana( AL_右濁 | AL_ち ,"di" ) ; ぢ 201 | SetKana( AL_右濁 | AL_ほ ,"bo" ) ; ぼ 202 | SetKana( AL_右濁 | AL_ひ ,"bi" ) ; び 203 | SetKana( AL_右濁 | AL_は ,"ba" ) ; ば 204 | SetKana( AL_右濁 | AL_こ ,"go" ) ; ご 205 | SetKana( AL_右濁 | AL_そ ,"zo" ) ; ぞ 206 | 207 | ;**************************** 208 | ; 半濁音: 逆手の下段人差し指 209 | ; 連続シフト中も有効 210 | 211 | ; 右の半濁音 212 | kanaGroup := "HA" 213 | SetKana( AL_左半 | AL_へ ,"pe" ) ; ぺ 214 | SetKana( AL_左半 | AL_ふ ,"pu" ) ; ぷ 215 | 216 | ; 左の半濁音 217 | SetKana( AL_右半 | AL_ほ ,"po" ) ; ぽ 218 | SetKana( AL_右半 | AL_ひ ,"pi" ) ; ぴ 219 | SetKana( AL_右半 | AL_は ,"pa" ) ; ぱ 220 | 221 | ;**************************** 222 | ; 小書き: Qと同時押し 223 | kanaGroup := "KO" 224 | SetKana( AL_小 | AL_よ ,"xyo" ) ; (ょ) 225 | SetKana( AL_小 | AL_よ | KC_SPC ,"xyo" ) 226 | SetKana( AL_小 | AL_え ,"xe" ) ; (ぇ) 227 | SetKana( AL_小 | AL_え | KC_SPC ,"xe" ) 228 | SetKana( AL_小 | AL_ゆ ,"xyu" ) ; (ゅ) 229 | SetKana( AL_小 | AL_ゆ | KC_SPC ,"xyu" ) 230 | SetKana( AL_小 | AL_や ,"xya" ) ; (ゃ) 231 | SetKana( AL_小 | AL_や | KC_SPC ,"xya" ) 232 | SetKana( AL_小 | AL_あ ,"xa" ) ; (ぁ) 233 | SetKana( AL_小 | AL_あ | KC_SPC ,"xa" ) 234 | SetKana( AL_小 | AL_い ,"xi" ) ; (ぃ) 235 | SetKana( AL_小 | AL_い | KC_SPC ,"xi" ) 236 | SetKana( AL_小 | AL_う ,"xu" ) ; (ぅ) 237 | SetKana( AL_小 | AL_お ,"xo" ) ; (ぉ) 238 | SetKana( AL_小 | AL_お | KC_SPC ,"xo" ) 239 | 240 | SetKana( AL_小 | AL_わ | KC_SPC ,"xwa" ) ; (ゎ) 241 | 242 | ;********************************************** 243 | ; 拗音、外来音(3キー同時を含む) 244 | ;********************************************** 245 | ;**************************** 246 | ; 清音拗音; やゆよと同時押しで、ゃゅょが付く 247 | kanaGroup := "" ; グループなし 248 | SetKana( AL_き | AL_や ,"kya" ) ; きゃ 249 | SetKana( AL_り | AL_や ,"rya" ) ; りゃ 250 | SetKana( AL_し | AL_や ,"sya" ) ; しゃ 251 | SetKana( AL_に | AL_や ,"nya" ) ; にゃ 252 | SetKana( AL_ち | AL_や ,"tya" ) ; ちゃ 253 | SetKana( AL_ひ | AL_や ,"hya" ) ; ひゃ 254 | SetKana( AL_み | AL_や ,"mya" ) ; みゃ 255 | 256 | SetKana( AL_き | AL_ゆ ,"kyu" ) ; きゅ 257 | SetKana( AL_り | AL_ゆ ,"ryu" ) ; りゅ 258 | SetKana( AL_し | AL_ゆ ,"syu" ) ; しゅ 259 | SetKana( AL_に | AL_ゆ ,"nyu" ) ; にゅ 260 | SetKana( AL_ち | AL_ゆ ,"tyu" ) ; ちゅ 261 | SetKana( AL_ひ | AL_ゆ ,"hyu" ) ; ひゅ 262 | SetKana( AL_み | AL_ゆ ,"myu" ) ; みゅ 263 | 264 | SetKana( AL_き | AL_よ ,"kyo" ) ; きょ 265 | SetKana( AL_り | AL_よ ,"ryo" ) ; りょ 266 | SetKana( AL_し | AL_よ ,"syo" ) ; しょ 267 | SetKana( AL_に | AL_よ ,"nyo" ) ; にょ 268 | SetKana( AL_ち | AL_よ ,"tyo" ) ; ちょ 269 | SetKana( AL_ひ | AL_よ ,"hyo" ) ; ひょ 270 | SetKana( AL_み | AL_よ ,"myo" ) ; みょ 271 | 272 | ;**************************** 273 | ; 濁音拗音 274 | kanaGroup := "DA" 275 | SetKana( AL_右濁 | AL_き | AL_や ,"gya" ) ; ぎゃ 276 | SetKana( AL_右濁 | AL_し | AL_や ,"ja" ) ; じゃ 277 | SetKana( AL_右濁 | AL_ち | AL_や ,"dya" ) ; ぢゃ 278 | SetKana( AL_右濁 | AL_ひ | AL_や ,"bya" ) ; びゃ 279 | 280 | SetKana( AL_右濁 | AL_き | AL_ゆ ,"gyu" ) ; ぎゅ 281 | SetKana( AL_右濁 | AL_し | AL_ゆ ,"ju" ) ; じゅ 282 | SetKana( AL_右濁 | AL_ち | AL_ゆ ,"dyu" ) ; ぢゅ 283 | SetKana( AL_右濁 | AL_ひ | AL_ゆ ,"byu" ) ; びゅ 284 | 285 | SetKana( AL_右濁 | AL_き | AL_よ ,"gyo" ) ; ぎょ 286 | SetKana( AL_右濁 | AL_し | AL_よ ,"jo" ) ; じょ 287 | SetKana( AL_右濁 | AL_ち | AL_よ ,"dyo" ) ; ぢょ 288 | SetKana( AL_右濁 | AL_ひ | AL_よ ,"byo" ) ; びょ 289 | 290 | ;**************************** 291 | ; 半濁音拗音 292 | kanaGroup := "HA" 293 | SetKana( AL_右半 | AL_ひ | AL_よ ,"pyo" ) ; ぴょ 294 | SetKana( AL_右半 | AL_ひ | AL_ゆ ,"pyu" ) ; ぴゅ 295 | SetKana( AL_右半 | AL_ひ | AL_や ,"pya" ) ; ぴゃ 296 | 297 | ;************************************* 298 | ; 外来音は3キー同時押しに統一しました 299 | ;************************************* 300 | ; 清音外来音は半濁音キーと使用二音の三音同時 301 | ; 濁音外来音は濁音キーと使用二音の三音同時 302 | ;**************************** 303 | 304 | ; テ; ティテュディデュ 305 | kanaGroup := "HA" 306 | SetKana( AL_右半 | AL_て | AL_ゆ ,"thu" ) ; てゅ 307 | SetKana( AL_右半 | AL_て | AL_い ,"thi" ) ; てぃ 308 | 309 | kanaGroup := "DA" 310 | SetKana( AL_右濁 | AL_て | AL_ゆ ,"dhu" ) ; でゅ 311 | SetKana( AL_右濁 | AL_て | AL_い ,"dhi" ) ; でぃ 312 | 313 | ; ト; トゥドゥ 314 | kanaGroup := "HA" 315 | SetKana( AL_右半 | AL_と | AL_う ,"twu" ) ; とぅ 316 | kanaGroup := "DA" 317 | SetKana( AL_右濁 | AL_と | AL_う ,"dwu" ) ; どぅ 318 | 319 | ; シチ ェ; シェジェチェヂェ 320 | kanaGroup := "HA" 321 | SetKana( AL_右半 | AL_し | AL_え ,"sye" ) ; しぇ 322 | SetKana( AL_右半 | AL_ち | AL_え ,"tye" ) ; ちぇ 323 | kanaGroup := "DA" 324 | SetKana( AL_右濁 | AL_し | AL_え ,"je" ) ; じぇ 325 | SetKana( AL_右濁 | AL_ち | AL_え ,"dye" ) ; ぢぇ 326 | 327 | ;**************************** 328 | ; フ; ファフィフェフォフュ 329 | kanaGroup := "HA" 330 | SetKana( AL_左半 | AL_ふ | AL_え ,"fe" ) ; ふぇ 331 | SetKana( AL_左半 | AL_ふ | AL_ゆ ,"fyu" ) ; ふゅ 332 | SetKana( AL_左半 | AL_ふ | AL_あ ,"fa" ) ; ふぁ 333 | SetKana( AL_左半 | AL_ふ | AL_い ,"fi" ) ; ふぃ 334 | SetKana( AL_左半 | AL_ふ | AL_お ,"fo" ) ; ふぉ 335 | 336 | ; ヴ; ヴァヴィヴェヴォヴュ 337 | kanaGroup := "DA" 338 | SetKana( AL_左濁 | AL_う | AL_え ,"ve" ) ; ヴぇ 339 | SetKana( AL_左濁 | AL_う | AL_ゆ ,"vuxyu" ) ; ヴゅ 340 | SetKana( AL_左濁 | AL_う | AL_あ ,"va" ) ; ヴぁ 341 | SetKana( AL_左濁 | AL_う | AL_い ,"vi" ) ; ヴぃ 342 | SetKana( AL_左濁 | AL_う | AL_お ,"vo" ) ; ヴぉ 343 | 344 | ; う; ウィウェウォ い;イェ 345 | kanaGroup := "HA" 346 | SetKana( AL_左半 | AL_う | AL_え ,"we" ) ; うぇ 347 | SetKana( AL_左半 | AL_う | AL_い ,"wi" ) ; うぃ 348 | SetKana( AL_左半 | AL_う | AL_お ,"uxo" ) ; うぉ 349 | 350 | SetKana( AL_左半 | AL_い | AL_え ,"ye" ) ; いぇ 351 | 352 | ; ク; クァクィクェクォ 353 | SetKana( AL_左半 | AL_く | AL_え ,"kuxe" ) ; くぇ 354 | SetKana( AL_左半 | AL_く | AL_あ ,"kuxa" ) ; くぁ 355 | SetKana( AL_左半 | AL_く | AL_い ,"kuxi" ) ; くぃ 356 | SetKana( AL_左半 | AL_く | AL_わ ,"kuxwa" ) ; くゎ 357 | SetKana( AL_左半 | AL_く | AL_お ,"kuxo" ) ; くぉ 358 | 359 | ; グ; グァグィグェグォ 360 | kanaGroup := "DA" 361 | SetKana( AL_左濁 | AL_く | AL_え ,"guxe" ) ; ぐぇ 362 | SetKana( AL_左濁 | AL_く | AL_あ ,"gwa" ) ; ぐぁ 363 | SetKana( AL_左濁 | AL_く | AL_い ,"guxi" ) ; ぐぃ 364 | SetKana( AL_左濁 | AL_く | AL_わ ,"guxwa" ) ; ぐゎ 365 | SetKana( AL_左濁 | AL_く | AL_お ,"guxo" ) ; ぐぉ 366 | 367 | ; ツ; ツァツィツェツォ 368 | kanaGroup := "HA" 369 | SetKana( AL_左半 | AL_つ | AL_え ,"tse" ) ; つぇ 370 | SetKana( AL_左半 | AL_つ | AL_あ ,"tsa" ) ; つぁ 371 | SetKana( AL_左半 | AL_つ | AL_い ,"tsi" ) ; つぃ 372 | SetKana( AL_左半 | AL_つ | AL_お ,"tso" ) ; つぉ 373 | 374 | ; IME ON/OFF 375 | ; 事前に、MS-IMEのプロパティで、 376 | ; ひらがなカタカナキー:IME ON、無変換キー:IME OFFに設定のこと 377 | ; HJ: ON / FG: OFF 378 | 379 | kanaGroup := "" ; グループなし 380 | SetKana( KC_H | KC_J ,"{ひらがな}" , NR) ; IME ON 381 | SetEisu( KC_H | KC_J ,"{ひらがな}" , NR) 382 | SetKana( KC_F | KC_G ,"{ひらがな}{全角}" , NR) ; IME OFF 383 | SetEisu( KC_F | KC_G ,"{ひらがな}{全角}" , NR) ; (ATOK)英語入力ON は "{ひらがな}{英数}") 384 | 385 | ; Enter 386 | ; VとMの同時押し 387 | kanaGroup := "HA" 388 | SetKana( KC_V | KC_M ,"{Enter}" ) ; 行送り 389 | SetKana( KC_V | KC_M | KC_SPC ,"{Enter}" ) 390 | SetEisu( KC_V | KC_M ,"{Enter}" ) ; 行送り 391 | SetEisu( KC_V | KC_M | KC_SPC ,"{Enter}" ) 392 | 393 | ;*********************************** 394 | ;*********************************** 395 | ; 編集モード、固有名詞ショートカット 396 | ;*********************************** 397 | ;*********************************** 398 | 399 | ; 編集モード1 400 | ; 中段人差し指+中指を押しながら 401 | ; 「て」の部分は定義できない。「ディ」があるため 402 | 403 | ; 左手 404 | kanaGroup := "1L" 405 | SetKana( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 406 | SetKana( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 407 | SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}" ) ; ── 408 | SetKana( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 409 | SetKana( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 410 | SetKana( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 411 | ; SetKana( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 412 | SetKana( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 413 | SetKana( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 414 | SetKana( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 415 | SetKana( KC_J | KC_K | KC_F ,"[]{確定}{↑}" ) ; 「」 416 | SetKana( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 417 | SetKana( KC_J | KC_K | KC_T ,"/" ) ; ・未確定 418 | SetKana( KC_J | KC_K | KC_G ,"{確定}{End}{改行}[]{確定}{↑}" ) ; ⏎「」 419 | SetKana( KC_J | KC_K | KC_B ,"{確定}{End}{改行} " ) ; ⏎□ 420 | 421 | SetEisu( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 422 | SetEisu( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 423 | SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}" ) ; ── 424 | SetEisu( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 425 | SetEisu( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 426 | SetEisu( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 427 | ; SetEisu( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 428 | SetEisu( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 429 | SetEisu( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 430 | SetEisu( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 431 | SetEisu( KC_J | KC_K | KC_F ,"「」{確定}{↑}" ) ; 「」 432 | SetEisu( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 433 | SetEisu( KC_J | KC_K | KC_T ,"・" ) ; ・未確定 434 | SetEisu( KC_J | KC_K | KC_G ,"{確定}{End}{改行}「」{確定}{↑}" ) ; ⏎「」 435 | SetEisu( KC_J | KC_K | KC_B ,"{確定}{End}{改行} " ) ; ⏎□ 436 | ; 右手 437 | kanaGroup := "1R" 438 | SetKana( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 439 | SetKana( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 440 | SetKana( KC_D | KC_F | KC_N ,"{End}" ) ; End 441 | SetKana( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 442 | SetKana( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 443 | SetKana( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 444 | SetKana( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 445 | SetKana( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 446 | SetKana( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 447 | SetKana( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 448 | SetKana( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 449 | SetKana( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 450 | SetKana( KC_D | KC_F | KC_P ,"{Esc 3}" ,"ESCx3") ; 入力キャンセル 451 | SetKana( KC_D | KC_F | KC_SCLN ,"{↑ 5}" , R) ; 5↑ 452 | SetKana( KC_D | KC_F | KC_SLSH ,"{↓ 5}" , R) ; 5↓ 453 | 454 | SetEisu( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 455 | SetEisu( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 456 | SetEisu( KC_D | KC_F | KC_N ,"{End}" ) ; End 457 | SetEisu( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 458 | SetEisu( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 459 | SetEisu( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 460 | SetEisu( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 461 | SetEisu( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 462 | SetEisu( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 463 | SetEisu( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 464 | SetEisu( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 465 | SetEisu( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 466 | SetEisu( KC_D | KC_F | KC_P ,"{Esc 3}" ,"ESCx3") ; 入力キャンセル 467 | SetEisu( KC_D | KC_F | KC_SCLN ,"{↑ 5}" , R) ; 5↑ 468 | SetEisu( KC_D | KC_F | KC_SLSH ,"{↓ 5}" , R) ; 5↓ 469 | 470 | ; 編集モード2 471 | ; 下段人差指+中指 472 | 473 | ; 左手 474 | kanaGroup := "2L" 475 | SetKana( KC_M | KC_COMM | KC_Q ,"^x{BS}{Del}^v" , NR) ; カッコ外し 476 | SetKana( KC_M | KC_COMM | KC_A ,"《》{確定}{↑}" ) ; 《》 477 | SetKana( KC_M | KC_COMM | KC_Z ,"^x|{確定}^v《》{確定}{↑}{C_Clr}" , NR) ; |《》 478 | SetKana( KC_M | KC_COMM | KC_W ,"^x『^v』{確定}{C_Clr}" , NR) ; +『』 479 | SetKana( KC_M | KC_COMM | KC_S ,"^x(^v){確定}{C_Clr}" , NR) ; +() 480 | SetKana( KC_M | KC_COMM | KC_X ,"^x【^v】{確定}{C_Clr}" , NR) ; +【】 481 | SetKana( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {End}" ) ; 行頭□□□挿入 482 | SetKana( KC_M | KC_COMM | KC_D ,"   " ) ; □□□ 483 | SetKana( KC_M | KC_COMM | KC_C ,"{Home}{BS}{Del 3}{End}" ) ; 行頭□□□戻し 484 | SetKana( KC_M | KC_COMM | KC_R ,"{Home}{改行} {End}" ) ; 行頭□挿入 485 | SetKana( KC_M | KC_COMM | KC_F ,"^x[^v]{確定}{C_Clr}" , NR) ; +「」 486 | SetKana( KC_M | KC_COMM | KC_V ,"{Home}{BS}{Del 1}{End}" ) ; 行頭□戻し 487 | SetKana( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 488 | SetKana( KC_M | KC_COMM | KC_G ,"/{確定}" ) ; / 489 | SetKana( KC_M | KC_COMM | KC_B ,"   ×   ×   ×{確定}{改行}" ) ; x x x 490 | 491 | SetEisu( KC_M | KC_COMM | KC_Q ,"^x{BS}{Del}^v" , NR) ; カッコ外し 492 | SetEisu( KC_M | KC_COMM | KC_A ,"《》{確定}{↑}" ) ; 《》 493 | SetEisu( KC_M | KC_COMM | KC_Z ,"^x|{確定}^v《》{確定}{↑}{C_Clr}" , NR) ; |《》 494 | SetEisu( KC_M | KC_COMM | KC_W ,"^x『^v』{確定}{C_Clr}" , NR) ; +『』 495 | SetEisu( KC_M | KC_COMM | KC_S ,"^x(^v){確定}{C_Clr}" , NR) ; +() 496 | SetEisu( KC_M | KC_COMM | KC_X ,"^x【^v】{確定}{C_Clr}" , NR) ; +【】 497 | SetEisu( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {End}" ) ; 行頭□□□挿入 498 | SetEisu( KC_M | KC_COMM | KC_D ,"   " ) ; □□□ 499 | SetEisu( KC_M | KC_COMM | KC_C ,"{Home}{BS}{Del 3}{End}" ) ; 行頭□□□戻し 500 | SetEisu( KC_M | KC_COMM | KC_R ,"{Home}{改行} {End}" ) ; 行頭□挿入 501 | SetEisu( KC_M | KC_COMM | KC_F ,"^x「^v」{確定}{C_Clr}" , NR) ; +「」 502 | SetEisu( KC_M | KC_COMM | KC_V ,"{Home}{BS}{Del 1}{End}" ) ; 行頭□戻し 503 | SetEisu( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 504 | SetEisu( KC_M | KC_COMM | KC_G ,"/{確定}" ) ; / 505 | SetEisu( KC_M | KC_COMM | KC_B ,"   ×   ×   ×{確定}{改行}" ) ; x x x 506 | 507 | ; 右手 508 | kanaGroup := "2R" 509 | SetKana( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 510 | SetKana( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 511 | SetKana( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 512 | SetKana( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 513 | SetKana( KC_C | KC_V | KC_J ,"{→ 5}" , R) ; →5 514 | SetKana( KC_C | KC_V | KC_M ,"{← 5}" , R) ; ←5 515 | SetKana( KC_C | KC_V | KC_I ,"^v" ) ; Paste 516 | SetKana( KC_C | KC_V | KC_K ,"+{→ 5}" , R) ; +→5 517 | SetKana( KC_C | KC_V | KC_COMM ,"+{← 5}" , R) ; +←5 518 | SetKana( KC_C | KC_V | KC_O ,"^y" ) ; Redo 519 | SetKana( KC_C | KC_V | KC_L ,"+{→ 20}" , R) ; +→20 520 | SetKana( KC_C | KC_V | KC_DOT ,"+{← 20}" , R) ; +←20 521 | SetKana( KC_C | KC_V | KC_P ,"^z" ) ; Undo 522 | SetKana( KC_C | KC_V | KC_SCLN ,"^i" ) ; カタカナ 523 | SetKana( KC_C | KC_V | KC_SLSH ,"^u" ) ; ひらがな 524 | 525 | SetEisu( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 526 | SetEisu( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 527 | SetEisu( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 528 | SetEisu( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 529 | SetEisu( KC_C | KC_V | KC_J ,"{→ 5}" , R) ; →5 530 | SetEisu( KC_C | KC_V | KC_M ,"{← 5}" , R) ; ←5 531 | SetEisu( KC_C | KC_V | KC_I ,"^v" ) ; Paste 532 | SetEisu( KC_C | KC_V | KC_K ,"+{→ 5}" , R) ; +→5 533 | SetEisu( KC_C | KC_V | KC_COMM ,"+{← 5}" , R) ; +←5 534 | SetEisu( KC_C | KC_V | KC_O ,"^y" ) ; Redo 535 | SetEisu( KC_C | KC_V | KC_L ,"+{→ 20}" , R) ; +→20 536 | SetEisu( KC_C | KC_V | KC_DOT ,"+{← 20}" , R) ; +←20 537 | SetEisu( KC_C | KC_V | KC_P ,"^z" ) ; Undo 538 | SetEisu( KC_C | KC_V | KC_SCLN ,"^i" ) ; カタカナ 539 | SetEisu( KC_C | KC_V | KC_SLSH ,"^u" ) ; ひらがな 540 | 541 | kanaGroup := "" ; グループなし 542 | SetKana( KC_Q | KC_W ,"Null" ,"横書き") 543 | SetEisu( KC_Q | KC_W ,"Null" ,"横書き") 544 | SetKana( KC_Q | KC_A ,"Null" ,"縦書き") 545 | SetEisu( KC_Q | KC_A ,"Null" ,"縦書き") 546 | 547 | 548 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 549 | If (keyDriver = "kbd101.dll") 550 | { 551 | ; おまけ 552 | SetEisu( JP_YEN ,"\" ) ; ¥ 553 | SetEisu( KC_INT1 ,"\" ) ; ¥ 554 | SetEisu( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 555 | SetEisu( KC_INT1 | KC_SPC ,"_" ) ; _ スペース押しながら 556 | 557 | SetKana( JP_YEN ,"\" ) ; ¥ 558 | SetKana( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 559 | } 560 | 561 | If (usLike > 0) 562 | USLikeLayout() ; USキーボード風の配列へ 563 | 564 | KoyuReadAndRegist(koyuNumber) ; 固有名詞ショートカットの読み込み・登録 565 | 566 | Return 567 | } 568 | 569 | ; USキーボード風の配列へ 570 | USLikeLayout() ; () -> Void 571 | { 572 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 573 | 574 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 575 | If (keyDriver = "kbd101.dll") 576 | Return 577 | 578 | kanaGroup := "" ; グループなし 579 | SetEisu( KC_EQL ,"+{sc0C}" ) ; = 580 | SetEisu( KC_LBRC ,"{sc1B}" ) ; [ 581 | SetEisu( KC_RBRC ,"{sc2B}" ) ; ] 582 | SetEisu( KC_QUOT ,"+{sc08}" ) ; ' 583 | SetEisu( KC_NUHS ,"+{sc1A}" ) ; ` 584 | 585 | SetEisu( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 586 | SetEisu( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 587 | SetEisu( KC_SPC | KC_7 ,"+{sc07}" ) ; & 588 | SetEisu( KC_SPC | KC_8 ,"+{sc28}" ) ; * 589 | SetEisu( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 590 | SetEisu( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 591 | SetEisu( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 592 | SetEisu( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 593 | SetEisu( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 594 | SetEisu( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 595 | SetEisu( KC_SPC | KC_SCLN ,"{sc28}" ) ; : 596 | SetEisu( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 597 | SetEisu( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 598 | 599 | 600 | SetKana( KC_EQL ,"+{sc0C}" ) ; = 601 | SetKana( KC_LBRC ,"{sc1B}" ) ; [ 602 | SetKana( KC_RBRC ,"{sc2B}" ) ; ] 603 | SetKana( KC_QUOT ,"+{sc08}" ) ; ' 604 | SetKana( KC_NUHS ,"+{sc1A}" ) ; ` 605 | 606 | SetKana( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 607 | SetKana( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 608 | SetKana( KC_SPC | KC_7 ,"+{sc07}" ) ; & 609 | SetKana( KC_SPC | KC_8 ,"+{sc28}" ) ; * 610 | SetKana( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 611 | SetKana( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 612 | SetKana( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 613 | SetKana( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 614 | SetKana( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 615 | SetKana( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 616 | ; SetKana( KC_SPC | KC_SCLN ,"{sc28}" ) ; : (薙刀式で使用) 617 | SetKana( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 618 | SetKana( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 619 | 620 | ; 設定がPC-9800キーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 621 | If (keyDriver = "kbdnec.dll") 622 | { 623 | SetEisu( KC_NUHS ,"+{sc0D}" ) ; ` 624 | SetEisu( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 625 | 626 | SetKana( KC_NUHS ,"+{sc0D}" ) ; ` 627 | SetKana( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 628 | } 629 | 630 | Return 631 | } 632 | 633 | ; 固有名詞ショートカットの登録 634 | KoyuRegist() ; () -> Void 635 | { 636 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 637 | #IncludeAgain %A_ScriptDir%/Sub/Naginata-Koyu_h.ahk 638 | 639 | ;************************************** 640 | ; 固有名詞ショートカット 641 | ; 上段人差指+中指 642 | 643 | ; 第一面 644 | kanaGroup := "KL" ; 左手側 645 | SetKana(KC_U | KC_I | KC_1 ,"{直接}" . E01) 646 | SetKana(KC_U | KC_I | KC_2 ,"{直接}" . E02) 647 | SetKana(KC_U | KC_I | KC_3 ,"{直接}" . E03) 648 | SetKana(KC_U | KC_I | KC_4 ,"{直接}" . E04) 649 | SetKana(KC_U | KC_I | KC_5 ,"{直接}" . E05) 650 | kanaGroup := "KR" ; 右手側 651 | SetKana(KC_E | KC_R | KC_6 ,"{直接}" . E06) 652 | SetKana(KC_E | KC_R | KC_7 ,"{直接}" . E07) 653 | SetKana(KC_E | KC_R | KC_8 ,"{直接}" . E08) 654 | SetKana(KC_E | KC_R | KC_9 ,"{直接}" . E09) 655 | SetKana(KC_E | KC_R | KC_0 ,"{直接}" . E10) 656 | SetKana(KC_E | KC_R | KC_MINS ,"{直接}" . E11) 657 | SetKana(KC_E | KC_R | KC_EQL ,"{直接}" . E12) 658 | SetKana(KC_E | KC_R | JP_YEN ,"{直接}" . E13) 659 | 660 | kanaGroup := "KL" ; 左手側 661 | SetKana(KC_U | KC_I | KC_Q ,"{直接}" . D01) 662 | SetKana(KC_U | KC_I | KC_W ,"{直接}" . D02) 663 | SetKana(KC_U | KC_I | KC_E ,"{直接}" . D03) 664 | SetKana(KC_U | KC_I | KC_R ,"{直接}" . D04) 665 | SetKana(KC_U | KC_I | KC_T ,"{直接}" . D05) 666 | kanaGroup := "KR" ; 右手側 667 | SetKana(KC_E | KC_R | KC_Y ,"{直接}" . D06) 668 | SetKana(KC_E | KC_R | KC_U ,"{直接}" . D07) 669 | SetKana(KC_E | KC_R | KC_I ,"{直接}" . D08) 670 | SetKana(KC_E | KC_R | KC_O ,"{直接}" . D09) 671 | SetKana(KC_E | KC_R | KC_P ,"{直接}" . D10) 672 | SetKana(KC_E | KC_R | KC_LBRC ,"{直接}" . D11) 673 | SetKana(KC_E | KC_R | KC_RBRC ,"{直接}" . D12) 674 | 675 | kanaGroup := "KL" ; 左手側 676 | SetKana(KC_U | KC_I | KC_A ,"{直接}" . C01) 677 | SetKana(KC_U | KC_I | KC_S ,"{直接}" . C02) 678 | SetKana(KC_U | KC_I | KC_D ,"{直接}" . C03) 679 | SetKana(KC_U | KC_I | KC_F ,"{直接}" . C04) 680 | SetKana(KC_U | KC_I | KC_G ,"{直接}" . C05) 681 | kanaGroup := "KR" ; 右手側 682 | SetKana(KC_E | KC_R | KC_H ,"{直接}" . C06) 683 | SetKana(KC_E | KC_R | KC_J ,"{直接}" . C07) 684 | SetKana(KC_E | KC_R | KC_K ,"{直接}" . C08) 685 | SetKana(KC_E | KC_R | KC_L ,"{直接}" . C09) 686 | SetKana(KC_E | KC_R | KC_SCLN ,"{直接}" . C10) 687 | SetKana(KC_E | KC_R | KC_QUOT ,"{直接}" . C11) 688 | SetKana(KC_E | KC_R | KC_NUHS ,"{直接}" . C12) 689 | 690 | kanaGroup := "KL" ; 左手側 691 | SetKana(KC_U | KC_I | KC_Z ,"{直接}" . B01) 692 | SetKana(KC_U | KC_I | KC_X ,"{直接}" . B02) 693 | SetKana(KC_U | KC_I | KC_C ,"{直接}" . B03) 694 | SetKana(KC_U | KC_I | KC_V ,"{直接}" . B04) 695 | SetKana(KC_U | KC_I | KC_B ,"{直接}" . B05) 696 | kanaGroup := "KR" ; 右手側 697 | SetKana(KC_E | KC_R | KC_N ,"{直接}" . B06) 698 | SetKana(KC_E | KC_R | KC_M ,"{直接}" . B07) 699 | SetKana(KC_E | KC_R | KC_COMM ,"{直接}" . B08) 700 | SetKana(KC_E | KC_R | KC_DOT ,"{直接}" . B09) 701 | SetKana(KC_E | KC_R | KC_SLSH ,"{直接}" . B10) 702 | SetKana(KC_E | KC_R | KC_INT1 ,"{直接}" . B11) 703 | 704 | ; 第二面 705 | kanaGroup := "KL" ; 左手側 706 | SetKana(KC_SPC | KC_U | KC_I | KC_1 ,"{直接}" . E01S) 707 | SetKana(KC_SPC | KC_U | KC_I | KC_2 ,"{直接}" . E02S) 708 | SetKana(KC_SPC | KC_U | KC_I | KC_3 ,"{直接}" . E03S) 709 | SetKana(KC_SPC | KC_U | KC_I | KC_4 ,"{直接}" . E04S) 710 | SetKana(KC_SPC | KC_U | KC_I | KC_5 ,"{直接}" . E05S) 711 | kanaGroup := "KR" ; 右手側 712 | SetKana(KC_SPC | KC_E | KC_R | KC_6 ,"{直接}" . E06S) 713 | SetKana(KC_SPC | KC_E | KC_R | KC_7 ,"{直接}" . E07S) 714 | SetKana(KC_SPC | KC_E | KC_R | KC_8 ,"{直接}" . E08S) 715 | SetKana(KC_SPC | KC_E | KC_R | KC_9 ,"{直接}" . E09S) 716 | SetKana(KC_SPC | KC_E | KC_R | KC_0 ,"{直接}" . E10S) 717 | SetKana(KC_SPC | KC_E | KC_R | KC_MINS ,"{直接}" . E11S) 718 | SetKana(KC_SPC | KC_E | KC_R | KC_EQL ,"{直接}" . E12S) 719 | SetKana(KC_SPC | KC_E | KC_R | JP_YEN ,"{直接}" . E13S) 720 | 721 | kanaGroup := "KL" ; 左手側 722 | SetKana(KC_SPC | KC_U | KC_I | KC_Q ,"{直接}" . D01S) 723 | SetKana(KC_SPC | KC_U | KC_I | KC_W ,"{直接}" . D02S) 724 | SetKana(KC_SPC | KC_U | KC_I | KC_E ,"{直接}" . D03S) 725 | SetKana(KC_SPC | KC_U | KC_I | KC_R ,"{直接}" . D04S) 726 | SetKana(KC_SPC | KC_U | KC_I | KC_T ,"{直接}" . D05S) 727 | kanaGroup := "KR" ; 右手側 728 | SetKana(KC_SPC | KC_E | KC_R | KC_Y ,"{直接}" . D06S) 729 | SetKana(KC_SPC | KC_E | KC_R | KC_U ,"{直接}" . D07S) 730 | SetKana(KC_SPC | KC_E | KC_R | KC_I ,"{直接}" . D08S) 731 | SetKana(KC_SPC | KC_E | KC_R | KC_O ,"{直接}" . D09S) 732 | SetKana(KC_SPC | KC_E | KC_R | KC_P ,"{直接}" . D10S) 733 | SetKana(KC_SPC | KC_E | KC_R | KC_LBRC ,"{直接}" . D11S) 734 | SetKana(KC_SPC | KC_E | KC_R | KC_RBRC ,"{直接}" . D12S) 735 | 736 | kanaGroup := "KL" ; 左手側 737 | SetKana(KC_SPC | KC_U | KC_I | KC_A ,"{直接}" . C01S) 738 | SetKana(KC_SPC | KC_U | KC_I | KC_S ,"{直接}" . C02S) 739 | SetKana(KC_SPC | KC_U | KC_I | KC_D ,"{直接}" . C03S) 740 | SetKana(KC_SPC | KC_U | KC_I | KC_F ,"{直接}" . C04S) 741 | SetKana(KC_SPC | KC_U | KC_I | KC_G ,"{直接}" . C05S) 742 | kanaGroup := "KR" ; 右手側 743 | SetKana(KC_SPC | KC_E | KC_R | KC_H ,"{直接}" . C06S) 744 | SetKana(KC_SPC | KC_E | KC_R | KC_J ,"{直接}" . C07S) 745 | SetKana(KC_SPC | KC_E | KC_R | KC_K ,"{直接}" . C08S) 746 | SetKana(KC_SPC | KC_E | KC_R | KC_L ,"{直接}" . C09S) 747 | SetKana(KC_SPC | KC_E | KC_R | KC_SCLN ,"{直接}" . C10S) 748 | SetKana(KC_SPC | KC_E | KC_R | KC_QUOT ,"{直接}" . C11S) 749 | SetKana(KC_SPC | KC_E | KC_R | KC_NUHS ,"{直接}" . C12S) 750 | 751 | kanaGroup := "KL" ; 左手側 752 | SetKana(KC_SPC | KC_U | KC_I | KC_Z ,"{直接}" . B01S) 753 | SetKana(KC_SPC | KC_U | KC_I | KC_X ,"{直接}" . B02S) 754 | SetKana(KC_SPC | KC_U | KC_I | KC_C ,"{直接}" . B03S) 755 | SetKana(KC_SPC | KC_U | KC_I | KC_V ,"{直接}" . B04S) 756 | SetKana(KC_SPC | KC_U | KC_I | KC_B ,"{直接}" . B05S) 757 | kanaGroup := "KR" ; 右手側 758 | SetKana(KC_SPC | KC_E | KC_R | KC_N ,"{直接}" . B06S) 759 | SetKana(KC_SPC | KC_E | KC_R | KC_M ,"{直接}" . B07S) 760 | SetKana(KC_SPC | KC_E | KC_R | KC_COMM ,"{直接}" . B08S) 761 | SetKana(KC_SPC | KC_E | KC_R | KC_DOT ,"{直接}" . B09S) 762 | SetKana(KC_SPC | KC_E | KC_R | KC_SLSH ,"{直接}" . B10S) 763 | SetKana(KC_SPC | KC_E | KC_R | KC_INT1 ,"{直接}" . B11S) 764 | 765 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 766 | If (keyDriver == "kbd101.dll") 767 | { 768 | SetKana(KC_E | KC_R | KC_BSLS ,"{直接}" . E13) 769 | SetKana(KC_E | KC_R | KC_GRV ,"{直接}" . C12) 770 | SetKana(KC_SPC | KC_E | KC_R | KC_BSLS ,"{直接}" . E13S) 771 | SetKana(KC_SPC | KC_E | KC_R | KC_GRV ,"{直接}" . C12S) 772 | } 773 | 774 | kanaGroup := "2L" 775 | ; 固有名詞ショートカットを切り替える 776 | SetKana( KC_E | KC_R | KC_1 , 1, "KoyuChange") ; 固有名詞ショートカット1 777 | SetKana( KC_E | KC_R | KC_2 , 2, "KoyuChange") ; 固有名詞ショートカット2 778 | SetKana( KC_E | KC_R | KC_3 , 3, "KoyuChange") ; 固有名詞ショートカット3 779 | SetKana( KC_E | KC_R | KC_4 , 4, "KoyuChange") ; 固有名詞ショートカット4 780 | SetKana( KC_E | KC_R | KC_5 , 5, "KoyuChange") ; 固有名詞ショートカット5 781 | 782 | kanaGroup := "" ; グループなし 783 | Return 784 | } 785 | 786 | ; ---------------------------------------------------------------------- 787 | ; 追加のホットキー 788 | ; ---------------------------------------------------------------------- 789 | +^sc0B::Suspend, On ; 薙刀式中断 Shift+Ctrl+0 790 | +^sc02::Suspend, Off ; 薙刀式再開 Shift+Ctrl+1 791 | -------------------------------------------------------------------------------- /src/KanaTable/Naginata_tor.ahk: -------------------------------------------------------------------------------- 1 | ; 薙刀式v15fix版 から改造 2 | ; ATOKのローマ字カスタマイズを「MS-IMEスタイル」に変更 3 | ; ********************************************************************** 4 | ; 【薙刀式】v15fix版、発表 5 | ; http://oookaworks.seesaa.net/article/500180437.html#gsc.tab=0 6 | ; (2023年7月28日)より 7 | ; 8 | ; DvorakJ版からの変更部分: 9 | ; 冗長シフトを削除 10 | ; 編集モードD+F+H、J+K+Q、J+K+G、J+K+V、J+K+Bは変換中かどうかを問わない 11 | ; 切り取りと貼り付けを使う編集モードの前後で、クリップボードの内容を保つ 12 | ; 固有名詞ショートカットの第二面(スペース押下)を追加 13 | ; 固有名詞ショートカットを最大5組を切り替えられる。切り替えは E+R+1 で1番、E+R+2 で2番、など。 14 | ; Q+W に横書きモード、Q+A に縦書きモード を割り当て 15 | ; ********************************************************************** 16 | 17 | #Include %A_ScriptDir%/KanaTable/StandardLayout.ahk ; キーボード初期配列 18 | ;#Include %A_ScriptDir%/KanaTable/WorkmanLayout.ahk ; Workman配列 19 | 20 | ; ---------------------------------------------------------------------- 21 | ; 英数/かな配列の定義ファイル 22 | ; 23 | ;【縦書き用だけ書き、横書き用は自動変換する方法】 24 | ; 25 | ; 例: SetKana( KC_Q | KC_L | KC_SPC ,"xwa" , R) ; (ゎ) 26 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~ ~ ~~~~ 27 | ; かな定義 スペース+Q+L 縦書き用の出力 ↑ コメント 28 | ; | 29 | ; リピートあり(NRがリピートなし) 30 | ; 31 | ; 例: SetEisu( KC_H | KC_J ,"{vkF2 2}" ) ; IME ON 32 | ; ~~~~~~~ 33 | ; 英数定義 34 | ; 35 | ; 【縦書き用と横書き用を分けて書く方法】 36 | ; 37 | ; 例: SetKana2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 38 | ; 例: SetEisu2(KC_J | KC_K | KC_Z ,"││{確定}", "──{確定}") 39 | ; ~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 40 | ; かな定義 J+K+Z 縦書き用の出力 横書き用の出力 41 | ; 英数定義 42 | ; 43 | ; ※ "(){確定}" はIMEに合わせ、"{一時半角}()" は半角になり、全角で定義した "()" は全角になります 44 | ; 45 | ; ※再読み込みか、再起動で有効になります 46 | ; ※全角空白の違いが見えるエディタを使うことをおすすめします 47 | ; ※UTF-8(BOM付)で保存してください 48 | ; ※順序はグループ内で自由です。同じキーの組み合わせは、後の方が有効になります。 49 | ; ---------------------------------------------------------------------- 50 | 51 | ; 薙刀式配列固有名詞ショートカットを実装するためのルーチン 52 | #Include %A_ScriptDir%/Sub/Naginata-Koyu.ahk 53 | ; 特別出力 54 | #Include %A_ScriptDir%/KanaTable/SendSP.ahk 55 | 56 | ; かな配列読み込み 57 | ReadLayout() ; () -> Void 58 | { 59 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 60 | global layoutName, koyuNumber 61 | 62 | layoutName := "薙刀式配列`nv15fix版*改造" 63 | 64 | ReadStandardLayout() ; キーボード初期配列を読み込み 65 | ; ReadWorkmanLayout() ; Workman配列 66 | 67 | ; ----------------------------------------- 68 | ; 別名登録 Int64型 69 | ; ----------------------------------------- 70 | AL_ヴ := AL_小 := KC_Q 71 | AL_き := AL_ぬ := KC_W 72 | AL_て := AL_り := KC_E 73 | AL_し := AL_ね := KC_R 74 | AL_左 := KC_T 75 | AL_右 := KC_Y 76 | AL_BS := AL_さ := KC_U 77 | AL_る := AL_よ := KC_I 78 | AL_す := AL_え := KC_O 79 | AL_へ := AL_ゆ := KC_P 80 | 81 | AL_ろ := AL_せ := KC_A 82 | AL_け := AL_め := KC_S 83 | AL_と := AL_に := KC_D 84 | AL_か := AL_ま := AL_左濁 := KC_F 85 | AL_っ := AL_ち := KC_G 86 | AL_く := AL_や := KC_H 87 | AL_あ := AL_の := AL_右濁 := KC_J 88 | AL_い := AL_も := KC_K 89 | AL_う := AL_つ := KC_L 90 | AL_ー := AL_ふ := KC_SCLN 91 | 92 | AL_ほ := KC_Z 93 | AL_ひ := KC_X 94 | AL_は := AL_を := KC_C 95 | AL_こ := AL_、 := AL_左半 := KC_V 96 | AL_そ := AL_み := KC_B 97 | AL_た := AL_お := KC_N 98 | AL_な := AL_。 := AL_右半 := KC_M 99 | AL_ん := AL_む := KC_COMM 100 | AL_ら := AL_わ := KC_DOT 101 | AL_れ := KC_SLSH 102 | ; ----------------------------------------- 103 | 104 | 105 | ;********************************************** 106 | ;********************************************** 107 | ; メイン部分; 単打とシフト 108 | ;********************************************** 109 | ;********************************************** 110 | 111 | ; 単打 112 | kanaGroup := "" ; グループなし 113 | SetKana( AL_ヴ ,"vu" ) ; ヴ 114 | SetKana( AL_き ,"ki" ) ; き 115 | SetKana( AL_て ,"te" ) ; て 116 | SetKana( AL_し ,"si" ) ; し 117 | SetKana( AL_左 ,"{←}" , R) ; 左 118 | SetKana( AL_右 ,"{→}" , R) ; 右 119 | SetKana( AL_BS ,"{BS}" , R) ; 前文字削除 120 | SetKana( AL_る ,"ru" ) ; る 121 | SetKana( AL_す ,"su" ) ; す 122 | SetKana( AL_へ ,"he" ) ; へ 123 | SetKana( AL_ろ ,"ro" ) ; ろ 124 | SetKana( AL_け ,"ke" ) ; け 125 | SetKana( AL_と ,"to" ) ; と 126 | SetKana( AL_か ,"ka" ) ; か 127 | SetKana( AL_っ ,"xtu" ) ; (っ) 128 | SetKana( AL_く ,"ku" ) ; く 129 | SetKana( AL_あ ,"a" ) ; あ 130 | SetKana( AL_い ,"i" ) ; い 131 | SetKana( AL_う ,"u" ) ; う 132 | SetKana( AL_ー ,"-" ) ; ー 133 | SetKana( AL_ほ ,"ho" ) ; ほ 134 | SetKana( AL_ひ ,"hi" ) ; ひ 135 | SetKana( AL_は ,"ha" ) ; は 136 | SetKana( AL_こ ,"ko" ) ; こ 137 | SetKana( AL_そ ,"so" ) ; そ 138 | SetKana( AL_た ,"ta" ) ; た 139 | SetKana( AL_な ,"na" ) ; な 140 | SetKana( AL_ん ,"nn" ) ; ん 141 | SetKana( AL_ら ,"ra" ) ; ら 142 | SetKana( AL_れ ,"re" ) ; れ 143 | 144 | ; センターシフト 145 | SetKana( AL_ヴ | KC_SPC ,"vu" ) ; ヴ 146 | SetKana( AL_ぬ | KC_SPC ,"nu" ) ; ぬ 147 | SetKana( AL_り | KC_SPC ,"ri" ) ; り 148 | SetKana( AL_ね | KC_SPC ,"ne" ) ; ね 149 | SetKana( AL_左 | KC_SPC ,"+{←}" , R) ; シフト + 左 150 | SetKana( AL_右 | KC_SPC ,"+{→}" , R) ; シフト + 右 151 | SetKana( AL_さ | KC_SPC ,"sa" ) ; さ 152 | SetKana( AL_よ | KC_SPC ,"yo" ) ; よ 153 | SetKana( AL_え | KC_SPC ,"e" ) ; え 154 | SetKana( AL_ゆ | KC_SPC ,"yu" ) ; ゆ 155 | SetKana( AL_せ | KC_SPC ,"se" ) ; せ 156 | SetKana( AL_め | KC_SPC ,"me" ) ; め 157 | SetKana( AL_に | KC_SPC ,"ni" ) ; に 158 | SetKana( AL_ま | KC_SPC ,"ma" ) ; ま 159 | SetKana( AL_ち | KC_SPC ,"ti" ) ; ち 160 | SetKana( AL_や | KC_SPC ,"ya" ) ; や 161 | SetKana( AL_の | KC_SPC ,"no" ) ; の 162 | SetKana( AL_も | KC_SPC ,"mo" ) ; も 163 | SetKana( AL_つ | KC_SPC ,"tu" ) ; つ 164 | SetKana( AL_ふ | KC_SPC ,"hu" ) ; ふ 165 | SetKana( AL_ほ | KC_SPC ,"ho" ) ; ほ 166 | SetKana( AL_ひ | KC_SPC ,"hi" ) ; ひ 167 | SetKana( AL_を | KC_SPC ,"wo" ) ; を 168 | SetKana( AL_、 | KC_SPC ,",{確定}" ) ; 、 169 | SetKana( AL_み | KC_SPC ,"mi" ) ; み 170 | SetKana( AL_お | KC_SPC ,"o" ) ; お 171 | SetKana( AL_。 | KC_SPC ,".{確定}" ) ; 。 172 | SetKana( AL_む | KC_SPC ,"mu" ) ; む 173 | SetKana( AL_わ | KC_SPC ,"wa" ) ; わ 174 | SetKana( AL_れ | KC_SPC ,"re" ) ; れ 175 | 176 | ;********************************************** 177 | ;********************************************** 178 | ; 同時押し; 濁音、半濁音、小書き、拗音、外来音 179 | ;********************************************** 180 | ;********************************************** 181 | 182 | ;**************************** 183 | ; 濁音: 逆手の人差指中段 184 | ; 連続シフト中も有効 185 | 186 | ; 右手の濁音 187 | kanaGroup := "DA" 188 | SetKana( AL_左濁 | AL_さ ,"za" ) ; ざ 189 | SetKana( AL_左濁 | AL_す ,"zu" ) ; ず 190 | SetKana( AL_左濁 | AL_へ ,"be" ) ; べ 191 | SetKana( AL_左濁 | AL_く ,"gu" ) ; ぐ 192 | SetKana( AL_左濁 | AL_つ ,"du" ) ; づ 193 | SetKana( AL_左濁 | AL_ふ ,"bu" ) ; ぶ 194 | SetKana( AL_左濁 | AL_た ,"da" ) ; だ 195 | 196 | ; 左手の濁音 197 | SetKana( AL_右濁 | AL_き ,"gi" ) ; ぎ 198 | SetKana( AL_右濁 | AL_て ,"de" ) ; で 199 | SetKana( AL_右濁 | AL_し ,"zi" ) ; じ 200 | SetKana( AL_右濁 | AL_せ ,"ze" ) ; ぜ 201 | SetKana( AL_右濁 | AL_け ,"ge" ) ; げ 202 | SetKana( AL_右濁 | AL_と ,"do" ) ; ど 203 | SetKana( AL_右濁 | AL_か ,"ga" ) ; が 204 | SetKana( AL_右濁 | AL_ち ,"di" ) ; ぢ 205 | SetKana( AL_右濁 | AL_ほ ,"bo" ) ; ぼ 206 | SetKana( AL_右濁 | AL_ひ ,"bi" ) ; び 207 | SetKana( AL_右濁 | AL_は ,"ba" ) ; ば 208 | SetKana( AL_右濁 | AL_こ ,"go" ) ; ご 209 | SetKana( AL_右濁 | AL_そ ,"zo" ) ; ぞ 210 | 211 | ;**************************** 212 | ; 半濁音: 逆手の下段人差し指 213 | ; 連続シフト中も有効 214 | 215 | ; 右の半濁音 216 | kanaGroup := "HA" 217 | SetKana( AL_左半 | AL_へ ,"pe" ) ; ぺ 218 | SetKana( AL_左半 | AL_ふ ,"pu" ) ; ぷ 219 | 220 | ; 左の半濁音 221 | SetKana( AL_右半 | AL_ほ ,"po" ) ; ぽ 222 | SetKana( AL_右半 | AL_ひ ,"pi" ) ; ぴ 223 | SetKana( AL_右半 | AL_は ,"pa" ) ; ぱ 224 | 225 | ;**************************** 226 | ; 小書き: Qと同時押し 227 | kanaGroup := "KO" 228 | SetKana( AL_小 | AL_よ ,"xyo" ) ; (ょ) 229 | SetKana( AL_小 | AL_え ,"xe" ) ; (ぇ) 230 | SetKana( AL_小 | AL_ゆ ,"xyu" ) ; (ゅ) 231 | SetKana( AL_小 | AL_や ,"xya" ) ; (ゃ) 232 | SetKana( AL_小 | AL_あ ,"xa" ) ; (ぁ) 233 | SetKana( AL_小 | AL_い ,"xi" ) ; (ぃ) 234 | SetKana( AL_小 | AL_う ,"xu" ) ; (ぅ) 235 | SetKana( AL_小 | AL_お ,"xo" ) ; (ぉ) 236 | SetKana( AL_小 | AL_わ ,"xwa" ) ; (ゎ) 237 | 238 | ;********************************************** 239 | ; 拗音、外来音(3キー同時を含む) 240 | ;********************************************** 241 | ;**************************** 242 | ; 清音拗音; やゆよと同時押しで、ゃゅょが付く 243 | kanaGroup := "" ; グループなし 244 | SetKana( AL_き | AL_や ,"kya" ) ; きゃ 245 | SetKana( AL_り | AL_や ,"rya" ) ; りゃ 246 | SetKana( AL_し | AL_や ,"sya" ) ; しゃ 247 | SetKana( AL_に | AL_や ,"nya" ) ; にゃ 248 | SetKana( AL_ち | AL_や ,"tya" ) ; ちゃ 249 | SetKana( AL_ひ | AL_や ,"hya" ) ; ひゃ 250 | SetKana( AL_み | AL_や ,"mya" ) ; みゃ 251 | 252 | SetKana( AL_き | AL_ゆ ,"kyu" ) ; きゅ 253 | SetKana( AL_り | AL_ゆ ,"ryu" ) ; りゅ 254 | SetKana( AL_し | AL_ゆ ,"syu" ) ; しゅ 255 | SetKana( AL_に | AL_ゆ ,"nyu" ) ; にゅ 256 | SetKana( AL_ち | AL_ゆ ,"tyu" ) ; ちゅ 257 | SetKana( AL_ひ | AL_ゆ ,"hyu" ) ; ひゅ 258 | SetKana( AL_み | AL_ゆ ,"myu" ) ; みゅ 259 | 260 | SetKana( AL_き | AL_よ ,"kyo" ) ; きょ 261 | SetKana( AL_り | AL_よ ,"ryo" ) ; りょ 262 | SetKana( AL_し | AL_よ ,"syo" ) ; しょ 263 | SetKana( AL_に | AL_よ ,"nyo" ) ; にょ 264 | SetKana( AL_ち | AL_よ ,"tyo" ) ; ちょ 265 | SetKana( AL_ひ | AL_よ ,"hyo" ) ; ひょ 266 | SetKana( AL_み | AL_よ ,"myo" ) ; みょ 267 | 268 | ;**************************** 269 | ; 濁音拗音 270 | kanaGroup := "DA" 271 | SetKana( AL_右濁 | AL_き | AL_や ,"gya" ) ; ぎゃ 272 | SetKana( AL_右濁 | AL_し | AL_や ,"ja" ) ; じゃ 273 | SetKana( AL_右濁 | AL_ち | AL_や ,"dya" ) ; ぢゃ 274 | SetKana( AL_右濁 | AL_ひ | AL_や ,"bya" ) ; びゃ 275 | 276 | SetKana( AL_右濁 | AL_き | AL_ゆ ,"gyu" ) ; ぎゅ 277 | SetKana( AL_右濁 | AL_し | AL_ゆ ,"ju" ) ; じゅ 278 | SetKana( AL_右濁 | AL_ち | AL_ゆ ,"dyu" ) ; ぢゅ 279 | SetKana( AL_右濁 | AL_ひ | AL_ゆ ,"byu" ) ; びゅ 280 | 281 | SetKana( AL_右濁 | AL_き | AL_よ ,"gyo" ) ; ぎょ 282 | SetKana( AL_右濁 | AL_し | AL_よ ,"jo" ) ; じょ 283 | SetKana( AL_右濁 | AL_ち | AL_よ ,"dyo" ) ; ぢょ 284 | SetKana( AL_右濁 | AL_ひ | AL_よ ,"byo" ) ; びょ 285 | 286 | ;**************************** 287 | ; 半濁音拗音 288 | kanaGroup := "HA" 289 | SetKana( AL_右半 | AL_ひ | AL_よ ,"pyo" ) ; ぴょ 290 | SetKana( AL_右半 | AL_ひ | AL_ゆ ,"pyu" ) ; ぴゅ 291 | SetKana( AL_右半 | AL_ひ | AL_や ,"pya" ) ; ぴゃ 292 | 293 | ;************************************* 294 | ; 外来音は3キー同時押しに統一しました 295 | ;************************************* 296 | ; 清音外来音は半濁音キーと使用二音の三音同時 297 | ; 濁音外来音は濁音キーと使用二音の三音同時 298 | ;**************************** 299 | 300 | ; テ; ティテュディデュ 301 | kanaGroup := "HA" 302 | SetKana( AL_右半 | AL_て | AL_ゆ ,"thu" ) ; てゅ 303 | SetKana( AL_右半 | AL_て | AL_い ,"thi" ) ; てぃ 304 | 305 | kanaGroup := "DA" 306 | SetKana( AL_右濁 | AL_て | AL_ゆ ,"dhu" ) ; でゅ 307 | SetKana( AL_右濁 | AL_て | AL_い ,"dhi" ) ; でぃ 308 | 309 | ; ト; トゥドゥ 310 | kanaGroup := "HA" 311 | SetKana( AL_右半 | AL_と | AL_う ,"twu" ) ; とぅ 312 | kanaGroup := "DA" 313 | SetKana( AL_右濁 | AL_と | AL_う ,"dwu" ) ; どぅ 314 | 315 | ; シチ ェ; シェジェチェヂェ 316 | kanaGroup := "HA" 317 | SetKana( AL_右半 | AL_し | AL_え ,"sye" ) ; しぇ 318 | SetKana( AL_右半 | AL_ち | AL_え ,"tye" ) ; ちぇ 319 | kanaGroup := "DA" 320 | SetKana( AL_右濁 | AL_し | AL_え ,"je" ) ; じぇ 321 | SetKana( AL_右濁 | AL_ち | AL_え ,"dye" ) ; ぢぇ 322 | 323 | ;**************************** 324 | ; フ; ファフィフェフォフュ 325 | kanaGroup := "HA" 326 | SetKana( AL_左半 | AL_ふ | AL_え ,"fe" ) ; ふぇ 327 | SetKana( AL_左半 | AL_ふ | AL_ゆ ,"fyu" ) ; ふゅ 328 | SetKana( AL_左半 | AL_ふ | AL_あ ,"fa" ) ; ふぁ 329 | SetKana( AL_左半 | AL_ふ | AL_い ,"fi" ) ; ふぃ 330 | SetKana( AL_左半 | AL_ふ | AL_お ,"fo" ) ; ふぉ 331 | 332 | ; ヴ; ヴァヴィヴェヴォヴュ 333 | SetKana( AL_右半 | AL_ヴ | AL_え ,"ve" ) ; ヴぇ 334 | SetKana( AL_右半 | AL_ヴ | AL_ゆ ,"vyu" ) ; ヴゅ 335 | SetKana( AL_右半 | AL_ヴ | AL_あ ,"va" ) ; ヴぁ 336 | SetKana( AL_右半 | AL_ヴ | AL_い ,"vi" ) ; ヴぃ 337 | SetKana( AL_右半 | AL_ヴ | AL_お ,"vo" ) ; ヴぉ 338 | 339 | ; う; ウィウェウォ い;イェ 340 | SetKana( AL_左半 | AL_う | AL_え ,"we" ) ; うぇ 341 | SetKana( AL_左半 | AL_う | AL_い ,"wi" ) ; うぃ 342 | SetKana( AL_左半 | AL_う | AL_お ,"who" ) ; うぉ 343 | 344 | SetKana( AL_左半 | AL_い | AL_え ,"ye" ) ; いぇ 345 | 346 | ; ツァ行はウァ行と被るが、ツァだけ被らないので定義 347 | SetKana( AL_左半 | AL_つ | AL_あ ,"tsa" ) ; つぁ 348 | 349 | ; ク; クァクィクェクォ 350 | SetKana( AL_左半 | AL_く | AL_え ,"qe" ) ; くぇ 351 | SetKana( AL_左半 | AL_く | AL_あ ,"qa" ) ; くぁ 352 | SetKana( AL_左半 | AL_く | AL_い ,"qi" ) ; くぃ 353 | SetKana( AL_左半 | AL_く | AL_お ,"qo" ) ; くぉ 354 | SetKana( AL_左半 | AL_く | AL_わ ,"kuxwa" ) ; くゎ 355 | 356 | ; グ; グァグィグェグォ 357 | kanaGroup := "DA" 358 | SetKana( AL_左濁 | AL_く | AL_え ,"gwe" ) ; ぐぇ 359 | SetKana( AL_左濁 | AL_く | AL_あ ,"gwa" ) ; ぐぁ 360 | SetKana( AL_左濁 | AL_く | AL_い ,"gwi" ) ; ぐぃ 361 | SetKana( AL_左濁 | AL_く | AL_お ,"gwo" ) ; ぐぉ 362 | SetKana( AL_左濁 | AL_く | AL_わ ,"guxwa" ) ; ぐゎ 363 | 364 | ;**************************** 365 | ; IME ON/OFF 366 | ; HJ: ON / FG: OFF 367 | ; 無変換{vkF2sc070} ひらがなカタカナ{vk1Dsc07B} 368 | ; LANG1{vkF2} LANG2{vk1D} 369 | kanaGroup := "" ; グループなし 370 | SetKana( KC_H | KC_J ,"{ひらがな}" , NR) ; IME ON 371 | SetEisu( KC_H | KC_J ,"{ひらがな}" , NR) 372 | SetKana( KC_F | KC_G ,"{確定}{ひらがな}{全角}" , NR) ; IME OFF 373 | SetEisu( KC_F | KC_G ,"{確定}{ひらがな}{全角}" , NR) ; (ATOK)英語入力ON は "{ひらがな}{英数}") 374 | ; SetKana( KC_H | KC_J | KC_SPC ,"{カタカナ}" , NR) ; カタカナ入力 375 | ; SetEisu( KC_H | KC_J | KC_SPC ,"{カタカナ}" , NR) 376 | ; SetKana( KC_F | KC_G | KC_SPC ,"{全英}" , NR) ; 全角英数入力 377 | ; SetEisu( KC_F | KC_G | KC_SPC ,"{全英}" , NR) 378 | 379 | ; Enter 380 | ; VとMの同時押し 381 | kanaGroup := "HA" 382 | SetKana( KC_V | KC_M ,"{Enter}" ) ; 行送り 383 | SetEisu( KC_V | KC_M ,"{Enter}" ) ; 行送り 384 | 385 | ;*********************************** 386 | ;*********************************** 387 | ; 編集モード、固有名詞ショートカット 388 | ;*********************************** 389 | ;*********************************** 390 | 391 | ; 編集モード1 392 | ; 中段人差し指+中指を押しながら 393 | ; 「て」の部分は定義できない。「ディ」があるため 394 | ; 右手 395 | kanaGroup := "1R" 396 | SetKana( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 397 | SetKana( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 398 | SetKana( KC_D | KC_F | KC_N ,"{End}" ) ; End 399 | SetKana( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 400 | SetKana( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 401 | SetKana( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 402 | SetKana( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 403 | SetKana( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 404 | SetKana( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 405 | SetKana( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 406 | SetKana( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 407 | SetKana( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 408 | SetKana( KC_D | KC_F | KC_P ,"{Esc 3}" ,"ESCx3") ; 入力キャンセル 409 | SetKana( KC_D | KC_F | KC_SCLN ,"^i" ) ; カタカナ 410 | SetKana( KC_D | KC_F | KC_SLSH ,"^u" ) ; ひらがな 411 | 412 | SetEisu( KC_D | KC_F | KC_Y ,"{Home}" ) ; Home 413 | SetEisu( KC_D | KC_F | KC_H ,"{確定}{End}" , NR) ; 確定End 414 | SetEisu( KC_D | KC_F | KC_N ,"{End}" ) ; End 415 | SetEisu( KC_D | KC_F | KC_U ,"+{End}{BS}" , NR) ; 文末消去 416 | SetEisu( KC_D | KC_F | KC_J ,"{↑}" , R) ; ↑ 417 | SetEisu( KC_D | KC_F | KC_M ,"{↓}" , R) ; ↓ 418 | SetEisu( KC_D | KC_F | KC_I ,"#/" , NR) ; 再 419 | SetEisu( KC_D | KC_F | KC_K ,"+{↑}" , R) ; +↑ 420 | SetEisu( KC_D | KC_F | KC_COMM ,"+{↓}" , R) ; +↓ 421 | SetEisu( KC_D | KC_F | KC_O ,"{Del}" , R) ; Del 422 | SetEisu( KC_D | KC_F | KC_L ,"+{↑ 7}" , R) ; +7↑ 423 | SetEisu( KC_D | KC_F | KC_DOT ,"+{↓ 7}" , R) ; +7↓ 424 | SetEisu( KC_D | KC_F | KC_P ,"{Esc 3}" ,"ESCx3") ; 入力キャンセル 425 | SetEisu( KC_D | KC_F | KC_SCLN ,"^i" ) ; カタカナ 426 | SetEisu( KC_D | KC_F | KC_SLSH ,"^u" ) ; ひらがな 427 | 428 | ; 左手 429 | kanaGroup := "1L" 430 | SetKana( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 431 | SetKana( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 432 | SetKana( KC_J | KC_K | KC_Z ,"――{確定}" ) ; ── 433 | SetKana( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 434 | SetKana( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 435 | SetKana( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 436 | ; SetKana( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 437 | SetKana( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 438 | SetKana( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 439 | SetKana( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 440 | SetKana( KC_J | KC_K | KC_F ,"[]{確定}{↑}" ) ; 「」 441 | SetKana( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 442 | SetKana( KC_J | KC_K | KC_T ,"/" ) ; ・未確定 443 | SetKana( KC_J | KC_K | KC_G ,"《》{確定}{↑}" ) ; 《》 444 | SetKana( KC_J | KC_K | KC_B ,"{確定}{←}" ) ; 確定← 445 | 446 | SetEisu( KC_J | KC_K | KC_Q ,"{確定}^{End}" ,NR) ; 新 447 | SetEisu( KC_J | KC_K | KC_A ,"……{確定}" ) ; …… 448 | SetEisu( KC_J | KC_K | KC_Z ,"――{確定}" ) ; ── 449 | SetEisu( KC_J | KC_K | KC_W ,"『』{確定}{↑}" ) ; 『』 450 | SetEisu( KC_J | KC_K | KC_S ,"(){確定}{↑}" ) ; () 451 | SetEisu( KC_J | KC_K | KC_X ,"【】{確定}{↑}" ) ; 【】 452 | ; SetEisu( KC_J | KC_K | KC_E ,"dhi" ) ; ディ 453 | SetEisu( KC_J | KC_K | KC_D ,"?{確定}" ) ; ? 454 | SetEisu( KC_J | KC_K | KC_C ,"{!}{確定}" ) ; ! 455 | SetEisu( KC_J | KC_K | KC_R ,"^s" ,NR) ; 保 456 | SetEisu( KC_J | KC_K | KC_F ,"「」{確定}{↑}" ) ; 「」 457 | SetEisu( KC_J | KC_K | KC_V ,"{確定}{↓}" ) ; 確定↓ 458 | SetEisu( KC_J | KC_K | KC_T ,"・" ) ; ・未確定 459 | SetEisu( KC_J | KC_K | KC_G ,"《》{確定}{↑}" ) ; 《》 460 | SetEisu( KC_J | KC_K | KC_B ,"{確定}{←}" ) ; 確定← 461 | 462 | 463 | ; 編集モード2 464 | ; 下段人差指+中指 465 | ; 右手 466 | kanaGroup := "2R" 467 | SetKana( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 468 | SetKana( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 469 | SetKana( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 470 | SetKana( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 471 | SetKana( KC_C | KC_V | KC_J ,"{→}" , R) ; → 472 | SetKana( KC_C | KC_V | KC_M ,"{←}" , R) ; ← 473 | SetKana( KC_C | KC_V | KC_I ,"^v" ) ; Paste 474 | SetKana( KC_C | KC_V | KC_K ,"+{→}" , R) ; +→ 475 | SetKana( KC_C | KC_V | KC_COMM ,"+{←}" , R) ; +← 476 | SetKana( KC_C | KC_V | KC_O ,"^y" ) ; Redo 477 | SetKana( KC_C | KC_V | KC_L ,"+{→ 5}" , R) ; +→5 478 | SetKana( KC_C | KC_V | KC_DOT ,"+{← 5}" , R) ; +←5 479 | SetKana( KC_C | KC_V | KC_P ,"^z" ) ; Undo 480 | SetKana( KC_C | KC_V | KC_SCLN ,"+{→ 20}" , R) ; +→20 481 | SetKana( KC_C | KC_V | KC_SLSH ,"+{← 20}" , R) ; +←20 482 | 483 | SetEisu( KC_C | KC_V | KC_Y ,"+{Home}" , NR) ; +Home 484 | SetEisu( KC_C | KC_V | KC_H ,"^c" , NR) ; Copy 485 | SetEisu( KC_C | KC_V | KC_N ,"+{End}" , NR) ; +End 486 | SetEisu( KC_C | KC_V | KC_U ,"^x" , NR) ; Cut 487 | SetEisu( KC_C | KC_V | KC_J ,"{→}" , R) ; → 488 | SetEisu( KC_C | KC_V | KC_M ,"{←}" , R) ; ← 489 | SetEisu( KC_C | KC_V | KC_I ,"^v" ) ; Paste 490 | SetEisu( KC_C | KC_V | KC_K ,"+{→}" , R) ; +→ 491 | SetEisu( KC_C | KC_V | KC_COMM ,"+{←}" , R) ; +← 492 | SetEisu( KC_C | KC_V | KC_O ,"^y" ) ; Redo 493 | SetEisu( KC_C | KC_V | KC_L ,"+{→ 5}" , R) ; +→5 494 | SetEisu( KC_C | KC_V | KC_DOT ,"+{← 5}" , R) ; +←5 495 | SetEisu( KC_C | KC_V | KC_P ,"^z" ) ; Undo 496 | SetEisu( KC_C | KC_V | KC_SCLN ,"+{→ 20}" , R) ; +→20 497 | SetEisu( KC_C | KC_V | KC_SLSH ,"+{← 20}" , R) ; +←20 498 | 499 | ; 左手 500 | kanaGroup := "2L" 501 | SetKana( KC_M | KC_COMM | KC_Q ,"{Home}{→}{End}{Del 4}{←}" ) ; 前行につける(ト書き) 502 | SetKana( KC_M | KC_COMM | KC_A ,"{Home}{→}{End}{Del 2}{←}" ) ; 前行につける(セリフ) 503 | SetKana( KC_M | KC_COMM | KC_Z ,"   ×   ×   ×{確定}{改行}" ) ; x x x 504 | SetKana( KC_M | KC_COMM | KC_W ,"{C_Bkup}^x『^v』{確定}{C_Rstr}" , NR) ; +『』 505 | SetKana( KC_M | KC_COMM | KC_S ,"{C_Bkup}^x(^v){確定}{C_Rstr}" , NR) ; +() 506 | SetKana( KC_M | KC_COMM | KC_X ,"{C_Bkup}^x【^v】{確定}{C_Rstr}" , NR) ; +【】 507 | SetKana( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {←}" ) ; 行頭そろえ(ト書き) 508 | SetKana( KC_M | KC_COMM | KC_D ,"{Home}{改行} {←}" ) ; 行頭そろえ(セリフ) 509 | SetKana( KC_M | KC_COMM | KC_C ,"/{確定}" ) ; / 510 | SetKana( KC_M | KC_COMM | KC_R ,"   " ) ; □□□ 511 | SetKana( KC_M | KC_COMM | KC_F ,"{C_Bkup}^x[^v]{確定}{C_Rstr}" , NR) ; +「」 512 | SetKana( KC_M | KC_COMM | KC_V ,"{確定}{End}{改行}[]{確定}{↑}" ) ; 確定「」 513 | SetKana( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 514 | SetKana( KC_M | KC_COMM | KC_G ,"{C_Bkup}^x|{確定}^v《》{確定}{↑}{C_Rstr}" , NR) ; +|《》 515 | SetKana( KC_M | KC_COMM | KC_B ,"{確定}{End}{改行} " ) ; 確定□ 516 | 517 | SetEisu( KC_M | KC_COMM | KC_Q ,"{Home}{→}{End}{Del 4}{←}" ) ; 前行につける(ト書き) 518 | SetEisu( KC_M | KC_COMM | KC_A ,"{Home}{→}{End}{Del 2}{←}" ) ; 前行につける(セリフ) 519 | SetEisu( KC_M | KC_COMM | KC_Z ,"   ×   ×   ×{確定}{改行}" ) ; x x x 520 | SetEisu( KC_M | KC_COMM | KC_W ,"{C_Bkup}^x『^v』{確定}{C_Rstr}" , NR) ; +『』 521 | SetEisu( KC_M | KC_COMM | KC_S ,"{C_Bkup}^x(^v){確定}{C_Rstr}" , NR) ; +() 522 | SetEisu( KC_M | KC_COMM | KC_X ,"{C_Bkup}^x【^v】{確定}{C_Rstr}" , NR) ; +【】 523 | SetEisu( KC_M | KC_COMM | KC_E ,"{Home}{改行}   {←}" ) ; 行頭そろえ(ト書き) 524 | SetEisu( KC_M | KC_COMM | KC_D ,"{Home}{改行} {←}" ) ; 行頭そろえ(セリフ) 525 | SetEisu( KC_M | KC_COMM | KC_C ,"/{確定}" ) ; / 526 | SetEisu( KC_M | KC_COMM | KC_R ,"   " ) ; □□□ 527 | SetEisu( KC_M | KC_COMM | KC_F ,"{C_Bkup}^x「^v」{確定}{C_Rstr}" , NR) ; +「」 528 | SetEisu( KC_M | KC_COMM | KC_V ,"{確定}{End}{改行}「」{確定}{↑}" ) ; 確定「」 529 | SetEisu( KC_M | KC_COMM | KC_T ,"〇{確定}" ) ; ○ 530 | SetEisu( KC_M | KC_COMM | KC_G ,"{C_Bkup}^x|{確定}^v《》{確定}{↑}{C_Rstr}" , NR) ; +|《》 531 | SetEisu( KC_M | KC_COMM | KC_B ,"{確定}{End}{改行} " ) ; 確定□ 532 | 533 | 534 | kanaGroup := "" ; グループなし 535 | SetKana( KC_Q | KC_W ,"Null" ,"横書き") 536 | SetEisu( KC_Q | KC_W ,"Null" ,"横書き") 537 | SetKana( KC_Q | KC_A ,"Null" ,"縦書き") 538 | SetEisu( KC_Q | KC_A ,"Null" ,"縦書き") 539 | 540 | 541 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 542 | If (keyDriver = "kbd101.dll") 543 | { 544 | ; おまけ 545 | SetEisu( JP_YEN ,"\" ) ; ¥ 546 | SetEisu( KC_INT1 ,"\" ) ; ¥ 547 | SetEisu( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 548 | SetEisu( KC_INT1 | KC_SPC ,"_" ) ; _ スペース押しながら 549 | 550 | SetKana( JP_YEN ,"\" ) ; ¥ 551 | SetKana( JP_YEN | KC_SPC ,"|" ) ; | スペース押しながら 552 | } 553 | 554 | If (usLike > 0) 555 | USLikeLayout() ; USキーボード風の配列へ 556 | 557 | KoyuReadAndRegist(koyuNumber) ; 固有名詞ショートカットの読み込み・登録 558 | 559 | Return 560 | } 561 | 562 | ; USキーボード風の配列へ 563 | USLikeLayout() ; () -> Void 564 | { 565 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 566 | 567 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 568 | If (keyDriver = "kbd101.dll") 569 | Return 570 | 571 | kanaGroup := "" ; グループなし 572 | SetEisu( KC_EQL ,"+{sc0C}" ) ; = 573 | SetEisu( KC_LBRC ,"{sc1B}" ) ; [ 574 | SetEisu( KC_RBRC ,"{sc2B}" ) ; ] 575 | SetEisu( KC_QUOT ,"+{sc08}" ) ; ' 576 | SetEisu( KC_NUHS ,"+{sc1A}" ) ; ` 577 | 578 | SetEisu( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 579 | SetEisu( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 580 | SetEisu( KC_SPC | KC_7 ,"+{sc07}" ) ; & 581 | SetEisu( KC_SPC | KC_8 ,"+{sc28}" ) ; * 582 | SetEisu( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 583 | SetEisu( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 584 | SetEisu( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 585 | SetEisu( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 586 | SetEisu( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 587 | SetEisu( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 588 | SetEisu( KC_SPC | KC_SCLN ,"{sc28}" ) ; : 589 | SetEisu( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 590 | SetEisu( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 591 | 592 | 593 | SetKana( KC_EQL ,"+{sc0C}" ) ; = 594 | SetKana( KC_LBRC ,"{sc1B}" ) ; [ 595 | SetKana( KC_RBRC ,"{sc2B}" ) ; ] 596 | SetKana( KC_QUOT ,"+{sc08}" ) ; ' 597 | SetKana( KC_NUHS ,"+{sc1A}" ) ; ` 598 | 599 | SetKana( KC_SPC | KC_2 ,"{sc1A}" ) ; @ 600 | SetKana( KC_SPC | KC_6 ,"{sc0D}" ) ; ^ 601 | SetKana( KC_SPC | KC_7 ,"+{sc07}" ) ; & 602 | SetKana( KC_SPC | KC_8 ,"+{sc28}" ) ; * 603 | SetKana( KC_SPC | KC_9 ,"+{sc09}" ) ; ( 604 | SetKana( KC_SPC | KC_0 ,"+{sc0A}" ) ; ) 605 | SetKana( KC_SPC | KC_MINS ,"+{sc73}" ) ; _ 606 | SetKana( KC_SPC | KC_EQL ,"+{sc27}" ) ; + 607 | SetKana( KC_SPC | KC_LBRC ,"+{sc1B}" ) ; { 608 | SetKana( KC_SPC | KC_RBRC ,"+{sc2B}" ) ; } 609 | ; SetKana( KC_SPC | KC_SCLN ,"{sc28}" ) ; : (薙刀式で使用) 610 | SetKana( KC_SPC | KC_QUOT ,"+{sc03}" ) ; " 611 | SetKana( KC_SPC | KC_NUHS ,"+{sc0D}" ) ; ~ 612 | 613 | ; 設定がPC-9800キーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 614 | If (keyDriver = "kbdnec.dll") 615 | { 616 | SetEisu( KC_NUHS ,"+{sc0D}" ) ; ` 617 | SetEisu( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 618 | 619 | SetKana( KC_NUHS ,"+{sc0D}" ) ; ` 620 | SetKana( KC_NUHS | KC_SPC ,"+{sc1A}" ) ; ~ 621 | } 622 | 623 | Return 624 | } 625 | 626 | ; 固有名詞ショートカットの登録 627 | KoyuRegist() ; () -> Void 628 | { 629 | #IncludeAgain %A_ScriptDir%/Sub/KeyBit_h.ahk ; 配列定義で使う定数 630 | #IncludeAgain %A_ScriptDir%/Sub/Naginata-Koyu_h.ahk 631 | 632 | ; 固有名詞ショートカット(UI)を押し続けて 633 | ; 前文字削除(U)のリピートが起きる場合があるので対策 634 | kanaGroup := "" ; グループなし 635 | SetKana( KC_U | KC_I ,"{Null}") ; ダミー 636 | 637 | ;************************************** 638 | ; 固有名詞ショートカット 639 | ; 薙刀式のカナで始まる言葉を登録すると使いやすい */ 640 | 641 | ; 第一面 642 | ; UIを押しながら左手*/ 643 | kanaGroup := "KL" ; 左手側 644 | SetKana(KC_U | KC_I | KC_1 ,"{直接}" . E01 ,NR) 645 | SetKana(KC_U | KC_I | KC_2 ,"{直接}" . E02 ,NR) 646 | SetKana(KC_U | KC_I | KC_3 ,"{直接}" . E03 ,NR) 647 | SetKana(KC_U | KC_I | KC_4 ,"{直接}" . E04 ,NR) 648 | SetKana(KC_U | KC_I | KC_5 ,"{直接}" . E05 ,NR) 649 | 650 | SetKana(KC_U | KC_I | KC_Q ,"{直接}" . D01 ,NR) 651 | SetKana(KC_U | KC_I | KC_W ,"{直接}" . D02 ,NR) 652 | SetKana(KC_U | KC_I | KC_E ,"{直接}" . D03 ,NR) 653 | SetKana(KC_U | KC_I | KC_R ,"{直接}" . D04 ,NR) 654 | SetKana(KC_U | KC_I | KC_T ,"{直接}" . D05 ,NR) 655 | 656 | SetKana(KC_U | KC_I | KC_A ,"{直接}" . C01 ,NR) 657 | SetKana(KC_U | KC_I | KC_S ,"{直接}" . C02 ,NR) 658 | SetKana(KC_U | KC_I | KC_D ,"{直接}" . C03 ,NR) 659 | SetKana(KC_U | KC_I | KC_F ,"{直接}" . C04 ,NR) 660 | SetKana(KC_U | KC_I | KC_G ,"{直接}" . C05 ,NR) 661 | 662 | SetKana(KC_U | KC_I | KC_Z ,"{直接}" . B01 ,NR) 663 | SetKana(KC_U | KC_I | KC_X ,"{直接}" . B02 ,NR) 664 | SetKana(KC_U | KC_I | KC_C ,"{直接}" . B03 ,NR) 665 | SetKana(KC_U | KC_I | KC_V ,"{直接}" . B04 ,NR) 666 | SetKana(KC_U | KC_I | KC_B ,"{直接}" . B05 ,NR) 667 | 668 | ; ERを押しながら右手 669 | kanaGroup := "KR" ; 右手側 670 | SetKana(KC_E | KC_R | KC_6 ,"{直接}" . E06 ,NR) 671 | SetKana(KC_E | KC_R | KC_7 ,"{直接}" . E07 ,NR) 672 | SetKana(KC_E | KC_R | KC_8 ,"{直接}" . E08 ,NR) 673 | SetKana(KC_E | KC_R | KC_9 ,"{直接}" . E09 ,NR) 674 | SetKana(KC_E | KC_R | KC_0 ,"{直接}" . E10 ,NR) 675 | SetKana(KC_E | KC_R | KC_MINS ,"{直接}" . E11 ,NR) 676 | SetKana(KC_E | KC_R | KC_EQL ,"{直接}" . E12 ,NR) 677 | SetKana(KC_E | KC_R | JP_YEN ,"{直接}" . E13 ,NR) 678 | 679 | SetKana(KC_E | KC_R | KC_Y ,"{直接}" . D06 ,NR) 680 | SetKana(KC_E | KC_R | KC_U ,"{直接}" . D07 ,NR) 681 | SetKana(KC_E | KC_R | KC_I ,"{直接}" . D08 ,NR) 682 | SetKana(KC_E | KC_R | KC_O ,"{直接}" . D09 ,NR) 683 | SetKana(KC_E | KC_R | KC_P ,"{直接}" . D10 ,NR) 684 | SetKana(KC_E | KC_R | KC_LBRC ,"{直接}" . D11 ,NR) 685 | SetKana(KC_E | KC_R | KC_RBRC ,"{直接}" . D12 ,NR) 686 | 687 | SetKana(KC_E | KC_R | KC_H ,"{直接}" . C06 ,NR) 688 | SetKana(KC_E | KC_R | KC_J ,"{直接}" . C07 ,NR) 689 | SetKana(KC_E | KC_R | KC_K ,"{直接}" . C08 ,NR) 690 | SetKana(KC_E | KC_R | KC_L ,"{直接}" . C09 ,NR) 691 | SetKana(KC_E | KC_R | KC_SCLN ,"{直接}" . C10 ,NR) 692 | SetKana(KC_E | KC_R | KC_QUOT ,"{直接}" . C11 ,NR) 693 | SetKana(KC_E | KC_R | KC_NUHS ,"{直接}" . C12 ,NR) 694 | 695 | SetKana(KC_E | KC_R | KC_N ,"{直接}" . B06 ,NR) 696 | SetKana(KC_E | KC_R | KC_M ,"{直接}" . B07 ,NR) 697 | SetKana(KC_E | KC_R | KC_COMM ,"{直接}" . B08 ,NR) 698 | SetKana(KC_E | KC_R | KC_DOT ,"{直接}" . B09 ,NR) 699 | SetKana(KC_E | KC_R | KC_SLSH ,"{直接}" . B10 ,NR) 700 | SetKana(KC_E | KC_R | KC_INT1 ,"{直接}" . B11 ,NR) 701 | 702 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 703 | If (keyDriver == "kbd101.dll") 704 | { 705 | SetKana(KC_E | KC_R | KC_BSLS ,"{直接}" . E13 ,NR) 706 | SetKana(KC_E | KC_R | KC_GRV ,"{直接}" . C12 ,NR) 707 | } 708 | 709 | ; 第二面 710 | ; UIを押しながら左手*/ 711 | kanaGroup := "KL" ; 左手側 712 | SetKana(KC_SPC | KC_U | KC_I | KC_1 ,"{直接}" . E01S ,NR) 713 | SetKana(KC_SPC | KC_U | KC_I | KC_2 ,"{直接}" . E02S ,NR) 714 | SetKana(KC_SPC | KC_U | KC_I | KC_3 ,"{直接}" . E03S ,NR) 715 | SetKana(KC_SPC | KC_U | KC_I | KC_4 ,"{直接}" . E04S ,NR) 716 | SetKana(KC_SPC | KC_U | KC_I | KC_5 ,"{直接}" . E05S ,NR) 717 | 718 | SetKana(KC_SPC | KC_U | KC_I | KC_Q ,"{直接}" . D01S ,NR) 719 | SetKana(KC_SPC | KC_U | KC_I | KC_W ,"{直接}" . D02S ,NR) 720 | SetKana(KC_SPC | KC_U | KC_I | KC_E ,"{直接}" . D03S ,NR) 721 | SetKana(KC_SPC | KC_U | KC_I | KC_R ,"{直接}" . D04S ,NR) 722 | SetKana(KC_SPC | KC_U | KC_I | KC_T ,"{直接}" . D05S ,NR) 723 | 724 | SetKana(KC_SPC | KC_U | KC_I | KC_A ,"{直接}" . C01S ,NR) 725 | SetKana(KC_SPC | KC_U | KC_I | KC_S ,"{直接}" . C02S ,NR) 726 | SetKana(KC_SPC | KC_U | KC_I | KC_D ,"{直接}" . C03S ,NR) 727 | SetKana(KC_SPC | KC_U | KC_I | KC_F ,"{直接}" . C04S ,NR) 728 | SetKana(KC_SPC | KC_U | KC_I | KC_G ,"{直接}" . C05S ,NR) 729 | 730 | SetKana(KC_SPC | KC_U | KC_I | KC_Z ,"{直接}" . B01S ,NR) 731 | SetKana(KC_SPC | KC_U | KC_I | KC_X ,"{直接}" . B02S ,NR) 732 | SetKana(KC_SPC | KC_U | KC_I | KC_C ,"{直接}" . B03S ,NR) 733 | SetKana(KC_SPC | KC_U | KC_I | KC_V ,"{直接}" . B04S ,NR) 734 | SetKana(KC_SPC | KC_U | KC_I | KC_B ,"{直接}" . B05S ,NR) 735 | 736 | ; ERを押しながら右手 737 | kanaGroup := "KR" ; 右手側 738 | SetKana(KC_SPC | KC_E | KC_R | KC_6 ,"{直接}" . E06S ,NR) 739 | SetKana(KC_SPC | KC_E | KC_R | KC_7 ,"{直接}" . E07S ,NR) 740 | SetKana(KC_SPC | KC_E | KC_R | KC_8 ,"{直接}" . E08S ,NR) 741 | SetKana(KC_SPC | KC_E | KC_R | KC_9 ,"{直接}" . E09S ,NR) 742 | SetKana(KC_SPC | KC_E | KC_R | KC_0 ,"{直接}" . E10S ,NR) 743 | SetKana(KC_SPC | KC_E | KC_R | KC_MINS ,"{直接}" . E11S ,NR) 744 | SetKana(KC_SPC | KC_E | KC_R | KC_EQL ,"{直接}" . E12S ,NR) 745 | SetKana(KC_SPC | KC_E | KC_R | JP_YEN ,"{直接}" . E13S ,NR) 746 | 747 | SetKana(KC_SPC | KC_E | KC_R | KC_Y ,"{直接}" . D06S ,NR) 748 | SetKana(KC_SPC | KC_E | KC_R | KC_U ,"{直接}" . D07S ,NR) 749 | SetKana(KC_SPC | KC_E | KC_R | KC_I ,"{直接}" . D08S ,NR) 750 | SetKana(KC_SPC | KC_E | KC_R | KC_O ,"{直接}" . D09S ,NR) 751 | SetKana(KC_SPC | KC_E | KC_R | KC_P ,"{直接}" . D10S ,NR) 752 | SetKana(KC_SPC | KC_E | KC_R | KC_LBRC ,"{直接}" . D11S ,NR) 753 | SetKana(KC_SPC | KC_E | KC_R | KC_RBRC ,"{直接}" . D12S ,NR) 754 | 755 | SetKana(KC_SPC | KC_E | KC_R | KC_H ,"{直接}" . C06S ,NR) 756 | SetKana(KC_SPC | KC_E | KC_R | KC_J ,"{直接}" . C07S ,NR) 757 | SetKana(KC_SPC | KC_E | KC_R | KC_K ,"{直接}" . C08S ,NR) 758 | SetKana(KC_SPC | KC_E | KC_R | KC_L ,"{直接}" . C09S ,NR) 759 | SetKana(KC_SPC | KC_E | KC_R | KC_SCLN ,"{直接}" . C10S ,NR) 760 | SetKana(KC_SPC | KC_E | KC_R | KC_QUOT ,"{直接}" . C11S ,NR) 761 | SetKana(KC_SPC | KC_E | KC_R | KC_NUHS ,"{直接}" . C12S ,NR) 762 | 763 | SetKana(KC_SPC | KC_E | KC_R | KC_N ,"{直接}" . B06S ,NR) 764 | SetKana(KC_SPC | KC_E | KC_R | KC_M ,"{直接}" . B07S ,NR) 765 | SetKana(KC_SPC | KC_E | KC_R | KC_COMM ,"{直接}" . B08S ,NR) 766 | SetKana(KC_SPC | KC_E | KC_R | KC_DOT ,"{直接}" . B09S ,NR) 767 | SetKana(KC_SPC | KC_E | KC_R | KC_SLSH ,"{直接}" . B10S ,NR) 768 | SetKana(KC_SPC | KC_E | KC_R | KC_INT1 ,"{直接}" . B11S ,NR) 769 | 770 | ; 設定がUSキーボードの場合 参考: https://ixsvr.dyndns.org/blog/764 771 | If (keyDriver == "kbd101.dll") 772 | { 773 | SetKana(KC_SPC | KC_E | KC_R | KC_BSLS ,"{直接}" . E13S ,NR) 774 | SetKana(KC_SPC | KC_E | KC_R | KC_GRV ,"{直接}" . C12S ,NR) 775 | } 776 | 777 | ; 固有名詞ショートカットを切り替える 778 | kanaGroup := "" ; グループなし 779 | SetKana( KC_E | KC_R | KC_1 , 1, "KoyuChange") ; 固有名詞ショートカット1 780 | SetKana( KC_E | KC_R | KC_2 , 2, "KoyuChange") ; 固有名詞ショートカット2 781 | SetKana( KC_E | KC_R | KC_3 , 3, "KoyuChange") ; 固有名詞ショートカット3 782 | SetKana( KC_E | KC_R | KC_4 , 4, "KoyuChange") ; 固有名詞ショートカット4 783 | SetKana( KC_E | KC_R | KC_5 , 5, "KoyuChange") ; 固有名詞ショートカット5 784 | 785 | Return 786 | } 787 | 788 | ; ---------------------------------------------------------------------- 789 | ; 追加のホットキー 790 | ; ---------------------------------------------------------------------- 791 | +^sc0B::Suspend, On ; 薙刀式中断 Shift+Ctrl+0 792 | +^sc02::Suspend, Off ; 薙刀式再開 Shift+Ctrl+1 793 | 794 | ; ATOK以外用 795 | #If (imeSelect != 1) 796 | ^sc27::Send, +{Esc}{Home} ; Ctrl+Semicolon → 全戻し→文字先頭 797 | 798 | ; 新MS-IME用 799 | #If (DetectIME() == "NewMSIME") 800 | sc79:: 801 | ; 変換 → 変換x9 802 | StoreBuf("{sc79 9}", 0, NR) 803 | OutBuf() 804 | Return 805 | +sc79:: 806 | ; Shift+変換 → Shift+変換x9 807 | StoreBuf("+{sc79 9}", 0, NR) 808 | OutBuf() 809 | Return 810 | #If (DetectIME() == "NewMSIME" && kanaMode) 811 | ^sc35:: 812 | ; Ctrl+Slash → 変換x9 813 | StoreBuf("{sc79 9}", 0, NR) 814 | OutBuf() 815 | Return 816 | +^sc35:: 817 | ; Shift+Ctrl+Slash → Shift+変換x9 818 | StoreBuf("+{sc79 9}", 0, NR) 819 | OutBuf() 820 | Return 821 | 822 | ; 新MS-IME以外用 823 | #If (DetectIME() != "NewMSIME" && kanaMode) 824 | ^sc35::Send, {sc79} ; Ctrl+Slash → 変換 825 | +^sc35::Send, +{sc79} ; Shift+Ctrl+Slash → Shift+変換 826 | 827 | ; ---------------------------------------------------------------------- 828 | ; IME 操作 829 | ; ---------------------------------------------------------------------- 830 | ; 設定がPC-9800キーボード以外の場合 831 | ;#If (keyDriver != "kbdnec.dll") 832 | ;!sc29:: ; 漢字キー 833 | ; ※ 上記3行は Xbox Game Bar が暴発するので使用できず 834 | #If (!USKB) ; 101英語キーボード以外の場合 835 | sc29:: ; (JIS)半角/全角 (US)` 836 | IME_SetConvMode(25) ; IME 入力モード ひらがな 837 | If (kanaMode) 838 | { 839 | SendEachChar("{vkF2}{vkF3}") ; ひらがな→半角/全角キー 840 | ; kanaMode := 0 841 | } 842 | Else 843 | { 844 | SendEachChar("{vkF2}") ; ひらがな 845 | kanaMode := 1 846 | } 847 | Return 848 | 849 | ; 106日本語キーボードの場合 850 | #If (keyDriver == "kbd106.dll") 851 | sc3A:: ; 英数キー単独で CapsLock をオンオフする 852 | If (GetKeyState("CapsLock", "T")) 853 | SetCapsLockState, Off 854 | Else 855 | SetCapsLockState, On 856 | Return 857 | 858 | ; 全キーボード 859 | #If ; End #If () 860 | sc7B:: ; 無変換 861 | vk1A:: ; Mac英数 862 | SendEachChar("{vkF2}{vkF3}") ; ひらがな→半角/全角キー 863 | ; kanaMode := 0 864 | Return 865 | +sc7B:: ; Shift + 無変換 866 | +vk1A:: ; Shift + Mac英数 867 | SendEachChar("{全英}") 868 | ; kanaMode := 0 869 | Return 870 | sc70:: ; ひらがな 871 | vk16:: ; Macかな 872 | If (A_PriorHotKey = A_ThisHotKey && A_TimeSincePriorHotkey < 200) 873 | Send, #/ ; 2連打で再変換 874 | Else 875 | SendEachChar("{vkF2}") ; ひらがな 876 | kanaMode := 1 877 | Return 878 | +sc70:: ; Shift + ひらがな 879 | +vk16:: ; Shift + Macかな 880 | SendEachChar("{vkF1}") ; カタカナ 881 | ; kanaMode := 1 882 | Return 883 | 884 | ; ---------------------------------------------------------------------- 885 | ; テンキー 886 | ; ---------------------------------------------------------------------- 887 | NumLock:: 888 | KeyWait, NumLock, T0.3 ;0.3秒対象キーが押されたかどうか 889 | If (ErrorLevel) 890 | { 891 | Send, = ; 長押しで"="入力 892 | KeyWait, NumLock 893 | Return 894 | } 895 | Send, : ; 単打で":"入力 896 | Return 897 | NumpadDot:: 898 | KeyWait, NumpadDot, T0.3 ;0.3秒対象キーが押されたかどうか 899 | If (ErrorLevel) 900 | { 901 | Send, `, ; 長押しで","入力 902 | KeyWait, NumpadDot 903 | Return 904 | } 905 | Send, {NumpadDot} ; 単打で"."入力 906 | Return 907 | --------------------------------------------------------------------------------