New Compact Beamspring controller available

pandrew

13 Sep 2020, 03:54

n20200913_032641.jpg
n20200913_032641.jpg (3.17 MiB) Viewed 2942 times
This design is based on the TH Xwhatsit ( viewtopic.php?t=23406 ) except it uses mostly SMD components that can be assembled by JLCPCB. This is a trimmed down version that only supports 'standard' beamspring keyboards (the ones that are also supported by the original xwhatsit beamspring-usb pcbs). Displaywriter/Beamship are currently only supported by the TH. And Model Fs are supported by the TH, and also by the SMD Model F controllers: viewtopic.php?f=7&t=24597 )

You can get this controller in one of the following ways:
  1. Get it from me fully assembled
  2. Get it from JLCPCB semi-assembled, and you solder the card edge connector, the Pro Micro, 90degree 2x3pin header, and ground wire.
The design is available in the following repository: https://github.com/purdeaandrei/CompactBeamSpring
These boards at the moment only support QMK firmware for xwhatsit controller, and don't support original xwhatsit firmware. (Which is not an issue, especially because QMK firmware has superior stability)
The QMK firmware variant that supports these keyboards is "/universal" (used to be "/through_hole", but renamed).
Please PM me for details about the QMK firmware (currently running in closed beta).

Option 1. Get it from me
  1. Contact me in PM to check if I still have enough on stock, and to reserve the controller(s) for you.
  2. When I give you the go-ahead, donate 30 USD * (number of beamspring controller(s)) to MS Research Australia via the following link: https://kissgoodbyetoms.org/fundraiser/ ... undraiser/
    * Note: The website is Australian, and donation amounts are in AUD (even though all it says is "$", so it's a bit confusing), so please check the exchange rate. At the time of writing 30 USD is around 42 AUD.
    * Note2: I am not affiliated with this charity, I see none of this money, and I've never been in Australia. I have picked this charity because I have acquaintances suffering from MS, this organization seem to be collecting money exclusively for research, and I can set up this convenient fundraiser website, where I can keep track of anyone who donated for this purpose.
    * Note3: Please do not donate before I give you the go-ahead. I may not have enough boards on stock, or if I do they may not be assembled and waiting for components to be delivered. If you donate without me giving you the go-ahead I can not guarantee to ship your boards.
  3. Let me know when your donation successfully went through, so I can check, and PM me your shipping address.
  4. I will send you, as a thank you, Compact Beamspring controller(s).
  5. Note: for all of the boards I send out I do this procedure to make the card edge connectors reliable: viewtopic.php?f=7&t=24511 These card edge connectors will be much more reliable than unmodified ones, and will not require sheets of paper to be inserted on the sides (like non-modded connectors sometimes require). Also be aware that it will require considerable force the mount, and unmount the controllers, similar to untouched original controllers.
Option 2. Get it from JLCPCB partially assembled
Please expand the spoilers below to learn about how to order from JLCPCB:
Spoiler:
Option 2 makes more financial sense if you need more than 3 controllers, or after I run out of all stock.
You will find all the files you need to order partially assembled boards from JLCPCB in the above github link.
The main design lives in the CompactBeamspring folder, but while this design PCB can be built, it cannot be assembled, because JLCPCB assembly has miminum size requirements that we don't meet.

In order to meet the minimum size requirements, the following panelized designs are available:
  • CompactBeamspringP1 -- It's a panel of 1 board, adds some extra throw-away padding that can be broken off after assembly. This one is only useful if building 5 boards.
  • CompactBeamspringP2 -- this is a panel of 2 boards, rotated to occupy space efficiently. Use this if you are building 10 or more boards.
Make sure that all parts are in stock by checking out this webpage: http://purdea.ro/mon/bom.php?bid=0

To order from JLCPCB, please follow these steps:
  1. Go to jlcpcb.com
  2. Sign in to your account
  3. Go to Quote Now / Order Now
  4. Upload CompactBeamspringP[12]/CompactBeamspringP[12].zip
  5. Select PCB Qty
  6. If building the P2 variant, select Panel by Customer, and Panel Format x = 1 y = 2
  7. Remove Order Number set to Specify a location
  8. Leave all other PCB settings at default.
  9. Scroll down SMT Assembly and turn it on
  10. Select “Assemble bottom side”
  11. Tooling holes: select Added by Customer
  12. Confirm
  13. Click Add BOM File, and upload the file from CompactBeamspringP[12]/CompactBeamspringP[12]_bom_jlc.csv
  14. Click Add CPL File, and upload the file from CompactBeamspringP[12]/CompactBeamspringP[12]_cpl_jlc.csv
  15. Click Next
  16. Make sure that all parts say "Confirmed" with a little check box in the final column. If it shows a greyed-out "confirm", then some parts may be out of stock. (If parts are out of stock then your options are Wait until it's back in stock / Find equivalent replacement with correct footprint, if it is in the JLCPCB parts library / Redesign the board with a different component / Order the missing part from another supplier and solder it yourself )
  17. Click Next
  18. Double check there’s nothing in the Unselected Parts. Double check the component placement looks roughly right. It is okay if R6, R7, and R8 are not placed. (The version at the time of writing doesn’t have these populated)
  19. Save to Cart, Checkout securely
You will also need to order the following additional components: Cost Analysis, showing 2 examples, Prices valid only at the time of writing:
-- not counting further costs such as soldering labor, modding the card edge connector for added tightness labor, soldering consumables, grounding crimp wire.
  1. Almost lowest possible quantity [5pcs]: (note: it's also possible to order 5pcbs, but have only 2 assembled by JLCPCB. This option is not considered here, only the 5pcs all 5 boards assembled option is considered)
    1. JLCPCB PCB + Assembly of most components (this is using the P1 panel) = 41.09 USD
    2. 6 pcs 72-pin Type B Card edge connectors = 8.64 USD ( you only need 5, but the multiplier is 3 in the above aliexpress link)
    3. 10 pcs 90degree 2x3pin headers = 1.02 USD (you only need 5, but the multiplier in the above aliexpress link is 10)
    4. 5 pcs 5V 16MHz Pro Micros = 12.95 USD
    5. Shipping (Estimated) for all orders. May be different depending on country. = 37.84 USD
    So at the time of writing you could build 5 pieces for around 102 USD, but higher amounts have much better economies of scale.
  2. Quantity of 30
    1. JLCPCB PCB + Assembly of most components 15 * using the P2 panel, for a total of 30pcs = 95.5 USD
    2. 30pcs 72-pin Type B Card edge connectors = 43.2 USD
    3. 30pcs 90-degree 2x3pin headers = 3.06 USD
    4. 30pcs pro micros = 77.7 USD
    5. Shipping (Estimated) for all orders. May be different depending on country. = 37.84 USD
    So at the time of writing you could build 30 pieces for around 258 USD, but keep in mind that there is a lot of manual labor involved with soldering, cutting connectors, bending pins for high reliability, etc...
Final assembly, if you order partially assembled from JLCPCB
  • First I recommend following this guide in order to mod the Card Edge connectors to be properly tight:
    viewtopic.php?f=7&t=24511
  • On this design the card edge connector pins have to be bent 90 degrees for through-hole mounting. Bend the bottom row first:
    (NOTE: These images are for illustrative purposes only. These are not the same card edge connectors that ship from AliExpress)
    20200812_173056.jpg
    20200812_173056.jpg (66.06 KiB) Viewed 2942 times
    Then bend the top row:
    20200812_173113.jpg
    20200812_173113.jpg (73.1 KiB) Viewed 2942 times
    Then insert the connector in the holes (may require a little bit of wiggling to get all pins through),
    and solder both the pins poking through on the other side, and also add solder to connect the top and bottomg rows:
    20200812_173139.jpg
    20200812_173139.jpg (65.82 KiB) Viewed 2942 times
  • For the solenoid connector please make sure that you use 90-degree pin headers, because some beamsprings such as the 3101 don't have enough space for the vertical pin headers, due to the dip switch cage on the top case.
  • The Pro Micros can be soldered with or without pin headers. For the first batch I chose to solder them without, and paid fine attention to how the solder was wicked between the drill holes. If you are not confident with your soldering skills I recommend you use pin headers.
    See the final spoilers from this post for ideas about how to cut the long side of the pin headers: viewtopic.php?p=472661#p472661
  • the J1 pads on the Pro Micros MUST be shorted.
Mounting on keyboard
  • The right side of the card edge connector has a wider hole then where the sense PCB ends, so when mounting it please don't align the edge of the hole in the plastic with the sense PCB, but instead please align the pin centers. Furthermore I recommend aligning the center pin of the connector with the center pin of the sense PCB for best alignment.
  • If the connector pins are modded like described here: viewtopic.php?f=7&t=24511 (all of the boards I send out are modded), then the connectors will be much more reliable, but also the connectors will be pretty tight, and will require significant force to slide onto the sense PCB, and to remove it. When removing it, I recommend grabbing the connector plastic corner that is close to the grounding wire, with needle nose pliers, and pulling with those. The forces you need to use to will be pretty high, but as long as you keep the forces in the same plane as the sense PCB, there is no danger.
Sister Projects:
Last edited by pandrew on 24 Jan 2021, 02:03, edited 28 times in total.

User avatar
LightningXI

13 Sep 2020, 04:09

Absolutely amazing work done here. QMK support for Beamspring is a godsend. I have been waiting a very long time to restore mine and this is a great time to grab a controller.

PMing for a preassembled one and for a donation (of course).

Are solenoid controllers a separate ordeal? Are there plans as well?

In any case, this is great!!

pandrew

13 Sep 2020, 04:19

LightningXI wrote:
13 Sep 2020, 04:09
Are solenoid controllers a separate ordeal? Are there plans as well?
An as of yet untested design that is JLCPCB assemblable has been drawn for a solenoid controller, but it has not been ordered yet, and it will take some time to test it and iron out the bugs once we do.

Also I can already hear the same question coming in about model F and displaywriter. There was some work on this but a design is not complete yet, no ETA. In the meantime the TH design supports those, except it still needs some tweaks to the layout of the plugboards. People have used the TH design in model Fs, but the experience wasn't yet as smooth as possible, when it comes to soldering wires / positioning the TH controller in the little space available in smaller Fs. Some people have elected to skip the plugboard, and solder wires directly to the controller board.

Andrei

User avatar
LightningXI

13 Sep 2020, 04:29

Thanks for the informative response, Andrei.

I will be looking to use one of these to restore a 3278, so I very much look forward to it. I will be sure to support you and the rest of the team's work when a solenoid controller is ready. In no rush but very glad that this is moving forward nonetheless.

User avatar
Redmaus
Gotta start somewhere

13 Sep 2020, 19:22

Great work Andrei, too bad my 3101 is already converted. Can't wait for the model F variants to come!

pandrew

30 Sep 2020, 13:15

Update:
1) Model F controller design available (not yet built, but very likely that it will work out-of-the-box)
viewtopic.php?f=7&t=24597
2) Solenoid driver design available: (not yet built, likelyhood of the first revision working out-of-the-box is lower then for the Model F controller)
viewtopic.php?f=7&t=24598

pandrew

08 Oct 2020, 00:52

Hey guys, I have a few updates:

1) I have got a new batch of card edge connectors, and noticed that there are two types. See the difference on the latest posts from here: viewtopic.php?f=7&t=24511&p=472660
At the time of writing I have 5 boards with light blue connectors on stock, and 12 board with dark blue connectors.
I will send out the light blue ones first (which I consider better), unless you ask for dark blue.
All the boards sent out so far were of the light blue connector variety.

