- It is now possible to load external libraries by
require
andload
. See wiki/require
- Supported software SPI to run cocot46plus. See picoruby/prk_cocot46plus
- Now you can configure any device such as a trackball, touchpad, and joystick as a Mouse by taking advantage of hardware peripheral features like I2C, SPI, and ADC
- Currently, a Mouse instance on the partner half of a split-type keyboard does not work. We are investigating how to implement
- Because this Mouse feature is experimental, the API design may change during the implementation to make it work on both halves
- Take a good look at wiki/Mouse
- The name of the drive is changed from
PRKFirmware
toPRK DRIVE
keymap.rb
is no longer deleted on re-installing PRK's uf2- This re-implementation basically should not affect any other keyboard behaviors
- Although the drive's functionality is sanity, the host computer sometimes recognizes the drive name as
USB Drive
instead ofPRK DRIVE
. Send us a patch if you could fix it!
- The instability when start-up especially upgrading uf2 is fixed
- Hardware one-way UART on split-type is deprecated. Instead, software mutual UART is now the default and the only option
Keyboard#mutual_uart_at_my_own_risk=
no longer takes any effect
- An issue that PRK isn't recognized by macOS and iOS from version 0.9.15
- Sounder pitch might become correct than before but the author experiences somehow unstable behavior until now. Please ping us your opinion from an actual usage
- Update package database on Docker by @buty4649 in #145
- Fix build process by @hasumikin in #151
- Get rid of cdc_task() by @hasumikin in #146
- Take out Joystick report by @yswallow in #152
- Fix Sounder pitch issue by @yswallow in #153
- Fix: invalid key input when modifier press by @hasumikin in #154
See wiki/RGB Matrix.
See wiki/Sounder and wiki/Music Macro Languagel
You can arbitrarily inject a switch position of the matrix as if it was tapped.
See wiki/Keyboard#inject_switch.
See wiki/BIOS mode.
It now accepts multiple keycodes. Good for combining with rotary encoders. Check an example on wiki/Rotary encoder.
Version number, built date, and revision hash are shown on serial console at boot time.
The programming processing system, PicoRuby, upgraded from 3.0 to 3.1. This shouldn't affect any external behavior regarding keyboard (hopefully๐ค).
One beneficial thing to users is that the functionality of exceptions improved.
Let's say you mistakenly write kbd = Keyb_oard.new
, not kbd = Keyboard.new
, an error message will show on the serial console:
In such a situation, your keyboard doesn't work as a keyboard but the PRKFirmware storage drive keeps alive. Until version 0.9.16, the drive was unexpectedly unmounted and you might have difficulty rewriting your keymap.rb.
Again, we strongly recommend using a serial console when your keymap.rb doesn't work. See wiki/Debug print
- An issue related to "Startup time reducedโจ๐จ" issues/120
- An issue of RGB issue/122
- Improve serial console print that used to be often tangled
- [Experimental] Startup time reducedโจ๐จ
We really hope all guys try this version and report to us if there's a problem of any kind๐
- See wiki/Joystick
- Changeable default layer name. See wiki/Layers-and-mode-key#Changing-default-layer
- Suppress RGB random flicker on startup
- A bug that some alias keycodes didn't work issue/106
- Some fixes of VIA
- Now you can reboot RP2040 into BOOTSEL mode by pressing a key where you planted! See wiki/BOOTSEL mode of RP2040
- Introduces debounce feature. See wiki/Debounce for details
- The limitation of the maximum size of keymap.rb is lifted. Now it's 10KB (used to be 4KB)
- Fixed the issue on 0.9.12 again
- Fixed issues/52: Aliased keys like KC_SPC don't work in Keyboard#define_composite_key
- Fixed issues/66:
init_direct_pins
was broken in 0.9.11
Fixed some bugs that relate to mode key.See issue/49 for details
- Now we encourage you to make a duplex matrix keyboard with Seeed XIAO RP2040
Check details of the API here: https://github.com/picoruby/prk_firmware/wiki/Keyscan-matrix#duplex-and-round-robin-matrix
Now you can define a composite key that reports multiple keycodes at once.
Let's say there is a five-keys pad. You can make the most useful programming tool like this:
kbd.add_layer :default, %i(KC_SPACE CUT COPY PASTE KC_ENTER)
kbd.define_composite_key :CUT, %i(KC_LCTL KC_X)
kbd.define_composite_key :COPY, %i(KC_LCTL KC_C)
kbd.define_composite_key :PASTE, %i(KC_LCTL KC_V)
You can also write the equivalent keymap in this way:
kbd.add_layer :default, [ :KC_SPACE, [:KC_LCTL, :KC_X], [:KC_LCTL, :KC_C], [:KC_LCTL, :KC_V], :KC_ENTER ]
If you prefer to make an array of symbols with %i
syntax, the former should seem elegant.
If you don't mind typing more colons, commas, and nested brackets, the latter would be intuitive.
-
Some keyboards support direct scan. e.g. https://www.sho-k.co.uk/tech/1246.html
Now you can configure it as follow:kbd.set_scan_mode = :direct kbd.init_pins( [], [ 8, 27, 28, 29, 9, 26 ] )
or
kbd.init_direct_pins( [ 8, 27, 28, 29, 9, 26 ] )
- Multiple encoders can be configured on a unit๐
:RGB_xxx
keycodes work with encoders๐- The accuracy of rotation made a big improvement๐
- Some tiny bugs are fixed
keymap.rb
with CRLF line terminators now works
- RGB feature
- Keycodes like
:RGB_TOG
(to toggle the LED between on and off, for example) are added- See more details on wiki/RGB-feature
- You can set default values of an RGB instance in keymap.rb. eg)
rgb = RGB.new; rgb.speed
to change the speed of blinking- See also wiki/RGB-feature#in-your-keymaprb
- On a split type keyboard like CRKBD, LEDs of left and right will be synchronized when you enable "Mutual UART" (see below)
- Keycodes like
- Mutual UART communication on a split type keyboard on TRS (not TRRS) cable
- This experimental feature realizes
- Synchronized RGB blinking on both halves (anchor half and partner half)
- Keycodes like
:RGB_TOG
work also on the "partner half"
- See wiki/Mutual-UART-communication
- This experimental feature realizes
- Amend names of RGB.effect
- from
:rainbow
to:swirl
- from
:breathing
torainbow_mood
- from
- Some keycodes for Japanese keyboard added. See pull/31
- Improved startup stability. The startup time is increased, but be patient!
- Abbreviated keynames things like
KC_ENT
forKC_ENTER
can be used inkeymap.rb
. See bc23e52
-
You can see debug print on a USB serial port that will be helpful if your
keymap.rb
doesn't work well-
Configuration:
Baud: 115200 Data bits: 8 Parity: None Stop bits: 1 Flow control: None
-
-
Sparkfun Pro Micro RP2040 will reboot to BOOTSEL mode if you double-press RESET button without detaching USB cable!
- You no longer need any compiler toolchain!!!
- No longer detaching USB cable every time amending your keymap, too!!!
- See README.md ๐
- Code upgraded to correspond to the newest pico-sdk as of today. Please upgrade your pico-sdk
- Bump up PicoRuby to "mruby3 version"
- There is no external change though, if your keymap doesn't work, try to add
sleep 1
to the beggining of your keymap.rb
- Rotary Encoders ๐
- Find an example in prk_helix_rev3/keymap.rb
-
The second argument of
Keyboard#add_layer
Before the change:
Array[Array[Symbol]]
kbd.add_layer :default, [ %i(KC_ESCAPE KC_Q KC_W KC_E KC_R KC_T KC_Y KC_U KC_I KC_O KC_P KC_MINUS), %i(KC_TAB KC_A KC_S KC_D KC_F KC_G KC_H KC_J KC_K KC_L KC_SCOLON KC_BSPACE), ... ]
After the change:
Array[Symbol]
kbd.add_layer :default, %i( KC_ESCAPE KC_Q KC_W KC_E KC_R KC_T KC_Y KC_U KC_I KC_O KC_P KC_MINUS KC_TAB KC_A KC_S KC_D KC_F KC_G KC_H KC_J KC_K KC_L KC_SCOLON KC_BSPACE ... )
- CRuby (MRI) for static type checking by RBS and Steep
- Directory of Ruby source is changed from
src/
tosrc/ruby/
- RGB class ๐
- Published as a public beta ๐