SHIFT+JP_XXXをUS配列に対応させる

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

あったよ!解決方法

こちらの方が以下の投稿で触れております。
http://oookaworks.seesaa.net/article/476161799.html#gsc.tab=0
上記で紹介されている通り、eswaiさんがコードを書かれています。
https://github.com/eswai/qmk_firmware/blob/master/keyboards/eswai/anhedral67/keymaps/srlby2/twpair_on_jis.c

それはそれとして

上記記事を見つける前に自前で実装してしまったので、
せっかくだし自分なりの実装方法をメモっておきます
(だいたい同じですね!)

tap_code16jp(key_code)tap_code16(key_code)SHIFT+JP_XXXに対応させたものです。

#include QMK_KEYBOARD_H
#include "keymap_jp.h"

static bool process_jp_symbols_impl(uint16_t keycode, bool pressed) {
    if (!pressed) {
        return true;
    }
    uint8_t shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
    if (!shift) {
        return true;
    }
    uint16_t s;
    switch (keycode) {
        // Replace Shift-Symbols like ANSI for JIS.
        case JP_2:    s = JP_AT; break;
        case JP_6:    s = JP_CIRC; break;
        case JP_7:    s = JP_AMPR; break;
        case JP_8:    s = JP_ASTR; break;
        case JP_9:    s = JP_LPRN; break;
        case JP_0:    s = JP_RPRN; break;
        case JP_GRV:  s = JP_TILD; break;
        case JP_EQL:  s = JP_PLUS; break;
        case JP_MINS: s = JP_UNDS; break;
        case JP_QUOT: s = JP_DQUO; break;
        case JP_SCLN: s = JP_COLN; break;
        default: return true;
    }
    unregister_mods(shift);
    tap_code16(s);
    register_mods(shift);
    return false;
}

bool process_jp_symbols(uint16_t keycode, keyrecord_t *record) {
    return process_jp_symbols_impl(keycode, record->event.pressed);
}

void tap_code16jp(uint16_t keycode) {
    if (process_jp_symbols_impl(keycode, true)) {
        tap_code16(keycode);
    }
}

keymap.cのprocess_record_userに以下のように追加します。

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return process_jp_symbols(keycode, record);
}

,

Related posts

このブログの今後について

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

SWAP HANDSのススメ

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

モドタップの挙動を修正する

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Keyboard Layout Editorでロータリーエンコーダーを表示(見た目だけ)

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

QMK firmwareでタップ数をカウントアップして表示する

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Re42で遊ぶ

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Latest posts

VIMのカラースキームを簡単に作れるツールを作りました

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Javascriptで文字列圧縮

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

このブログの今後について

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

SWAP HANDSのススメ

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

モドタップの挙動を修正する

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Keyboard Layout Editorでロータリーエンコーダーを表示(見た目だけ)

JP_XXXとShfitキーとの組み合わせがおかしい

keymap.cでkeymap_jp.hをincludeしてKC_XXXの代わりにJP_XXXを使えば、
日本語キーボードと認識された状態でも目的の記号を入力するようにできるみたいです
ですが、例えばSHIFT+JP_2を押しても@じゃなくて"になってしまう
SHIFT+JP_QUOTにいたっては"じゃなくて'のままです
どうしたものか

Leave a Comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です