【极简版GH60】【GH60剖析】【八】增加一键输入密码(邮箱)功能

来源:互联网 发布:蜂窝移动数据关闭不了 编辑:程序博客网 时间:2024/06/16 03:06

有一些高频率的输入字符串,我们可以写入到源代码中,让键盘可以替我们输入,比如说我们的密码、我们的用户邮箱等等,这样可以提高我们的效率。


我们先看看K大给的文档,里面有

Build firmware
--------------
### 1. Open terminal
Open terminal window to get access to commands. Use Cygwin(or MingGW) `shell terminal` in Windows or `Terminal.app` on Mac OSX. In Windows press `Windows` key and `R` then enter `cmd` in 'Run command' dialog showing up.

### 2. Change directory
Move to project directory in the firmware source.

cd tmk_keyboard/{'keyboard' or 'converter'}/

### 3. Make
Build firmware using GNU `make` command. You'll see `_.hex` file in that directory unless something unexpected occurs in build process.

里面很清楚地讲解了制作固件的步骤。

第一步,打开调试终端,在Windows下面就是打开cmd,然后第二步就是cd到tmk_keyboard/{'keyboard' or 'converter'}/这个目录,比如说GH60就是\tmk_keyboard_custom-master\keyboard\gh60这个目录。

然后使用make -f Makefile.clean
make -f Makefile.
命令就可以生成一个_.hex文件,我们就可以把它烧录进去了。


我们可以看到GH60下面有keymap_hhkb.c等很多keymap_打头的c文件,我们把下载得到的c文件加上_xxx后缀就好了,然后放到GH60目录下面。


Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document(you can find in top README.md) and existent keymap files.

To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:

$ make KEYMAP=[poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|]
按照文档里面的说法,我们只需要 $ make KEYMAP =就可以了。

回到

[1] = ACTION_MACRO(),
[2] = ACTION_MACRO(),
[3] = ACTION_MACRO(),

这三条语句,我们需要给他们加上自己写的函数、

首先在keyboard文件夹下面搜索ACTION_MACRO,找到一个keymap_hasu.c里面有这个语句使用,

[8] = ACTION_MACRO(ALT_TAB),                      // Application switching

//  [x] = ACTION_MACRO(HELLO),                          // Macro: say hello
//  [x] = ACTION_MACRO(VOLUP),                          // Macro: media key


/*
* Macro definition
*/
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;
}

照猫画虎:

[1] = ACTION_MACRO(PASSWORD1),
[2] = ACTION_MACRO(MAIL),
[3] = ACTION_MACRO(PASSWORD2),

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case PASSWORD1:
return (record->event.pressed ?
MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :     //密码改T()括号里面的字符,下同
MACRO_NONE );
case MAIL:
return (record->event.pressed ?
MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
MACRO_NONE );
case PASSWORD2:
return (record->event.pressed ?
MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : 
MACRO_NONE );
}
return MACRO_NONE;
}

这里我使用了两个密码,一个邮箱名,大家按自己所需改T()

case MAIL:
return (record->event.pressed ?
MACRO( I(0), T(p), T(a), T(l), T(e), T(2), T(5), T(2), T(6), T(@), T(f), T(o), T(x), T(m), T(a), T(i), T(l), T(.), T(c), T(o), W(255), T(m), END ) :
MACRO_NONE );
我不知道这个W(255)等待时间是要每隔4个等待一次还是最后等待一次就可以了,现在先试一下最后等待一次,这里我的邮箱是pale2526@foxmail.com,大家可以看到。

然后我发现在Windows下面用cmd或者powershell都出报错,看了make还需要在linux或者缺少什么组件,待研究待更


1 0
原创粉丝点击