しっぽをくるん

ぺらねこのにっき

QMKでロータリーエンコーダを利用する手順がわからない件が解決した件!!

すいません。

初っ端からアレですが自作キーボードのファームウエアを自力で書く記事です。

 

QMKの説明は省きます。

今回作成するキーボードの名前はTONE(トーンor利根)です。

 

本題です。

キーボードの論理レイアウトなのですが、こんなかんじです。

tone.hから引用

#define LAYOUT( \
    K00,K01,K02,K03,K04,K05,K06,K07,K08,K09 \
) \
{ \
    { K00,K01,K02,K03,K04,K05,K06,K07,K08,K09 }, \
}


上段 

 K00,K01,K02,K03,

下段

 K04,K05,K06,K07,

ロータリーエンコーダ

 K08,K09

定義したつもりです。

 

f:id:peraneko:20190428213931j:plain

keymap.cには下記のように定義しており、キースイッチは正常に入力できています。

const uint16_t PROGMEM keymaps[MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT(
    KC_A, KC_B, KC_C, KC_B,\
    KC_E, KC_F, KC_G, KC_H,\
    KC_0, KC_1 \
  ),
};

 

 

問題点

ロータリーエンコーダを回すと、KC_0, KC_1 が入力される。
KC_UP,KC_DOWNが入力したいのにできたりできなかったりする。無念。悲しい。

  

QMK Firmware
コレがオフィシャルのロータリーエンコーダを使う場合の説明なんですけど、この通りにしているつもりが、動かないのです。

 

ロータリーエンコーダを使うために変更した場所
rules.mkに下記の記述を追加

#define ENCODER_RESOLUTION 4
ENCODER_ENABLE = yes 

 

config.hにはこのように記述しています。

#define MATRIX_ROW_PINS { NO_PIN }
#define MATRIX_COL_PINS { F6,F7,B1,B3,D4,C6,D7,E6,B4,B5 }
/*#define UNUSED_PINS*/

/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW

#define NUMBER_OF_ENCODERS 1
#define ENCODERS_PAD_A { B4 }
#define ENCODERS_PAD_B { B5 }

 

B4とB5がロータリーエンコーダにつながっているのがわかるかと思います。

f:id:peraneko:20190428221318p:plain

f:id:peraneko:20190428221525p:plain

基板上も問題ないはず……。

 

 

keymap.cは下記のとおりです。

const uint16_t PROGMEM keymaps[MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT(
    KC_A, KC_B, KC_C, KC_B,\
    KC_E, KC_F, KC_G, KC_H,\
    KC_0, KC_1 \
  ),
};

void encoder_update_user(uint16_t index, bool clockwise) {
  if (index == 0) {
    if (clockwise) {
      tap_code(KC_UP);
    } else {
      tap_code(KC_DOWN);
    }
  }
  else if (index == 1){
    if (clockwise) {
      tap_code(KC_UP); 
    } else
    {
      tap_code(KC_DOWN);
    }
  }
}

 indexの値は(暗黙に)0しか入らないと思うのですが、BDN9のkeymap.c参照した結果今現在はこう書いています。
indexが漏れた場合の処理も書いてないので不安なのですが、BDN9は動いてるしとりあえず動いているものを尊重する構えでこうなっています。

 

下記のように簡略化しても(乂'ω')でした。せつない。

void encoder_update_user(uint16_t index, bool clockwise) {
  if (clockwise) {
    tap_code(KC_UP);
  } else {
    tap_code(KC_DOWN);
  }
}

 

どなたか、ロータリエンコーダーを実装した方がいらっしゃいましたら、問題点や確認するべき点を教えていただけませんでしょうか。

教えていただいて、期待通りの挙動をするようになりました。
原因はconfig.hのMATRIX_COL_PINSと、ロータリーエンコーダのピンが二重に設定されていたためでした。
赤線+訂正線の部分をコメントアウトすることで正常に動きます。

 

みなさま、ご指摘ありがとうございました。


それはそれとして、DIRECT_PINSで設定したいけど何故かうまく行かぬので続きもあります。

とりあえず自作基板で自作キーボードうごいたから今日は寝る! もうだめだー。

天下一キーボードわいわい会Vol.2に出展します

弊サークル ぺらねこふぁくとりーは、天下一キーボードわいわい会Vol.2に出展いたします。

 

天下一キーボードわいわい会と一体何なのでしょう。

キーボードを持ち寄ってわいわいする会らしいのですが、ビンテージキーボードから、自作キーボードまで話のねたになるようなキーボードがこぞって集まるらしいのです。

しかも、自作キーボードキットや会場先行のキーキャップセットなども販売されるとのことで、どう考えてもわいわいで収まる内容ではなさそうです。

