特徴

QMK Firmwareのマクロは、WZ Editor 10、ATOK2017の機能をすぐ使えるよう設定
仕様
形状 |
|
---|---|
大きさ | 362mm×215mm×27mm(キーキャップなど突起物を含まず) |
重量 | 約500g |
物理配列 | |
論理配列 |
|
キー数 |
|
キースイッチ | CHERRY MX 赤軸 |
キーキャップ | 16mmピッチ対応自作 親指に縦長のキーを4個 |
キーピッチ | 縦16mm、横16~19mm |
材質 |
|
コントローラ |
|
PCB | 無し:0.2mmポリウレタン銅線による空中配線のため |
ファームウェア |
|
物理配列

左右と中央の3箇所に分かれています。
指を方眼紙において印をとり、スキャンしたものをベースにしています。特にTK1やNISSEに強い影響を受けています。Kinesis Advantage2のお椀型も考えましたが、大変そうなので止めました。
キーピッチは基本的に16mmです。キースイッチが嵌まる穴が14mm角で、そこからはみ出る爪や押さえの箇所を含んだ寸法は15.6mm角。プラ板の強度や補強に使うプラ材の太さなどを考慮し、キーピッチを16mmにしてみました。
論理配列

日本語入力に特化した独自の行段系配列です。右側に母音のキーを集めています。名前は付けていませんが、QMK Firmwareのビルドで必要なキーボードの名前は、物理配列を考えていた時の番号から「b02」を使っています。
「p」+数字や記号はテンキーを表しています。QMK Firmwareのテンキーのキーコード名の表記を使っています。
英文を打つには非効率なので、その時は英文用の配列になるようにした事もありますが、5日で止めました。無理。
アンダースコアやチルダの入力はシフトキーを使わず単打で打てるようにしています。
親指のキー
XFキー
日本語変換に関係するキーです。これらのキーを押しながら文字などのキーを押すことでいろいろな役割を果たします。
「ナビ関係」は、カーソルキーやHOMEENDなどナビゲーション関係のキーです。
- XF1
- 単打で空白
- 左側キー併用でナビ関係/右側併用で数字、記号
- XF2
- 日本語変換時、単打で半角英数字変換
- 左側キー併用でナビ関係/右側併用で記号
- XF3
- 単打でIME ON、日本語変換
- 他キー併用で変換に関する機能実行
- XF4
- 単打でIME OFF、ATOK英語入力モードOFF
- 左側キー併用で記号/右側併用でナビ関係
- XF5
- 単打でEnter
XF1~XF5はシャープのパソコンX68000シリーズのキーボードにあったキーから付けています。キーボードの最前列にあり、XF3が変換、XF5がEnterの機能でした。このキーボードもXF3とXF5は同じ機能にしています。スペースキーも変換に使えましたが、私は変換はXF3しか使いませんでした。
他のキー
- CAPS
- 小文字と大文字のトグル操作(SHIFT+CAPS LOCK)。
- HTML
- 反対側のキー併用でHTML文書のタグなどを入力/同じ側のキー併用で数字
ALTTABESCは普通のキーボードと同じです。

左に子音、右に母音や拗音の捨て仮名、促音(っ)、撥音(ん)などを集めています。
けいならべによく似ています。母音の並びはたまたまですが、子音の並びは参考にしました。
「ん」はX一文字で設定しています。私が初めて日本語変換を使ったパソコンX1turboⅡ(1986年)がそうなっており、X68000でも同じでした。便利なので、WindowsになってからもWXG4やATOK2008以降で同じように設定しました。
キーマップ
各レイヤのキー配列です。
基本レイヤ

ASCII文字の入力用レイヤです。いわゆる半角英字、一部の記号、テンキーの入力。
- COPY
- PrintScreenと同じ
- MUTE
- 音量の無音化(無音⇄解除のトグル操作)
- OPT.1
- 右側キー併用でファンクションキー
- OPT.2
- ウェブブラウザでスタイルシートOFF
(ALT+V→Y→N)
COPYは元々表示画面を印刷するキーで、昭和のパソコンにも同名のキーが付いていた機種がありました。ここではPrintScreenに設定し、PriScVistaでスクリーンショットを撮るのに使っています。
「IME」ですが、うちの場合はATOK 2017 for Windowsを指します。IME ONやIME OFFはATOK2017の日本語入力ONとOFFを意味します。
XF1レイヤ

右のキーと併用で数字や数字関係の記号の入力です。
左のキーと併用だと(片手操作)、カーソルキーやHOMEEndPage UpPage Downなど、ナビゲーションキーを操作します。
- XF1+XF3
- CTRL+変換:ATOKで候補ウィンドウが出ている時の前候補表示
- XF1+XF5
- CTRL+Enter:WZ EDITORでHTML文書編集時に段落挿入
case CHB0028:// ()丸括弧
if (record->event.pressed) {
SEND_STRING("()" SS_TAP(X_LEFT));
} else {
}
break;
XF2レイヤ

右のキーと併用で記号の入力です。日本語入力時は小書きの文字を打てます。「ぁ」「ょ」等。
左のキーと併用だとXF1押下時と同じナビゲーションキーの操作になります。
XF4レイヤ

左のキーと併用で記号の入力です。
右のキーと併用だと(片手操作)、XF1押下時と似た感じのナビゲーションキーの操作になります。
IMEレイヤ

ATOKの各機能を使うためのレイヤです。ひらがなやカタカナへの変換、連想変換などを行います。文節移動や文節区切り移動などカーソルが動くものはXF1キーで行います。
各キーにはSHIFT+CTRL+文字キーを設定し、ATOKのキーカスタマイズで機能をキーを紐付けています。
- XF3+XF1
- CTRL+TAB:推測変換選択時の変換/前候補
日本語入力時

IME ONの状態でXF1を押しながらCAPSを押すと英数+(SHIFT+英数)になり、ATOKの英語入力モード+大文字化になります。日本語と英語が混在した文章を書く時、英語の時にIMEをOFFにするのではなく、ONのままで書き進められます。英字の際にも推測変換が効いたり、スペルチェックができたりと便利です。
文章中に出る英字は、私の場合大文字が多いように思います。それなら最初から大文字で書けるよう、英語入力モードになると同時にCAPS LOCKがかかった状態にしてしまおうと思い、そういう風に動くマクロを組みました。もっといいやり方があるかもですが、意図通りに動いているのでOKとします。
HTMLレイヤ(右側キー)

HTML文書でいわゆるタグなどを書くのに使います。開始タグと終了タグを組み合わせて間にカーソルを持ってきたり、よく使う属性を書いたりします。
QMK Firmwareのマクロではなく、WZ EDITORの機能で作っているので、WZ EDITOR上で且つHTMLファイル専用の機能になります。他のエディタや普通のテキストだと使えません。QMKのマクロで書けばいいのでしょうが、とくに困っていないので、このままで行きます。
右のキーと併用では数字が打てるようにしています。
HTMLレイヤ(左側キー)

