Blender3 専用キーボードをつくる
せっかくのGWなので、Blender を試してみる。
とてもよい動画があったので感謝して宣伝。
動画の通りに進めると、きれいな林檎ができて素晴らしい。
とはいえ、経験がないので空間認識がむつかしい。とくに、Viewの見え方を正面とか上からと変える視点操作が、しんどい。
HHKBには、テンキーがないので、便利なshortcutが使えない。
ということで、便利なテンキーライクなものをつくってみる。
使うのはいつものsu120。
layout
default (layout 0)
画面の視点移動のためのキーを3段目に配置。
Front View
... numpad1Side VIew
... numpad3Top Down View
... numpad7
少しずつ回転するための操作は、ローターリーエンコーダーで行う。
これが便利!
Front View
Leftward-facing view / Rightward-facing view
横回転
Upward-facing view / Downward-facing view
縦回転
objectの操作に必要なキーを一番上に。
- g ... grab
- r ... rotate
- s ... scale
- e ... extend
- tab ... edit mode 変更
変更の方向を決めるのは、 x
、 y
、 z
。
あとは使いそうな 便利キー。
- a + shift ... Append
- h ... hide
修飾キーは、 shift
と command
。
layout 1
普通のキーパッドっぽいテンキーモード。
key top デザイン
このために買っておいたPOSレジキーのような、自分で印刷した紙を仕込めるキーキャップを使う。
日本ならここで買える。
キーキャップにこんな感じで印刷した紙をカッターで裁断して挟む
pdf 版はこっち。
source code
keycap.c
#include QMK_KEYBOARD_H
#include <print.h>
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default Layer
* Master Side (USB Cable Connected Side)
* ,-------------------------------
* | MOD g r s e XXXX
* | tab x y z j XXXX
* | a h pad1 pad3 pad7 XXXX
* | XXXX LSHT XXXX pad0 LGUI XXXX
* | XXXX XXXX XXXX XXXX XXXX XXXX
* `-------------------------------
*/
[0] = LAYOUT( /* Base */
DF(1), KC_G, KC_R, KC_S, KC_E, XXXXXXX,
KC_TAB, KC_X, KC_Y, KC_Z, KC_J, XXXXXXX,
KC_A, KC_H, KC_P1, KC_P3, KC_P7, XXXXXXX,
XXXXXXX, KC_LSHIFT, XXXXXXX, KC_P0, KC_LGUI, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// RIGHT HAND: ifdef MASTER_RIGHT
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
),
/* 1 Layer
* Master Side (USB Cable Connected Side)
* ,-------------------------------
* | MOD g 7 8 9 XXXX
* | tab x 4 5 6 XXXX
* | a h 1 2 3 XXXX
* | XXXX LSHT XXXX 0 LGUI XXXX
* | XXXX XXXX XXXX XXXX XXXX XXXX
* `-------------------------------
*/
[1] = LAYOUT(
DF(0), KC_G, KC_7, KC_8, KC_9, XXXXXXX,
KC_TAB, KC_X, KC_4, KC_5, KC_6, XXXXXXX,
KC_A, KC_H, KC_1, KC_2, KC_3, XXXXXXX,
XXXXXXX, KC_LSHIFT, XXXXXXX, KC_0, KC_LGUI, 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
),
};
void matrix_init_kb(void) {
debug_enable = true;
// debug_matrix = true;
// debug_mouse = true;
}
void encoder_update_user(uint8_t index, bool clockwise) {
if (layer_state == 0 || layer_state == 1) {
if (index == 0) {
if (clockwise) {
// Leftward-facing view
tap_code16(KC_P4);
} else {
// Rightward-facing view
tap_code16(KC_P6);
}
} else {
if (clockwise) {
// Downward-facing view
tap_code16(KC_P2);
} else {
// Upward-facing view
tap_code16(KC_P8);
}
}
}
}
つぎは、3Dプリンタでエンクロージャーを作成。
これでBlenderも上達するはず!