diff options
Diffstat (limited to 'docs/ja/feature_led_indicators.md')
| -rw-r--r-- | docs/ja/feature_led_indicators.md | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/docs/ja/feature_led_indicators.md b/docs/ja/feature_led_indicators.md new file mode 100644 index 000000000..307603f0a --- /dev/null +++ b/docs/ja/feature_led_indicators.md | |||
| @@ -0,0 +1,119 @@ | |||
| 1 | # LED インジケータ | ||
| 2 | |||
| 3 | <!--- | ||
| 4 | original document: 0.10.52:docs/feature_led_indicators.md | ||
| 5 | git diff 0.10.52 HEAD -- docs/feature_led_indicators.md | cat | ||
| 6 | --> | ||
| 7 | |||
| 8 | QMK は HID 仕様で定義された5つの LED の読み取りメソッドを提供します: | ||
| 9 | |||
| 10 | * Num Lock | ||
| 11 | * Caps Lock | ||
| 12 | * Scroll Lock | ||
| 13 | * Compose | ||
| 14 | * Kana | ||
| 15 | |||
| 16 | ロック LED の状態を取得するには3つの方法があります: | ||
| 17 | * `config.h` で設定オプションを指定する | ||
| 18 | * `bool led_update_kb(led_t led_state)` あるいは `_user(led_t led_state)` を実装する、または | ||
| 19 | * `led_t host_keyboard_led_state()` を呼び出す | ||
| 20 | |||
| 21 | !> `host_keyboard_led_state()` は `led_update_user()` が呼ばれる前に新しい値を既に反映している場合があります。 | ||
| 22 | |||
| 23 | LED の状態を `uint8_t` として提供する2つの非推奨の関数があります: | ||
| 24 | |||
| 25 | * `uint8_t led_set_kb(uint8_t usb_led)` と `_user(uint8_t usb_led)` | ||
| 26 | * `uint8_t host_keyboard_leds()` | ||
| 27 | |||
| 28 | ## 設定オプション | ||
| 29 | |||
| 30 | インジケータを設定するには、`config.h` で以下の `#define` をします: | ||
| 31 | |||
| 32 | | 定義 | 既定値 | 説明 | | ||
| 33 | |-----------------------|------------|----------------------------------| | ||
| 34 | | `LED_NUM_LOCK_PIN` | *定義なし* | `Num Lock` LED を制御するピン | | ||
| 35 | | `LED_CAPS_LOCK_PIN` | *定義なし* | `Caps Lock` LED を制御するピン | | ||
| 36 | | `LED_SCROLL_LOCK_PIN` | *定義なし* | `Scroll Lock` LED を制御するピン | | ||
| 37 | | `LED_COMPOSE_PIN` | *定義なし* | `Compose` LED を制御するピン | | ||
| 38 | | `LED_KANA_PIN` | *定義なし* | `Kana` LED を制御するピン | | ||
| 39 | | `LED_PIN_ON_STATE` | `1` | LED が "オン" の時のインジケータピンの状態 - high の場合は`1`、low の場合は`0` | | ||
| 40 | |||
| 41 | 独自のキーボードを設計しているわけではない限り、通常は上記の設定オプションを変更する必要はありません。 | ||
| 42 | |||
| 43 | ## `led_update_*()` | ||
| 44 | |||
| 45 | 設定オプションが十分な柔軟性を提供しない場合は、提供される API フックにより LED の挙動の独自の制御ができます。これらの関数はこれら5つの LED のいずれかの状態が変化すると呼ばれます。LED の状態を構造体のパラメータとして受け取ります。 | ||
| 46 | |||
| 47 | 慣例により、`led_update_kb()` にそのコードを実行するようフックさせるために `led_update_user()` から `true` を返し、`led_update_kb()` でコードを実行したくない場合は `false` を返します。 | ||
| 48 | |||
| 49 | 以下はいくつかの例です: | ||
| 50 | |||
| 51 | - レイヤー表示のような何かのために LED を使うために LED を上書きする | ||
| 52 | - `_kb()` 関数を実行したくないので、`false` を返します。これはレイヤーの挙動を上書きするためです。 | ||
| 53 | - LED がオンあるいはオフになった時に音楽を再生する。 | ||
| 54 | - `_kb` 関数を実行したいので、`true` を返します。これはデフォルトの LED の挙動に追加されます。 | ||
| 55 | |||
| 56 | ?> `led_set_*` 関数は `bool` の代わりに `void` を返すため、キーボードの LED 制御を上書きすることができません。従って、代わりに `led_update_*` を使うことをお勧めします。 | ||
| 57 | |||
| 58 | ### `led_update_kb()` の実装例 | ||
| 59 | |||
| 60 | ```c | ||
| 61 | bool led_update_kb(led_t led_state) { | ||
| 62 | bool res = led_update_user(led_state); | ||
| 63 | if(res) { | ||
| 64 | // writePin は 1 でピンを high に、0 で low に設定します。 | ||
| 65 | // この例では、ピンは反転していて、 | ||
| 66 | // low/0 は LED がオンになり、high/1 は LED がオフになります。 | ||
| 67 | // この挙動は、LED がピンと VCC の間にあるか、ピンと GND の間にあるかどうかに依存します。 | ||
| 68 | writePin(B0, !led_state.num_lock); | ||
| 69 | writePin(B1, !led_state.caps_lock); | ||
| 70 | writePin(B2, !led_state.scroll_lock); | ||
| 71 | writePin(B3, !led_state.compose); | ||
| 72 | writePin(B4, !led_state.kana); | ||
| 73 | } | ||
| 74 | return res; | ||
| 75 | } | ||
| 76 | ``` | ||
| 77 | |||
| 78 | ### `led_update_user()` の実装例 | ||
| 79 | |||
| 80 | この不完全な例は Caps Lock がオンまたはオフになった場合に音を再生します。また LED の状態を保持する必要があるため、`true` を返します。 | ||
| 81 | |||
| 82 | ```c | ||
| 83 | #ifdef AUDIO_ENABLE | ||
| 84 | float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); | ||
| 85 | float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); | ||
| 86 | #endif | ||
| 87 | |||
| 88 | bool led_update_user(led_t led_state) { | ||
| 89 | #ifdef AUDIO_ENABLE | ||
| 90 | static uint8_t caps_state = 0; | ||
| 91 | if (caps_state != led_state.caps_lock) { | ||
| 92 | led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off); | ||
| 93 | caps_state = led_state.caps_lock; | ||
| 94 | } | ||
| 95 | #endif | ||
| 96 | return true; | ||
| 97 | } | ||
| 98 | ``` | ||
| 99 | |||
| 100 | ### `led_update_*` 関数のドキュメント | ||
| 101 | |||
| 102 | * キーボード/リビジョン: `bool led_update_kb(led_t led_state)` | ||
| 103 | * キーマップ: `bool led_update_user(led_t led_state)` | ||
| 104 | |||
| 105 | ## `host_keyboard_led_state()` | ||
| 106 | |||
| 107 | 最後に受信した LED の状態を `led_t` として取得するためにこの関数を呼びます。これは、`led_update_*` の外部から、例えば [`matrix_scan_user()`](#matrix-scanning-code) の中で LED の状態を読み取るのに便利です。 | ||
| 108 | |||
| 109 | ## 物理的な LED の状態の設定 | ||
| 110 | |||
| 111 | 一部のキーボードの実装は、物理的な LED の状態を設定するための便利なメソッドを提供しています。 | ||
| 112 | |||
| 113 | ### Ergodox キーボード | ||
| 114 | |||
| 115 | Ergodox の実装は、個々の LED をオンあるいはオフにするために `ergodox_right_led_1`/`2`/`3_on`/`off()` と、インデックスによってそれらをオンあるいはオフにするために `ergodox_right_led_on`/`off(uint8_t led)` を提供します。 | ||
| 116 | |||
| 117 | さらに、LED の明度を指定することができます。全ての LED に同じ明度を指定するなら `ergodox_led_all_set(uint8_t n)` を使い、個別の LED の明度を指定するなら `ergodox_right_led_1`/`2`/`3_set(uint8_t n)` を使い、LED のインデックスを指定して明度を指定するには `ergodox_right_led_set(uint8_t led, uint8_t n)` を使います。 | ||
| 118 | |||
| 119 | Ergodox キーボードは、最低の明度として `LED_BRIGHTNESS_LO` を、最高の輝度(これはデフォルトです)として `LED_BRIGHTNESS_HI` も定義しています。 | ||