いちばん良い対策は、お財布にお札をぎゅう詰めにしておくことのような気がします。

 

さて、弊サークルはおやぶんがぽわぽわしているため、平和なブースになりました。

おしながきはこんなかんじです。

・超かっこいい自作キーボードを作る本 Vol.1 ¥1,000-

f:id:peraneko:20190502193157j:plain



・自作TRRSケーブル用ジャックとケーブルの量り売り ¥500ー

 めったに失敗しないTRRS用ジャックと、なんとなくかわいいケーブルのセット販売です。

f:id:peraneko:20190220175851j:plain

・塗装済みキーキャップ ¥500ー(何個かセットで販売します)

なぜか全く塗料が乗らなくて敗北。次回以降やるかも。

 

・展示のみ

ぺらねこふぁくとりーのmeishi展(フリー部門)参加用の基板、しかもスペシャギャングスタ エディションが展示されます。

f:id:peraneko:20190502192943j:plain

PCと接続してのデモは実施するか未定です。もうしわけにゃすにゃす。

 

なお、本ブースでは超かっこいい自作キーボードを作る本Vol.1付録のデカールの貼り付けが体験できます。

f:id:peraneko:20190228144634j:plain

ぜひご利用ください。

 

すでに一般参加も満席となっておりますが、イベントページはこちらです。

https://tenkey.connpass.com/event/126481/

 

また、VR空間においても、プレイベントが行われるそうです。

https://yurukey.connpass.com/event/128179/

 

たのしみですね!

金をかけずにPCを手に入れる

完全にパーソナルなコンピュータは基本的人権である。

というか、この時節にPCがなければお仕事できないし、趣味もはかどらないし、原稿も書けないし写真も現像できない。

 

実用的なPCの値段は約10万円が下限である。

信頼性と価格のバランスがいいのはこれだ。

https://www.yodobashi.com/product/100000001004216256/

タイプカバーというキーボード一体型のカバーをかわされるので、追加で1.7万円ほどのっかり、ギリギリ10万円を切る……。

https://www.lenovo.com/jp/ja/notebooks/thinkpad/thinkpad-a-series/A285/p/22TP2TAA285

こちらはクーポン次第で大分値段が変わる。上記は64%のお値引き適用状態である。
真面目な話、LENOVO製品は50%以上値引きしてないと買う気が起きない。

 

 

ご飯は食べなきゃいけなかったりするし、人によってはPCの優先順位がそれほど高くなかったりする。インターネットの回線維持費もバカにならないしね。

 

使える道具をそこそこの値段で手に入れる。

という観点でPCを買うとしたら、海外PCを買うか中古を買うかの2択になる。
実際海外PCのうち、タブレットタイプのものはあらゆる性能が足りない代わりに2万円足らずで買えたりする。
※Windows10を日本語化するのは比較的手間がかかる。完全日本語化は難しいが、2手ぐらいで日常利用はできたりするのがまた悩ましい。

また遵法精神にのっとっていると技適を未通過だったりするので、オススメできない。

 

そういう時に企業からのレンタル回収品を販売している業者が強い。

業務使用なので大きな傷はないし、メンテナンスもレンタル契約に基づき一定の水準が期待できるからだ。

というわけで、自分がよく利用しているのが、オリックス・レンテックからの放出品が販売されているオリックスPCガレージだ。

https://pc-garage.orixrentec.jp/shop/default.aspx

現状、品揃えが悪くなっているが、4月頃にある程度レンタル上がり品が出てくるとおもわれる。

LenovoのX260やX270が出たらありがたいが、X250も値段が3万円を切っていたら有力な候補になる。

12.5インチを以上の画面サイズを選ぶと、重さに苦労することになる。実質LenovoPanasonic製品を買うことになるだろう。
双方を比べて安いのはLenovoであり、秋葉原を彷徨くようになると、何を買ったら何処まで拡張できるかみたいな別のゲームが始まる。コレは闇のゲームなので参加しないほうが良い。

 

Apple製品に限っては、Apple認定整備済み製品を買うのが良い。

https://www.apple.com/jp/shop/refurbished

Appleによる整備済みなので、保証期間があるのが強い。
価格性能比はWindowsマシンに比べて低くなりがちであり、スマホ向け開発をしないのであれば切り捨てていい。

逆に、スマホ向け開発をするので安く買いたいと言うときは、中古よりこちらのほうがいいだろう。むずかしいね。

 

わたしからは以上だ。

 

特に書くまでもないけど

野球。自分でプレイすることはないけれども、日本人の多くが好きなものという認識です。

小学生も中学年にあがったころ、タカラさんのプロ野球カードゲームが少し流行って、なんとなくユニフォームがかっこよかった近鉄バファローズを買ってもらいました。