使用頻度は低いけど無いと困るタグやコメントを書くのに使います。左のキーと併用では数字が打てるようにしています。
数字の並びは右側と違いますが、左手で縦3段のキーを使うのはキツかったので、2段に収まるようにしました。
設定ファイル
一部を記しておきます。
config.h
以下の2行を追加しています。
- #define TAPPING_TERM 100
- #define PERMISSIVE_HOLD
Ergodox(qmk firmware)の同時押し/レイヤー切替の設定メモ - Qiitaや自作キーボードに手を出した - ぽよメモを参考にしています。
keymap.c
冒頭に「#include QMK_KEYBOARD_H」が書かれていますが、他に以下の3行を追加しています。
- #include "keymap_japanese.h"
- #include "led.h"
- #include <sendstring_japanese.h>
最初のは日本語キーボードの配列を設定しやすいようにするため、2番目はLEDインジケータを使うため、3番目はマクロ文字列送信時に日本語キーボード設定での文字化けを回避するためです。
最初のと3番目は以前「#include "keymap_jp.h"」「#include <sendstring_jis.h>」としていましたが、変更になったようです。
keymap.c 2023年04月29日版
/* Copyright 2020-2023 Mule,KOUNO Motoo
*
本プログラムはフリー・ソフトウェアです。
あなたは、Free Software Foundationが発行したGNU General Public Licenseのバージョン2、または(あなたの選択により)それ以降のバージョンのいずれかの条件の下で、本プログラムを再配布または変更することができます。
このプログラムは、有用であることを期待して配布されていますが、市場性や特定目的への適合性の暗黙の保証も含めて、いかなる保証もありません。
詳細については、GNU General Public License をご覧ください。このプログラムと一緒に GNU General Public License のコピーを受け取っているはずです。
受け取っていない場合は、 をご覧ください。
*/
#include QMK_KEYBOARD_H
#include "keymap_japanese.h"
#include "led.h"
#include <sendstring_japanese.h> // マクロ文字列送信時に日本語キーボード設定での文字化け回避
// LED Number
#define MICRO_LED_NUM D6
#define MICRO_LED_CAP B7
#define MICRO_LED_SCR B6
// custom keycode
#define XF2_B MO(_XF2B) // XF2
#define XF2_E MO(_XF2E) // XF2 EBASE
#define XF23SF OSM(MOD_LSFT) // XF2→XF3 SHIFT
#define XF24_d OSL(_XF24d) // XF2→XF4 _XF24d
#define XHTML_R MO(_HTML_R) // HTML
#define XHTML_L MO(_HTML_L) // HTML2
#define OPT1_KY MO(_OPT1) // OPT1
#define OPTC C(KC_C)
#define OPTV C(KC_V)
#define OPTX C(KC_X)
#define OPTZ C(KC_Z)
#define OPTY C(KC_Y)
#define SF_CAPS S(JP_EISU)
#define SF_LEFT S(KC_LEFT)
#define SF_RGHT S(KC_RGHT)
#define SF_UP S(KC_UP)
#define SF_DOWN S(KC_DOWN)
#define SF_HOME S(KC_HOME)
#define SF_END S(KC_END)
#define CT_HOME C(KC_HOME)
#define CT_END C(KC_END)
#define TG__br A(C(JP_B)) // <br> --以下半角
#define TG__dd A(C(JP_D)) // <dd>~
#define TG__ep A(C(JP_F)) // 行末移動→ENTER→<p></p>
#define TG_img A(C(JP_G)) // <img src="" alt="">
#define TG__hr A(C(JP_H)) // <hr>
#define TG_kbd A(C(JP_K)) // <kbd><kbd></kbd></kbd>
#define TG__ol A(C(JP_M)) // <ol>~
#define TG__ul A(C(JP_N)) // <ul>~
#define TG___p A(C(JP_P)) // <p></p>
#define TG_rby A(C(JP_R)) // <rp>(</rp><rt></rt><rp>)</rp></ruby>
#define TG_spn A(C(JP_S)) // <span>
#define TG__dl A(C(JP_T)) // <dl>~
#define TG_sml A(C(JP_V)) // <small>
#define TG__em A(C(JP_W)) // <em>
#define TG_stg A(C(JP_Y)) // <strong>
#define TG___a A(C(JP_Z)) // <a href=""></a>
#define TG__li A(C(JP_AT)) // <li>
#define TG__h1 A(C(KC_F1)) // <h1></h1>
#define TG__h2 A(C(KC_F2)) // <h2></h2>
#define TG__h3 A(C(KC_F3)) // <h3></h3>
#define TG__h4 A(C(KC_F4)) // <h4></h4>
#define TG__h5 A(C(KC_F5)) // <h5></h5>
#define TG__h6 A(C(KC_F6)) // <h6></h6>
#define TG_cm1 A(C(KC_F12)) // <!--
#define TG_cm2 A(C(KC_F13)) // -->
#define TG_cm3 A(C(KC_F14)) // <!-- -->
#define TG_cm4 A(C(KC_F15)) // <!-- 改行タブ -->
#define AT_tit A(C(KC_F10)) // title=""
#define AT_lng A(C(KC_F11)) // lang=""
#define AT__id A(C(KC_F7)) // id=""
#define AT_cls A(C(KC_F8)) // class=""
// Layer number
#define _BASE 0
#define _XF1B 1
#define _XF2B 2
#define _XF4B 3
#define _JBASE 4
#define _EBASE 5
#define _XF2E 6
#define _XF1J 7
#define _XF2J 8
#define _XF4J 9
#define _XF24d 10
#define _IME 11
#define _HTML_R 12
#define _HTML_L 13
#define _OPT1 14
enum custom_keycodes {
JP_MODE = SAFE_RANGE,
EISU_ON,
EISU_OF,
CH_0022, // " jbase 二重引用符 常に半角
CH_0027, // ' jbase 一重引用符 常に半角
CH_0030, // 0000 テンキーの0のためATOK設定で常に半角
CHJ002C, // , jbase カンマ 常に半角
CHB2018, // ‘’ base
CHE2018, // ‘’ ebase
CHB201C, // “” base
CHE201C, // “” ebase
CHB0028, // () base用 丸括弧 ebase:asciiのため両用可
CHJFF08, // () jbase
CHBFF5F, // ⦅⦆ base用 二重丸括弧
CHJFF5F, // ⦅⦆ jbase ebase
CHB005B, // [] base用 角括弧 ebase:asciiのため両用可
CHJFF3B, // [] jbase
CHB007B, // {} base用 波括弧 ebase:asciiのため両用可
CHJFF5B, // {} jbase
CHB3008, // 〈〉 base用 山括弧
CHJ3008, // 〈〉 jbase
CHB300A, // 《》 base用 二重山括弧
CHJ300A, // 《》 jbase ebase
CHB300C, // 「」 base
CHJ300C, // 「」 jbase
CHB300E, // 『』 base
CHJ300E, // 『』 jbase
CHB3010, // 【】 base用 隅括弧
CHJ3010, // 【】 jbase ebase
CHB3016, // 〖〗 base用 隅抜き括弧
CHJ3016, // 〖〗 jbase ebase
CHB301A, // 〚〛 base用 二重角括弧
CHJ301A, // 〚〛 jbase ebase
CHB3014, // 〔〕 base用 亀甲括弧
CHJ3014, // 〔〕 jbase ebase
CHB3018, // 〘〙 base用 二重亀甲括弧
CHJ3018, // 〘〙 jbase ebase
CHB2019, // ’ base用アポストロフィ(右一重引用符)
CHJ2019, // ’ jbase用 <span lang="en">付き
CHE2019, // ’ ebase
CHBFF0F, // / base
CHJFF0F, // / jbase ebase
CHB2192, // → base
CHJ2192, // → jbase、ebase
CHB301D, // 〝〟 base用ダブルミニュート
CHJ301D, // 〝〟 jbase ebase
HANN_La,
HANN_Li,
HANN_Lu,
HANN_Le,
HANN_Lo,
HANN_ya,
HANN_yu,
HANN_yo,
HANN_wa,
CSS_OFF,
CSS_ON,
LATIN_0,
KAKKO_1,
WZHTML, // WZ EDITOR:HTMLのタグをWZのメニューから打つ
TAGHTML, // WZ EDITOR:<>(キーボードマクロ)
TMPHTML, // WZ EDITOR:HTMLテンプレート
WZ_TIME, // WZ EDITOR:挿入→日付・時刻
WZ_HOZN, // WZ EDITOR:挿入→水平線
CR_lt,
CR_gt,
CR_quot,
CR_ensp,
CR_amp,
CLCLKEY,
ERESET,
EERESET,
SPC_KEY,
NAVI_KY,
XF1B_KY,
XF1J_KY,
XF2J_HN,
XF3_KEY,
XF4B_NF,
XF4J_NF,
XF4J_EJ,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* map
1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 1-7, 1-8, 1-9, 1-10,
2-1, 2-2, 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-10,
3-1, 3-2, 3-3, 3-4, 3-5, 3-6, 3-7, 3-8, 3-9, 3-10,
4-1, 4-2, 4-3, 4-4, 4-5, 4-6, 4-7, 4-8, 4-9, 4-10,
P0, PDOT, PENT, P+, P-, P*, P/, F12, F11, F4,
P1, P2, P3, P6, P9, F5, F3, F2, F1, MUTE,
P4, P5, P8, P7, 7-5, 7-6, 7-7, 7-8, 7-9, PSCR,
8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 8-8, 8-9, 8-10,
9-1, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10,
10-1, 10-2, 10-3, 10-4, 10-5, 10-6, 10-7, 10-9, 10-10,
11-1, 11-3
*/
[_BASE] = LAYOUT(
XXXXXXX, XHTML_R, XF4B_NF, JP_MODE, KC_ENT, KC_ESC, CSS_OFF, JP_MINS, KC_LEFT, KC_RGHT,
XXXXXXX, JP_TILD, SF_CAPS, JP_COMM, JP_DOT, JP_E, JP_X, KC_DEL, XXXXXXX, OPTZ,
XXXXXXX, JP_SLSH, KC_BSPC, JP_A, JP_I, JP_O, JP_C, XXXXXXX, JP_UNDS, XXXXXXX,
JP_DQUO, JP_Q, JP_L, JP_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P1, KC_P2, KC_P3, KC_P6, KC_P9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE,
KC_P4, KC_P5, KC_P8, KC_P7, XXXXXXX, XXXXXXX, JP_AT, XXXXXXX, OPTC, KC_PSCR,
JP_F, JP_B, JP_H, JP_M, JP_R, JP_Y, JP_W, OPTV, XXXXXXX, XXXXXXX,
XXXXXXX, JP_P, JP_S, JP_K, JP_T, JP_N, KC_LSFT, KC_LCTL, JP_V, JP_D,
XXXXXXX, JP_J, JP_Z, JP_G, OPT1_KY, KC_LALT, KC_TAB, XHTML_L, XXXXXXX,
XF1B_KY, XF2_B
),
[_XF1B] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, C(KC_ENT), XXXXXXX, XXXXXXX, JP_PLUS, SF_LEFT, SF_RGHT,
XXXXXXX, JP_EQL, XXXXXXX, JP_0, KC_PDOT, JP_3, JP_9, XXXXXXX, XXXXXXX, JP_CIRC,
XXXXXXX, JP_ASTR, KC_SPC, JP_1, JP_2, JP_6, JP_8, XXXXXXX, JP_7, XXXXXXX,
JP_HASH, CHB0028, JP_4, JP_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, KC_BSPC, XXXXXXX,
KC_DEL, XXXXXXX, KC_END, KC_HOME, SF_UP, KC_PGDN, SF_DOWN, KC_ENT, XXXXXXX, XXXXXXX,
XXXXXXX, CT_END, CT_HOME, KC_RGHT, KC_UP, KC_LEFT, SF_LEFT, SF_RGHT, SF_HOME, KC_DOWN,
XXXXXXX, XXXXXXX, XXXXXXX, SF_END, KC_P1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX
),
[_XF2B] = LAYOUT(
XXXXXXX, XXXXXXX, XF24_d, XF23SF, XXXXXXX, XXXXXXX, CSS_ON, JP_GRV, XXXXXXX, XXXXXXX,
XXXXXXX, CHB2019, CLCLKEY, CHB3010, CHB3016, XXXXXXX, XXXXXXX, ERESET, XXXXXXX, OPTY,
XXXXXXX, CHBFF0F, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
JP_QUOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CH_0030, JP_COMM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, OPTX, KC_SCRL,
KC_DEL, XXXXXXX, KC_END, KC_HOME, SF_UP, KC_PGDN, SF_DOWN, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, CT_END, CT_HOME, KC_RGHT, KC_UP, KC_LEFT, SF_LEFT, SF_RGHT, SF_HOME, KC_DOWN,
XXXXXXX, XXXXXXX, XXXXXXX, SF_END, KC_P2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______
),
[_XF4B] = LAYOUT(
XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, CSS_ON, SF_END, SF_LEFT, SF_RGHT,
XXXXXXX, XXXXXXX, XXXXXXX, SF_HOME, KC_DOWN, KC_RGHT, SF_DOWN, ERESET, XXXXXXX, OPTY,
XXXXXXX, CT_HOME, CT_END, KC_LEFT, KC_UP, SF_UP, KC_PGDN, XXXXXXX, KC_PGUP, XXXXXXX,
XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CH_0030, JP_COMM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_PIPE, XXXXXXX, OPTX, KC_SCRL,
CHB301D, CHB005B, CHB2018, CHB201C, CHB300A, JP_YEN, JP_AMPR, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, JP_COLN, JP_PERC, CHB2192, JP_EXLM, JP_QUES, LATIN_0, KAKKO_1, CHB007B, JP_DLR,
XXXXXXX, JP_SCLN, JP_RABK, JP_LABK, KC_P3, XXXXXXX, A(KC_TAB), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_JBASE] = LAYOUT(
XXXXXXX, XHTML_R, XF4J_NF, XF3_KEY, KC_ENT, KC_ESC, CSS_OFF, JP_MINS, KC_LEFT, KC_RGHT,
XXXXXXX, JP_TILD, SF_CAPS, JP_COMM, JP_DOT, JP_E, JP_X, KC_DEL, XXXXXXX, OPTZ,
XXXXXXX, JP_SLSH, KC_BSPC, JP_A, JP_I, JP_O, JP_C, XXXXXXX, JP_UNDS, XXXXXXX,
CH_0022, JP_Q, JP_L, JP_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P1, KC_P2, KC_P3, KC_P6, KC_P9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE,
KC_P4, KC_P5, KC_P8, KC_P7, XXXXXXX, XXXXXXX, JP_AT, XXXXXXX, OPTC, KC_PSCR,
JP_F, JP_B, JP_H, JP_M, JP_R, JP_Y, JP_W, OPTV, XXXXXXX, XXXXXXX,
XXXXXXX, JP_P, JP_S, JP_K, JP_T, JP_N, KC_LSFT, KC_LCTL, JP_V, JP_D,
XXXXXXX, JP_J, JP_Z, JP_G, OPT1_KY, KC_LALT, KC_TAB, XHTML_L, XXXXXXX,
XF1J_KY, XF2J_HN
),
[_EBASE] = LAYOUT(
XXXXXXX, XHTML_R, XF4J_EJ, XF3_KEY, KC_ENT, KC_ESC, CSS_OFF, JP_MINS, KC_LEFT, KC_RGHT,
XXXXXXX, JP_TILD, SF_CAPS, JP_COMM, JP_DOT, JP_E, JP_X, KC_DEL, XXXXXXX, OPTZ,
XXXXXXX, JP_SLSH, KC_BSPC, JP_A, JP_I, JP_O, JP_C, XXXXXXX, JP_UNDS, XXXXXXX,
CH_0022, JP_Q, JP_L, JP_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P1, KC_P2, KC_P3, KC_P6, KC_P9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE,
KC_P4, KC_P5, KC_P8, KC_P7, XXXXXXX, XXXXXXX, JP_AT, XXXXXXX, OPTC, KC_PSCR,
JP_F, JP_B, JP_H, JP_M, JP_R, JP_Y, JP_W, OPTV, XXXXXXX, XXXXXXX,
XXXXXXX, JP_P, JP_S, JP_K, JP_T, JP_N, KC_LSFT, KC_LCTL, JP_V, JP_D,
XXXXXXX, JP_J, JP_Z, JP_G, OPT1_KY, KC_LALT, KC_TAB, XHTML_L, XXXXXXX,
XF1J_KY, XF2_E
),
[_XF2E] = LAYOUT(
XXXXXXX, XXXXXXX, _______, XF23SF, XXXXXXX, XXXXXXX, CSS_ON, JP_GRV, SF_LEFT, SF_RGHT,
XXXXXXX, CHE2019, CLCLKEY, CHJ3010, CHJ3016, XXXXXXX, XXXXXXX, EERESET, XXXXXXX, OPTY,
XXXXXXX, CHJFF0F, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
JP_QUOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CH_0030, JP_COMM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_PIPE, XXXXXXX, OPTX, KC_SCRL,
CHJ301D, CHB005B, CHE2018, CHE201C, CHJ300A, JP_YEN, JP_AMPR, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, JP_COLN, JP_PERC, CHJ2192, JP_EXLM, JP_QUES, LATIN_0, KAKKO_1, CHB007B, JP_DLR,
XXXXXXX, JP_SCLN, JP_RABK, JP_LABK, KC_P6, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______
),
[_XF1J] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, C(JP_HENK), C(KC_ENT), XXXXXXX, XXXXXXX, JP_PLUS, SF_LEFT, SF_RGHT,
XXXXXXX, JP_EQL, EISU_ON, JP_0, KC_PDOT, JP_3, JP_9, XXXXXXX, XXXXXXX, JP_CIRC,
XXXXXXX, JP_ASTR, S(KC_SPC), JP_1, JP_2, JP_6, JP_8, XXXXXXX, JP_7, XXXXXXX,
JP_HASH, CHJFF08, JP_4, JP_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, KC_BSPC, XXXXXXX,
KC_DEL, XXXXXXX, KC_END, KC_HOME, SF_UP, KC_PGDN, SF_DOWN, KC_ENT, XXXXXXX, XXXXXXX,
XXXXXXX, CT_END, CT_HOME, KC_RGHT, KC_UP, KC_LEFT, SF_LEFT, SF_RGHT, SF_HOME, KC_DOWN,
XXXXXXX, XXXXXXX, XXXXXXX, SF_END, KC_P7, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX
),
[_XF2J] = LAYOUT(
XXXXXXX, XXXXXXX, XF24_d, XF23SF, XXXXXXX, XXXXXXX, CSS_ON, JP_GRV, XXXXXXX, XXXXXXX,
XXXXXXX, CHJ2019, XXXXXXX, CHJ3010, CHJ3016, HANN_Le, HANN_yo, ERESET, XXXXXXX, OPTY,
XXXXXXX, CHJFF0F, KC_ESC, HANN_La, HANN_Li, HANN_Lo, JP_C, XXXXXXX, HANN_wa, XXXXXXX,
CH_0027, HANN_ya, HANN_yu, HANN_Lu, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CH_0030, CHJ002C, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, OPTX, KC_SCRL,
KC_DEL, XXXXXXX, KC_END, KC_HOME, SF_UP, KC_PGDN, SF_DOWN, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, CT_END, CT_HOME, KC_RGHT, KC_UP, KC_LEFT, SF_LEFT, SF_RGHT, SF_HOME, KC_DOWN,
XXXXXXX, XXXXXXX, XXXXXXX, SF_END, KC_P2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______
),
[_XF4J] = LAYOUT(
XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, CSS_ON, SF_END, SF_LEFT, SF_RGHT,
XXXXXXX, XXXXXXX, XXXXXXX, SF_HOME, KC_DOWN, KC_RGHT, SF_DOWN, ERESET, XXXXXXX, OPTY,
XXXXXXX, CT_HOME, CT_END, KC_LEFT, KC_UP, SF_UP, KC_PGDN, XXXXXXX, KC_PGUP, XXXXXXX,
XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CH_0030, CHJ002C, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_PIPE, XXXXXXX, OPTX, KC_SCRL,
CHJ301D, CHJFF3B, CHJ300E, CHJ300C, CHJ300A, JP_YEN, JP_AMPR, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, JP_COLN, JP_PERC, CHJ2192, JP_EXLM, JP_QUES, LATIN_0, KAKKO_1, CHJFF5B, JP_DLR,
XXXXXXX, JP_SCLN, JP_RABK, JP_LABK, KC_P9, XXXXXXX, A(KC_TAB), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_XF24d] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, C(A(KC_DEL)), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, C(JP_A), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
C(JP_F), XXXXXXX, WZ_HOZN, WZ_TIME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, C(JP_V), C(JP_X), C(JP_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, C(JP_Y), C(JP_Z), XXXXXXX, JP_A, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_IME] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RCS(JP_F),RCS(JP_B), RCS(JP_H), RCS(JP_M), RCS(JP_R), RCS(JP_Y), RCS(JP_W), XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX,RCS(JP_P), RCS(JP_S), RCS(JP_K), RCS(JP_T), RCS(JP_N), XXXXXXX, XXXXXXX, RCS(JP_V), RCS(JP_D),
XXXXXXX,RCS(JP_J), RCS(JP_Z), RCS(JP_G), JP_B, XXXXXXX, C(KC_TAB), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_HTML_R] = LAYOUT(
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_P0, KC_PDOT, KC_P3, KC_P9, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, S(KC_SPC), KC_P1, KC_P2, KC_P6, KC_P8, XXXXXXX, KC_P7, XXXXXXX,
XXXXXXX, XXXXXXX, KC_P4, KC_P5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG__li, XXXXXXX, WZHTML, XXXXXXX,
TG__ep, TG__br, TG__hr, TG__ol, TG_rby, TG_stg, TG__em, C(KC_ENT), XXXXXXX, XXXXXXX,
XXXXXXX, TG___p, TG_spn, TG_kbd, TG__dl, TG__ul, TMPHTML, TAGHTML, AT_lng, TG__dd,
XXXXXXX, AT_cls, AT__id, AT_tit, JP_C, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_HTML_L] = LAYOUT(
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_cm2, XXXXXXX, XXXXXXX,
XXXXXXX, CR_amp, XXXXXXX, XXXXXXX, TG_cm1, TG__h3, TG_sml, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, TG_cm3, CR_ensp, TG___a, TG_img, TG__h6, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CR_quot, TG_cm4, TG__h4, TG__h5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_P0, KC_P9, KC_P8, KC_P7, KC_P6, XXXXXXX, KC_P0, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_P5, KC_P4, KC_P3, KC_P2, KC_P1, XXXXXXX, XXXXXXX, XXXXXXX, KC_PDOT,
XXXXXXX, XXXXXXX, CR_gt, CR_lt, JP_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
[_OPT1] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_E, KC_F12, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_F10, KC_F11, KC_F3, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F6, KC_F8, XXXXXXX, KC_F7, XXXXXXX,
XXXXXXX, XXXXXXX, KC_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
CSS_OFF, CSS_ON, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX
),
};
static bool XF1B_pressed = false;
static uint16_t XF1B_pressed_time = 0;
static bool XF1J_pressed = false;
static uint16_t XF1J_pressed_time = 0;
static bool XF3_pressed = false;
static uint16_t XF3_pressed_time = 0;
static bool XF2J_pressed = false;
static uint16_t XF2J_pressed_time = 0;
static bool XF4B_pressed = false;
static uint16_t XF4B_pressed_time = 0;
static bool XF4J_pressed = false;
static uint16_t XF4J_pressed_time = 0;
static bool XF4E_pressed = false;
static uint16_t XF4E_pressed_time = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case CH_0022:// 二重引用符一つ 半角で入力
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT5) "\"" SS_TAP(X_INT4));
//SEND_STRING("@^0022");
} else {
}
break;
case CH_0027:// 一重引用符一つ 半角で入力
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT5) "'" SS_TAP(X_INT4));
//SEND_STRING("@^0027");
} else {
}
break;
case CH_0030:// 0000
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_P0) SS_TAP(X_P0) SS_TAP(X_P0) SS_TAP(X_P0));
} else {
}
break;
case CHJ002C:// jbase カンマ 常に半角 X_INT5:無変換、X_INT4:変換
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT5) "," SS_TAP(X_INT4));
} else {
}
break;
case CHB2018:// ‘’ base 一重引用符 以下全角記号 括弧は確定後、次に一文字移動する手間がある
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^2018" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHE2018:// ‘’ ebase 一重引用符
if (record->event.pressed) {
SEND_STRING("@^^2018" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB201C:// “” base 二重引用符
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^201+" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHE201C:// “” ebase 二重引用符
if (record->event.pressed) {
SEND_STRING("@^^201+" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB0028:// () base ebase 丸括弧
if (record->event.pressed) {
SEND_STRING("()" SS_TAP(X_LEFT));
} else {
}
break;
case CHJFF08: // () jbase 丸括弧
if (record->event.pressed) {
SEND_STRING("()" SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHBFF5F: // ⦅⦆ jbase ebase 二重丸括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^995f" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJFF5F: // ⦅⦆ base 二重丸括弧
if (record->event.pressed) {
SEND_STRING("@^^995f" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB005B: // [] base ebase 角括弧
if (record->event.pressed) {
SEND_STRING("[]" SS_TAP(X_LEFT));
} else {
}
break;
case CHJFF3B: // [] JBASE用角括弧
if (record->event.pressed) {
SEND_STRING("@^^993b" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB007B: // {} base ebase 波括弧
if (record->event.pressed) {
SEND_STRING("{}" SS_TAP(X_LEFT));
} else {
}
break;
case CHJFF5B: // {} 波括弧
if (record->event.pressed) {
SEND_STRING("{}" SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB3008: // 〈〉 base 山括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^3008" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ3008: // 〈〉 山括弧
if (record->event.pressed) {
SEND_STRING("@^^3008" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB300A: // 《》 BASE用二重山括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^300=" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ300A: // 《》 JBASE、EBASE用二重山括弧
if (record->event.pressed) {
SEND_STRING("@^^300=" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB300C: // 「」 BASE用カギ括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "[]" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ300C: // 「」 カギ括弧
if (record->event.pressed) {
SEND_STRING("[]" SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB300E: // 『』 BASE用二重カギ括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^300%" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ300E: // 『』 二重カギ括弧
if (record->event.pressed) {
SEND_STRING("@^^300%" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB3010: // 【】 BASE用隅括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^3010" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ3010: // 【】 隅括弧
if (record->event.pressed) {
SEND_STRING("@^^3010" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB3016: // 〖〗 BASE用白抜き隅括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^3016" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ3016: // 〖〗 白抜き隅括弧
if (record->event.pressed) {
SEND_STRING("@^^3016" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB301A: // 〚〛 BASE用二重角括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^301=" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ301A: // 〚〛 二重角括弧
if (record->event.pressed) {
SEND_STRING("@^^301=" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB3014: // 〔〕 BASE用亀甲括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^3014" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ3014: // 〔〕 亀甲括弧
if (record->event.pressed) {
SEND_STRING("@^^3014" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB3018: // 〘〙 BASE用二重亀甲括弧
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^3018" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ3018: // 〘〙 二重亀甲括弧
if (record->event.pressed) {
SEND_STRING("@^^3018" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case CHB2019: // ’ BASE用アポストロフィ U+2019
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^2019" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ2019: // ’ JBASE用アポストロフィ U+2019
if (record->event.pressed) {
SEND_STRING("@^2019" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT));
} else {
}
break;
case CHE2019: // ’ EBASE用アポストロフィ U+2019
if (record->event.pressed) {
SEND_STRING("@^2019" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT));
} else {
}
break;
case CHBFF0F: // / BASE用全角スラッシュ
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^990f" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_INT5));
} else {
}
break;
case CHJFF0F: // / JBASE用全角スラッシュ
if (record->event.pressed) {
SEND_STRING("@^990f" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT));
} else {
}
break;
case CHB2192: // → BASE用右向き矢印
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@k" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ2192: // → JBASE、EBASE用右向き矢印
if (record->event.pressed) {
SEND_STRING("@k" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT));
} else {
}
break;
case CHB301D: // 〝〟 BASE用ダブルミニュート
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4) "@^^301d" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT) SS_TAP(X_INT5));
} else {
}
break;
case CHJ301D: // 〝〟 JBASE、EBASE用ダブルミニュート
if (record->event.pressed) {
SEND_STRING("@^^301d" SS_DELAY(20) SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
case HANN_La:// ぁ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("a"));
} else {
}
break;
case HANN_Li:// ぃ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("i"));
} else {
}
break;
case HANN_Lu:// ぅ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("u"));
} else {
}
break;
case HANN_Le:// ぇ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("e"));
} else {
}
break;
case HANN_Lo:// ぉ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("o"));
} else {
}
break;
case HANN_ya:// ゃ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("ya"));
} else {
}
break;
case HANN_yu:// ゅ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("yu"));
} else {
}
break;
case HANN_yo:// ょ
if (record->event.pressed) {
SEND_STRING(SS_LSFT("yo"));
} else {
}
break;
case HANN_wa:// ゎ
if (record->event.pressed) {
SEND_STRING("lwa");
} else {
}
break;
case CSS_OFF: // FirefoxのCSSをOFFにする
if (record->event.pressed) {
SEND_STRING(SS_LALT("v") SS_DELAY(20) "y" SS_DELAY(20) "n");
} else {
}
break;
case CSS_ON: // FirefoxのCSSをONにする
if (record->event.pressed) {
SEND_STRING(SS_LALT("v") SS_DELAY(20) "y" SS_DELAY(20) "b");
} else {
}
break;
case LATIN_0: // 欧文文字
if (record->event.pressed) {
SEND_STRING(SS_LALT("i") SS_DELAY(20) "u");
} else {
}
break;
case WZHTML: // HTMLのタグをWZのメニューから打つ
if (record->event.pressed) {
SEND_STRING(SS_LALT("i") SS_DELAY(20) "m" SS_DELAY(2) "m");
} else {
}
break;
case TAGHTML: // HTMLのタグ前後記号のみ IME OFF、BASEに抜ける BASEに文字が無いキーに割り当てること
if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LALT) SS_LCTL("5") SS_UP(X_LALT));
} else {
}
break;
case TMPHTML: // HTMLテンプレート WZ挿入→ファイル機能
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT5));
layer_move(_BASE);
SEND_STRING(SS_LALT("i") SS_DELAY(20) "f" SS_TAP(X_ENT));
SEND_STRING( SS_DELAY(20) "D:\\Work\\wz\\qmk_html" SS_DELAY(80) SS_TAP(X_ENT));
} else {
}
break;
case WZ_TIME:// WZ EDITOR:挿入→日付・時刻
if (record->event.pressed) {
SEND_STRING(SS_LALT("i") SS_DELAY(20) "t");
} else {
}
break;
case WZ_HOZN:// WZ EDITOR:挿入→水平線
if (record->event.pressed) {
SEND_STRING(SS_LALT("i") SS_DELAY(20) "h");
} else {
}
break;
case CR_lt:// 文字参照:<
if (record->event.pressed) {
SEND_STRING("<");
} else {
}
break;
case CR_gt:// 文字参照:>
if (record->event.pressed) {
SEND_STRING(">");
} else {
}
break;
case CR_quot:// 文字参照:"
if (record->event.pressed) {
SEND_STRING(""");
} else {
}
break;
case CR_ensp:// 文字参照:EN SPACE
if (record->event.pressed) {
SEND_STRING(" ");
} else {
}
break;
case CR_amp:// 文字参照:&
if (record->event.pressed) {
SEND_STRING("&");
} else {
}
break;
case CLCLKEY: // CLCL起動 クリップボード監視
if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LSFT) SS_LALT("c") SS_UP(X_LSFT));
} else {
}
break;
case EISU_ON:
if (record->event.pressed) {
// キーコード EISU_ON が押された時 英数(ATOK英語入力モード)
SEND_STRING(SS_DOWN(X_LSFT) SS_LCTL("^") SS_UP(X_LSFT) SS_DOWN(X_LSFT) SS_TAP(X_CAPS) SS_UP(X_LSFT));
layer_on(_EBASE);
} else {
}
break;
case EISU_OF:
if (record->event.pressed) {
// キーコード EISU_OF が押された時 英数(ATOK英語入力モード)+CAPS OFF(トグル操作)
SEND_STRING(SS_DOWN(X_LSFT) SS_LCTL("^") SS_UP(X_LSFT) SS_DOWN(X_LSFT) SS_TAP(X_CAPS) SS_UP(X_LSFT));
// 単独では意味のないキーに指定
layer_move(_JBASE);
} else {
}
break;
case JP_MODE: // 日本語入力のベース 全角括弧入力
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT4));
layer_move(_JBASE);
} else {
}
break;
case ERESET: // 日本語入力OFF 無変換押下後baseレイヤに移行
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_INT5));
layer_move(_BASE);
} else {
}
break;
case EERESET: // EBASE用 無変換押下後baseレイヤに移行
if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LSFT) SS_LCTL("^") SS_UP(X_LSFT) SS_DOWN(X_LSFT) SS_TAP(X_CAPS) SS_UP(X_LSFT));
SEND_STRING(SS_TAP(X_INT5));
layer_move(_BASE);
} else {
}
break;
case XF1B_KY:
if (record->event.pressed) {
XF1B_pressed = true;
XF1B_pressed_time = record->event.time;
layer_on(_XF1B);
} else {
layer_off(_XF1B);
if (XF1B_pressed && (TIMER_DIFF_16(record->event.time, XF1B_pressed_time) < TAPPING_TERM)) {
register_code(KC_SPC);
unregister_code(KC_SPC);
}
XF1B_pressed = false;
}
return false;
break;
case XF1J_KY:
if (record->event.pressed) {
XF1J_pressed = true;
XF1J_pressed_time = record->event.time;
layer_on(_XF1J);
} else {
layer_off(_XF1J);
if (XF1J_pressed && (TIMER_DIFF_16(record->event.time, XF1J_pressed_time) < TAPPING_TERM)) {
register_code(KC_SPC);
unregister_code(KC_SPC);
}
XF1J_pressed = false;
}
return false;
break;
case XF3_KEY:
if (record->event.pressed) {
XF3_pressed = true;
XF3_pressed_time = record->event.time;
layer_on(_IME);
} else {
layer_off(_IME);
if (XF3_pressed && (TIMER_DIFF_16(record->event.time, XF3_pressed_time) < TAPPING_TERM)) {
register_code(JP_HENK);
unregister_code(JP_HENK);
}
XF3_pressed = false;
}
return false;
break;
case XF2J_HN:
if (record->event.pressed) {
XF2J_pressed = true;
XF2J_pressed_time = record->event.time;
layer_on(_XF2J);
} else {
layer_off(_XF2J);
if (XF2J_pressed && (TIMER_DIFF_16(record->event.time, XF2J_pressed_time) < TAPPING_TERM)) {
SEND_STRING(SS_DOWN(X_LSFT) SS_LCTL("q") SS_UP(X_LSFT));
}
XF2J_pressed = false;
}
return false;
break;
case XF4B_NF:
if (record->event.pressed) {
XF4B_pressed = true;
XF4B_pressed_time = record->event.time;
layer_on(_XF4B);
} else {
layer_off(_XF4B);
if (XF4B_pressed && (TIMER_DIFF_16(record->event.time, XF4B_pressed_time) < TAPPING_TERM)) {
SEND_STRING(SS_TAP(X_INT5));
//layer_move(_BASE);
}
XF4B_pressed = false;
}
return false;
break;
case XF4J_NF:
if (record->event.pressed) {
XF4J_pressed = true;
XF4J_pressed_time = record->event.time;
layer_on(_XF4J);
} else {
layer_off(_XF4J);
if (XF4J_pressed && (TIMER_DIFF_16(record->event.time, XF4J_pressed_time) < TAPPING_TERM)) {
SEND_STRING(SS_TAP(X_INT5));
layer_move(_BASE);
}
XF4J_pressed = false;
}
return false;
break;
case XF4J_EJ:
if (record->event.pressed) {
XF4E_pressed = true;
XF4E_pressed_time = record->event.time;
layer_on(_XF2E);
} else {
layer_off(_XF2E);
if (XF4E_pressed && (TIMER_DIFF_16(record->event.time, XF4E_pressed_time) < TAPPING_TERM)) {
SEND_STRING(SS_DOWN(X_LSFT) SS_LCTL("^") SS_UP(X_LSFT) SS_DOWN(X_LSFT) SS_TAP(X_CAPS) SS_UP(X_LSFT));
layer_move(_JBASE);
}
XF4E_pressed = false;
}
return false;
break;
default:
if (record->event.pressed) {
// reset the flags
XF1B_pressed = false;
XF1J_pressed = false;
XF3_pressed = false;
XF2J_pressed = false;
XF4B_pressed = false;
XF4J_pressed = false;
XF4E_pressed = false;
}
break;
}
return true;
};
// LED インジケータ設定
void matrix_init_user(void) {
setPinOutput(MICRO_LED_NUM);
setPinOutput(MICRO_LED_CAP);
setPinOutput(MICRO_LED_SCR);
}
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
writePinHigh(MICRO_LED_NUM);
} else {
writePinLow(MICRO_LED_NUM);
}
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinHigh(MICRO_LED_CAP);
} else {
writePinLow(MICRO_LED_CAP);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinHigh(MICRO_LED_SCR);
} else {
writePinLow(MICRO_LED_SCR);
}
}
プログラムはわからないので、公開されているものを見ながらパズルを読み解く要領でなんとかやっています。一応動いているようなので良しとしていますが。
特にQMK Firmware で Raise/Lower と変換/無変換を同じキーに割り当てるの記事と、gist に置いておくバージョンは大変参考になりました。ありがとうございました。
ATOKの設定変更

設定を変更した際はバックアップをとり、別媒体に保存しておきます。
バックアップは、スタートメニューの[プログラム]→[ATOK]→[ATOK2017]→[ATOK2017ツール]→バックアップツールを起動。
常に半角で入力
テンキーの数字と記号、アンダースコアは、常に半角文字になるようATOKを設定しています。
テンキーの半角文字確定入力設定

- ATOKプロパティ→[入力・変換]→入力補助
- 「テンキーからの入力を必ず半角にする」「確定文字で入力する」にチェック
アンダースコア等の記号、他の文字

- ATOKプロパティ→[入力・変換]→半角全角変換
- 「半角全角変換を有効にする」にチェック、設定一覧からアンダースコアを選択後、右の「半角」を選択
- 「入力中の文字に対しても~」「ユーザー単語に対しても~」にもとりあえずチェック
キーカスタマイズ

デフォルトだと、ひらがな(後)変換やカタカナ(後)変換などは、CTRL+U、CTRL+Iなどに割り当てられています。私のは独自配列なので、そのままだとあちこちに飛ぶことになります。なので、キーカスタマイズは大幅に書き換えています。
ローマ字カスタマイズ
ローマ字入力は、子音と母音の組み合わせ、もしくは母音のキーのみを打って入力します。組み合わせの規則は、MS-IMEやATOKが主に用いられていると思います。富士通のローマ字入力表のは「とぅ」や「てぃ」など書かれていないものがありますが、その分わかりやすいです。
私は普通のQWERTY配列キーボードを使っていたときも、「ん」をXで打つ(これは昭和からですが)など、いろいろ手を加えていました。今回はさらにカスタマイズをしています。
ローマ字カスタマイズ

ATOKのローマ字カスタマイズで、[追加]から設定を変更していきます。
小文字の「ゃ」「ゅ」「ょ」
小文字の「ゃ」「ゅ」「ょ」がつく文字は、子音+Q、L、Xで入力できるよう設定しました。「きゃ」ならK+Qの2打です。
Xは単打で「ん」にしていますが、子音の次に設定することで子音+「ょ」になります。「マンション」だとmaxsxxになります。元々xは「ん」のみの設定でしたが、「ょ」をどこに置くかで試行錯誤しまくった結果、このようなことになりました。
小文字の「っ」
Cは単打で小さな「っ」です。いつもは子音を2つ続けて打っていますが、必要な場合はC単打も使っています。
小文字の「ぁ」「ぃ」「ぅ」「ぇ」「ぉ」
小文字の「ぁ」「ぃ」「ぅ」「ぇ」「ぉ」がつく文字は、子音+XF1を押しながらA、I、U、E、Oで入力できます。母音の場所は、XF1の併用で数字が打てるようになっているので、実際には子音+数字で文字が入力されるよう設定しています。
「とぅ」だとT+XF1を押しながらU。XF1+Uは数字の「5」なので、「t5」で「とぅ」になるよう設定しています。
t+数字はかなりごちゃごちゃしてしまいました。
t1 つぁ t2 てぃ t3 ちぇ t4 てゅ t5 とぅ t6 つぉ
この辺は、使用頻度で決めています。t2は「た行」で「ぃ」がつく文字で、「たぃ」「ちぃ」「つぃ」「てぃ」「とぃ」がありますが、使ったことがあるのは「つぃ」「てぃ」の二つ。「てぃ」はセキュリティやフロンティア、アトランティスなどいろいろ使っているのに対し、「つぃ」は「ツィオルコフスキー」しか使っていませんでした。よって「てぃ」に決定。「つぃ」はz2で出せるようにしました。
小文字の「ゅ」がつく「tl」は「ちゅ」を登録しているので、「てゅ」はt4にしました。私は「コンスティテューション」くらいしか使ってないので、これでいいだろうと思ってます。
「つぁ」~「つぉ」は、Zで入力できるようにしています(「つぁ」「つぉ」の2つはTで打てますが)。「じゃ」や「じぇ」はJを使います。最初設定した時は馴染めず、すぐ元に戻しましたが、いろいろ考えて再度設定した後はなぜか普通に使えています。
小文字のみの入力
QMKのマクロで、XF2キー+A、I、U、E、O、Q、L、X、_で小文字の「ぁぃぅぇぉゃゅょゎ」を打てるようにしています。「っ」はC単打で出るので、QMKでは設定していません。
ローマ字入力の綴り
綴りや文字の選択は以下を参考にしています。
- 文化庁「外来語の表記」に用いる仮名と符号の表
- ATOK 2017 for Windows マニュアル付録 ローマ字・かな対応表(2008、2014と同一)
- WXG4.0 マニュアル ローマ字設定一覧
- X68030用日本語入力・辞書ユーティリティ ユーザーズマニュアル ローマ字/かな対応表
- 近年書いたテキストの漢字をカナにした34万字から作った文字出現頻度
表の背景色は、以下のレベルを表します。レベル2や3は私の使用頻度や判断によるもので、一般的な区分ではありません。
- レベル0:通常用いる
- レベル1:文化庁の外来語表記第2表
- レベル2:外来語などで頻度低め
- レベル3:使用は希(人名、地名、固有名詞など例あり)
- レベル4:ATOK2017の初期設定で未定義(~レベル3までの文字を除く)
- レベル5:WXG4の初期設定で未定義(~レベル4までの文字を除く)
a | あ a | い i | う u | え e | お o | V | ヴ vu | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
K | か ka | き ki | く ku | け ke | こ ko | G | が ga | ぎ gi | ぐ gu | げ ge | ご go |
S | さ sa | し si | す su | せ se | そ so | Z | ざ za | じ zi | ず zu | ぜ ze | ぞ zo |
T | た ta | ち ti | つ tu | て te | と to | D | だ da | ぢ di | づ du | で de | ど do |
N | な na | に ni | ぬ nu | ね ne | の no | ||||||
H | は ha | ひ hi | ふ hu fu | へ he | ほ ho | B | ば ba | び bi | ぶ bu | べ be | ぼ bo |
P | ぱ pa | ぴ pi | ぷ pu | ぺ pe | ぽ po | ||||||
M | ま ma | み mi | む mu | め me | も mo | ||||||
Y | や ya | ゆ yu | よ yo | ゃ yA | ゅ yU | ょ yO | |||||
R | ら ra | り ri | る ru | れ re | ろ ro | ||||||
W | わ wa | ゐ y7 | ゑ w7 | を wo | ゎlwa | ||||||
N | ん x | っ c | |||||||||
A | ぁ A | ぃ I | ぅ U | ぇ E | ぉ O | L | ヵlka | ヶlke |
1(ァ) | 2(ィ) | 5(ゥ) | 3(ェ) | 6(ォ) | Q(ャ) | L(ュ) | X(ョ) | |
---|---|---|---|---|---|---|---|---|
Y | イァ | イィ | イゥ | イェ ye | イォ | イャ yq | イュ | イョ |
W | ウァ w1 | ウィ wi | ウゥ | ウェ we | ウォ w6 | ウャ | ウュ | ウョ |
V | ヴァ va | ヴィ vi | ヴゥ | ヴェ ve | ヴォ vo | ヴャ | ヴュ vl | ヴョ |
K | キァ | キィ | キゥ | キェ | キォ | きゃ kq | きゅ kl | きょ kx |
G | ギァ | ギィ | ギゥ | ギェ | ギォ | ぎゃ gq | ぎゅ gl | ぎょ gx |
K | クァ k1 | クィ k2 | クゥ k5 | クェ k3 | クォ k6 | クャ | クュ | クョ |
G | グァ g1 | グィ g2 | グゥ g5 | グェ g3 | グォ g6 | グャ | グュ | グョ |
S | シァ s1 | シィ s2 | シゥ | シェ s3 | シォ | しゃ sq | しゅ sl | しょ sx |
J | ジァ | ジィ j2 | ジゥ | ジェ je | ジォ j6 | じゃ ja | じゅ ju | じょ jo |
SW | スァ | スィ | スゥ | スェ | スォ | スャ | スュ | スョ |
Z | ズァ | ズィ | ズゥ | ズェ | ズォ | ズャ | ズュ | ズョ |
T | チァ | チィ | チゥ | チェ t3 | チォ | ちゃ tq | ちゅ tl | ちょ tx |
D | ヂァ | ヂィ | ヂゥ | ヂェ | ヂォ | ぢゃ dq | ぢゅ | ぢょ |
TS | ツァ z1 t1 | ツィ z2 | ツゥ z5 | ツェ z3 | ツォ z6 t6 | ツャ | ツュ | ツョ |
ヅァ | ヅィ | ヅゥ | ヅェ | ヅォ | ヅャ | ヅュ | ヅョ | |
T | テァ | ティ t2 | テゥ | テェ | テォ | テャ | テュ t4 | テョ |
D | デァ | ディ d2 | デゥ | デェ d3 | デォ | デャ | デュ dl | デョ |
T | トァ | トィ | トゥ t5 | トェ | トォ | トャ | トュ | トョ |
D | ドァ | ドィ | ドゥ d5 | ドェ | ドォ | ドャ | ドュ | ドョ |
N | ニァ n1 | ニィ n2 | ニゥ | ニェ n3 | ニォ | にゃ nq | にゅ nl | にょ nx |
ヌァ | ヌィ | ヌゥ | ヌェ | ヌォ | ヌャ | ヌュ | ヌョ | |
H | ヒァ | ヒィ h2 | ヒゥ | ヒェ h3 | ヒォ | ひゃ hq | ひゅ hl | ひょ hx |
B | ビァ b1 | ビィ b2 | ビゥ | ビェ b3 | ビォ b6 | びゃ bq | びゅ bl | びょ bx |
P | ピァ | ピィ p2 | ピゥ | ピェ p3 | ピォ | ぴゃ pq | ぴゅ pl | ぴょ px |
F | ファ fa | フィ fi | フゥ f5 | フェ fe | フォ fo | フャ | フュ fl | フョ fx |
ブァ | ブィ | ブゥ | ブェ | ブォ | ブャ | ブュ | ブョ | |
P | プァ | プィ | プゥ | プェ | プォ | プャ | プュ | プョ |
HW | ホァ | ホィ | ホゥ h5 | ホェ | ホォ | ホャ | ホュ | ホョ |
M | ミァ | ミィ m2 | ミゥ m5 | ミェ m3 | ミォ | みゃ mq | みゅ ml | みょ mx |
ムァ | ムィ | ムゥ | ムェ | ムォ | ムャ | ムュ | ムョ | |
R | リァ r1 | リィ r2 | リゥ | リェ r3 | リォ | りゃ rq | りゅ rl | りょ rx |
L | ルァ | ルィ | ルゥ | ルェ | ルォ | ルャ | ルュ | ルョ |
規則的に言えば「ゐ」「ゑ」は「wi(w2)」「we(w3)」ですが、「うぃ」「うぇ」の方が多いはずなので違う感じに割り当てました。
「てゅ」も変則的ですが「ちゅ」の方が圧倒的に多いので上記のような設定に。
これらの組み合わせは(滅多に使わないやつは)どうせ全部覚えられないので、思ってたのが出ないって時は半音と組み合わせて書けばいいかと思ってます。
辞書ユーティリティ
XF1やXF2で記号が出せるようにするため、専用の辞書を作って読みと記号を登録します。品詞は適当です。

これで、「@^^300%」と打って変換すると二重カギ括弧(『』)が出るようにします。
その後QMKのマクロで、括弧を出した後カーソルを間に戻すなどの操作を設定。keymapに書き込んでいきます。
case CHJ300E: // 『』
if (record->event.pressed) {
SEND_STRING("@^^300%" SS_TAP(X_INT4) SS_TAP(X_ENT) SS_TAP(X_LEFT));
} else {
}
break;
- 「@^^300%」を打つ
- 「SS_TAP(X_INT4)」で二重カギ括弧に変換
- 「SS_TAP(X_ENT)」で確定
- 「SS_TAP(X_LEFT)」でカーソルを1個左に移動
WZ EDITOR 10の設定追加
HTML文書の作成編集にはWZ EDITOR 10を使っています。HTMLキー押下時にいわゆるHTMLのタグなどを入力できるよう、WZ EDITORのキーボードマクロを使って設定しておきます。
- [ツール]→[キーボードマクロ記録開始/終了]でキーボードやマウスの操作開始
- 操作が終わったら再度[ツール]→[キーボードマクロ記録開始/終了]で記録終了
- [ツール]→[キーボードマクロ一覧]で記録した動作を選択し、右のコマンドマクロ出力をクリック
- [ツール]→[カスタマイズ]→[キー一覧]で右の右のユーザー追加定義をクリック
- 右下のキー定義などを使い、クリップボードに保存したコマンドマクロを適当なキーに結びつける
- 「定義ファイル編集」ウィンドウの[ファイル]→[保存して閉じる]
HTMLレイヤの各キーには、CTRL+ALT+キーの文字を設定しています。HTMLキーを押しながらRキーを押すと、CTRL+ALT+Rが入力されます。
<ruby>|<rp>(</rp><rt></rt><rp>)</rp></ruby>(|はカーソルの位置)を打てるコマンドマクロをCTRL+ALT+Rに設定すると、HTML+Rで前記の文字列が入力できます。
HTMLキーを使った上記の動作は、WZ EDITORの機能を使っている以上このエディタでしか使えませんが、HTML文書はWZ EDITORしか使っていないので問題なしです。
QMKのマクロはASCII 文字とEnter、タブが使えるようなので、そっちでも作れそうです。ただ、他のエディタやテキスト入力エリアにHTMLタグの類いを入力することはなさそうなのと、せっかくWZ EDITORのキーボードマクロで作ったので、このままで行きます。

修正や追加は定義ファイルを直接編集しています。もしかしてコマンドマクロ使わなくても良かったんだろうか。でも使わないとパターンが分からなかったし、これはこれで良しとします。
Radeon Softwareの設定変更
現在グラフィックスドライバ&ユーティリティとしてAMD Radeon Softwareをインストールしています。
このコントロールパネル、大量のホットキーが登録されていますが、SHIFT+CTRL+文字キーの組み合わせなので、他のソフトとかぶります。というかIMEレイヤのと組み合わせ方が同じです。
Radeon Softwareはホットキーで操作することはないので、こちらのホットキーを無効にします。
2022年1月11日公開のRadeon Software Adrenalin 22.1.1での操作です。
ホットキーをすべて無効に

スタートメニューなどからRadeon Softwareを立ち上げます。右上にある歯車のアイコン(設定)→タブの[ホットキー]でホットキーオプション画面を出します。

最初に「ホットキーを使用」の項目があるので、トグルスイッチをクリックして無効にします。他の項目の内容で文字のキーが赤から灰色になります。これで完了。
2021年9月時点のドライバでは、ここを無効にしてもホットキーの内容が普通に実行されました。なので各項目を一つずつ無効にしていきましたが、その後修正されたようです。
ホットキーのカスタマイズ
ホットキーを別の文字に割り振ったり、個別に無効にする場合は以下のように。

キーの組み合わせが書かれている箇所をクリックすると説明が出ます。
- 個々の項目を無効にする場合はDELETEキーを押します。表示が赤背景の「NONE」になります
- 変更する場合はSHIFTCTRLALTの組み合わせ+文字キーを押します
変更する場合、文字キー単体ではダメでした。SHIFT+文字キーもダメでした。SHIFTはCTRLかALTと一緒に指定するようです。
CTRLとALTはそれぞれ一つと文字キーの組み合わせで指定できました。

組み合わせや個別の無効化を元に戻す時は、戻したい項目名の横にある、くるっと回っている矢印にマウスカーソルを重ねると色が明るくなるので、クリックします。ホットキーがリセットされます。
グラフィックドライバって、最新バージョンにする時はいろいろ面倒だった記憶がありますが、今は難しいこともなく上書きインストールで終わってしまいます。再起動も無し(念のため、した方がいいのかもしれませんが)。便利になりました。
文書更新履歴
- 2023年04月30日
- 全体的に変更。
- 2022年12月03日
- キーバインド変更を反映。
- 2022年06月14日
- 06月11日の更新時、5月6日に編集途中だったもので更新してしまったので、完成版で更新し直す。
- 2022年04月21日
- HTMLキーとLEFTキーの廃止、CHARキーとNAVIキーを入れ替えて機能の一部入れ替えなど変更につき、画像と文章を変更。
- 2022年04月21日
- ダブルクォートの組や00の廃止、NAVIキーの一部変更につき画像と文章を変更。
- 2022年01月26日
- XF1、2、5の役割変更に伴い、図と解説を変更。
- 2022年01月23日
- このページを公開。