我得到这个错误,当我尝试使用 * 修改键 * 我的旋转编码器像这样:
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(QK_LCTL | KC_F24);
} else {
tap_code(QK_LCTL | KC_F23);
}
}
return false;
}
这就是错误:
Compiling: keyboards/planck/keymaps/dawz/keymap.c keyboards/planck/keymaps/dawz/keymap.c: In function 'encoder_update_user':
keyboards/planck/keymaps/dawz/keymap.c:68:22: error: unsigned conversion from 'int' to 'uint8_t' {aka 'unsigned char'} changes value from '371' to '115' [-Werror=overflow]
68 | tap_code(QK_LCTL | KC_F24);
| ^~~~~~~~~~~~~~~~
keyboards/planck/keymaps/dawz/keymap.c:70:22: error: unsigned conversion from 'int' to 'uint8_t' {aka 'unsigned char'} changes value from '370' to '114' [-Werror=overflow]
70 | tap_code(QK_LCTL | KC_F23);
| ^~~~~~~~~~~~~~~~
cc1.exe: all warnings being treated as errors
[ERRORS]
|
|
|
make[1]: *** [tmk_core/rules.mk:443: .build/obj_planck_rev6_drop_dawz/keyboards/planck/keymaps/dawz/keymap.o] Error 1
Make finished with errors
make: *** [Makefile:539: planck/rev6_drop:dawz] Error 1
当我输入一个常规的键码,如KC_VOLUP或KC_VOLDOWN时,编码器工作,但我试图使用Ctrl + F23,F24,所以我可以使用旋钮作为Voicemeeter宏按钮控制器。
4条答案
按热度按时间dxxyhpgq1#
您可以使用宏
LCTL(kc)
(以及其他MOD的类似宏)表示“Ctrl +(基本键)”组合,但技术上这会创建16位键码。因此,而不是tap_code()
,它仅限于8位基本键码,使用tap_code16()
来点击它:另请参阅QMK编码器文档。
bihw5rsg2#
如果你想在这里使用编码器的修改键,你应该尝试使用tap_code16而不是tap_code
试试这个:
这里是QMK文档的链接
q35jwt9p3#
您可以分解按下组合键的方式:
1.按住修改键
1.按某个键(通常是字母或数字)
1.释放修改键
然后你可以描述整个过程:
这种方法看起来很愚蠢,但是你可以实现更复杂的情况,比如
Ctrl+Alt+Shift+A
或者一些用键码很难做到的事情。我这样做是为了我的一个自制键盘,它工作正常。
1szpjjfi4#
看看我的keymap在https://github.com/qmk/qmk_firmware/tree/master/keyboards/keebio/iris/keymaps/sq5rix你有工作的编码器在那里看看rules.mk,config.h和keymap.c -变化无处不在