この投稿は ErgoDox Advent Calendar 2016 の 17日目の記事です。
設定しようと言いつつ、あんまりうまく設定できなかった話を書きます。
emojiどうやったら使えるの?
- Is it possible to map Emoji's as keycodes? : olkb
- How to use UCIS properly? · Issue #837 · jackhumbert/qmk_firmware
このへんに話があります。
注意点としてはOSによってやり方が異なるということです。
qmk_firmwareのドキュメント
Unicode support
Home · jackhumbert/qmk_firmware Wiki
読みましょう。
参考ソース
- qmk_firmware/keymap.c at master · jackhumbert/qmk_firmware
- qmk_firmware/Makefile at master · jackhumbert/qmk_firmware
例示されているこのへんを参考にしましょう。
1. Unicode使用設定
keymap.c
#include "process_unicode.h"
Makefile
UNICODEMAP_ENABLE = yes # Unicode map
2. OS指定
set_unicode_input_mode(UC_***);
こちらに定義されている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なので。
でも大抵の絵文字は0xFFFF外なんです。
🍣を出したい
使いたい絵文字ってやっぱり🍣 Sushi Emojiじゃないですか。U+1F363じゃないですか。
そんな風に思っていたらちょうどやってる方が居たので紹介します。
入力メソッドを拡張してそれ用に出力するやり方です。
別解としてサロゲートペアを使えば0xFFFFの範囲内でいけるっぽいです。
Windowsならどうか?
qmk_firmwareのunicodeサポートの中身としてはこんな風になってます。
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
- 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
入力ソース拡張、またはサロゲートペアを使用。
Windows
WinCompose使う。
→まだうまく出来てないんで、もし出来たら追記します。
Linux
誰か試してください
それでは良き🍣キーライフを!