この投稿は ErgoDox Advent Calendar 2016 の 18日目の記事です。
前回上手く行かなかったUnicode入力を改善して絵文字を使えるようにします。
サロゲートペアを使う
前回紹介した🍣絵文字キーの実現 - みずぴー日記で別解に挙げられていたサロゲートペアを使うやり方でmacOSでもいけるようになります。
ErgoDoxで🍣など絵文字を直接打てるキーを実装しました pic.twitter.com/aNfWG7A4gd
— みやおか (@miyaoka) 2016年12月28日
実装
process_unicode.c
code -= 0x10000;
register_hex32(0xD800 | (code >> 10));
register_hex32(0xDC00 | (code & 0x3FF));
こんな感じに分割して0xFFFF内で表現すればOKです。
PR上げようかなと思ってたらちょうど上がってました。
なので、じきに取り込まれるでしょう。
ただ、register_hex32内の処理ではキーコード入力してupdateする処理をしてしまっているせいか、VSCodeなどエディタによっては分割されたキーコードが1字ずつ出てしまって絵文字にならない問題があります。
サロゲートペア用に複数入力をregisterする処理が必要っぽいのでそのへんはまた追って検証します。