Keresés

Új hozzászólás Aktív témák

  • Domonkos

    addikt

    válasz Domonkos #55 üzenetére

    🧠🚲

    Nos, a kiosztas megalkotasahoz igazabol ketfele modszer kozul valaszthatunk:
    - Ha meg nem lattuk az eszkozt mukodni, akkor siman visszakovethetjuk, hogy mi hova van kotve es huzalozva es annak alapjan megsejthetjuk, hogy melyik billentyu valojaban melyik kp-hez fog tartozni
    - Vagy ha mar mukodik a billentyuzet, akkor siman kezdhetunk egy "abc"-s kiosztassal, majd a billentyuket egyenkent lenyomva a karaktereket a helyes pozicioba rakhatjuk.

    Bar akarmennyire is nem mukodik meg a billentyuzet en megis az utobbi mellett fogok donteni, mert sokkal kisebb idoraforditassal lehet eredmenyhez jutni vele, meg akkor is, ha nem feltetlen az elso vagy a masodik flashelesre lesz meg a helyes kiosztas. Tovabba, amig nem mukodik az eszkoz, addig a helyes kiosztas sem ad tul sokat az egeszhez. :U

    Szoval kezdjunk mondjuk ezzel:

    #define N_ROWS 14
    #define N_COLUMNS 4
    #define N_KEYS (N_ROWS * N_COLUMNS)

    const kc_t PROGMEM keymap[N_KEYS] = {
    KEY_A, KEY_B, KEY_A, KEY_B,
    KEY_C, KEY_D, KEY_C, KEY_D,
    KEY_E, KEY_F, KEY_E, KEY_F,
    KEY_G, KEY_H, KEY_G, KEY_H,
    KEY_I, KEY_J, KEY_I, KEY_J,
    KEY_K, KEY_L, KEY_K, KEY_L,
    KEY_M, KEY_N, KEY_M, KEY_N,
    KEY_O, KEY_P, KEY_O, KEY_P,
    KEY_Q, KEY_R, KEY_Q, KEY_R,
    KEY_S, KEY_T, KEY_S, KEY_T,
    KEY_U, KEY_V, KEY_U, KEY_V,
    KEY_W, KEY_X, KEY_W, KEY_X,
    KEY_Y, KEY_Z, KEY_Y, KEY_Z,
    KEY_1, KEY_2, KEY_1, KEY_2
    }

    Ez 2*2*14 billentyu. Ha visszanezzuk, hogy hogy toltjuk fel a keys_down bitmezot, akkor talan ez egy jo elrendezes lehet, mert az egyik hand unit-bol csak olyan poziciokbol olvasunk amelyeknek a 4-gyel valo osztasi maradeka 0 vagy 1 (ezzel a tordelessel az elso ket oszlop), a masik oldalrol pedig 2 vagy 3 (a jobb oldali oszlopok). Igy legrosszabb esetben csak az oldalakat cserelhetjuk fel. :)
    A KEY_# konstansok azok az usb_keyboard.h-ban vannak definialva. Ezek az ertekek egyeznek azokkal, amik az USB HID szabvanyban is szerepelnek, szoval egyeb transzformaciora itt nem lesz szugsegunk. :K
    Egy dolog lehet meg itt emlitesre melto, az pedig a PROGMEM kulcsszo; ami nem szabvanyos C-s kifejezes. Ez egy avr-gcc kiegeszites es arra lehet hasznalni, hogy a forditot ravegyuk, hogy a programmemoriaba pakolja a "valtozonkat". Ezzel 54 byte-nyi memoriat sporolhatunk. :))

Új hozzászólás Aktív témák

Hirdetés