HID report interception, listening for user keycodes
This commit is contained in:
parent
9ecf066abe
commit
67c2a8f2b6
|
|
@ -18,6 +18,9 @@ ESP_LOG = "info"
|
|||
[unstable]
|
||||
build-std = ["alloc", "core"]
|
||||
|
||||
[patch.crates-io]
|
||||
rmk = { path = "../../../rust/rmk/rmk" }
|
||||
|
||||
# [patch.crates-io]
|
||||
# esp-backtrace = { path = "../../../rust/esp-hal/esp-backtrace" }
|
||||
# esp-hal = { path = "../../../rust/esp-hal/esp-hal" }
|
||||
|
|
|
|||
198
firmware2/Cargo.lock
generated
198
firmware2/Cargo.lock
generated
|
|
@ -174,7 +174,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -297,7 +297,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -332,7 +332,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -359,7 +359,7 @@ dependencies = [
|
|||
"derive_utils",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -465,7 +465,7 @@ dependencies = [
|
|||
"regex",
|
||||
"rustc-hash 2.1.1",
|
||||
"shlex",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -503,7 +503,7 @@ checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -514,7 +514,7 @@ checksum = "8769c4854c5ada2852ddf6fd09d15cf43d4c2aaeccb4de6432f5402f08a6003b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -659,7 +659,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -919,7 +919,7 @@ checksum = "5387f5bbc9e9e6c96436ea125afa12614cebf8ac67f49abc08c1e7a891466c90"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1195,6 +1195,16 @@ dependencies = [
|
|||
"darling_macro 0.21.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling"
|
||||
version = "0.23.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
|
||||
dependencies = [
|
||||
"darling_core 0.23.0",
|
||||
"darling_macro 0.23.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_core"
|
||||
version = "0.20.11"
|
||||
|
|
@ -1206,7 +1216,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1219,7 +1229,20 @@ dependencies = [
|
|||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_core"
|
||||
version = "0.23.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
|
||||
dependencies = [
|
||||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1230,7 +1253,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
|||
dependencies = [
|
||||
"darling_core 0.20.11",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1241,7 +1264,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
|
|||
dependencies = [
|
||||
"darling_core 0.21.3",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_macro"
|
||||
version = "0.23.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
|
||||
dependencies = [
|
||||
"darling_core 0.23.0",
|
||||
"quote",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1281,7 +1315,7 @@ checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1313,7 +1347,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"rustc_version 0.4.1",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
|
|
@ -1325,7 +1359,7 @@ checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1363,7 +1397,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1509,7 +1543,7 @@ dependencies = [
|
|||
"darling 0.20.11",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1682,7 +1716,7 @@ dependencies = [
|
|||
"darling 0.20.11",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1808,7 +1842,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1829,7 +1863,7 @@ dependencies = [
|
|||
"darling 0.21.3",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1849,7 +1883,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2016,7 +2050,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"termcolor",
|
||||
]
|
||||
|
||||
|
|
@ -2336,7 +2370,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2493,7 +2527,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2599,7 +2633,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2924,9 +2958,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gix-features"
|
||||
version = "0.45.0"
|
||||
version = "0.45.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba0ba40b1ca17f2cb3987c8d54e596aba924201cd8e5947098b441067e6686a0"
|
||||
checksum = "092a70b60e0cdfc04346ad070ade58c6502afce66b1261bf23a51401eea73d56"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"crossbeam-channel",
|
||||
|
|
@ -2965,9 +2999,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gix-fs"
|
||||
version = "0.18.0"
|
||||
version = "0.18.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95b160a13547a64d67a02d894e4f5502a2a5f98635c89931f6bb9c7a4c80c7db"
|
||||
checksum = "a167d36b51336499af9e3ff7cde1b6c659b5defe8b2fb71133928a348d939d8e"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"fastrand",
|
||||
|
|
@ -2991,9 +3025,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gix-hash"
|
||||
version = "0.21.0"
|
||||
version = "0.21.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0799db4b114b97da340a3acd6b65f4ef4d325a590acef867ab0e51729b8b761c"
|
||||
checksum = "3f16fd9bf861f319905759cd8aef230d1a101a26509194617b737a5cb8df9666"
|
||||
dependencies = [
|
||||
"faster-hex",
|
||||
"gix-features",
|
||||
|
|
@ -3835,7 +3869,7 @@ checksum = "c4c6a3975ccaa66415f5524292750e631879e69178aa97e3928d2396b790d00d"
|
|||
dependencies = [
|
||||
"quote",
|
||||
"serde_json",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4111,15 +4145,15 @@ checksum = "bd4f5b4d1c00331c5245163aacfe5f20be75b564c7112d45893d4ae038119eb0"
|
|||
|
||||
[[package]]
|
||||
name = "instability"
|
||||
version = "0.3.10"
|
||||
version = "0.3.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c"
|
||||
checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d"
|
||||
dependencies = [
|
||||
"darling 0.20.11",
|
||||
"darling 0.23.0",
|
||||
"indoc",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4139,7 +4173,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4200,7 +4234,7 @@ checksum = "b787bebb543f8969132630c51fd0afab173a86c6abae56ff3b9e5e3e3f9f6e58"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4543,7 +4577,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4732,7 +4766,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4784,7 +4818,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5302,7 +5336,7 @@ dependencies = [
|
|||
"pest_meta",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5338,7 +5372,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5461,7 +5495,7 @@ checksum = "a33fa6ec7f2047f572d49317cca19c87195de99c6e5b6ee492da701cfe02b053"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5484,7 +5518,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5512,7 +5546,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5567,7 +5601,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5871,7 +5905,7 @@ checksum = "7d323d13972c1b104aa036bc692cd08b822c8bbf23d79a27c526095856499799"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5900,7 +5934,7 @@ checksum = "def519ddeeb5e43c2b4fc3952c27b3a86782fc05192f322b2309125cd85b1fc3"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -5924,8 +5958,6 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "rmk"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a301e62e9d2d9f2e44922c121a605aa064f2ef96c5d6f3c4d5fb9e177205186"
|
||||
dependencies = [
|
||||
"bitfield-struct",
|
||||
"bt-hci",
|
||||
|
|
@ -5970,8 +6002,6 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "rmk-config"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f3166813f01b6d3a23260d67cc12e31e97affa89812a499872a33f86688629e"
|
||||
dependencies = [
|
||||
"cargo_toml",
|
||||
"config",
|
||||
|
|
@ -5988,8 +6018,6 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "rmk-macro"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17f1aa766e731010e185ec92f1e1db6b9a0a1b3c42ae712bdadb7c7976fa9539"
|
||||
dependencies = [
|
||||
"cargo_toml",
|
||||
"darling 0.20.11",
|
||||
|
|
@ -6002,15 +6030,13 @@ dependencies = [
|
|||
"rmk-config",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"toml",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rmk-types"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ec537c7aebb4079311d27b06ec5e82be34a4c0478642317113627d7c36145ff"
|
||||
dependencies = [
|
||||
"bitfield-struct",
|
||||
"postcard",
|
||||
|
|
@ -6234,7 +6260,7 @@ checksum = "92d48532bc0781ac622a5fea0f16502d3b4f1af0fcebe56d618120969f35d315"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6266,7 +6292,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6290,7 +6316,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6639,7 +6665,7 @@ dependencies = [
|
|||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6695,9 +6721,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.111"
|
||||
version = "2.0.112"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
|
||||
checksum = "21f182278bf2d2bcb3c88b1b08a37df029d71ce3d3ae26168e3c653b213b99d4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -6712,7 +6738,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6789,7 +6815,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6800,7 +6826,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6950,7 +6976,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6997,7 +7023,7 @@ dependencies = [
|
|||
"darling 0.20.11",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
|
|
@ -7394,7 +7420,7 @@ checksum = "8cfcf6171aa2b0f85718ca5888ca32f6edf61d1849f8e4b3786ad890e5b68f68"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -7467,7 +7493,7 @@ dependencies = [
|
|||
"bumpalo",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
|
@ -7613,7 +7639,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -7624,7 +7650,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -7635,7 +7661,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -7646,7 +7672,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -8162,7 +8188,7 @@ checksum = "96fb42cd29c42f8744c74276e9f5bee7b06685bbe5b88df891516d72cb320450"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -8227,7 +8253,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
|
|
@ -8274,7 +8300,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"zbus_names",
|
||||
"zvariant",
|
||||
"zvariant_utils",
|
||||
|
|
@ -8315,7 +8341,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -8335,7 +8361,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
|
|
@ -8376,7 +8402,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -8387,9 +8413,9 @@ checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3"
|
|||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.2"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f4a4e8e9dc5c62d159f04fcdbe07f4c3fb710415aab4754bf11505501e3251d"
|
||||
checksum = "de9211a9f64b825911bdf0240f58b7a8dac217fe260fc61f080a07f61372fbd5"
|
||||
|
||||
[[package]]
|
||||
name = "zune-core"
|
||||
|
|
@ -8453,7 +8479,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"zvariant_utils",
|
||||
]
|
||||
|
||||
|
|
@ -8466,6 +8492,6 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"syn 2.0.111",
|
||||
"syn 2.0.112",
|
||||
"winnow",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ edition = "2024"
|
|||
|
||||
[features]
|
||||
default = ["usb-log", "limit-fps"]
|
||||
develop = ["limit-fps", "alt-log"]
|
||||
no-usb = ["rmk/_no_usb"]
|
||||
ble = ["rmk/esp32s3_ble"]
|
||||
# Use alternative logging via GPIO5 as RX and GPIO12 as TX.
|
||||
|
|
@ -24,6 +25,7 @@ rmk = { version = "0.8.2", default-features = false, features = [
|
|||
"log",
|
||||
"storage",
|
||||
"vial",
|
||||
"controller",
|
||||
] }
|
||||
embassy-executor = { version = "0.9", features = ["log"] }
|
||||
embassy-time = { version = "0.5.0", features = ["log"] }
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::fs::{File, OpenOptions};
|
||||
use std::io::{Read, Write};
|
||||
use std::path::Path;
|
||||
use std::{env, fs};
|
||||
|
||||
use const_gen::*;
|
||||
use json::JsonValue;
|
||||
use slint_build::{CompilerConfiguration, EmbedResourcesKind};
|
||||
use xz2::read::XzEncoder;
|
||||
// use shadow_rs::{BuildPattern, ShadowBuilder};
|
||||
|
||||
fn main() {
|
||||
if let Ok(repo) = gix::discover(env::var_os("CARGO_MANIFEST_DIR").unwrap().into_string().unwrap()) {
|
||||
|
|
@ -19,11 +19,6 @@ fn main() {
|
|||
.unwrap_or_else(|| commit_hash.to_string())
|
||||
);
|
||||
}
|
||||
// ShadowBuilder::builder()
|
||||
// .build_pattern(BuildPattern::Lazy)
|
||||
// .deny_const(Default::default())
|
||||
// .build()
|
||||
// .unwrap();
|
||||
|
||||
// Generate vial config at the root of project
|
||||
println!("cargo:rerun-if-changed=vial.json");
|
||||
|
|
@ -44,7 +39,8 @@ fn main() {
|
|||
|
||||
fn generate_vial_config() {
|
||||
// Generated vial config file
|
||||
let out_file = Path::new(&env::var_os("OUT_DIR").unwrap()).join("config_generated.rs");
|
||||
let path = Path::new(&env::var_os("OUT_DIR").unwrap()).join("config_generated.rs");
|
||||
let mut out_file = OpenOptions::new().create(true).write(true).truncate(true).open(path).unwrap();
|
||||
|
||||
let p = Path::new("vial.json");
|
||||
let mut content = String::new();
|
||||
|
|
@ -55,9 +51,10 @@ fn generate_vial_config() {
|
|||
Err(e) => println!("Cannot find vial.json {p:?}: {e}"),
|
||||
};
|
||||
|
||||
let vial_cfg = json::stringify(json::parse(&content).unwrap());
|
||||
let vial_cfg = json::parse(&content).unwrap();
|
||||
let vial_cfg_string = json::stringify(vial_cfg.clone());
|
||||
let mut keyboard_def_compressed: Vec<u8> = Vec::new();
|
||||
XzEncoder::new(vial_cfg.as_bytes(), 6)
|
||||
XzEncoder::new(vial_cfg_string.as_bytes(), 6)
|
||||
.read_to_end(&mut keyboard_def_compressed)
|
||||
.unwrap();
|
||||
|
||||
|
|
@ -68,5 +65,25 @@ fn generate_vial_config() {
|
|||
]
|
||||
.map(|s| "#[allow(clippy::redundant_static_lifetimes)]\n".to_owned() + s.as_str())
|
||||
.join("\n");
|
||||
fs::write(out_file, const_declarations).unwrap();
|
||||
|
||||
writeln!(out_file, "{}", const_declarations).unwrap();
|
||||
|
||||
writeln!(out_file, "#[repr(u16)] pub enum CustomKeycodes {{").unwrap();
|
||||
|
||||
const CUSTOM_KEYCODE_FIRST: u16 = 0x840;
|
||||
|
||||
#[allow(clippy::collapsible_if)]
|
||||
if let JsonValue::Object(vial_cfg) = vial_cfg {
|
||||
if let Some(JsonValue::Array(custom_keycodes)) = vial_cfg.get("customKeycodes") {
|
||||
for (index, custom_keycode) in custom_keycodes.iter().enumerate() {
|
||||
if let JsonValue::Object(custom_keycode) = custom_keycode {
|
||||
let name = custom_keycode.get("name").expect("A custom keycode in vial.json is missing a name.")
|
||||
.as_str().expect("A custom keycode's name must be a string.");
|
||||
writeln!(out_file, " {} = {},", name, CUSTOM_KEYCODE_FIRST + index as u16).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
writeln!(out_file, "}}").unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use rmk::types::action::KeyAction;
|
||||
use rmk::types::action::{KeyAction, Action};
|
||||
use rmk::{a, k, layer};
|
||||
|
||||
use crate::matrix::{MATRIX_COLS, MATRIX_ROWS};
|
||||
|
|
@ -13,6 +13,7 @@ pub const fn get_default_keymap() -> [[[KeyAction; MATRIX_COLS]; MATRIX_ROWS]; N
|
|||
[k!(Tab), k!(Q), k!(W), k!(E), k!(R), k!(T), k!(Z), k!(U), k!(I), k!(O), k!(P), k!(Delete)],
|
||||
[k!(LCtrl), k!(A), k!(S), k!(D), k!(F), k!(G), k!(H), k!(J), k!(K), k!(L), k!(Comma), k!(Enter)],
|
||||
[k!(LShift), k!(Y), k!(X), k!(C), k!(V), k!(B), k!(N), k!(M), a!(No), a!(No), k!(Up), k!(RShift)],
|
||||
//[a!(No), a!(No), k!(LGui), k!(LAlt), KeyAction::Single(Action::TriLayerLower), k!(Space), k!(Space), KeyAction::Single(Action::TriLayerLower), k!(RAlt), k!(Left), k!(Down), k!(Right)]
|
||||
[a!(No), a!(No), k!(LGui), k!(LAlt), k!(TriLayerLower), k!(Space), k!(Space), k!(TriLayerLower), k!(RAlt), k!(Left), k!(Down), k!(Right)]
|
||||
])
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
//! TODO:
|
||||
//! * GUI event dispatch.
|
||||
//! * Avoid accessing PSRAM on second core (park it?) while flash is being written to (by vial).
|
||||
//! * Async interrupt handling of keyboard input. Reduces LCD glitching.
|
||||
//! * Attempt to reduce the size of the framebuffer to 240x960 by changing the front/back porch of
|
||||
//! the LCD driver. Reduces LCD glitching.
|
||||
//! * GUI event dispatch.
|
||||
//! * Bounce buffers to get rid of glitching completely.
|
||||
//! https://esp32.com/viewtopic.php?t=28230
|
||||
//! https://esp32.com/viewtopic.php?f=12&t=26793&start=20#p95677
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#![feature(macro_metavar_expr)]
|
||||
|
|
@ -17,7 +20,8 @@ use alloc::boxed::Box;
|
|||
use alloc::vec;
|
||||
use bt_hci::controller::ExternalController;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
|
||||
use embassy_sync::blocking_mutex::raw::{CriticalSectionRawMutex};
|
||||
use embassy_sync::channel::Channel;
|
||||
use embassy_sync::signal::Signal;
|
||||
use embassy_time::Duration;
|
||||
use esp_alloc::{HeapRegion, MemoryCapability};
|
||||
|
|
@ -35,18 +39,24 @@ use esp_hal::rng::TrngSource;
|
|||
use esp_hal::system::Stack;
|
||||
use esp_hal::timer::timg::TimerGroup;
|
||||
use esp_hal::{Blocking, ram};
|
||||
use esp_radio::Controller;
|
||||
use esp_radio::Controller as RadioController;
|
||||
use esp_radio::ble::controller::BleConnector;
|
||||
use esp_rtos::embassy::Executor;
|
||||
use esp_storage::FlashStorage;
|
||||
use log::{LevelFilter, error, info};
|
||||
use rmk::channel::EVENT_CHANNEL;
|
||||
use log::{LevelFilter, error, info, warn};
|
||||
use rmk::channel::{CONTROLLER_CHANNEL, ControllerSub};
|
||||
use rmk::config::{BehaviorConfig, PositionalConfig, RmkConfig, StorageConfig, VialConfig};
|
||||
use rmk::controller::{Controller, EventController};
|
||||
use rmk::debounce::default_debouncer::DefaultDebouncer;
|
||||
use rmk::embassy_futures::yield_now;
|
||||
use rmk::event::{ControllerEvent, KeyboardEvent};
|
||||
use rmk::hid::Report;
|
||||
use rmk::input_device::Runnable;
|
||||
use rmk::{join_all};
|
||||
use rmk::join_all;
|
||||
use rmk::keyboard::Keyboard;
|
||||
use rmk::storage::async_flash_wrapper;
|
||||
use rmk::types::action::{Action, KeyAction};
|
||||
use rmk::types::keycode::KeyCode;
|
||||
use rmk::{initialize_keymap_and_storage, run_devices, run_rmk};
|
||||
use slint::platform::software_renderer::Rgb565Pixel;
|
||||
use slint::ComponentHandle;
|
||||
|
|
@ -57,7 +67,7 @@ use {esp_alloc as _, esp_backtrace as _};
|
|||
use crate::matrix::IoeMatrix;
|
||||
use crate::peripherals::st7701s::St7701s;
|
||||
use crate::ui::backend::{FramebufferPtr, SlintBackend};
|
||||
use crate::vial::{VIAL_KEYBOARD_DEF, VIAL_KEYBOARD_ID};
|
||||
use crate::vial::{VIAL_KEYBOARD_DEF, VIAL_KEYBOARD_ID, CustomKeycodes};
|
||||
|
||||
mod keymap;
|
||||
mod matrix;
|
||||
|
|
@ -163,7 +173,7 @@ async fn main(_spawner: Spawner) {
|
|||
// Enable the TRNG source, so `Trng` can be constructed.
|
||||
let _trng_source = TrngSource::new(peripherals.RNG, peripherals.ADC1);
|
||||
let mut rng = esp_hal::rng::Trng::try_new().unwrap();
|
||||
static RADIO: StaticCell<Controller<'static>> = StaticCell::new();
|
||||
static RADIO: StaticCell<RadioController<'static>> = StaticCell::new();
|
||||
let radio = RADIO.init(esp_radio::init().unwrap());
|
||||
let bluetooth = peripherals.BT;
|
||||
let connector = BleConnector::new(radio, bluetooth, Default::default()).unwrap();
|
||||
|
|
@ -313,12 +323,31 @@ async fn main(_spawner: Spawner) {
|
|||
},
|
||||
);
|
||||
|
||||
let hid_report_proxy_task = {
|
||||
static KEYBOARD_REPORT_PROXY: Channel<CriticalSectionRawMutex, Report, 16> = Channel::new();
|
||||
|
||||
{
|
||||
*rmk::channel::KEYBOARD_REPORT_SENDER.write().await = &KEYBOARD_REPORT_PROXY;
|
||||
}
|
||||
|
||||
async {
|
||||
loop {
|
||||
let report = KEYBOARD_REPORT_PROXY.receive().await;
|
||||
|
||||
info!("Intercepted HID report: {report:?}");
|
||||
rmk::channel::KEYBOARD_REPORT_RECEIVER.send(report).await;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let mut user_controller = UserController::new();
|
||||
|
||||
join_all![
|
||||
// We currently send the framebuffer data using the main core, which does not seem to slow
|
||||
// down the rest of the tasks too much.
|
||||
run_lcd(st7701s, framebuffer),
|
||||
run_devices! (
|
||||
(matrix) => EVENT_CHANNEL,
|
||||
(matrix) => rmk::channel::EVENT_CHANNEL,
|
||||
),
|
||||
keyboard.run(), // Keyboard is special
|
||||
run_rmk(
|
||||
|
|
@ -330,11 +359,43 @@ async fn main(_spawner: Spawner) {
|
|||
&mut storage,
|
||||
rmk_config,
|
||||
),
|
||||
hid_report_proxy_task,
|
||||
user_controller.event_loop(),
|
||||
alt_uart_rx_task
|
||||
]
|
||||
.await;
|
||||
}
|
||||
|
||||
struct UserController {
|
||||
sub: ControllerSub,
|
||||
}
|
||||
|
||||
impl UserController {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
sub: CONTROLLER_CHANNEL.subscriber().unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Controller for UserController {
|
||||
type Event = ControllerEvent;
|
||||
|
||||
async fn process_event(&mut self, event: Self::Event) {
|
||||
if let ControllerEvent::Key(keyboard_event, KeyAction::Single(Action::Key(keycode))) = event && (KeyCode::Kb0..=KeyCode::User31).contains(&keycode) {
|
||||
warn!("{keycode:?} pressed.");
|
||||
|
||||
if keycode as u16 == CustomKeycodes::FOCUS_LCD as u16 {
|
||||
warn!("Focus LCD pressed.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn next_message(&mut self) -> Self::Event {
|
||||
self.sub.next_message_pure().await
|
||||
}
|
||||
}
|
||||
|
||||
#[embassy_executor::task]
|
||||
async fn run_renderer_task(backend: SlintBackend) {
|
||||
slint::platform::set_platform(Box::new(backend))
|
||||
|
|
@ -410,82 +471,12 @@ impl Framebuffer {
|
|||
}
|
||||
}
|
||||
|
||||
// impl DrawTarget for Framebuffer {
|
||||
// type Color = Rgb565;
|
||||
// type Error = ();
|
||||
|
||||
// fn draw_iter<I>(&mut self, pixels: I) -> Result<(), Self::Error>
|
||||
// where
|
||||
// I: IntoIterator<Item = Pixel<Self::Color>>,
|
||||
// {
|
||||
// let buffer = bytemuck::try_cast_slice_mut::<_, u16>(self.dma_buf.as_mut_slice()).unwrap();
|
||||
|
||||
// for Pixel(coord, color) in pixels.into_iter() {
|
||||
// // Check if the pixel coordinates are out of bounds.
|
||||
// // `DrawTarget` implementation are required to discard any out of bounds
|
||||
// // pixels without returning an error or causing a panic.
|
||||
// if coord.x >= 0
|
||||
// && coord.x < self.width as i32
|
||||
// && coord.y >= 0
|
||||
// && coord.y < self.height as i32
|
||||
// {
|
||||
// let index = coord.x as usize + coord.y as usize * self.width as usize;
|
||||
// buffer[index] = RawU16::from(color).into_inner();
|
||||
// }
|
||||
// }
|
||||
|
||||
// Ok(())
|
||||
// }
|
||||
// }
|
||||
|
||||
#[embassy_executor::task]
|
||||
async fn run_lcd_task(st7701s: St7701s<'static, Blocking>, framebuffer: &'static mut Framebuffer) {
|
||||
run_lcd(st7701s, framebuffer).await
|
||||
}
|
||||
|
||||
async fn run_lcd(mut st7701s: St7701s<'static, Blocking>, framebuffer: &'static mut Framebuffer) {
|
||||
// const PADDING_LEFT: usize = 121;
|
||||
// const PADDING_RIGHT: usize = 7;
|
||||
// const COLORS_WIDTH: usize = 240;
|
||||
// const COLORS_HEIGHT: usize = 960;
|
||||
|
||||
// const MAX_RED: u8 = (1 << 5) - 1;
|
||||
// const MAX_GREEN: u8 = (1 << 6) - 1;
|
||||
// const MAX_BLUE: u8 = (1 << 5) - 1;
|
||||
|
||||
// fn rgb(r: u8, g: u8, b: u8) -> u16 {
|
||||
// (((r & MAX_RED) as u16) << 11) | (((g & MAX_GREEN) as u16) << 5) | ((b & MAX_BLUE) as u16)
|
||||
// }
|
||||
|
||||
// fn row(edge: u16) -> impl Iterator<Item = u16> + Clone {
|
||||
// chain![
|
||||
// core::iter::repeat_n(rgb(0, 0, 0xFF), PADDING_LEFT),
|
||||
// core::iter::once(rgb(0xFF, 0xFF, 0xFF)),
|
||||
// core::iter::repeat_n(edge, COLORS_WIDTH - 2),
|
||||
// core::iter::once(rgb(0xFF, 0xFF, 0xFF)),
|
||||
// core::iter::repeat_n(rgb(0, 0, 0xFF), PADDING_RIGHT),
|
||||
// ]
|
||||
// }
|
||||
|
||||
// let mut colors = chain![
|
||||
// row(rgb(0xFF, 0, 0)),
|
||||
// core::iter::repeat_n(row(0), COLORS_HEIGHT - 2).flatten(),
|
||||
// row(rgb(0xFF, 0xFF, 0)),
|
||||
// ];
|
||||
|
||||
// const BUFFER_LEN: usize = core::mem::size_of::<u16>()
|
||||
// * (360 + /* TODO: Figure out why more bytes are needed: */ 8)
|
||||
// * 960;
|
||||
|
||||
// {
|
||||
// for (chunk, color) in dma_buf.as_mut_slice().chunks_mut(2).zip(&mut colors) {
|
||||
// chunk.copy_from_slice(&color.to_le_bytes());
|
||||
// }
|
||||
|
||||
// info!("chunk addr: {}", dma_buf.as_slice().as_ptr() as usize);
|
||||
// // colors.next(); // Shift colors
|
||||
// }
|
||||
|
||||
loop {
|
||||
// Timer::after(Duration::from_millis(100)).await;
|
||||
// yield_now().await;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,48 @@
|
|||
"rows": 5,
|
||||
"cols": 12
|
||||
},
|
||||
"customKeycodes": [
|
||||
{
|
||||
"name": "BT0",
|
||||
"title": "Bluetooth Channel 0",
|
||||
"shortName": "BT0"
|
||||
},
|
||||
{
|
||||
"name": "BT1",
|
||||
"title": "Bluetooth Channel 1",
|
||||
"shortName": "BT1"
|
||||
},
|
||||
{
|
||||
"name": "BT2",
|
||||
"title": "Bluetooth Channel 2",
|
||||
"shortName": "BT2"
|
||||
},
|
||||
{
|
||||
"name": "NEXT_BT",
|
||||
"title": "Switch to the next Bluetooth channel",
|
||||
"shortName": "Next\nBT"
|
||||
},
|
||||
{
|
||||
"name": "PREV_BT",
|
||||
"title": "Switch to the previous Bluetooth channel",
|
||||
"shortName": "Prev\nBT"
|
||||
},
|
||||
{
|
||||
"name": "CLR_BT",
|
||||
"title": "Clear bond info for current channel",
|
||||
"shortName": "Clear\nBT"
|
||||
},
|
||||
{
|
||||
"name": "SWITCH",
|
||||
"title": "Switch default output mode between USB/BLE",
|
||||
"shortName": "Switch\nOutput"
|
||||
},
|
||||
{
|
||||
"name": "FOCUS_LCD",
|
||||
"title": "Focus LCD",
|
||||
"shortName": "Focus\nLCD"
|
||||
}
|
||||
],
|
||||
"layouts": {
|
||||
"keymap": [
|
||||
[
|
||||
|
|
|
|||
Loading…
Reference in a new issue