برنامه نویسی

QMK و صفحه کلید! – انجمن DEV

امروز شما را با دنیای شگفت انگیز کیبوردهای مکانیکی و همچنین نرم افزار عالی کیبورد QMK آشنا می کنم. این یک آموزش فنی جامع نیست، بلکه یک مرور کلی از برخی از صفحه کلیدها و لوازم جانبی فوق العاده ای است که در آنجا برای کشف شما وجود دارد، اگرچه من برخی از پیوندها را در پایین به اسناد اضافه خواهم کرد. من می دانم که شما باید به چه چیزی فکر کنید… “تافر، من قبلاً یک صفحه کلید دارم و به خوبی کار می کند. و علاوه بر این، صفحه کلید فقط وسیله ای برای رسیدن به هدف است، چیزی خسته کننده که باید برای تایپ کلمات از آن استفاده کنم.” خوب، دختران و پسران دست و پنجه نرم کنید و برای خیره شدن آماده شوید.

اولین چیزی که به آن خواهیم پرداخت، خود کیبوردها هستند.
چه بخواهید یک صفحه کلید بزرگ مانند این (صفحه کلید من نیست) …

کیبورد من نیست

یا یه کیبورد کوچیک مثل اینا…

*تصویر را در اینجا درج کنید*

هر چی بخوای میتونی درست کنی

میدونم الان به چی فکر میکنی… “هی، تافر، من فقط وقت یا مهارتی برای ساختن همچین چیزی ندارم.” هاگوش! شما می توانید یک صفحه کلید سفارشی را کنار هم قرار دهید که مونتاژ آن سخت تر از مجموعه لگو نیست. شما فقط یک کیس، یک PCB می گیرید و همه چیز را وصل می کنید.

توضیحات تصویر

شاید، با این حال، شما چیزی کمی چالش برانگیزتر یا سفارشی را می خواهید. خوب، شما هم می توانید این کار را انجام دهید. علاوه بر آن سوی طیف دشواری، در اینجا یکی با ماتریس/میکروکنترلر دستی، یک صفحه برنجی طراحی شده در CAD، و یک جعبه آسیاب شده از یک تکه چوب وجود دارد.

توضیحات تصویر
توضیحات تصویر
توضیحات تصویر
توضیحات تصویر

کلاهک‌هایی با رنگ و ضخامت مورد علاقه‌تان، کلاهک‌های دستی، سوئیچ‌هایی با قابلیت لمس و صدای دلخواه شما، بلندگوهای پیزو، نورپردازی RGB، رمزگذارهای چرخشی… فهرست سفارشی‌سازی‌هایی که می‌توانید انجام دهید بی‌پایان است.

