Ergenekon Yiğit

Planck Keyboard'a Emoji Layer Eklemek

March 13, 2021 • 3 min

planck-keyboard

Klavye yapım sürecini buradan okuyabilirsiniz.

Merhaba, yakın zamanda klavyeme emojilerden oluşan bir layer ekledim, bu süreçte karşılaştığım sorun ve uyguladığım çözümden bahsedeceğim.

Klavyede qmk firmware kullandığımdan bir önceki yazıda bahsetmiştim. Qmk dokümanı altında unicode desteğini 3 faklı yöntemle nasıl uygulanacağı anlatılıyor. Ben bunlardan Unicode Map yöntemini tercih ettim.

rules.mk dosyasında unicode map’i açtım. Kullanacağım emojileri unicode_names enum’ına çıkardım.

enum unicode_names {
    // Row 0
    JOY,   // 😂
    SMIL2, // 😅
    SMILE, // 😁
    GRIN,  // 😊
    KISS,  // 😘
    HALO,  // 😇
    PHEW,  // 😌
    CONFU, // 😕
    PENSV, // 😔
    UNAMU, // 😒
    DISAP, // 😞

    // Row 1
    CELE,  // 🙌
    OK,    // 👌
    PRAY,  // 🙏
    CLAP,  // 👏
    THMUP, // 👍

    // Row 2
    EYES,  // 👀
    HUNRD  // 💯
};

Bu seçtiğim emojilerin unicode değerlerini unicode-table üzerinden bulup unicode_map içerisinde eşleştirdim.

const uint32_t PROGMEM unicode_map[] = {
   // Row 0
   [JOY]   = 0X1F602,
   [SMIL2] = 0x1F605,
   [SMILE] = 0x1F601,
   [GRIN]  = 0x1F600,
   [KISS]  = 0x1F618,
   [HALO]  = 0x1F607,
   [PHEW]  = 0x1F60C,
   [CONFU] = 0x1F615,
   [PENSV] = 0x1F614,
   [UNAMU] = 0x1F612,
   [DISAP] = 0x1F61E,

   // Row 1
   [CELE]  = 0x1F64C,
   [OK]    = 0x1F44C,
   [PRAY]  = 0x1F64F,
   [CLAP]  = 0x1F44F,
   [THMUP] = 0x1F44D,

   // Row 2
   [EYES]  = 0x1F440,
   [HUNRD] = 0x1F4AF
};

_EMOJI adında bir layer oluşturup emojileri bu layer’a ekledim. Layer’in son hali aşağıdaki gibi oldu.

emoji-layer

İkinci aşamada belirtilen unicode hex input klavyesini ekledim.

hex-input-source

Burada karşılaştığım sorun emojileri düzgün ekrana basabilmek için hex inputuna anlık geçip daha sonra diğer input yöntemine dönmekti.

Bunun için yaptığım “hacky” çözüm EMOJI adında bir macro oluşturup bu EMOJI tuşuna basıldığı an, önce ctrl+alt+space ile hex iput switch’ine geçip daha sonra _EMOJI layer’ını aktif etmek, tuştan parmak kaldırıldığında da yeniden ctrl+alt+space ile bir sonraki input source’a geçmek oldu.

case EMOJI:
    if (record->event.pressed) {
        register_code(KC_LCTL);
        register_code(KC_LALT);
        register_code(KC_SPC);
        layer_on(_EMOJI);
        unregister_code(KC_LCTL);
        unregister_code(KC_LALT);
        unregister_code(KC_SPC);
    } else {
        register_code(KC_LCTL);
        register_code(KC_LALT);
        register_code(KC_SPC);
        layer_off(_EMOJI);
        unregister_code(KC_LCTL);
        unregister_code(KC_LALT);
        unregister_code(KC_SPC);
    }
    break;

Böylece emoji layer’ını sorunsuz şekilde kullanmaya başladım. Yukarıda dediğim gibi bu benim “hacky” çözümüm, eğer daha verimli bir çözüm bulmuş ve kullanıyorsanız github‘dan issue veya pr açabilirsiniz.

Share on TwitterEdit on GitHub

Ergenekon Yiğit

Ergenekon Yiğit

A developer currently living in Turkey. Working at Trendyol.