Yes. Tabs and spaces are fine. scrd makes a bit of a messy file. A lot of stuff — ifset any, ifkeyboard any, etc. — is superfluous on the controller. You're seeing a lot of default values.
Posted: 09 Nov 2015, 21:22
by andrewjoy
Thanks for all your help now all i need to do is fix my T key as its a different style than the others and its too high and its doing my bloody head in.
Tempted to put my second APL set on it.
Posted: 23 Mar 2016, 21:59
by Crossfire
Hi folks,
I've modded a model m with soarer's in a pro micro atmega32u4 successfully, now I'm trying to do the same on a 88' cherry g80-1000had. As far as the connection goes, all four - data, clock, vcc and gnd are correctly connected. Pro micro is flashed with arduino builder, it's runnung on soarer's 1.11 version - again correctly and working.
When triggering the switches nothing happens, when testing led's in aqua test, they work.
Now, do I have to manually configure each switch or what's the key to configure the .sc file to work with this good old cherry board. Does anyone have an idea?
Posted: 23 Mar 2016, 22:12
by Halvar
You should not have to configure anything normally, as the G80-3000 has a standard layout. Can you post what hid_listen prints when you connect the converter (with keyboard connected) to the computer?
OK, that's what's expected. The keyboard is recognized to be an AT/PS2 model. In that case I've no idea what's wrong, sorry.
Do more "random" characters appear when you press keys?
If so:
Maybe you could try to send an empty config file? Was the ProMicro used before for something else?
If not:
Do you have another PS/2->USB converter or old computer that you could use to test if the keyboard is ok?
Posted: 24 Mar 2016, 18:10
by Crossfire
Spoiler:
Nothing registers when I'm pressing the switches...it all happens when I connect the board to a usb slot.
Guess I'll just solder on the old at/ps2 connector and test it out...don't have time to tinker with the straight forward problem of an 20$ board 4 hours yesterday was enough :/
edit: the pcb doesn't respond even with original at cable...so that's it i guess
edit II.: because I've changed the vintage blacks (another project) with new mx blues there was a problem but hidden from my eyes...until today putting the old diodes in the new switches solved my problem, soarers works flawlessly and the good old g80-1000 is back in the game, tailored to new age standards of programmability
Posted: 19 Jun 2016, 20:38
by NBRED
I've created my configuration files, and loaded your atmega32u4 firmware onto my teensy 2.0. I can't figure out how to use scas.exe to convert the configuration files to binary. I feel like I'm missing something fairly simple here. Thanks soarer for all your work in this firmware!
Posted: 19 Jun 2016, 20:48
by Crossfire
You just drop that .txt or .sc file into the scaswr batch file. Command line appears and if it successfully finishes you're done.
Posted: 19 Jun 2016, 20:52
by Nuum
Drag and drop your config onto the scaswr.bat in the file manager window.
Posted: 02 Sep 2016, 17:44
by Nuum
I'm trying to use Soarers Controller with a Teensy++ 2.0 for my IBM 5140 keyboard. I used the same config as copter did in his thread: workshop-f7/ibm-5140-convertible-conver ... ml#p282477
I adapted his code to my wiring, but when flashing with scaswr.bat I get an error message with scwr: "Sending information request: failed" or an "err 2: file not found on the device"
Does anyone have an idea why this happens?
I accidentally used D6 (Pin with LED), but that should affect the flashing, right?
Posted: 03 Sep 2016, 16:44
by Nuum
After desoldering the Teensy from the keyboard flashing with scaswr.bat works, but still only every third or so time. Odd.
Posted: 01 Oct 2016, 17:35
by solkoseryl
Nuum wrote: After desoldering the Teensy from the keyboard flashing with scaswr.bat works, but still only every third or so time. Odd.
Faulty Teensy, maybe?
Posted: 01 Oct 2016, 19:19
by Nuum
Most probably yes, in the meantime I tried flashing other firmwares and nothing works properly. It works for a few seconds after connecting and then crashes. So if I e.g. use Soarer's controller I can type for a few seconds and then keys get stuck randomly for a few more seconds before it completely stop working.
Any idea to somehow "reset" the teensy in case something is wrong with the bootloader or something?
Posted: 01 Oct 2016, 21:25
by solkoseryl
Have you tried to isolate the D6 pin from the rest of the scheme and take a look how everything will go in that case? Because I was told that using the LED pin could lead to instablility in the work of Teensy.
Posted: 01 Oct 2016, 21:37
by Nuum
Yup, I did.
Posted: 24 Nov 2016, 12:47
by alh84001
Forgive me if this has been asked, but an idea popped into my mind, and I want someone to squash it if it's not plausible.
I know this controller can be used with Bigfoot in conjunction with the original controller, as it basically has no logic on it. Did anyone attempt to do the same with Displaywriter boards (either beam spring or buckling spring) or even blue switch model Fs (3178)? I'm not sure if the same mechanism can be used as for Bigfoots, but my dumb reasoning is that cables and pin count is similar, so it might be possible.
I'm asking because it would be nice to skip the whole kerfuffle with getting a beam spring Displaywriter controller. I just converted my buckling spring Displaywriter and 3178 board yesterday using xwhatsit's controller and the ship has sailed on those
P.S. It begs repeating, Soarer is really missed.
Posted: 24 Nov 2016, 13:37
by alh84001
As opposed to Bigfoot which has parallel data lines, Displaywriter has a serial data line. I suppose this means that Soarer's controller can't be configured for that, but it doesn't rule out custom converter.
(Type A is beam spring, Type B is buckling spring)
Posted: 24 Nov 2016, 13:42
by Wodan
There's a user from Austria who has reverse engineered the soarer converter. Don't think he's taken on the soarer controller yet ...
His username is Arakula and he's been desperate to get in touch with Soarer as well. Maybe get in touch with him for more details
Posted: 24 Nov 2016, 13:43
by seebart
Wodan wrote: There's a user from Austria who has reverse engineered the soarer converter. Don't think he's taken on the soarer controller yet ...
His username is Arakula and he's been desperate to get in touch with Soarer as well. Maybe get in touch with him for more details
Great idea.
Posted: 24 Nov 2016, 14:31
by alh84001
Yeah. I remember that he managed to get 8Mhz version working. I'll try, but I contacted hasu first, as it seems to me that TMK could handle it.
Posted: 24 Nov 2016, 17:25
by Arakula
That was the Converter, not the Controller. I have reverse-engineered the Controller V1.20 beta4, too, but that's still 100% untested. If you want the code, PM me. The big question is - how should that help in this context? I'm not the hardware guru that's needed here, Soarer was ... so yes, I'd really still love to get in touch with him.
Posted: 24 Nov 2016, 21:59
by alh84001
Yeah, I know. And I would love to try and tackle it, but unfortunately, the idea didn't occur to me until after I did a controller swap. Right now I don't have hardware to test it with (unless someone want to donate a Displaywriter board for keyboard science ), so until I get another board, me accessing the code would only serve to scratch my curiosity itch.
Posted: 04 Jan 2017, 03:45
by alh84001
Nuum wrote: I'm trying to use Soarers Controller with a Teensy++ 2.0 for my IBM 5140 keyboard. I used the same config as copter did in his thread: workshop-f7/ibm-5140-convertible-conver ... ml#p282477
I adapted his code to my wiring
I'm trying to do the same, and I almost got it. One issue I have is with column 6 (F5, 5, T, G, B, Space). When I press any key in that column, I get presses registered for every key in the same row in which the pressed key is. That column is connected to PD3. Here's my config file, which is based on copter's so there's nothing out of the ordinary:
ifset any
ifkeyboard any
ifselect any
matrix
scanrate 1
strobe_mode 0
sense_polarity 0
debounce 5
blocking 1
debounce_method 0
sense_delay 1
sense PF7 PF6 PF5 PF4 PF1 PF0
strobe PB0 DELETE BACKSPACE UNASSIGNED UNASSIGNED UNASSIGNED RIGHT
strobe PB1 INSERT BACKSLASH UNASSIGNED ENTER FN2 DOWN
strobe PB2 NUM_LOCK MINUS LEFT_BRACE QUOTE RSHIFT UP
strobe PB3 F10 0 P SEMICOLON SLASH LEFT
strobe PB5 F3 3 E D C UNASSIGNED
strobe PB6 F4 4 R F V UNASSIGNED
strobe PB7 F9 9 O L PERIOD RALT
strobe PD0 F8 8 I K COMMA UNASSIGNED
strobe PD1 F7 7 U J M UNASSIGNED
strobe PD2 F6 6 Y H N UNASSIGNED
strobe PD3 F5 5 T G B SPACE
strobe PD4 F2 2 W S X LALT
strobe PD5 SCROLL_LOCK EQUAL RIGHT_BRACE UNASSIGNED UNASSIGNED UNASSIGNED
strobe PD6 ESC BACK_QUOTE TAB CAPS_LOCK LSHIFT LCTRL
strobe PD7 F1 1 Q A Z FN1
end
layerblock
FN1 1
endblock
remapblock
layer 1
LEFT HOME
RIGHT END
UP PAGE_UP
DOWN PAGE_DOWN
LCTRL LGUI
FN2 PRINTSCREEN
NUM_LOCK PAUSE
endblock
Edit: I got it workng. I actually did two things:
1) I rewired the column to another pin on Teensy (PB4)
2) I put a bit of electrical tape on the mini-USB cable connector. I had to thin the connector with a Dremel earlier, and I exposed a tiny bit of shielding. It's possible it touched a pin or two around the spacebar position, so it might have caused some electrical issues.
I think it's more probable that the second thing worked. In any case, it's nice to have it working, I typed this edit on it
Posted: 03 Feb 2017, 03:59
by K-rnix
Hi. Sorry for being such a noobie. I have a Teensy 2++ board. I'm trying to have a Ti-99/4A working keyboard. Thing is, I do not know how to program the Teensy with the config file (.sc) I've created. I have downloaded the Soarer files, including the *AT90USB1286.hex file, and the teensy.exe, but I don't know how to "merge" my .sc with the .hex in order to have my custom .hex file for programming the Teensy.
Anyone who could guide me? Thanks.
Posted: 09 Feb 2017, 02:02
by JBert
@K-rnix: it doesn't need merging.
Open the Teensy programming software and use it to program your Teensy++ with the AT90USB1286.hex.
Then go to the tools directory in Soarer's controller folder and extract the tools for your operating system (Windows, mac, Linux), then copy your .sc file into the same folder as those programs.
Now run the following:
scas myconfig.sc compiled.bc
Check that no errors are shown.
scwr compiled.bc
If both commands completed successfully your config is uploaded to the Teensy and ready for use.
Posted: 18 Apr 2017, 20:05
by K-rnix
Thanks JBert. Now is all working. I have an issue tough:
I'm trying with a Commodore 64 keyboard, but I cannot get the remapping block to work when I try to use if_select in order to switch between PC mode and emulator mode (VICE positional).
the scaswr command says "error at line 315: invalid command". is the "endblock" of the remapblock. Why? I don't know... same thing if I put the remapblock somewhere else.
I use the NUM_LOCK as SELECT_1 (so I can know what mode is on by looking at the LED)
This is the sc file:
# Matrix setup for COMMODORE 64
led caps -PB5
led num -PB6
led scroll -PB4
matrix
scanrate 1
debounce 5
blocking 1
sense PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PE0
strobe PF0 1 ESC LCTRL RALT SPACE LGUI Q 2 UNASSIGNED
strobe PF1 3 W A LSHIFT Z S E 4 UNASSIGNED
strobe PF2 5 R D X C F T 6 UNASSIGNED
strobe PF3 7 Y G V B H U 8 UNASSIGNED
strobe PF4 9 I J N M K O 0 UNASSIGNED
strobe PF5 LANG_1 P L COMMA PERIOD LANG_3 LANG_4 MINUS UNASSIGNED
strobe PF6 BACKSLASH LANG_2 SEMICOLON SLASH RSHIFT EQUAL UP HOME UNASSIGNED
strobe PF7 BACKSPACE ENTER RIGHT DOWN F1 F3 F5 F7 UNASSIGNED
strobe PB0 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED END
end
ifselect any
macroblock
macro F5 LGUI LSHIFT #NUM_LOCK
PUSH_META CLEAR_META ALL
PRESS NUM_LOCK
PRESS SELECT_1
POP_ALL_META
endmacro
endblock
macroblock
macro F3 LGUI SHIFT #CAPS_LOCK
PUSH_META CLEAR_META ALL
PRESS CAPS_LOCK
POP_ALL_META
endmacro
macro F7 LGUI SHIFT #SCROLL_LOCK
PUSH_META CLEAR_META ALL
PRESS SCROLL_LOCK
POP_ALL_META
endmacro
endblock
macroblock
macro RIGHT SHIFT #LEFT
PUSH_META CLEAR_META ALL
PRESS LEFT
POP_ALL_META
endmacro
macro DOWN SHIFT #UP
PUSH_META CLEAR_META ALL
PRESS UP
POP_ALL_META
endmacro
macro HOME SHIFT #PAGE UP
PUSH_META CLEAR_META ALL
PRESS PAGE_UP
POP_ALL_META
endmacro
macro END SHIFT #PAGE DOWN
PUSH_META CLEAR_META ALL
PRESS PAGE_DOWN
POP_ALL_META
endmacro
macro BACKSPACE SHIFT #DELETE
PUSH_META CLEAR_META ALL
PRESS DELETE
POP_ALL_META
endmacro
endblock
macroblock
macro 2 SHIFT #2
PUSH_META CLEAR_META ALL
MAKE LSHIFT
PRESS QUOTE
BREAK LSHIFT
POP_ALL_META
endmacro
macro 6 SHIFT #6
PUSH_META CLEAR_META ALL
MAKE LSHIFT
PRESS 7
BREAK LSHIFT
POP_ALL_META
endmacro
macro 7 SHIFT #7
PUSH_META CLEAR_META ALL
PRESS QUOTE
POP_ALL_META
endmacro
macro 8 SHIFT #8
PUSH_META CLEAR_META ALL
MAKE LSHIFT
PRESS 9
BREAK LSHIFT
POP_ALL_META
endmacro
macro 9 SHIFT #9
PUSH_META CLEAR_META ALL
MAKE LSHIFT
PRESS 0
BREAK LSHIFT
POP_ALL_META
endmacro
macro LANG_1 #+
PUSH_META ASSIGN_META LSHIFT
PRESS EQUAL
POP_META
endmacro
macro MINUS SHIFT #-
PUSH_META ASSIGN_META LSHIFT
PRESS MINUS
POP_META
endmacro
endblock
macroblock #Teclas_nulas
macro 0 SHIFT #0
PUSH_META CLEAR_META ALL
PRESS 0
POP_ALL_META
endmacro
macro LANG_1 SHIFT #+
PUSH_META CLEAR_META ALL
POP_ALL_META
endmacro
macro LANG_4 SHIFT #@
PUSH_META ASSIGN_META LSHIFT
PRESS 2
POP_META
endmacro
macro LANG_2 SHIFT #*
PUSH_META CLEAR_META ALL
POP_ALL_META
endmacro
macro EQUAL SHIFT #=
PUSH_META CLEAR_META ALL
PRESS EQUAL
POP_ALL_META
endmacro
endblock
macroblock
macro LANG_4 #@
PUSH_META ASSIGN_META LSHIFT
PRESS 2
POP_META
endmacro
macro LANG_2 #*
PUSH_META ASSIGN_META LSHIFT
PRESS 8
POP_META
endmacro
macro SEMICOLON SHIFT #]
PUSH_META CLEAR_META ALL
PRESS RIGHT_BRACE
POP_ALL_META
endmacro
macro LANG_3 SHIFT #[
PUSH_META CLEAR_META ALL
PRESS LEFT_BRACE
POP_ALL_META
endmacro
macro LANG_3 #:
PUSH_META ASSIGN_META LSHIFT
PRESS SEMICOLON
POP_META
endmacro
endblock
macroblock
macro F1 LSHIFT #F2
PUSH_META CLEAR_META ALL
PRESS F2
POP_ALL_META
endmacro
macro F3 LSHIFT #F4
PUSH_META CLEAR_META ALL
PRESS F4
POP_ALL_META
endmacro
macro F5 LSHIFT #F6
PUSH_META CLEAR_META ALL
PRESS F6
POP_ALL_META
endmacro
macro F7 LSHIFT #F8
PUSH_META CLEAR_META ALL
PRESS F8
POP_ALL_META
endmacro
macro F1 RSHIFT #F9
PUSH_META CLEAR_META ALL
PRESS F2
POP_ALL_META
endmacro
macro F3 RSHIFT #F10
PUSH_META CLEAR_META ALL
PRESS F4
POP_ALL_META
endmacro
macro F5 RSHIFT #F11
PUSH_META CLEAR_META ALL
PRESS F6
POP_ALL_META
endmacro
macro F7 RSHIFT #F12
PUSH_META CLEAR_META ALL
PRESS F8
POP_ALL_META
endmacro
endblock
macroblock
macro SPACE SHIFT #TAB
PUSH_META CLEAR_META ALL
PRESS TAB
POP_ALL_META
endmacro
macro SPACE ALT #ALT-TAB
PUSH_META CLEAR_META ALL
MAKE LALT
PRESS TAB
PRESS TAB
BREAK LALT
POP_ALL_META
endmacro
macro BACKSPACE LSHIFT RSHIFT #ALT-CTRL-DEL
PUSH_META CLEAR_META ALL
MAKE LALT
MAKE LCTRL
PRESS DELETE
BREAK LCTRL
BREAK LALT
POP_ALL_META
endmacro
macro F3 ALT #ALT-F4
PUSH_META CLEAR_META ALL
MAKE LALT
PRESS F4
BREAK LALT
POP_ALL_META
endmacro
endblock
ifselect 1
remapblock
ESC BACK_QUOTE
LCTRL TAB
RALT ESC
LGUI LCTRL
LANG_1 MINUS
LANG_3 SEMICOLON
LANG_4 LEFT_BRACE
MINUS EQUAL
BACKSLASH INSERT
LANG_2 RIGHT_BRACE
SEMICOLON QUOTE
EQUAL BACKSLASH
UP DELETE
END PAGE_UP
endblock
Posted: 18 Apr 2017, 22:19
by K-rnix
I think I've found a bug: END
Posted: 19 Apr 2017, 14:44
by JBert
You seem to be right, the END keycode on the next to last line is triggering an error.
I'm afraid that can't be solved without fixing sctools and rebuilding them. The quickest solution is likely to pick another key and bind that to PAGE_UP if possible.
Posted: 04 May 2017, 21:56
by K-rnix
Thank you JBert. I did some workaround the bug and got it working.
Now I'm facing have another challenge: Giving the fact I'm using a Commodore 64 keyboard, I'm looking for a way to toggle between C64 mode and PC Mode. Mostly because I'm using Positional mode in VICE Emulator (most "pure" emulation). I'm planning to use the NUM_LOCK LED to indicate C64 mode is ON. Problem is I cannot tell if NUM_LOCK was ON already when I switch to C64 mode (some motherboards boot with NUM_LOCK on, another keyboard could be connected). If that is the case, even if C64 mode is working I have the LED light inverted.
You can see my attempt in the "ifselect any" following macroblock with F5 LGUI and LSHIFT macro.
So, is there a way to know the NUM_LOCK status (or SCROLL_LOCK for that matter)? AND/OR, is there a way to turn it off (instead of "toggling it") so I can be sure that is OFF before toggle it?
Thanks for your support.