اکنون که صفحه‌کلیدها را پوشش داده‌ایم، به بخش واقعاً سرگرم‌کننده می‌رسیم… QMK!
می پرسید QMK چیست؟ QMK یک سیستم عامل صفحه کلید منبع باز قدرتمند با تعداد زیادی ویژگی است. ابتدا اصول اولیه را پوشش می‌دهم، مانند طرح‌بندی نقشه کلید، و سپس به برخی از جنبه‌های پیشرفته‌تر و سرگرم‌کننده‌تر می‌پردازم. با استفاده از صفحه کلید من به عنوان مثال، می توانید در کد زیر مشاهده کنید که نقشه صفحه من چگونه است. بخش اول، بخشی که توضیح داده شد، به سادگی یک نمایش بصری از چیدمان است. بخش زیر آن با تعداد زیادی “KC_” کد واقعی است. من همچنین می خواهم به این نکته اشاره کنم که اینها را می توان هر طور که شما می خواهید مرتب کنید. شاید ترجیح می‌دهید کلید Alt در جایی باشد که کلید Ctrl است و بالعکس. مشکلی نیست، فقط KC_LCTL را به بعد از KC_LALT منتقل کنید! شما می توانید هر کلید را تنها در چند ثانیه مرتب کنید و دوباره به آن اختصاص دهید.

  /* Qwerty
     * ,-----------------------------------------------------------------------------------.
     * | Tab |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
     * |------+------+------+------+------+-------------+------+------+------+------+------|
     * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
     * |------+------+------+------+------+------|------+------+------+------+------+------|
     * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  "https://dev.to/"Enter |
     * |------+------+------+------+------+------+------+------+------+------+------+------|
     * | Ins  | Ctrl | Alt  | GUI  |Lower | Shft |Space |Raise | Left |  Up  | Down |Right |
     * `-----------------------------------------------------------------------------------'
     */
    [_QWERTY] = LAYOUT_ortho_4x12(
            KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC,
            KC_LCTL,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
            MT(MOD_LSFT,KC_CAPS), KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_RCTL,KC_ENT),
            KC_INS, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   MT(MOD_RSFT,KC_ENT),  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
            ),
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آه، و الان دارید فکر می کنید، “اما تافر، بقیه کلیدها چطور؟ اعداد کجا هستند؟ کاراکترها کجا هستند!؟ آیا به کاراکترها فکر نمی کنید؟!” خب، این ما را به یکی دیگر از ویژگی های مشترک QMK می رساند: لایه ها. من دوست دارم لایه ها را شبیه به کلید Shift توضیح دهم، در حالی که شما یک کلید جداگانه برای “a” و “A” ندارید، بلکه Shift را فشار می دهید تا حرف را بزرگ بنویسید. لایه ها بسیار شبیه هستند. یک کلید می تواند چندین عملکرد را به سادگی با اضافه کردن یک کلید دوم انجام دهد. در اینجا می توانید لایه های “پایین” و “بالا” من را ببینید.

  /* Lower
     * ,-----------------------------------------------------------------------------------.
     * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
     * |------+------+------+------+------+-------------+------+------+------+------+------|
     * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
     * |------+------+------+------+------+------|------+------+------+------+------+------|
     * |      |FMTPNT| CUT  | COPY |CPYFMT|FNDHLT|      |      | Home | End  |      |      |
     * |------+------+------+------+------+------+------+------+------+------+------+------|
     * | Sig  |      |      |      |      |      |      |      | Next | PgUp | PgDn | Play |
     * `-----------------------------------------------------------------------------------'
     */
    [_LOWER] = LAYOUT_ortho_4x12(
            KC_ESC, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR,    KC_ASTR,    KC_LPRN, KC_RPRN, KC_DEL,
            KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS,    KC_PLUS,    KC_LCBR, KC_RCBR, KC_PIPE,
            MT(MOD_LSFT,KC_CAPS), _______, XPASTE, COPY, KC_LALT, _______, _______,  KC_PGDN, KC_PGUP, _______, _______, _______,  
            KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______  
            ),
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  /* Raise
     * ,-----------------------------------------------------------------------------------.
     * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
     * |------+------+------+------+------+-------------+------+------+------+------+------|
     * |  `   |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
     * |------+------+------+------+------+------|------+------+------+------+------+------|
     * |      | SIG  | RENT | FVTAB|      |      |      |ISO # |ISO / | Home | End  |      |
     * |------+------+------+------+------+------+------+------+------+------+------+------|
     * |PrntSc|      |      |      |      |      |      |      | Next |PgDn  |PgUp  | Play |
     * `-----------------------------------------------------------------------------------'
     */
    [_RAISE] = LAYOUT_ortho_4x12(
            KC_TILD,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL,
            KC_GRV,  KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,   KC_F12,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
            MT(MOD_LSFT,KC_CAPS), _______,  _______,  _______, _______,  _______,  _______,  KC_PGDN, KC_PGUP, _______, _______, _______,  
            KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______ 
            ),

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در حالی که من لایه های خود را با یک لایه “بالا” و “پایین” مرتب کرده ام (با یک لایه “تنظیم” بیشتر وقتی هر دو لایه فعال می شوند)، طرح های لایه دیگری نیز وجود دارد که کار می کنند. یک مثال می تواند این باشد که لایه های شما روی هم چیده شوند، به طوری که بالاترین لایه شما لایه باشد [3]، سپس لایه های بعدی را ادامه دهید [2]، [1]، و [0].
اگر ایده یک صفحه کلید کوچک خسته کننده به نظر می رسد، یا ایده چند لایه دلهره آور به نظر می رسد، نگران نباشید! می‌توانید یک صفحه‌کلید با اندازه کامل داشته باشید، درست مانند صفحه‌کلیدی که اکنون (یا بزرگ‌تر، اگر بخواهید)، اما با اضافه کردن یک لایه واحد که به سادگی دارای مجموعه‌ای از ماکروها است.
این یکی دیگر از ویژگی های رایج و عالی QMK ​​را به ارمغان می آورد: ماکروها! می‌توانید با ماکروها عمیقاً در علف‌های هرز باشید و انواع عملکردهای فوق‌العاده مفید را برنامه‌ریزی کنید، اما در ابتدایی‌ترین حالت، ماکروها به شما این امکان را می‌دهند که فوراً و به طور خودکار چندین کلید و عملکرد را با یک کلید ترکیبی انجام دهید. بگذارید یک مثال جالب بزنم. هر برنامه نویسی با کپی/پیست آشنایی دارد. در اینجا یک ماکرو وجود دارد که (Ctrl+c) را در keydown کپی می‌کند و (Ctrl+v) را در keyup پیست می‌کند، به این معنی که شما به سادگی کلید را برای کپی نگه دارید و سپس کلید را زمانی که می‌خواهید جای‌گذاری کنید، رها کنید.

   case CP:
        // keydown
        if (record->event.pressed)
        {
            SEND_STRING(SS_LCTL("v"));
        }
        // keyup
        else
        {
            SEND_STRING(SS_LCTL("v"));
        }
        break;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در آخرین کارم، چندین ماکرو داشتم که به سادگی متن/امضاهایی را که من اغلب در حال تایپ کردن آنها بودم، خروجی می‌دادند، مثلاً…

   case SIG:
        if (record->event.pressed)
        {
            SEND_STRING("\n\n-Topher Ludlow\nTravel Coordinator\nEmergency Medical Services Authority\nCell: 916-621-****\n");
        }
        else
        {
        }
        break;
        case RENT:
        if (record->event.pressed)
        {
            SEND_STRING("Send the rental agreement and return receipt to ****@emsa.ca.gov\n");
        }
        else
        {
        }
        break;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شاید، اگر یک گیمر هستید، ماکرویی را بخواهید که با فشار دادن یک کلید هرزنامه ارسال کند. در واقع، هر ترکیبی از کلیدها که فکرش را بکنید، با ماکرو قابل دستیابی است.
