QMK Firmwareで絵文字を入力する

こんにちは、ミツバです。 この前、行われた天キーでいい感じのキーキャップを入手できたので少し特殊なことをしてみようと思いました。 キーボードは、ErgoDashを利用しています。

Ubuntuでの設定

今回はUbuntu 18.04でやっていきます。

keymap.cを編集

// 一番上に記述
#include "process_unicode.h"

// キーマップ定義の上ぐらいに記述
enum unicode_name {
  THINKING_FACE,
};

const uint32_t PROGMEM unicode_map[] = {
  [THINKING_FACE] = 0x1F914, // THINKING_FACE
};

// キーマップに追加
X(THINKING_FACE)

// 一番下に追加
void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
}

rules.mkを編集

UNICODE_ENABLE = no     
UNICODEMAP_ENABLE = yes 

これで指定したキーで絵文字が打てていると思います。

デモ

MacUbuntuで切り替えて同じことをやる

keymap.cに追記

#include "process_unicodemap.h"
#include "process_unicode_common.h"

enum custom_keycodes {
  QWERTY = SAFE_RANGE,
  LOWER,
  RAISE,
  ADJUST,

  THINKING_FACE_TYPE,  // 追加
};

// modeを変更するキーコードをキーマップに追加する
UNICODE_MODE_OSX

// THINKING_FACEのコードを追加する
THINKING_FACE_TYPE

// THINKING_FACE_TYPEが押されたときに、やる処理を書く
case THINKING_FACE_TYPE:
  if (record->event.pressed) {
    switch(get_unicode_input_mode()) {
      case UC_OSX:
        register_code(KC_RALT);
        SEND_STRING("D83E+DD14");
        unregister_code(KC_RALT);
        break;
    }
  }
  break;

あとは以下の手順をするだけです。

  • MacIMEUnicode Hex Inputを追加し、メニューバーから show emoji & symbols を選択。
  • 左上の歯車から、Customize Listを選択。
  • Code TablesからUnicodeにチェックを入れて準備完了。

これで UNICODE_MODE_OSX を押したあと、THINKING_FACEを打つと顔文字が出たと思います。

デモ

しかしLinuxでキーマップに設定する以外で、絵文字を入力する方法がよくわからなかったので諦めました。 何か良い案があれば教えてください。

解説

やっていることとしては、無理やりALTを入力してthinking_faceのUTF-16 code unitsを入力しています。 このUTF-16 code unitsは、このサイト で確認できるので入力したい絵文字を各自で調べてみてください。

参考にさせてもらった記事

skyhigh-works.hatenablog.com