2) I got a new batch of cheaper Pro Micros from this aliexpress listing: EDIT: they raised their prices, you might find cheaper elsewhere! ttps://www.aliexpress.com/item/4000087265549.h ... 4c4dMsOo6X
All the 5 Pro Micros I tested from this batch appear to be perfectly fine, the only slightly weird thing I noticed is that the slikscreen says "pro Mlcro" with an "L" rather then "Pro Micro", but that won't affect functionality.
Spoiler:
pro_mlcro.jpg
pro_mlcro.jpg (32.05 KiB) Viewed 2485 times
3) So far I have send out boards on which the pro micro is soldered directly to the mainboard, without pinheaders, by allowing the solder to wick through the perfectly lined up holes. I did this mainly because the pin headers the Pro Micros came with were the kind that are longer on one side, and soldering with them directly, the pins would have been way too tall on the top, or if trimming them, I didn't have a way to trim them evenly, so the result would have been ugly.

However I found a way to trim them more or less evenly with my existing tools, so new boards will all be soldered with pin headers. (I think this way it will be easier to desolder, if you need to change the Pro Micro after an accident with a broken off USB port.)

Expand the spoilers below if you want to see pictures of how I trim the pin headers:
Spoiler:
1) I made myself a spacer from FR4 perfboard. (don't use the paper laminated stuff because it's too brittle)
pin_header_and_spacer_from_fr4_perf_board.jpg
pin_header_and_spacer_from_fr4_perf_board.jpg (1.41 MiB) Viewed 2485 times
2) Put the long side into the spacer
pinheader_long_side_inserted_in_spacer.jpg
pinheader_long_side_inserted_in_spacer.jpg (1.37 MiB) Viewed 2485 times
3) Feed the pins through the sheet metal cutting scissors. Make sure the spacer touches the blades at around 45 degres. While closing the blades, apply light pressure to the pin header, to make sure the pins don't pop out of the spacer, and that the spacer keeps touching the sides of the blades.
sheet_metal_cutting_scissors.jpg
sheet_metal_cutting_scissors.jpg (1.16 MiB) Viewed 2485 times
trimmed_pins_with_spacer.jpg
trimmed_pins_with_spacer.jpg (1.56 MiB) Viewed 2485 times
This results in a more-or-less uniform trim
trimmed_pins_after_spacer_removed.jpg
trimmed_pins_after_spacer_removed.jpg (1.62 MiB) Viewed 2485 times
Last edited by pandrew on 07 Nov 2020, 02:22, edited 1 time in total.

