💥🍣emojiキーを設定しよう🍣💥

この投稿は :calendar: [ErgoDox Advent Calendar 2016](http://qiita.com/advent-calendar/2016/ergodox) の 17日目の記事です。

----

設定しようと言いつつ、あんまりうまく設定できなかった話を書きます。

# emojiどうやったら使えるの？

- [Is it possible to map Emoji's as keycodes? : olkb](https://www.reddit.com/r/olkb/comments/5bsll4/is_it_possible_to_map_emojis_as_keycodes/)
- [How to use UCIS properly? · Issue #837 · jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware/issues/837)

このへんに話があります。
注意点としてはOSによってやり方が異なるということです。

## qmk_firmwareのドキュメント

Unicode support
[Home · jackhumbert/qmk_firmware Wiki](https://github.com/jackhumbert/qmk_firmware/wiki#unicode-support)

読みましょう。

## 参考ソース
- [qmk_firmware/keymap.c at master · jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboards/planck/keymaps/priyadi/keymap.c)
- [qmk_firmware/Makefile at master · jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboards/planck/keymaps/priyadi/Makefile)

例示されているこのへんを参考にしましょう。

### 1. Unicode使用設定

keymap.c

```
#include "process_unicode.h"
```

Makefile

```Makefile
UNICODEMAP_ENABLE = yes     # Unicode map
```


### 2. OS指定
```
set_unicode_input_mode(UC_***);
```

[qmk_firmware/process_unicode.h at 637170d56043a5a0f11445f605c983e41def2a08 · jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware/blob/637170d56043a5a0f11445f605c983e41def2a08/quantum/process_keycode/process_unicode.h)

こちらに定義されているOS値を設定します。

### 3. キー入力
```
X(HART2)
```

設定したOSによって適宜Unicodeが入力されます。

### 4. 入力ソース設定

OS側でUnicodeを有効にします


で、出来上がりです。

# できないんですけど

とりあえずmacOSでやってみたんですけどね。なんか出ないんですよね。

> OSX doesn't have any means of inputting unicode over 0xFFFF unfortunately.

えー…。

いちおう、0xFFFF内の☀とかは出せます。U+2600なので。

[☀️ Black Sun With Rays Emoji](http://emojipedia.org/black-sun-with-rays/)

でも大抵の絵文字は0xFFFF外なんです。

## 🍣を出したい

使いたい絵文字ってやっぱり[🍣 Sushi Emoji](http://emojipedia.org/sushi/)じゃないですか。U+1F363じゃないですか。

[🍣絵文字キーの実現 - みずぴー日記](http://mzp.hatenablog.com/entry/2016/12/24/111814)

そんな風に思っていたらちょうどやってる方が居たので紹介します。
入力メソッドを拡張してそれ用に出力するやり方です。
別解としてサロゲートペアを使えば0xFFFFの範囲内でいけるっぽいです。

# Windowsならどうか？

qmk_firmwareのunicodeサポートの中身としてはこんな風になってます。

[qmk_firmware/process_unicode.c at 8d60354d5a116b6cb1fc32eac7461eb125543c7d · jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware/blob/8d60354d5a116b6cb1fc32eac7461eb125543c7d/quantum/process_keycode/process_unicode.c)

```process_unicode.c
void unicode_input_start (void) {
  switch(input_mode) {
  case UC_OSX:
    register_code(KC_LALT);
    break;
  case UC_LNX:
    register_code(KC_LCTL);
    register_code(KC_LSFT);
    register_code(KC_U);
    unregister_code(KC_U);
    unregister_code(KC_LSFT);
    unregister_code(KC_LCTL);
    break;
  case UC_WIN:
    register_code(KC_LALT);
    register_code(KC_PPLS);
    unregister_code(KC_PPLS);
    break;
  case UC_WINC:
    register_code(KC_RALT);
    unregister_code(KC_RALT);
    register_code(KC_U);
    unregister_code(KC_U);
  }
  wait_ms(UNICODE_TYPE_DELAY);
}
```

[Home · jackhumbert/qmk_firmware Wiki](https://github.com/jackhumbert/qmk_firmware/wiki#ucis_enable)

- UC_OSX: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
- UC_LNX: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
- UC_WIN: (not recommended) Windows built-in Unicode input. To enable: create registry key under HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad of type REG_SZ called EnableHexNumpad, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
- UC_WINC: Windows Unicode input using WinCompose. Requires WinCompose. Works reliably under many (all?) variations of Windows.


説明は上記の通り。

Windowsの場合だと2種類あって、

- `UC_WIN`のほうではALT押しながらNUMPADで出力
- `UC_WINC`のほうではWinComposeを使ってそれ用に出力

となってます。後者のほうがバージョンに依存しないため推奨されているようです。

# まとめ

## macOS

[🍣絵文字キーの実現 - みずぴー日記](http://mzp.hatenablog.com/entry/2016/12/24/111814)

入力ソース拡張、またはサロゲートペアを使用。

## Windows

WinCompose使う。
→まだうまく出来てないんで、もし出来たら追記します。

## Linux
誰か試してください

それでは良き🍣キーライフを！