task #517
masaya_abe さんが29日前に更新
## やりたいこと 効率的でスタイリッシュなキーバインドで打鍵したい ## qwerty配列がこの世の基準 ↓の画像が普通のキー配列で,これは元々タイプライターの配列とのこと.  タイプライターの技術的な限界から打鍵速度を落として,アームの衝突を防ぐ事を最優先に考慮した配列だという. 要するに,左の小指から右の小指までまんべんなく使うようにバインドされており, 頻出のキーや良くある組み合わせの考慮は優先されていない. ## 現代の代替配列 ↓のような配列がある  dvorak配列というらしい これは英語ベースであるが,より頻出のキーや,英単語の構造的な特徴を考慮している. しかし日本はもちろん海外でも流行っていない. 他にも,日本語向けのモノやよりモダンなのもあるが,やはり人口は少なくかなりオタク領域. ## 代替配列が流行らない理由 代替配列が流行らない理由は以下が主と思われる * キーバインドを変更するという発想がPCオタクになった後の発想 * この課題を認識する時には既にデフォルト配列をマスターしている * 出先や客のpcを操作する場合等業務上の課題 * ショートカットキーのバインドをどうするか問題 要するに「PCオタク知識」,「再学習コストの許容」,「付随する課題への解決策」がセットで必要となる. 上記を考慮した時に「まあ,このままでいいや」となる. ## 大西配列が熱いらしい  https://o24.works/layout/ 特に日本語のローマ字打ちに配慮している. 母音aiueoキーを左手で打ち,子音を右手で打つことで左右交互打鍵とし かつzxcvの多用ショートカットは変えない. 下記の設計過程も納得感あり面白い https://www.youtube.com/watch?v=iKSnUOVDimM ## とりあえずやってみる AUTO HOT KEYでバインドを大西配列に差替えてしばらく使ってみる 必要に応じて更にバインド変えるかもしれない 1週間程度で所感を纏める ``` ;大西配列 -::/ q::[ w::] [::q ]::' '::l e::u r::, t::. y::f u::w i::r o::y a::e s::i d::a f::o g::- h::k j::t k::n l::s sc027::h b::sc027 n::g m::d ,::m .::j /::b ``` ※以下は必須昔からずっと使っている ``` ``` #If !GetKeyState("Alt", "P") ; Altキーを押しながらの場合は通常通り動作させる ~LAlt:: Run, ahk_class imejp.imjp_003 ; IMEの英数に切り替え Return ~RAlt:: Run, ahk_class imejp.imjp_001 ; IMEのかなに切り替え Return #If ``` ``` c #include "dactyl-manuform.h" #include "action_layer.h" #include "eeconfig.h" extern keymap_config_t keymap_config; // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define base 0 #define meta 1 #define sub 2 // Fillers to make layering more clear #define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [base] = KEYMAP_5x6( // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TAB, KC_LBRC, KC_RBRC, KC_QUOT, KC_COMMA, KC_DOT, KC_LSHIFT, KC_O, KC_I, KC_U, KC_E, KC_MINS, KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_SCLN, KC_EQL, KC_GRV, KC_A, KC_SPC, KC_LGUI, LT(sub, KC_BSPC), KC_LALT, LT(meta, KC_DEL), // right hand KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_G, KC_D, KC_R, KC_Y, KC_P, KC_DEL, KC_K, KC_T, KC_N, KC_S, KC_H, KC_RSHIFT, KC_W, KC_M, KC_J, KC_B, KC_F, KC_RCTL, KC_Q, KC_L, KC_SPC, KC_A, LT(sub, KC_BSPC), KC_ENT, LT(meta, KC_DEL), KC_LALT, [meta] = KEYMAP_5x6( // left hand KC_F1, KC_F2 , KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_1, KC_2, KC_3, KC_4, KC_PSLS, _______, KC_5, KC_6, KC_7, KC_8, KC_PMNS, _______, _______, KC_9, KC_0, KC_PPLS, KC_PAST, _______, _______, KC_ENT, KC_SPC, KC_LGUI, LT(sub, KC_BSPC), KC_LALT, LT(meta, KC_DEL), // right hand KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_F12, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_CALC, KC_MAIL, KC_MYCM, KC_WHOM, _______, RESET, _______, _______, KC_SPC, KC_PSCR, LT(sub, KC_BSPC), KC_ENT, LT(meta, KC_DEL), KC_LALT, }; void persistant_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); } ```