pandrew

19 Oct 2020, 05:16

Hello all,

Please be aware that I have pushed changes to rename the "through_hole" firmware to "universal".
This compact beampring controller is now supported by the QMK firmware variant called "universal"
If you upgrade your firmware you will also need to re-download or re-compile the host-side "util", for it to recognize the new name.
Also, the debounce algorithm has been changed to per-key for all keyboards.

Jacobalbertus1

25 Oct 2020, 19:57

once Andrei is done selling these I will have some stock I will also have solenoid drivers for these and the model f ones as well

User avatar
ramnes
ПБТ НАВСЕГДА

26 Oct 2020, 22:29

I guess it does not support Displaywriter keyboards?

Edit: Oof, looks like it is from the original TH Xwhatsit post! PMing you now.

pandrew

27 Oct 2020, 05:25

No, sorry, these don't support Displaywriter.
These are a trimmed-down version of the original TH. These only support 'standard' beamspring keyboards, the same ones that are supported by xwhatsit's original beamspring-usb pcbs.
But the TH does support displaywriter, and there is at least one person using it with Displaywriter, who transplanted the original connector onto the TH displaywriter daughterboard. (And there is some pending work to support other connectors too). I've PMed you with more details.

User avatar
lucar

27 Oct 2020, 16:28

Hi,
awsome work!