یکی دیگر از ویژگی های QMK ​​کلیدهای mod-tap هستند. این کلیدها هنگام فشار دادن به یک عملکرد اجازه می دهند، در حالی که با ضربه زدن به عملکرد دیگری اجازه می دهند. مثال کلاسیک، که ممکن است در اولین لایه من متوجه شده باشید، Shift است. با ضربه زدن روی آن، caps-lock روشن می شود، در حالی که آن را نگه دارید، Shift را فعال می کند. این کد کلید شبیه این است: “MT(MOD_LSFT,KC_CAPS)”. یکی دیگر از کلیدهای mod-tap در لایه، Ctrl را با نگه داشتن و Enter را با ضربه زدن فعال می کند: “MT(MOD_RCTL,KC_ENT)”.
چیزی که من به آن پرداختم در واقع فقط شروع به خراش دادن سطح کاری می کند که با QMK می توان انجام داد. اگر RGB را دوست دارید، می توانید هر یک از الگوهای متعدد موجود را بارگیری کنید یا الگوهای خود را کاملاً بنویسید. اگر می‌خواهید بلندگوها به صفحه‌کلیدتان متصل شوند، کدی برای تبدیل صفحه‌کلید به صفحه‌کلید وجود دارد. از QWERTY خسته شده اید؟ طرح خود را به DVORAK تغییر دهید. آیا می خواهید با صفحه کلید خود تنگ شناسی انجام دهید؟ پروتکل استنو را بارگیری کنید. امکانات بی‌پایان است و اگر ویژگی‌ای را می‌خواهید که هنوز وجود ندارد، می‌توانید آن را ایجاد کنید! جامعه صفحه کلید، اتفاقا، بسیار خوش آمد و مفید است.
پیوندهای زیر به ترتیب “چشم شیرین” تا “فنی” هستند، بنابراین اگر هر یک از این موارد جذاب را پیدا کردید، توصیه می کنم ادامه مطلب را بخوانید و بیشتر بدانید!

https://www.reddit.com/r/MechanicalKeyboards/

https://www.reddit.com/r/olkb/

https://blog.splitkb.com/introduction-to-qmk-features/

https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/

https://docs.qmk.fm/#/

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا