İçeriğe geç

Kaynak Koddan Yazılım Derleme

Bir klavyenin tuş eşlemesinde değişiklik yapmak veya SignalRGB QMK Protokolüne yeni klavye desteği eklemek istiyorsanız, kaynak koddan derlemeniz gerekecektir.

Kaynak koddan derleme adımları:

  1. QMK MSYS’i buradan indirin ve kurun.

QMK MSYS’i açın ve ihtiyacınız olan QMK çatalı / kaynağının git clone işlemini gerçekleştirin. (Bu QMK Ana Hat _veya SonixQMK olabilir.)

Ardından, derleme yaptığınız çatal kaynağına SignalRGB Protocol alt modülünü eklemek isteyeceksiniz:

// Terminalde derleyeceğiniz kaynak çatalına cd ile gidin (QMK_MSYS, bash vb.)
git submodule add https://github.com/SRGBmods/QMK_Community_Module modules/signalrgb
git submodule update --init --recursive
  1. Yukarıdaki iki komutu (QMK_MSYS, bash vb.) terminal penceresine yapıştırın.
  2. Belirli klavye marka dizininizde aşağıdaki içeriklere sahip bir keymap.json eklemeniz gerekecektir:
{
"modules": [
"signalrgb"
]
}

NOT: KLAVYE MARKAYI KENDİ KLAVYE MARKANIZLA, MODELİ KLAVYE MODELİYLE VE KM’Yİ TUŞLAMA TİPİYLE (default / via / keychron vb.) DEĞİŞTİRİN.

TUŞLAMA TİPLERİ:

  • default: VIA için derlemiyorsanız kullanacağınız tuşlamadır
  • via: VIA için derliyorsanız kullandığınız tuşlamadır (Önce bunu denemeniz önerilir — via tuşlamanızı burada bulabilirsiniz)

Artık yazılımı derlediniz ve klavyenize yüklemeniz gerekiyor.

  • Yükleme talimatları klavyeler arasında farklılık gösterdiğinden, klavyeniz için yükleme talimatlarını çevrimiçi olarak bulmanız gerekecektir.
  1. Klavyenizin yazılımını yükledikten sonra, SignalRGB’nin klavyenizle çalışması için aşağıdaki klavye eklentisini değiştirmeniz gerekir.

QMK eklenti örnekleri içeren klasör

  • Yukarıdaki klavye eklentisini indirdikten sonra bir metin düzenleyicide açın.
export function Name() { return "QMK Keyboard"; }
export function Version() { return "X.X.X"; }
export function VendorId() { return 0x0000; }
export function ProductId() { return 0x0000; }
export function Publisher() { return "WhirlwindFX"; }
export function Size() { return [14, 5]; }
export function DefaultPosition(){return [10, 100]; }
export function DefaultScale(){return 8.0;}
/* global
shutdownColor:readonly
LightingMode:readonly
forcedColor:readonly
*/
export function ControllableParameters()
{
return [
{"property":"shutdownColor", "group":"lighting", "label":"Shutdown Color", "min":"0", "max":"360", "type":"color", "default":"009bde"},
{"property":"LightingMode", "group":"lighting", "label":"Lighting Mode", "type":"combobox", "values":["Canvas", "Forced"], "default":"Canvas"},
{"property":"forcedColor", "group":"lighting", "label":"Forced Color", "min":"0", "max":"360", "type":"color", "default":"009bde"},
];
}
  1. Klavye eklentisini açtıktan sonra yukarıdakine benzer bir ekranla karşılaşacaksınız.
  • Bu alanların bir kısmını doldurumanız gerekecek; Name alanıyla başlayın.
  • Name alanına, yazılımını geliştirdiğiniz klavyenin adını girmeniz gerekir.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }
  1. Ardından klavye için VendorId’yi doldurmamız gerekiyor.
  • Klavye için VendorId’yi bulmak için SignalRGB’yi açın.
  • Ardından sol alt köşedeki ayarlar dişlisine tıklayın.

Ardından Cihaz Bilgisi seçeneğine tıklayın.

Klavyenizi bulun ve VendorID ile ProductID değerlerini not alın.

Şimdi VendorId ve ProductId alanlarını bu değerlerle doldurun.

export function Name() { return "Massdrop CTRL QMK Keyboard"; }
export function VendorId() { return 0x04d8; }
export function ProductId() { return 0xEED2; }
  1. Doldurulması gereken bir sonraki alan Publisher alanıdır. Publisher alanına adınızı, kullanıcı adınızı veya takma adınızı yazabilirsiniz.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }
export function VendorId() { return 0x04d8; }
export function ProductId() { return 0xEED2; }
export function Publisher() { return "WhirlwindFX"; }
  1. Artık alanları doldurmayı tamamladık ve dizilere geçiyoruz.

Değiştirilmesi gereken 3 dizi var: vKeys, vKeynames ve vKeyPositions

  • vKeys dizisi, her klavye tuşunu klavyeye gönderilen RGBData içindeki konumuna eşler.
  • vKeyNames dizisi, her vKey ve vKeyPosition’a hangi tuşun karşılık geldiğini bize söyler.
  • vKeyPositions dizisi, SignalRGB’ye klavyedeki her tuşun konumsal olarak nerede olduğunu söyler.
  • Önce vKeyNames dizisini klavyenizi yansıtacak şekilde değiştirin.
  • Bu, vKeyNames’i klavyenizle eşleşecek şekilde yeniden düzenlemeniz gerektiği anlamına gelir.
    • Bizim durumumuzda, kartımız TKL bir kart olduğu için tuşları kaldırmak ve kalanları yeniden düzenlemek zorunda kaldık.

