iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
IoT

homekit+pixhawk系列 第 13

使用QMK來搞一把鍵盤吧!

  • 分享至 

  • xImage
  •  

在鍵盤的世界裡面,有著許多開放原始碼的韌體可以使用,然而有些韌體可以搞定小紅點,有些卻對小紅點感到束手無策,而現在將教各位如何使用QMK來搞定小紅點模組。

目前需要的材料如下

  1. atmega32u4開發版,不論teensy或是leonardo或是其他開發版都可以
  2. 小紅點模組
  3. 一大堆開關

看一下Pinout,若有開發版可以將所有32u4的腳位拉出來的是最棒的
例如teensy2.0
teensy 2.0
把檔案抓下來

git clone git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
./util/qmk_install.sh

接著做一把屬於自己的鍵盤

./util/new_keyboard.sh

會出現以下幾行,並照著自己的想法輸入

Generating a new QMK keyboard directory

Keyboard Name: Fuckyou3
Keyboard Type [avr]: #這裡要打avr
Your Name [John Smith]: ##這裡打Noobtw

Copying base template files... done
Copying avr template files... done
Renaming keyboard files... done
Replacing %KEYBOARD% with mycoolkb... done
Replacing %YOUR_NAME% with John Smith... done

Created a new keyboard called mycoolkb.

To start working on things, cd into keyboards/mycoolkb,
or open the directory in your favourite text editor.

qmk_firmware/keyboard資料夾下會出現Fuckyou3的資料夾,進去後會出現以下幾個檔案

Fuckyou3.c 
Fuckyou3.h 
config.h   
info.json  
keymaps    
readme.md  
rules.mk

其中Fuckyou3.c是讓使用者放自己需要的自製功能
Fuckyou3.h裡面就是鍵盤mapping的方式,也就是行列矩陣的方式去排列,如下所示

#define LAYOUT(          \
      k00, k01, k02,     \
      k10,   k11         \
) {                      \
    { k00, k01,   k02 }, \
    { k10, KC_NO, k11 }, \
}

上述程式碼裡面有著k00 k01 k02之類的東西,代表著是k<row><col>也就是第幾行第幾列的按鍵,上述layout代表著總共有兩個row,三個col,而第一行第一列的key是沒有的,就像是六個按鍵中,下排中間的按鍵被消失了(不是忘記了,也不是害怕想起來),也就是電路上沒有做開關的意思。
config.h中定義了一些事情

#define VENDOR_ID       0xFEED
#define PRODUCT_ID      0x6060
#define DEVICE_VER      0x0001
#define MANUFACTURER    You
#define PRODUCT         my_awesome_keyboard
#define DESCRIPTION     A custom keyboard

上面就是插上電腦之後,會認到的usb_pid以、vid以及其他設定,VENDOR_ID跟PRODUCT_ID不要亂設定,如果亂設定會造成藍屏死機,MANUFACTURER、PRODUCT、DESCRIPTION都可以亂打沒關係

#define MATRIX_ROWS 2
#define MATRIX_COLS 3

這裡表示這隻鍵盤總共有幾行幾列

#define MATRIX_ROW_PINS { D0, D5 }
#define MATRIX_COL_PINS { F1, F0, B0 }
#define UNUSED_PINS

而這裡就代表鍵盤要用哪一隻接腳來當row以及col,範例中用的是PD0以及PD5作為row,F1F0B0作為col

接著就是定義防鬼鍵用的二極體擺放方向

#define DIODE_DIRECTION COL2ROW

這裏代表他是COL指向ROW,這裡的指向指的是鍵盤上的二極體方向,二極體的標示通常是一條線或是三角形抵著一條線,那一條線靠近row就是了。
最後就是rules.mk了
裡面可以設定一些東西

MCU = atmega32u4
F_CPU = 16000000
ARCH = AVR8
F_USB = $(F_CPU)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT

上述設定是使用atmega32u4作為主控

BOOTLOADER = halfkay

就是使用teensy開發版的teensy bootloader
下面還有一些其他選用的功能,詳情請見這裏https://docs.qmk.fm/#/config_options?id=feature-options


上一篇
RFC1149
下一篇
把QMK鍵盤加上藍芽功能吧!
系列文
homekit+pixhawk30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言