I'm in the process of restoring an IBM 3276 keyboard (wiki/File:3276.jpg) and I wish to convert it to usb; as far as I understand Your design is compatible with these keyboards, can You confirm it ?

Thanks
Luca

kmnov2017

27 Oct 2020, 16:28

lucar wrote:
27 Oct 2020, 16:28
Hi,
awsome work!

I'm in the process of restoring an IBM 3276 keyboard (wiki/File:3276.jpg) and I wish to convert it to usb; as far as I understand Your design is compatible with these keyboards, can You confirm it ?

Thanks
Luca
It is...

User avatar
lucar

29 Oct 2020, 16:55

Thanks :)))

User avatar
ro0llo

29 Oct 2020, 17:24

This is great, just was in need for 2 of these and this is way more affordable then original xwhatsit stuff. Love QMK on my brand new model F. Pbed you.

User avatar
dcopellino

29 Oct 2020, 22:02

lucar wrote:
27 Oct 2020, 16:28
Hi,
awsome work!

I'm in the process of restoring an IBM 3276 keyboard (wiki/File:3276.jpg) and I wish to convert it to usb; as far as I understand Your design is compatible with these keyboards, can You confirm it ?

Thanks
Luca
Hi Luca, did you get on Italy eBay auction, just few days ago? Nice catch man.

User avatar
lucar

31 Oct 2020, 12:14

dcopellino wrote:
29 Oct 2020, 22:02
lucar wrote:
27 Oct 2020, 16:28
Hi,
awsome work!

I'm in the process of restoring an IBM 3276 keyboard (wiki/File:3276.jpg) and I wish to convert it to usb; as far as I understand Your design is compatible with these keyboards, can You confirm it ?