Ardından vKeyPositions dizisini, vKeyNames dizisinin güncellendiği şekilde güncelleyin.

Son olarak, vKeyNames ve vKeysPositions dizileriyle eşleşecek şekilde vKeys dizisini güncelleyin.

  1. Şimdi eklenti dosyanızı %userprofile%/Documents/WhirlwindFX/plugins konumuna kaydedin, ardından Signal’ı yeniden başlatın.
  • Klavyeniz yanmaya ve SignalRGB ile tepki vermeye başlamalıdır.

Klavye Yanmıyor veya SignalRGB’ye Düzgün Tepki Vermiyorsa:

Section titled “Klavye Yanmıyor veya SignalRGB’ye Düzgün Tepki Vermiyorsa:”
  1. SignalRGB’de Cihazlar sayfasına gidin.

  1. Ardından klavyenize gidin ve ayarlar dişlisine tıklayın.

  1. Ardından Konsolu Göster geçişine tıklayın.

  • Konsolda bir Cihaz Toplam LED Sayısı olmalıdır. Bu Cihaz Toplam LED Sayısını atadığınız LED sayısıyla karşılaştırın.
    • Bizim durumumuzda 119 Toplam LED vardı.

LED Sayısı vKeys Sayısıyla Eşleşiyorsa:

Section titled “LED Sayısı vKeys Sayısıyla Eşleşiyorsa:”
  • Eklentinizdeki size alanının en yüksek LED Koordinatından her yönde 1 büyük olduğundan emin olun:
    • Bizim durumumuzda en uzaktaki LED [17,6] konumundadır, bu nedenle Size alanımızın [18,7] olması gerekir.
export function Size() { return [18, 7]; }

LED Sayısı vKeys Sayısıyla Eşleşmiyorsa:

Section titled “LED Sayısı vKeys Sayısıyla Eşleşmiyorsa:”
  • Toplam LED sayısıyla eşleşmesi için vKeys, vKeyPositions ve vKeyNames eklemeniz gerekecektir.
    • Bizim durumumuzda cihazda 119 LED vardı, bu nedenle klavyenin alt aydınlatması için 32 LED eklememiz gerekti.

  • vKeys sayısı Toplam LED sayısıyla eşleşiyor ve cihaz doğru şekilde boyutlandırılmış olmasına rağmen LED’ler yanlış eşlenmişse:
  • Discord’a katılın ve QMK kanallarında yardım isteyin.

Gösterge LED’lerinizi Nasıl Düzeltebilirsiniz: SignalRGB ve tuş aktifken (CAPSLOCK, NUMLOCK, SCROLL-LOCK) yanıp sönüyor.

Section titled “Gösterge LED’lerinizi Nasıl Düzeltebilirsiniz: SignalRGB ve tuş aktifken (CAPSLOCK, NUMLOCK, SCROLL-LOCK) yanıp sönüyor.”

Bu, göstergeleriniz için (CAPS, NUM, SCROLL) Dizin değerlerinin önceden bilinmesini gerektirdiğinden biraz karmaşıktır. (Bu genellikle ansi/iso cihaz alt türünde veya doğrudan <keyboard_name.c> dosyasında bulunabilir; g_led_config’e bakın ve dizini görsel olarak temsil ettiği tuşla eşleyin veya SignalRGB eklentiniz çalıştıktan sonra kimliği oradan alabilir ve bu değişiklikle yeniden derleyebilirsiniz!)

Yukarıdaki değeri/değerleri öğrendikten sonra, yazılım derlemenize bağlı olarak signalrgb.c veya via.c dosyasında küçük bir değişiklik gerekmektedir. CAPSLOCK_LED_INDEX_, NUM___LOCK_LED_INDEX veya SCROLL_LOCK_LED_INDEX değerlerini klavyeniz için geçerli dizin değerleriyle değiştirin.

Örneğin CAPS_LOCK Dizini 61 ise şu satır:

if ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) {

Şu satıra dönüşür:

if ((index + i) == 61 && hostkeyboard led_state().caps_lock) {

Tam Kod örneği aşağıdadır (Bu, “led_streaming” adlı bu belirli fonksiyonun tamamının yerini alır):

void led_streaming(uint8_t *data) // HID Paketlerinden Klavyeye veri akışı yap.
{
uint8_t index = data[1];
uint8_t numberofleds = data[2];
if(numberofleds >= 10)
{
packet[1] = DEVICE_ERROR_LEDS;
raw_hid_send(packet,32);
return;
}
for (uint8_t i = 0; i < numberofleds; i++)
{
uint8_t offset = (i * 3) + 3;
uint8_t r = data[offset];
uint8_t g = data[offset + 1];
uint8_t b = data[offset + 2];
/* YALNIZCA BİRİNİ KULLANIN */
/* Kullanmak istediğiniz satırın başındaki // işaretini kaldırın ve DİZİNİ buna göre güncelleyin */
/* Bu CAPS, NUM ve SCROLL LOCK'ların üçü içindir */
// if ( ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) || ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock) || ((index + i) == SCROLL_LOCK_LED_INDEX && host_keyboard_led_state().scroll_lock)) {
/* Bu CAPS ve NUM LOCK için */
// if ( ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) || ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock)) {
/* Bu CAPS LOCK için */
// if ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) {
/* Bu NUM LOCK için */
// if ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock) {
/* YUKARIDAKİLERDEN YALNIZCA BİRİNİ KULLANIN */
rgb_matrix_set_color(index + i, 255, 255, 255);
} else {
rgb_matrix_set_color(index + i, r, g, b);
}
}
}

** Discord’a katılın ve yukarıdaki talimatlarla ilgili herhangi bir sorununuz varsa QMK custom-builds kanalında yardım isteyin! **