GH60 macro 教學 by Mac - 鍵鼠

Kelly avatar
By Kelly
at 2016-01-14T22:43

Table of Contents

在打這篇文章之前,首先要先看過以下文章,確保該裝的東西都裝好後再開始出發
https://www.ptt.cc/bbs/Key_Mou_Pad/M.1430970988.A.4D9.html

好的,這次我為各位版友帶來了GH60的巨集做法
手邊沒有蔡新或是BLE60等擁有專有的編輯器,怎麼辦才能寫巨集呢?
TKG跟KLE等工具也沒辦法支援呀QQ

沒錯,這很困難,同時,也十分的簡單

首先,先到KLE編輯想要的layout

注意,記得把想要做成巨集鍵的鍵設為fn

我設定了三個macro分別為fn0、fn1、fn2

接下來把RAW data複製到TKG上

http://imgur.com/bqYQzLL

fn的選項都選Other>Built-in macro 00

像我有三個巨集鍵,如上圖所示

好的接下來請選Download .c file 把keymap下載下來

接下來用寫程式的東西打開來(無論要用vim xcode sublime text都可以)
我用sublime text做示範

http://imgur.com/REVBBm4
可以看到程式碼長這樣

比對一下已經有巨集功能的keymap
http://imgur.com/WLYD1m2
http://imgur.com/LVfToHj

簡單來看一下可以發現多了什麼?

第一個

enum macro_id {
HELLO,
VOLUP,
ALT_TAB,
};
這裡是定義你的巨集叫什麼名字
也就是
[0] = ACTION_MACRO(),
[1] = ACTION_MACRO(),
[2] = ACTION_MACRO(),
的小掛號裡面要放的
[0] = ACTION_MACRO(HELLO),
[1] = ACTION_MACRO(VOLUP),
[2] = ACTION_MACRO(ALT_TAB),
以上我們把巨集的名字寫好了
接下來我們要開始讓他知道巨集該如何動作
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case HELLO:
return (record->event.pressed ?
MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
MACRO_NONE );
case VOLUP:
return (record->event.pressed ?
MACRO( D(VOLU), U(VOLU), END ) :
MACRO_NONE );
case ALT_TAB:
return (record->event.pressed ?
MACRO( D(LALT), D(TAB), END ) :
MACRO( U(TAB), END ));
}
return MACRO_NONE;
}
上面有一個const macro_t *action_get_macro的小程式
裡面有一個switch看不懂沒關係,照打就好了

看一下這裡
MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END )
要輸入HELLO需要按H->E->L->L->O 然後結束END

各位會問說:奇怪,裡面的I() T() W() U() D()是什麼意思?

他們分別指的是
I() change interval of stroke. 「改變macro內每個指令的時間間隔」
D() press key  「壓下按鍵」
U() release key 「放開按鍵」
T() type key(press and release) 「打字(壓下及放開)」
W() wait 「等待時間」
END end mark 「結束符號」

瞭解之後就把上述的程式加入keymap.c後就可以完成巨集了

以下小範例
enum macro_id {
PTT,
};

#ifdef KEYMAP_SECTION_ENABLE
const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
#else
const uint16_t fn_actions[] PROGMEM = {
#endif
[0] = ACTION_MACRO(PTT),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case PTT:
return (record->event.pressed ?
MACRO( I(30), T(P), T(T), T(T), END ) :
MACRO_NONE);
}
return MACRO_NONE;
}

加入原本的keymap後再修改一下 [0] = ACTION_MACRO(),
就可以做成每30ms為間隔輸入的PTT
如果在“MACRO( I(30), T(P), T(T), T(T), END ) :”
的T(T), T(T)放入一個W(100)會如何呢?
讓各位來玩玩看吧!

--
Tags: 鍵鼠

All Comments

Joe avatar
By Joe
at 2016-01-15T14:18
K壕必推
David avatar
By David
at 2016-01-18T17:12
屌屌屌
Olga avatar
By Olga
at 2016-01-22T16:17
讚! 推一個
Anonymous avatar
By Anonymous
at 2016-01-23T02:25
太狂了吧
John avatar
By John
at 2016-01-24T08:59
太神啦!!!
Emily avatar
By Emily
at 2016-01-24T23:19
看不懂但太強了只好推XD
Zenobia avatar
By Zenobia
at 2016-01-26T15:00
推推!!
Skylar DavisLinda avatar
By Skylar DavisLinda
at 2016-01-28T21:09
推教學文
Connor avatar
By Connor
at 2016-01-30T08:29
優質好文
Connor avatar
By Connor
at 2016-01-30T17:37
推,普洛
Rosalind avatar
By Rosalind
at 2016-01-31T23:38
推技術文章
Eden avatar
By Eden
at 2016-02-04T03:41
推,也來研究研究
Hedy avatar
By Hedy
at 2016-02-08T12:23
看到k壕先推~
Skylar DavisLinda avatar
By Skylar DavisLinda
at 2016-02-11T17:46
先教會printf("Hello world!");再教這個啦~~
Bennie avatar
By Bennie
at 2016-02-12T15:02
跪了 壕猛

K70 RGB 空白鍵連點

Margaret avatar
By Margaret
at 2016-01-14T15:38
被女兒很用力的亂按之後 開始有這個問題 我怕其他鍵也是不是有這個問題 送修然後維修人員會一一幫我檢查嗎? 然後再換軸這樣? -- XBox One Titanfall Asian East http://www.twitch.tv/starcraftiii - ...

Ducky One 80%

Daph Bay avatar
By Daph Bay
at 2016-01-14T14:24
https://goo.gl/nviuLf 版上好像還沒有人PO 目前粉絲團只有貼出黑色配色 有光好像是紫光? 無光是看到紅黑配色 不知道以後會不會出其他配色 - ...

請大家幫我看看這是什麼鍵盤

John avatar
By John
at 2016-01-14T13:58
在版上淺水了已久 從一開始對覺得電競鍵盤發光很潮 到最後自己忍不住買了第一把波賽頓Z茶軸 最近看了許多版友開箱想買一把80%青軸鍵盤 剛好之前在日本讀書的表哥說他兩年前有買一把不知道叫什麼的80%青軸 因為工作繁忙沒時間用電腦 禮拜六回來投票可以順便給我 這是他傳給我的圖片 想問各位知道這是哪把鍵盤嗎ata ...

這款剛剛在FB看到的,有人推嗎?

Valerie avatar
By Valerie
at 2016-01-14T00:52
http://goods.ruten.com.tw/item/show?21543906768078 絕影戰斧 RGB 這款推薦嗎? 請問大家有甚麼評價呢?? - ...

關於蛇蛇下殺5折的活動

Christine avatar
By Christine
at 2016-01-14T00:16
看到原PO對於Razer官網購物維修有問題,我就提供一下我維修過的經驗 基本上亞洲區使用者在官網購買的產品送修與配送都是從新加坡來的 首先你的帳號會有你的購買紀錄,所以保固的認定是很方便的 如果你的產品有問題,就必須到官網上的contact us去反應 先講結論,信件來回必須用英文,用中文寄信他會說請 ...