mtei / qmk_firmware Goto Github PK
View Code? Open in Web Editor NEWThis project forked from qmk/qmk_firmware
keyboard controller firmware for Atmel AVR and ARM USB families
Home Page: http://qmk.fm
License: GNU General Public License v2.0
This project forked from qmk/qmk_firmware
keyboard controller firmware for Atmel AVR and ARM USB families
Home Page: http://qmk.fm
License: GNU General Public License v2.0
HI, meti, thank you for open source fastmatrix.
I used fastmatrix on a keyboard I designed and it worked fine for the most part. But I found that if I hold down A and D at the same time, the keyboard will output ASD, hold down QE will output QWE, and hold down ZC will output ZXC. I tried this problem on other keyboards, but the key that triggered this problem was different, such as pressing YI to output YUI. These tested keyboards worked fine with the original QMK firmware
No response
No response
No response
No response
No response
No response
(私は英語は苦手なので、日本語で書いて、google で翻訳します。)
( I am not good at English, so write in Japanese and translate it with google.)
私は、quantum/split_common/serial.h
から ポートの定義を分離する事を提案します。
I propose separating the port definitions from quantum/split_common/serial.h
.
多くのキーボードは、PD0 を使っていますが、いくつかのキーボードは PD2 を使っています。
Many keyboards use PD0
, but some keyboards use PD2
.
従って、ポートの定義は、quantum/split_common/serial.h
から削除して、新しく用意する serial_config.h
に記述する方が良いと思う。
Therefore, I think that it is better to delete the port definitions from quantum/split_common/serial.h
and write it in serial_config.h
which is newly prepared.
( keyboards/A_KEYBOARD/config.h
needs #include <serial_config.h>
)
PD0 を使う場合の serial_confg.h
のサンプル
Sample serial_confg.h
when using PD0
.
#ifndef SOFT_SERIAL_CONFIG_H
#define SOFT_SERIAL_CONFIG_H
/* Soft Serial defines */
#define SERIAL_PIN_DDR DDRD
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#define SERIAL_PIN_MASK _BV(PD0)
#define SERIAL_PIN_INTERRUPT INT0_vect
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
#define SERIAL_MASTER_BUFFER_LENGTH 1
#endif /* SOFT_SERIAL_CONFIG_H */
PD2 を使う場合の serial_confg.h
のサンプル
Sample serial_confg.h
when using PD2
.
#ifndef SOFT_SERIAL_CONFIG_H
#define SOFT_SERIAL_CONFIG_H
/* Soft Serial defines */
#define SERIAL_PIN_DDR DDRD
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#define SERIAL_PIN_MASK _BV(PD2)
#define SERIAL_PIN_INTERRUPT INT2_vect
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
#define SERIAL_MASTER_BUFFER_LENGTH 1
#endif /* SOFT_SERIAL_CONFIG_H */
quantum/split_common/serial.c
の void serial_slave_init(void)
を以下のように変更する。
Change void serial_slave_init (void)
of quantum/split_common/serial.c
as follows.
void serial_slave_init(void) {
serial_input_with_pullup();
#if SERIAL_PIN_MASK == _BV(PD0)
// Enable INT0
EIMSK |= _BV(INT0);
// Trigger on falling edge of INT0
EICRA &= ~(_BV(ISC00) | _BV(ISC01));
#elif SERIAL_PIN_MASK == _BV(PD2)
// Enable INT2
EIMSK |= _BV(INT2);
// Trigger on falling edge of INT2
EICRA &= ~(_BV(ISC20) | _BV(ISC21));
#else
#error unknown SERIAL_PIN_MASK value
#endif
}
Hi mtei,
I saw your interesting tests for OLEDs on Helix in this QMK issue: qmk#4254 (comment)
Recently I found someone who came up with another technique for combining multiple OLEDs with the same I2C address: http://bitbanksoftware.blogspot.com/2019/01/controlling-lots-of-oled-displays-with.html
Perhaps maybe if you still have your test setup, you could try that technique & see how well it works.
qmk の make と compile の調査メモ
https://twitter.com/pluis9/status/978866831397195776 を検討して見ました。
qmk_firmware/keyboards/helix/ssd1306.c の中で
#include "common/glcdfont.c"
を行っています。
gcc 起動時のオプションで、include関係は以下のようになっています。
-I keyboards/helix/rev2/keymaps/キーマップ名 \
-I keyboards/helix \
-I keyboards/helix/rev2 \
.... \
-include keyboards/helix/config.h \
-include keyboards/helix/rev2/config.h \
-include keyboards/helix/rev2/keymaps/five_rows/config.h \
ssd1306.c の中で
#include <common/glcdfont.c>
を行っていた場合、インクルード検索パス指定の順に従って
keyboards/helix/rev2/keymaps/キーマップ名/common/glcdfont.c
を最初に探します。
しかし、#include "common/glcdfont.c"
の場合、インクルード検索パス指定を試す以前に
まずインクルード元のソースのあるディレクトリを試します。
なので、常に、qmk_firmware/keyboards/helix/common/glcdfont.c
を最初に
調べてしまい、切り替え不可能です。
したがって、一番簡単には、
#include <common/glcdfont.c>
に変更。qmk_firmware/keyboards/helix/rev2/keymaps/キーマップ名/common/glcdfont.c
を置く。となります。(実験済み)
しかし、keymaps/キーマップ名/common/
を作るのはなんだかちょっと気持ち悪いです。
なので、もう一つの案
helix/common/glcdfont.c
を移動し改名 helix/glcdfont.h
#include <glcdfont.h>
に変更。qmk_firmware/keyboards/helix/rev2/keymaps/キーマップ名/glcdfont.h
を置く。となります。
上のどちらかを行えば、keymap 毎の glcdfont.c は達成できそうです。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.