Thanks
Luca
Hi Luca, did you get on Italy eBay auction, just few days ago? Nice catch man.
No , these come from a demolition center, I had to rebuild everything, they were just a pile of rust, I'll publish a video about the restoration but I'm non quite at the finish line yet.
:)
Luca

User avatar
dcopellino

01 Nov 2020, 11:30


No , these come from a demolition center, I had to rebuild everything, they were just a pile of rust, I'll publish a video about the restoration but I'm non quite at the finish line yet.
:)
Luca
THESE!!!! WOW, let me know if there could be any chance to acquire one for me, I might be of some help, I don't know, bringing some coffee for instance.... Lol
Ciao
Dario

User avatar
lucar

01 Nov 2020, 18:02

dcopellino wrote:
01 Nov 2020, 11:30

No , these come from a demolition center, I had to rebuild everything, they were just a pile of rust, I'll publish a video about the restoration but I'm non quite at the finish line yet.
:)
Luca
THESE!!!! WOW, let me know if there could be any chance to acquire one for me, I might be of some help, I don't know, bringing some coffee for instance.... Lol
Ciao
Dario
Yes, I found "some", half of them will be sacrified to restore the others. I'm sorry I have no one to sell/trade, it's been a joint effort with some friends and keyboards are all assigned. I'm working at the restoration since one year ago , the conditions of these keyboards were beyond any imagination but it's worth the work.

Did You join our italian mechanical keyborads group on Telegram and Discord?

Luca

pandrew

02 Nov 2020, 02:26

Hey guys! An update:

It recently came to my attention that some 327x/3101 keyboards have assymetric card edge fingers, meaning the depth is different. This is a view from the bottom:
3276_assymetric_card_edge_connector.png
3276_assymetric_card_edge_connector.png (167.46 KiB) Viewed 1683 times
So the rows side (the right side when you look from on top of the keyboard) is shorter.
If you use a connector that has not been cut to account for this it looks like this, and you have to pay attention, not to push down too much the left side:
327x_keyboard_only_pushing_controller_as_far_as_the_righ_side_allows.jpg
327x_keyboard_only_pushing_controller_as_far_as_the_righ_side_allows.jpg (29.45 KiB) Viewed 1683 times
lucar suggested to cut slots in the conntector in the rows side:
slot_cut.jpg
slot_cut.jpg (34.58 KiB) Viewed 1683 times
I believe that this is the right solution for two reasons:
1) The IBM 5251 doesn't have these assymetric card edges, so the IBM 5251 will go a lot deeper into the connector, and as such getting a better connection, electrically and better mechanical stability.
2) The original connector also has slots cut out on the edges. This is from an 5251, but I think it's likely that the 327x keyboards will use the same connector:
original.jpg
original.jpg (116.73 KiB) Viewed 1683 times
All the compact beamspring controllers shipped out from now on will have this slot cut in the connector.
All the compact beamspring controllers shipped out before 1 Nov don't have such a slot cut out. So if using 327x/3101 keyboards, I recommend doing this cut on your controller. Be careful not to damange the pins or the grounding wire, while making the cut.

If you are building compact beamspring controllers from scratch, and modding the connectors following this guide: viewtopic.php?f=7&t=24511 Then I am recommending to cut the slots before putting back the pins, to avoid any damage.

Thanks tenator, and lucar for testing and recommendations.

User avatar
lucar

04 Nov 2020, 14:56

pandrew wrote:
02 Nov 2020, 02:26
Hey guys! An update:

It recently came to my attention that some 327x/3101 keyboards have assymetric card edge fingers, meaning the depth is different. This is a view from the bottom:
3276_assymetric_card_edge_connector.png
So the rows side (the right side when you look from on top of the keyboard) is shorter.
If you use a connector that has not been cut to account for this it looks like this, and you have to pay attention, not to push down too much the left side:
327x_keyboard_only_pushing_controller_as_far_as_the_righ_side_allows.jpg
lucar suggested to cut slots in the conntector in the rows side:
slot_cut.jpg
I believe that this is the right solution for two reasons:
1) The IBM 5251 doesn't have these assymetric card edges, so the IBM 5251 will go a lot deeper into the connector, and as such getting a better connection, electrically and better mechanical stability.
2) The original connector also has slots cut out on the edges. This is from an 5251, but I think it's likely that the 327x keyboards will use the same connector:
original.jpg