そこから近鉄ファンになっていったわけなんですけど、当時の近鉄は11連敗したので14連勝して取り返しました。とか、シーズン再終戦が日程の関係でダブルヘッダーになって、2戦目まで優勝の目が残る。とか、とんでもなくドラマチックな球団でした。

その翌年には、悲願のリーグ優勝を果たすのですが、その経緯はこのWikiペディア文学がエモくまとめているので、まとめて読んでみてください。

ja.wikipedia.org

仰木彬という監督はとんでもなくチャーミングで、エレガントで、魔法使いでした。

だって勝つんですよ。前年度最下位の球団で。

その仰木彬の元で大輪を咲かせたイチローが引退しました。日本の球場で大リーグの日本人選手として終わりを受け入れたというのは、象徴的な出来事のように感じました。

なんか野球に対して情熱を失ってしまったのではないかと、ちょっと心配になったりもしました。まあ、コレはきっと杞憂ですが……。

プロの野球選手として28年間、平成を代表する選手として、仰木監督とともに記憶され続けることを願ってやみません。

 

作った

Ergodashの親指付きを組み立てました。

作りすぎです。

 

キー配置は今のところこんな感じ。

レイヤーわけもできたぞ。

 
  [_QWERTY] = LAYOUT( \
    KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_EQL,                         KC_MINS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC,\
  	KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    JP_COLN,                        JP_BSLS, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_QUOT,\
  	KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    JP_LBRC,                        JP_RBRC, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_MINS,\
  	KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_DEL,                         KC_BSPC, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_UP,   KC_SLSH,\
  	LOWER,   KC_LALT, KC_LGUI, KC_APP,  LOWER,   JP_MHEN, KC_SPC,                         KC_ENT,  JP_HENK, RAISE,   JP_BSLS, KC_LEFT, KC_DOWN, KC_RGHT\
  ),

  [_LOWER] = LAYOUT(
    KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_EQL,                         KC_MINS,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_DEL, \
    KC_TAB,  KC_F11,  KC_F12,  _______, _______, _______, JP_COLN,                        JP_BSLS,   KC_P7,   KC_P8,   KC_P9, KC_PMNS, KC_PPLS, KC_PSCR, \
    KC_LCTL, _______, _______, _______, _______, _______, JP_LBRC,                        JP_RBRC,   KC_P4,   KC_P5,   KC_P6, KC_PSLS, KC_PAST,  KC_INS, \
    KC_LSFT, _______, _______, _______, _______, _______,  KC_DEL,                        KC_BSPC,   KC_P1,   KC_P2,   KC_P3, _______, KC_PGUP, _______, \
    ADJUST,  KC_LALT, KC_LGUI, KC_APP,    LOWER, JP_MHEN,  KC_SPC,                        KC_ENT,  JP_HENK,   RAISE,   KC_P0, KC_HOME, KC_PGDN, KC_END   \
  ),

  [_RAISE] = LAYOUT(
    KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_EQL,                         KC_MINS,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_DEL, \
    KC_TAB,  KC_F11,  KC_F12,  _______, _______, _______, JP_COLN,                        JP_BSLS,   KC_P7,   KC_P8,   KC_P9, KC_PMNS, KC_PPLS, KC_PSCR, \
    KC_LCTL, _______, _______, _______, _______, _______, JP_LBRC,                        JP_RBRC,   KC_P4,   KC_P5,   KC_P6, KC_PSLS, KC_PAST,  KC_INS, \
    KC_LSFT, _______, _______, _______, _______, _______,  KC_DEL,                        KC_BSPC,   KC_P1,   KC_P2,   KC_P3, _______, KC_PGUP, _______, \
    ADJUST,  KC_LALT, KC_LGUI, KC_APP,    LOWER, JP_MHEN,  KC_SPC,                        KC_ENT,  JP_HENK,   RAISE,   KC_P0, KC_HOME, KC_PGDN, KC_END   \
  ),

この後Lower面をキメてデカール貼ろうかなと。

あいかわらず、Keymap.cに#include "keymap_jp.h" を書き加えて、日本語を定義しています。

 

デカールがまだなので写真はなし。
別レイヤーをキメないとこの辺の作業ができないのはしんどいですね。日本語だと右手側に記号を集める事になりがちで、それを何処に書き込んでおくか悩ましいっていう。

チートシートを見てもいいんですが、それだと煩雑なのでやはり刻印orデカールが現状かなり有力な方法になりそう。


はんだごて出したついでに、長めのTRRSケーブルを作って、今までよりも左右をさらに開いてみたり。

これで国内で手に入る60%オーバーのキーボードで、左右分割・直交配列のものは一通り試したことになるだろうか。