All the compact beamspring controllers shipped out from now on will have this slot cut in the connector.
All the compact beamspring controllers shipped out before 1 Nov don't have such a slot cut out. So if using 327x/3101 keyboards, I recommend doing this cut on your controller. Be careful not to damange the pins or the grounding wire, while making the cut.

If you are building compact beamspring controllers from scratch, and modding the connectors following this guide: viewtopic.php?f=7&t=24511 Then I am recommending to cut the slots before putting back the pins, to avoid any damage.

Thanks tenator, and lucar for testing and recommendations.
I confirm that 3276 connectors are slotted, here are pictures of the controller itself:

Image
Image
Image
Image

Luca

cheater

14 Dec 2020, 04:13

pandrew wrote:
13 Sep 2020, 03:54

This design is based on the TH Xwhatsit
Hi,
is there a version of the xwhatsit code that works with the arm version? Have you committed it back to the qmk repository? I'd like to build an xwhatsit based on stm for my beamspring and my F, but I'm not really sure where to start, and this looks like a great start.

pandrew

14 Dec 2020, 04:50

cheater wrote:
14 Dec 2020, 04:13
is there a version of the xwhatsit code that works with the arm version?
As it is, it won't work on non-avr architectures, because it uses inline assembly to precisely control the time elapsed between when the column strobe is triggered, and when the rows are sampled. However you can write your own STM32 inline assembly if you wish.
cheater wrote:
14 Dec 2020, 04:13
Have you committed it back to the qmk repository?
Not yet, as mentioned in the top post, it's still closed beta, I'll send you a PM with the code and documentation.
cheater wrote:
14 Dec 2020, 04:13
I'd like to build an xwhatsit based on stm
May I ask what the motivation is?

PS, if anyone was wondering, I still have 5pcs on stock.

Andrei

cheater

14 Dec 2020, 05:02

pandrew wrote:
14 Dec 2020, 04:50
cheater wrote:
14 Dec 2020, 04:13
I'd like to build an xwhatsit based on stm
May I ask what the motivation is?
I know I'll be tinkering with it a lot, and I'm a programmer, and already know a few features I'd like to add, so might as well go for the less limiting hardware, since atmel is already ripping at the seams if you want a more beefy config. Thanks for the pm! I'm new to xwhatsit and qmk. Is your project the only xwhatsit port to qmk, or are there other ones? I am still discovering how this all works.

pandrew

14 Dec 2020, 05:13

cheater wrote:
14 Dec 2020, 05:02
Is your project the only xwhatsit port to qmk, or are there other ones?
As far as I know it's the only one.

The only other technology that can drive Beamspring / Model F keyboards, that I know of, is DMA's Common Sense. I believe that it uses a Cypress psoc, and that there's an ARM in it. And doesn't use the same theory of operation as xwhatsit, the analog circuitry is different, and embedded in the Cypress psoc. However I don't know much else about it. Doesn't run QMK, and as far as I know the toolchain for the psoc is proprietary (since the chip is very FPGA-like in its features) and can not be run on Linux.

Andrei

cheater

14 Dec 2020, 08:58

pandrew wrote:
14 Dec 2020, 05:13
cheater wrote:
14 Dec 2020, 05:02
Is your project the only xwhatsit port to qmk, or are there other ones?
As far as I know it's the only one.

The only other technology that can drive Beamspring / Model F keyboards, that I know of, is DMA's Common Sense. I believe that it uses a Cypress psoc, and that there's an ARM in it. And doesn't use the same theory of operation as xwhatsit, the analog circuitry is different, and embedded in the Cypress psoc. However I don't know much else about it. Doesn't run QMK, and as far as I know the toolchain for the psoc is proprietary (since the chip is very FPGA-like in its features) and can not be run on Linux.

Andrei
Thanks. I'm guessing your code is on the qmk controller for the newly produced Model F's, right? Good job on that, really.

pandrew

14 Dec 2020, 09:05

Yes, my code runs on all xwhatsits, even original xwhatsit boards, and on the "wcass" boards that are in the new Model F reproduction keyboards from Ellipse, and also I believe Ellipse switched over to sending out keyboards with my code by default.

Post Reply

Return to “Group buys”