geekhack
geekhack Projects => Making Stuff Together! => Topic started by: Soarer on Sun, 03 November 2013, 08:10:08
-
Here is my Controller firmware for AVR microcontrollers with hardware USB, e.g. Teensy 2.0, Teensy++ 2.0.
The main difference between this and other controller firmwares is that all configuration is performed using a config file, rather than modifying the C source code. A few example matrix configs are included, covering some very different keyboards.
Retrete was the initial guinea pig with his vintage Kevex terminal (http://geekhack.org/index.php?topic=17458.msg870218;topicseen#msg870218) - the discussion there serves as an example walk-though of how to apply this firmware to a keyboard. Two (http://geekhack.org/index.php?topic=17458.msg896917#msg896917) videos (http://deskthority.net/photos-videos-f8/kevex-7000cm-mod-t5830.html?hilit=kevex) as well!
The best way to approach making the matrix config is to first set it up with all keys set to 'UNASSIGNED', then to use hid_listen to see which matrix code fires for each key and debug any wiring problems. That way you don't get unintended keystrokes sent to your OS, which could be painful!
All of the features of my Converter (NKRO, remapping, layer, macro, etc) are supported (except, of course, 'ifset').
Matrix scans can include 'classic' matrix (direct connections to rows and columns), multiplexed (strobes are driven through a decoder), and unstrobed (where individual keys are connected to pins). Various polarity and mode settings are available to cover many requirements. There's also options for scan rate, debouncing time and mode, including turbo (http://geekhack.org/index.php?topic=42385.msg863452#msg863452) mode (http://geekhack.org/index.php?topic=42385.msg1085707#msg1085707) which adds no delay, and a blocking flag to enable de-ghosting.
Currently at beta stage, with only bugfixes and minor changes expected before the first proper release. There is a single .html page included in the zip describing the Controller specific configuration - you'll also need the docs from my Converter (available on DT (http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html) and GH (http://geekhack.org/index.php?topic=17458.0)).
Required hardware is an AVR microcontroller with more than 16KB RAM, and hardware USB with a decent amount of buffer memory. This includes the ATmega32U4 and better, but does NOT include the ATmega32U2.
-
Geekhack is a tinkerers paradise :cool:
-
Thanks for releasing it !
-
Nice. I've been too lazy to finish writing some firmware to get my 5291 bigfoot working. I see you have support for it in here. I'll try it out.
Edit:
Success. :)
-
Excellent!
I was looking for your thread (http://geekhack.org/index.php?topic=48950.0) last night, but couldn't find it because it doesn't say 'bigfoot' in it anywhere. Should've searched on 5291 - d'oh! All the info anyone might need to wire up the 5291 'bigfoot' is there :D
-
Ah, hopefully this can be run on a GH60 as well, that way I can keep using my layers and macros for the Poker.
Is the Pxx notation the way the Atmel headers specify port bits or is it something Teensy-specific?
-
It's how Atmel label the pins in the datasheet :)
-
Will the source be released for this? I know you have the source available for the SC tools to be used with it, just didn't know about the firmware itself.
-
Wow excellent! thanks for the release, soarer.
Geekhack is a tinkerers paradise :cool:
It's the "hack" part of Geekhack
-
Did somebody try it on 3178 display terminal keyboards ?
I doubt it, yet!
Not sure what the 3178 has inside it... in general, it should be feasible to convert any IBM that uses the 4-channel capsense chip. The 4-channel seems a LOT easier to drive than the 8-channel. If the controller has a CPU, it would need to be removed, and perhaps some circuitry added (in addition to the Teensy). The 5291 has a pair of decoders to drive the 24 strobes into the matrix - those with a CPU may not have the same arrangement, but whatever they have might be usable as-is. The extra bit they probably won't have is a little circuit to generate the capsense chip's gate signal from the strobe gate signal - the 5291 simply delays the signal slightly to do that (schematic (http://www.kbdbabel.org/schematic/kbdbabel_doc_ibm5291_kbd.pdf)).
[attachimg=1]
-
Did somebody try it on 3178 display terminal keyboards ?
I doubt it, yet!
Not sure what the 3178 has inside it... in general, it should be feasible to convert any IBM that uses the 4-channel capsense chip. The 4-channel seems a LOT easier to drive than the 8-channel. If the controller has a CPU, it would need to be removed, and perhaps some circuitry added (in addition to the Teensy). The 5291 has a pair of decoders to drive the 24 strobes into the matrix - those with a CPU may not have the same arrangement, but whatever they have might be usable as-is. The extra bit they probably won't have is a little circuit to generate the capsense chip's gate signal from the strobe gate signal - the 5291 simply delays the signal slightly to do that (schematic (http://www.kbdbabel.org/schematic/kbdbabel_doc_ibm5291_kbd.pdf)).
(Attachment Link)
I just ordered a 3178 from feebay, I'll take pictures of the insides if you are interested.
Will I be able to use a Arduino Pro Micro to get this working, or will I require more pins? I also have a Teensy 2.0 but I'd obviously prefer to use a $6 part if I can get away with it.
Thanks for releasing this Soarer!
-
Cool, yes, interested in pictures :)
We should be able to tell from its ICs whether a Pro Micro would be OK. I'd guess that it uses a decoder for at least some of its strobes, but if it's not all of them it could still run out of pins.
I might have to add some extra ways to set things up in the config file, since it could need separate control of the multiplexed sense (either for timing reasons or because not all strobes are decoded).
-
do you think it would work into the arduino micro soarer?
I know it has a different bootloader but I'm not sure what else could make it not work in one arduino micro - it uses the atmega32u4
-
Yup, that should be fine :)
-
Cool, yes, interested in pictures :)
We should be able to tell from its ICs whether a Pro Micro would be OK. I'd guess that it uses a decoder for at least some of its strobes, but if it's not all of them it could still run out of pins.
I might have to add some extra ways to set things up in the config file, since it could need separate control of the multiplexed sense (either for timing reasons or because not all strobes are decoded).
Ok, so here it is... sorry about the quality of the photos... I'm terrible at taking pictures
[attachimg=1][attachimg=2][attachimg=3]
EDIT: Also does anyone know what that blue and white coil on the right is? Is it some kind of speaker or something?
-
Yeah, that's a solenoid to provide the key-click. Unfortunately it probably needs 12 volts to operate, so that's not easy to do from USB.
Well the pics give me an idea of what's there at least, but I can't read the numbers on the chips. The square silver one (bottom right) is key - if that's 5119699 then it's the 4-channel and should work with my code, but not if it's the 8-channel 8273565.
-
There was a keyboard that had a solenoid to make the click sound? Wow, that's amazing.
-
Yeah, that's a solenoid to provide the key-click. Unfortunately it probably needs 12 volts to operate, so that's not easy to do from USB.
Well the pics give me an idea of what's there at least, but I can't read the numbers on the chips. The square silver one (bottom right) is key - if that's 5119699 then it's the 4-channel and should work with my code, but not if it's the 8-channel 8273565.
Bad news I guess:
[attach=1]
Is it a lost cause with the 8 channel chip?
If so that's too bad because I really like the sound and feel of this board... guess I might just have to pony up the cash for a AT Model F after all.
-
Well, I haven't been able to drive it reliably with a Teensy replacing the 8049 CPU, yet :(
But it's not a lost cause; you'll just have to wait for the Model F controller replacement project from geekhack's secret skunk works to bear fruit, which should be fairly soon :D
-
Well, I haven't been able to drive it reliably with a Teensy replacing the 8049 CPU, yet :(
But it's not a lost cause; you'll just have to wait for the Model F controller replacement project from geekhack's secret skunk works to bear fruit, which should be fairly soon :D
Sweet! Thanks for taking the time to look into this. I'll have to keep my eyes open for the alternative F controller. Is there a thread where that is being discussed?
-
Probably will be one soon, but until then some progress might get reported in the kishsaver threads, since that's a main target initially (amongst others).
-
Here's some notes on replacing the CPU of an IBM 6112884 with a Teensy 2.0 running this hex.
The IBM 6112884 is this layout with Japanese legends:
[attachimg=1]
There are a couple of other variants, one with Chinese legends.
It has vintage Alps switches:
[attachimg=2]
The original 8048 CPU has pins used as follows:
[attachimg=3]
The bold labels are the interesting ones for converting, and the Teensy pins I wired them to are shown in blue.
I've gone with a plug in approach, first replacing the CPU with a socket. Then 8 pins made using bell wire connect the sense rows, and 2 more just hold the other side in place. More bell wire used to hook up power and ground, and then 4 lines to the multiplexed column strobes. Insulating tape under the Teensy prevents Teensy pins shorting to socket pins where the flying leads are attached.
Pin 1 of the original CPU is bottom left in this pic:
[attachimg=4]
You could just remove the CPU and wire the Teensy in without a socket - it would probably be easier, but I wanted to be able to replace the original CPU easily.
The basic config is already included in the controller 1.20 zip file as 6112884.sc :D
-
Here's some notes on replacing the CPU of an IBM 6112884 with a Teensy 2.0 running this hex.
The IBM 6112884 is this layout with Japanese legends:
(Attachment Link)
There are a couple of other variants, one with Chinese legends.
It has vintage Alps switches:
(Attachment Link)
The original 8048 CPU has pins used as follows:
(Attachment Link)
The bold labels are the interesting ones for converting, and the Teensy pins I wired them to are shown in blue.
I've gone with a plug in approach, first replacing the CPU with a socket. Then 8 pins made using bell wire connect the sense rows, and 2 more just hold the other side in place. More bell wire used to hook up power and ground, and then 4 lines to the multiplexed column strobes. Insulating tape under the Teensy prevents Teensy pins shorting to socket pins where the flying leads are attached.
Pin 1 of the original CPU is bottom left in this pic:
(Attachment Link)
You could just remove the CPU and wire the Teensy in without a socket - it would probably be easier, but I wanted to be able to replace the original CPU easily.
The basic config is already included in the controller 1.20 zip file as 6112884.sc :D
Mine literally arrived a few hours ago. I'm really excited to get it wired up. Thank you for this and the converter firmware that is driving my M122.
-
So I'm running this on my one-hand ergodox, working fine. and I have a cherry matrix KB that i'm trying to use with this firmware.
Right now everything works great, except for one column which is "stuck" down.
So I flash it, and right after, all keys in the column "press", and then one is "stuck" down. After that, they won't register in AQT.
Column is connected to PD6 on the corner.
--
So I'm trying to debug it and the matrix works A-OK 100% fine with a multimeter. I'm getting continuity where I should and none where I'm not supposed to.
Where should I continue the debugging process? The hardware seems fine, and tests fine all the way up to the teensy. The KB had been working fine with the stock controller before this.
I can provide pictures and a copy of my layout file if that will help you help me debug it.
-
If you are using PJRC Teensy or Teensy++ PD6 has LED. I think you can NOT use the pin as input unfortunately.
EDIT: You wll able to use PD6 as "strobe"(output) but not as "sense"(input). Anyway PD6 is to be avoided or the last pin to use.
EDIT2: ah, I forgot "NOT" :(
-
If you are using PJRC Teensy or Teensy++ PD6 has LED. I think you can NOT use the pin as input unfortunately.
EDIT: You wll able to use PD6 as "strobe"(output) but not as "sense"(input). Anyway PD6 is to be avoided or the last pin to use.
EDIT2: ah, I forgot "NOT" :(
I resoldered the pin to another unused one (very few unused pins on a 8*15 matrix) and now it works!
Thanks to Hasu and Wcass.
---
I would like to come up with a quick list of avaliable pins. One interior pin I am using, the other I don't think is usable. Also, some of the ones on the end are not usable I think either.
-
Cool, yes, interested in pictures :)
We should be able to tell from its ICs whether a Pro Micro would be OK. I'd guess that it uses a decoder for at least some of its strobes, but if it's not all of them it could still run out of pins.
I might have to add some extra ways to set things up in the config file, since it could need separate control of the multiplexed sense (either for timing reasons or because not all strobes are decoded).
Ok, so here it is... sorry about the quality of the photos... I'm terrible at taking pictures
(Attachment Link) (Attachment Link) (Attachment Link)
EDIT: Also does anyone know what that blue and white coil on the right is? Is it some kind of speaker or something?
It looks pretty close to my 3178 keyboard. It will work with xwhatsit's model F controller. Have a look:
http://geekhack.org/index.php?topic=57103.30
-
Here's some notes on replacing the CPU of an IBM 6112884 with a Teensy 2.0 running this hex.
The IBM 6112884 is this layout with Japanese legends:
(Attachment Link)
There are a couple of other variants, one with Chinese legends.
It has vintage Alps switches:
(Attachment Link)
The original 8048 CPU has pins used as follows:
(Attachment Link)
The bold labels are the interesting ones for converting, and the Teensy pins I wired them to are shown in blue.
I've gone with a plug in approach, first replacing the CPU with a socket. Then 8 pins made using bell wire connect the sense rows, and 2 more just hold the other side in place. More bell wire used to hook up power and ground, and then 4 lines to the multiplexed column strobes. Insulating tape under the Teensy prevents Teensy pins shorting to socket pins where the flying leads are attached.
Pin 1 of the original CPU is bottom left in this pic:
(Attachment Link)
You could just remove the CPU and wire the Teensy in without a socket - it would probably be easier, but I wanted to be able to replace the original CPU easily.
The basic config is already included in the controller 1.20 zip file as 6112884.sc :D
ok I just got a similar keyboard and am happily working on it. I have a problem. There are 9 other non-standard keys which are unassigned and I'd like to program them to do something. But on the 6112884.sc document, there are way more than 9 unassigned places. Also the matrix isn't easily linear or grid so I have no idea which keys are located where.
How do I go about identifying the un=assigned keys and assigning them to do something or other?
Solved using brute force, by assigning lots of keycodes to the unassigned places and seeing what codes could be turned into real keypresses.
If anyone needs the document I can add to Soarer's contribution. Every key on my keyboard is now assigned, so all you need to do is to look at the .sc document and change the assignments. I have two right shifts to make up for the split right shift.
-
Thanks for this great firmware Soarer - so easy to configure!
I have a question about holding down shifted keys and making them repeat. When I hold down, for example, shift and 1 on my custom keyboard with 1.20 firmware I get a repeated ! as expected. But on keys where I've used a macro to remap the shifted character and I hold them down continuously the character doesn't repeat.
i.e. using this code:
macro 0 SHIFT
PRESS 6
endmacro
to get a ^ by pressing shift and zero. When I press shift and 0 I get the ^ as intended. But if I keep holding them they don't repeat.
Any suggestions on getting the shifted keys to repeat?
-
Where is Soarer?
We keep seeing the question but no answer.
Does anybody know whether he is OK?
-
Where is Soarer?
We keep seeing the question but no answer.
Does anybody know whether he is OK?
I also tried contacting Soarer several times in the past few months but there was no reply.
I hope his absence is caused by life changes (eg marriage) rather than tragedy (eg shot down over Ukraine).
-
Seems I can't download the controller in soarer's signature : http://geekhack.org/index.php?action=dlattach;topic=50437.0;attach=42393
I keep getting "Connection closed at byte 48608. Retrying". managed to download 48.6kB so far. Anyone knows of a mirror?
-
you should be able to download it from DT:
http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html (documentation)
http://deskthority.net/workshop-f7/soarer-s-keyboard-controller-firmware-t6767.html?hilit=controller (firmware)
PM me if you still can't get it and I'll see if I can find a host somewhere.
-
link is currently working for me 8)
-
you should be able to download it from DT:
http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html (documentation)
http://deskthority.net/workshop-f7/soarer-s-keyboard-controller-firmware-t6767.html?hilit=controller (firmware)
PM me if you still can't get it and I'll see if I can find a host somewhere.
the DT link worked, thanks! I kept finding only the converter page :S
-
how to apply soarer firmware to teensy?
-
i drag n drop but error like this :-X
error at line 4: invalid argument:1
whats wrong with my matrix?
matrix
blocking 0
sense 1 0 2 3 4 5 6 10 16 14 15 18 19 20
strobe F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe 7 UNASSIGNED q w e r t delete escape y u i o p UNASSIGNED
strobe 8 UNASSIGNED a s d f g tab enter h j k l semicolon quote
strobe 9 UNASSIGNED z x c v b caps enter n m comma period slash UNASSIGNED
strobe 21 lalt lctrl lctrl lshift space FN1 FN2 backspace rshift ralt ralt rctrl
end
layerblock
FN1 1
FN2 1 # One for each hand, where available
FN1 FN2 2 # Press them both for a hard to reach second layer
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE_BREAK
R PRINT_SCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESCAPE INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q PLUS
A 4
Z *
W (
S 3
X LEFT_BRACKET
E )
D 2
C RIGHT_BRACKET
R !
F 1
V @
T MINUS
G 5
B /
Y "
H 6
N _
U ?
J 0
M &
I {
K 9
COMMA
O }
L 8
PERIOD equal
P %
SEMICOLON 7
SLASH |
endblock
:thumb:
-
i drag n drop but error like this :-X
error at line 4: invalid argument:1
whats wrong with my matrix?
sense 1 0 2 3 4 5 6 10 16 14 15 18 19 20
:thumb:
Here's line 4: This issue is that you can't have "sense" and then pin numbers, you need to use the teensy pin names. Here's an example from my ergodox:
matrix
blocking 0
sense PF0 PF1 PF4 PF5 PF6 PF7
strobe PB0 FN1 FN2 UNASSIGNED FN3 UNASSIGNED END
strobe PB1 5 T G B UNASSIGNED HOME
strobe PB2 4 R F V RIGHT PAGE_UP
strobe PB3 3 E D C DOWN SPACE
strobe PD2 2 W S X UP ENTER
strobe PD3 1 Q A Z LEFT PAGE_DOWN
strobe PC6 ESC TAB CAPS_LOCK LSHIFT LCTRL UNASSIGNED
END
-
Here's line 4: This issue is that you can't have "sense" and then pin numbers, you need to use the teensy pin names. Here's an example from my ergodox:
matrix
blocking 0
sense PF0 PF1 PF4 PF5 PF6 PF7
strobe PB0 FN1 FN2 UNASSIGNED FN3 UNASSIGNED END
strobe PB1 5 T G B UNASSIGNED HOME
strobe PB2 4 R F V RIGHT PAGE_UP
strobe PB3 3 E D C DOWN SPACE
strobe PD2 2 W S X UP ENTER
strobe PD3 1 Q A Z LEFT PAGE_DOWN
strobe PC6 ESC TAB CAPS_LOCK LSHIFT LCTRL UNASSIGNED
END
i use pro micro i think its use number
i've edited like https://geekhack.org/index.php?topic=63227.msg1482014#msg1482014 (https://geekhack.org/index.php?topic=63227.msg1482014#msg1482014)
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PD7 PB6 PB2 PB3 PB1 PF7 PF6 PF5
strobe F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 UNASSIGNED q w e r t delete escape y u i o p UNASSIGNED
strobe PB4 UNASSIGNED a s d f g tab enter h j k l semicolon quote
strobe PB5 UNASSIGNED z x c v b caps enter n m comma period slash UNASSIGNED
strobe PF4 lalt lctrl lctrl lshift space FN1 FN2 backspace rshift ralt ralt rctrl
end
layerblock
FN1 1
FN2 1 # One for each hand, where available
FN1 FN2 2 # Press them both for a hard to reach second layer
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE_BREAK
R PRINT_SCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESCAPE INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q PLUS
A 4
Z *
W (
S 3
X LEFT_BRACKET
E )
D 2
C RIGHT_BRACKET
R !
F 1
V @
T MINUS
G 5
B /
Y "
H 6
N _
U ?
J 0
M &
I {
K 9
COMMA
O }
L 8
PERIOD equal
P %
SEMICOLON 7
SLASH |
endblock
i got problem again :-X
error at line 5: invalid argument:F1
-
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PD7 PB6 PB2 PB3 PB1 PF7 PF6 PF5
strobe PIN F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 UNASSIGNED q w e r t delete escape y u i o p UNASSIGNED
strobe PB4 UNASSIGNED a s d f g tab enter h j k l semicolon quote
strobe PB5 UNASSIGNED z x c v b caps enter n m comma period slash UNASSIGNED
strobe PF4 lalt lctrl lctrl lshift space FN1 FN2 backspace rshift ralt ralt rctrl
end
i got problem again :-X
error at line 5: invalid argument:F1
You need a pin where I added PIN on line 5, you've jumped straight to a key name :)
Also you have some spaces between keys, I think they need to be filled with UNASSIGNED (but don't quote me on that, I've not quite got that far myself...)
-
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PD7 PB6 PB2 PB3 PB1 PF7 PF6 PF5
strobe "PIN" F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 UNASSIGNED q w e r t delete escape y u i o p UNASSIGNED
strobe PB4 UNASSIGNED a s d f g tab enter h j k l semicolon quote
strobe PB5 UNASSIGNED z x c v b caps enter n m comma period slash UNASSIGNED
strobe PF4 lalt lctrl lctrl lshift space FN1 FN2 backspace rshift ralt ralt rctrl
end
i got problem again :-X
error at line 5: invalid argument:F1
You need a pin where I added PIN on line 5, you've jumped straight to a key name :)
Also you have some spaces between keys, I think they need to be filled with UNASSIGNED (but don't quote me on that, I've not quite got that far myself...)
nah its no pin actually :D not enough pins, so what right name there instead "strobe"?
you mean in cols PD7 and PB6? :)
-
nah its no pin actually :D not enough pins, so what right name there instead "strobe"?
If there's no pin where I added PIN then your FX keys won't work - all keys need to be connected between two pins or they can't be detected. If you don't want them you can delete the whole line... That doesn't sound very useful though!
you mean in cols PD7 and PB6? :)
Yup, and PD3/PF4 (under F1) :)
-
If there's no pin where I added PIN then your FX keys won't work - all keys need to be connected between two pins or they can't be detected. If you don't want them you can delete the whole line... That doesn't sound very useful though!
can i connect diode F-ROW to QWER-ROW with wire
so F-ROW is PE6? :)
Yup, and PD3/PF4 (under F1) :)
good
-
can i connect diode F-ROW to QWER-ROW with wire
so F-ROW is PE6? :)
Short answer: No. If you did that the keyboard wouldn't know the difference between F2 and Q, F3 and W etc as they'd send the same signal.
I don't know what board you have and how hard it would be, but if I were you I would connect the F1 key in the space under PD7 then you can use use PD3 for the strobe line for the FX keys. If you're cutting any traces be sure to keep the diode attached to the switch.
-
sorry I'm slow
can i connect diode F-ROW to QWER-ROW with wire
so F-ROW is PE6? :)
Short answer: No. If you did that the keyboard wouldn't know the difference between F2 and Q, F3 and W etc as they'd send the same signal.
my bad :))
I don't know what board you have and how hard it would be, but if I were you I would connect the F1 key in the space under PD7 then you can use use PD3 for the strobe line for the FX keys. If you're cutting any traces be sure to keep the diode attached to the switch.
btw the 3 UNASSIGNED under F1 actually have switches i just confused for choose key placed there now
so i cant leave them
can u write here :)
-
btw the 3 UNASSIGNED under F1 actually have switches i just confused for choose key placed there now
so i cant leave them
can u write here :)
Write what? :))
I just tried to rework your matrix and got confused - you have two of each of ENTER, LCTRL and RALT in there? Might make sense if this is a split keyboard, but something tells me you're looking at the layout of the actual keys rather than the matrix they're connected to, so the big keys are on there twice. Unless you hand-wired the matrix to mirror the keys? What keyboard are you working on??
You would have enough pins if you could change the matrix, currently it's 14x5 (max 70 keys) but you only have 18 pins - a 12x6 matrix would give you 72 keys which would work, but as you're using nearly every possible option you might have issues with ghosting.
A 10x8 is more typical and that would be 80 keys so you could try and put the UNASSIGNEDs where the ghosts would be, but how you'd go about that is beyond my newbie knowledge level.
-
i use pro micro i think its use number
pro micro does not have enough pins for a large keyboard. If you want to use this with a number pad or tenkey or something it could work otherwise there's not enough.
-
I just tried to rework your matrix and got confused - you have two of each of ENTER, LCTRL and RALT in there? Might make sense if this is a split keyboard, but something tells me you're looking at the layout of the actual keys rather than the matrix they're connected to, so the big keys are on there twice. Unless you hand-wired the matrix to mirror the keys? What keyboard are you working on??
You would have enough pins if you could change the matrix, currently it's 14x5 (max 70 keys) but you only have 18 pins - a 12x6 matrix would give you 72 keys which would work, but as you're using nearly every possible option you might have issues with ghosting.
A 10x8 is more typical and that would be 80 keys so you could try and put the UNASSIGNEDs where the ghosts would be, but how you'd go about that is beyond my newbie knowledge level.
double enter, lctrl and ralt actually dual switch for stabs, but i could choose one
yup split keyboard, i just make same left/right side handwired to easy write matrix
yup 14x5, 12x6 interisting can u write here yup i need NKRO indeed to try plover
pro micro does not have enough pins for a large keyboard. If you want to use this with a number pad or tenkey or something it could work otherwise there's not enough.
pro micro only less one pins again :-X
i have teensy but broken after desoldering may some pins stil can used i will check again
-
I will bow to dorkvader's far greater experience - if he says you need more pins you need more pins so there's no point trying to work out a manageable matrix.
Good luck with reincarnating your teensy :)
-
I will bow to dorkvader's far greater experience - if he says you need more pins you need more pins so there's no point trying to work out a manageable matrix.
Good luck with reincarnating your teensy :)
nono I don't have that much expertise when it comes to hard-wiring a matrix. If your arduino pro micro has enough pins it can work.
Here's a picture showing the "teensy pin names" for the arduino pro micro. It will help you find the correct "name" in the firmware file.
(http://i.imgur.com/wMNx2u6.png)
relevant guide:
http://deskthority.net/workshop-f7/how-to-use-a-pro-micro-as-a-cheap-controller-converter-like-soarer-s-t8448.html
-
yup moz help me make 12x6 matrix really nice this is problem solved
but still get pain with soarer controller
i get a lot invalid command from this
is soarer controller dont have individual symbol?
# FN2
Q PLUS
A 4
Z *
W (
S 3
X LEFT_BRACKET
E )
D 2
C RIGHT_BRACKET
R !
F 1
V @
T MINUS
G 5
B /
Y "
H 6
N _
U ?
J 0
M &
I {
K 9
COMMA UNASSIGNED
O }
L 8
PERIOD equal
P %
SEMICOLON 7
SLASH |
endblock
-
i rewrite my firmware then complie to promicro nah the keyboard when i press show qwertttt gggggggg some random :confused:
what problem? how to i reset pro micro?
-
i rewrite my firmware then complie to promicro nah the keyboard when i press show qwertttt gggggggg some random :confused:
what problem? how to i reset pro micro?
I think what you're saying is that sometimes keys repeat? If so is it any key at random or only certain keys? T and G are probably connected in the matrix so looks like you may have a wiring problem...
It would be helpful if you posted your full config file :)
-
i rewrite my firmware then complie to promicro nah the keyboard when i press show qwertttt gggggggg some random :confused:
what problem? how to i reset pro micro?
I think what you're saying is that sometimes keys repeat? If so is it any key at random or only certain keys? T and G are probably connected in the matrix so looks like you may have a wiring problem...
It would be helpful if you posted your full config file :)
i think my handwired indeed
and some keys not show when i press
i almost boring with this is project
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 1 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
-
OK, that looks good.
Now, which keys are repeating and which not working? They are probably all in a row or column, if they are that's where your problem lies.
EDIT: Just noticed you don't have a debounce line which could be responsible for your repeated keypresses. It goes in the matrix (on a new line after "blocking 0" and in the example file I found it's set to 5 - see if that helps.
-
EDIT: Just noticed you don't have a debounce line which could be responsible for your repeated keypresses. It goes in the matrix (on a new line after "blocking 0" and in the example file I found it's set to 5 - see if that helps.
If no debounce is specified, it defaults to #5.
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 1 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
I edit the code a little so I can read it better on my text editor
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
^this part looks good. I wanted to make sure the keys were assigned right.
layerblock
FN1 1 # One for each hand, where available
FN2 1 # One for each hand, where available
endblock
^ also looks good. This has two keys both select the same function layer However, a better way would probably be to just have two FN1 keys on your KB. code would change to this:
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1
FN2 2
endblock
^See that fn2 switches to layer2
In soarer's example
layerblock
FN1 1
FN2 1
FN1 FN2 2
endblock
^soarer's example: pressing either the FN1 or FN2 buttons activates the layer 1 while pressing them both activates layer 2
# Layerin' time
remapblock
layer 1
^ I like "layerin' time" made me smile. This part is correct.
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
This part is probably incorrect, if you want fn2 to switch those keys you have to define it differently. here's what I would do
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
endblock
remapblock
layer 2
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
^this makes it so that pressing FN1 activates layer 1 and the first set of changes whereas pressing FN2 activates layer2 and the second set of changes.
You can do it some other ways, and have "locking" or "toggle" layers with using "select" and "ifselect".
Entire code:
#######################################
# Soarer Code for Yasuo #
# custom keyboard #
# Edited by dorkvader #
#######################################
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 2 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
endblock
remapblock
layer 2
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
-
If no debounce is specified, it defaults to #5.
Noted :)
On a complete tangent do LEDs actually work? I added "led caps PF1" as described in the docs but whether before the matrix, after the matrix or in the matrix scas doesn't like it:
suicidal_orange@mini:~/Soarer tools$ ./scas out.sc out.scb
scas v1.20
error at line 2: invalid argument: PF1
I've tried other pins too.
-
If no debounce is specified, it defaults to #5.
Noted :)
On a complete tangent do LEDs actually work? I added "led caps PF1" as described in the docs but whether before the matrix, after the matrix or in the matrix scas doesn't like it:
suicidal_orange@mini:~/Soarer tools$ ./scas out.sc out.scb
scas v1.20
error at line 2: invalid argument: PF1
I've tried other pins too.
Position in the config file doesn't make a difference. It'll just tell you if anything failed before then :p
I don't use indicator LEDs so I haven't tried it myself, but that should work, I can't imagine why it's not compiling as it's specifically mentioned in the controller firmware, of which there is only one version. I can test it a little on my own.
If you look in the provided sample config files, the kevex-retrete.sc lists some LEDs under "led caps -PF5" etc. I test compiled it into a SCB using scas on windows and it works. Same with the "mini matrix" for his own project.
maybe wire up the LED in reverse and use the negative option?
EDIT: got an error when I did not use the - option on LED. Then I thought of something.
For positive LED (in your case) make it "LED caps +PF1" should work. I changed it in my kevex test file and got no errors.
It's a mistake in the documentation.
-
thats amagic i slow
OK, that looks good.
Now, which keys are repeating and which not working? They are probably all in a row or column, if they are that's where your problem lies.
EDIT: Just noticed you don't have a debounce line which could be responsible for your repeated keypresses. It goes in the matrix (on a new line after "blocking 0" and in the example file I found it's set to 5 - see if that helps.
almost all keys, when i plug to pc it show gggggggggggg
i've try it and with added scanrate but not fix, i've desoldered my handwired
EDIT: Just noticed you don't have a debounce line which could be responsible for your repeated keypresses. It goes in the matrix (on a new line after "blocking 0" and in the example file I found it's set to 5 - see if that helps.
If no debounce is specified, it defaults to #5.
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 1 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
I edit the code a little so I can read it better on my text editor
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
^this part looks good. I wanted to make sure the keys were assigned right.
layerblock
FN1 1 # One for each hand, where available
FN2 1 # One for each hand, where available
endblock
^ also looks good. This has two keys both select the same function layer However, a better way would probably be to just have two FN1 keys on your KB. code would change to this:
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1
FN2 2
endblock
^See that fn2 switches to layer2
In soarer's example
layerblock
FN1 1
FN2 1
FN1 FN2 2
endblock
^soarer's example: pressing either the FN1 or FN2 buttons activates the layer 1 while pressing them both activates layer 2
# Layerin' time
remapblock
layer 1
^ I like "layerin' time" made me smile. This part is correct.
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
This part is probably incorrect, if you want fn2 to switch those keys you have to define it differently. here's what I would do
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
endblock
remapblock
layer 2
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
^this makes it so that pressing FN1 activates layer 1 and the first set of changes whereas pressing FN2 activates layer2 and the second set of changes.
You can do it some other ways, and have "locking" or "toggle" layers with using "select" and "ifselect".
Entire code:
#######################################
# Soarer Code for Yasuo #
# custom keyboard #
# Edited by dorkvader #
#######################################
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 2 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
endblock
remapblock
layer 2
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
amagic :thumb:
-
almost all keys, when i plug to pc it show gggggggggggg
i've try it and with added scanrate but not fix, i've desoldered my handwired
Ouch! There's a good chance most of it was good :(
You'll have to wire it up again making very sure that all the diodes point the same way and that your sense/strobe connections to the teensy are correct if you want any help, but I can see why you're getting frustrated.
-
after break 1 month
^this makes it so that pressing FN1 activates layer 1 and the first set of changes whereas pressing FN2 activates layer2 and the second set of changes.
You can do it some other ways, and have "locking" or "toggle" layers with using "select" and "ifselect".
Entire code:
#######################################
# Soarer Code for Yasuo #
# custom keyboard #
# Edited by dorkvader #
#######################################
matrix
blocking 0
sense PD3 PD2 PD1 PD0 PD4 PC6 PB3 PB1 PF7 PF6 PF5 PF4
strobe PD7 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
strobe PE6 q w e r t delete esc y u i o p
strobe PB4 a s d f g tab enter h j k l semicolon
strobe PB5 z x c v b caps_lock enter n m comma period slash
strobe PB6 lctrl UNASSIGNED lctrl lshift space FN1 FN2 backspace lshift ralt UNASSIGNED ralt
strobe PB2 UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED UNASSIGNED quote UNASSIGNED UNASSIGNED
end
layerblock
FN1 1 # One for each hand, where available
FN2 2 # One for each hand, where available
endblock
# Layerin' time
remapblock
layer 1
# FN1
E PAGE_UP
S HOME
D PAGE_DOWN
F END
W PAUSE
R PRINTSCREEN
X MEDIA_PREV_TRACK
C MEDIA_NEXT_TRACK
V MEDIA_PLAY_PAUSE
B MEDIA_STOP
ESC INSERT
ENTER BACKSPACE
I UP
J LEFT
K DOWN
L RIGHT
P SCROLL_LOCK
M MEDIA_MUTE
COMMA MEDIA_VOLUME_DOWN
PERIOD MEDIA_VOLUME_UP
endblock
remapblock
layer 2
# FN2
Q UNASSIGNED
A 4
Z UNASSIGNED
W equal
S 3
X UNASSIGNED
E MINUS
D 2
C UNASSIGNED
R UNASSIGNED
F 1
V UNASSIGNED
T UNASSIGNED
G 5
B UNASSIGNED
Y QUOTE
H 6
N UNASSIGNED
U UNASSIGNED
J 0
M UNASSIGNED
I LEFT_BRACE
K 9
COMMA UNASSIGNED
O RIGHT_BRACE
L 8
PERIOD UNASSIGNED
P BACKSLASH
SEMICOLON 7
SLASH UNASSIGNED
endblock
funny the code error at line:7 :))
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
There is. I use Arduino Builder. It's free and easy to use.
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
There is. I use Arduino Builder. It's free and easy to use.
I just tried that and I'm getting "no new port found"
When using AVRdude I was getting "Connecting to programmer:" and then nothing would happen.
Did I brick the promicro somehow?
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
There is. I use Arduino Builder. It's free and easy to use.
I just tried that and I'm getting "no new port found"
When using AVRdude I was getting "Connecting to programmer:" and then nothing would happen.
Did I brick the promicro somehow?
Hmm... did you installed drivers from Arduino site?
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
There is. I use Arduino Builder. It's free and easy to use.
I just tried that and I'm getting "no new port found"
When using AVRdude I was getting "Connecting to programmer:" and then nothing would happen.
Did I brick the promicro somehow?
Hmm... did you installed drivers from Arduino site?
I believe so, I just tried to flash my other pro micro that isn't soldered to the 4P4C connector and it took to the firmware right away :/
-
So I'm dumb, is there an easy way to flash a firmware to the promicro on Windows?
There is. I use Arduino Builder. It's free and easy to use.
I just tried that and I'm getting "no new port found"
When using AVRdude I was getting "Connecting to programmer:" and then nothing would happen.
Did I brick the promicro somehow?
Hmm... did you installed drivers from Arduino site?
I believe so, I just tried to flash my other pro micro that isn't soldered to the 4P4C connector and it took to the firmware right away :/
Hmm. Reset it, and while doing it, look for com port number in Device manager. Write it down. Then do it again, and while doing reset you'll have a few seconds to flash some sketch from standard Arduino program (I use blinking LED sketch). After this you should be able to write firmware to arduino with Builder.
-
I registered just to say thank you Soarer. I was able to use this firmware to get my AEKII working after removing the PCB and handwiring the keyboard matrix. Layer's and all.
-
I'd like to have the combination of FN1 with ENTER for pasting something. But ...
layerblock
FN1 1 # define that FN1 accesses layer 1
endblock
remapblock
layer 1
ENTER PASTE
endblock
... I can't get the HID code "PASTE" to work (in Windows 7, Teensy 2.0), it does not effect any pasting here. I assume it simply is not intended to work? What alternative do I have? I thought about setting up a macro "strg-v" instead, but how do I get a macro into a Fn layer?
-
Ah, hopefully this can be run on a GH60 as well, that way I can keep using my layers and macros for the Poker.
So I just got my GH60 hardware today...
Turns out this firmware doesn't work because the keys connected to column PD6 go haywire, Soarer's post on DT shows why:
Yeah, PD6 has the LED on it, and my firmware still uses it - I guess that should be configurable too!
Argh, so close!!
-
Ah, hopefully this can be run on a GH60 as well, that way I can keep using my layers and macros for the Poker.
So I just got my GH60 hardware today...
Turns out this firmware doesn't work because the keys connected to column PD6 go haywire, Soarer's post on DT shows why:
Yeah, PD6 has the LED on it, and my firmware still uses it - I guess that should be configurable too!
Argh, so close!!
Hasu noted that it might be possible (https://geekhack.org/index.php?topic=50437.msg1316592#msg1316592)
EDIT: You wll able to use PD6 as "strobe"(output) but not as "sense"(input). Anyway PD6 is to be avoided or the last pin to use.
-
I've read that post in the meantime, sadly it's still no use seeing how the diodes of the GH60 prevent me from using PD6 as an output - the current just won't flow in any other direction.
I've contacted someone who was reverse engineering Soarer's firmware as a pastime to see if we can somehow neutralize the offending code.
EDIT: Success! See my thread over at Deskthority: https://deskthority.net/workshop-f7/soarer-s-keyboard-controller-firmware-for-atmega32u4-designs-gh60-t15958.html
-
Wanted to add my text file for a WY-50 that worked with Soarer's Wyse tool and his pinout. When this is dropped onto the scaswr application file it will map your WY-50 with the stock keycap mapping.
-
Has the IBM 3178 C2 keyboard keyboard converter been successful?
-
Please help with a bit of strange matrix ghosting.
I'm using the controller for a commodore 64 keyboard, it uses a 8x8 matrix, with no diode blocking.
Everything works fine for the keyboard, and then I've added the 2 joystick ports. These use 5 signal plus one common. (Up, Down, Left, Right, Fire , Common(gnd))
The joysticks are floating when plugged in, and not being pushed in a direction, but just having J1 plugged in causes the insert key to trigger itself, and the 1 key.
Unplugging the joystick, the key only triggers insert.
Any suggestions on why it's causing this behavior?
# Matrix setup for COMMODORE 64
matrix
scanrate 1
debounce 5
blocking 1
# PROMicroPins 13 14 15 20 17 18 19 16 1 PromicroPins
Joy Pins
sense PB6 PB2 PB3 PF4 PF7 PF6 PF5 PB1 PD3
strobe PB5 BACKSPACE ENTER RIGHT F7 F1 F3 F5 DOWN PAD_PERIOD #12 -J1 6(F)
strobe PD0 3 W A 4 Z S E LSHIFT PAD_ASTERIX #6 -J1 2(D)
strobe PD4 5 R D 6 C F T X PAD_2 #7 -
strobe PC6 7 Y G 8 B H U V PAD_3 #8 -
strobe PD7 9 I J 0 M K O N PAD_PLUS #9 -J1 4(R)
strobe PE6 MINUS P L EQUAL PERIOD SEMICOLON LEFT_BRACE COMMA PAD_5 #10 -
strobe PB4 INSERT RIGHT_BRACE QUOTE HOME RSHIFT BACKSLASH DELETE SLASH PAD_MINUS #11 -J1 3(L)
strobe PD1 1 ESC TAB 2 SPACE LCTRL Q LALT PAD_SLASH #5 -J1 1(U)
strobe PD2 UNASSIGNED PAD_2 PAD_8 PAD_0 UNASSIGNED PAD_6 UNASSIGNED PAD_4 F10 #2 -J2 8(Common)
# Joypins |N| |J2 2(D)| |J2 1(U)| |J2 6(F)| |N| |J2 4(R)| |N| |J2 3(L)| J1 8 (Common)
end
macroblock
#Left Shift Keys....
macro DOWN LSHIFT # Left Shift + Down = Up
CLEAR_META LSHIFT
MAKE UP
onbreak
BREAK UP
endmacro
macro RIGHT LSHIFT # Left Shift + Right = Left
CLEAR_META LSHIFT
MAKE LEFT
onbreak
BREAK LEFT
endmacro
macro F1 LSHIFT # Left Shift + F1 = F2
CLEAR_META LSHIFT
MAKE F2
onbreak
BREAK F2
endmacro
macro F3 LSHIFT # Left Shift + F3 = F4
CLEAR_META LSHIFT
MAKE F4
onbreak
BREAK F4
endmacro
macro F5 LSHIFT # Left Shift + F5 = F6
CLEAR_META LSHIFT
MAKE F6
onbreak
BREAK F6
endmacro
macro F7 LSHIFT # Left Shift + F7 = F8
CLEAR_META LSHIFT
MAKE F8
onbreak
BREAK F8
endmacro
macro F10 LSHIFT # Left Shift + Restore = F12
CLEAR_META LSHIFT
MAKE F12
onbreak
BREAK F12
endmacro
# ALT Keys (Runstop Key)
macro F1 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE F11
onbreak
BREAK F11
endmacro
macro F3 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE BACK_QUOTE
onbreak
BREAK BACK_QUOTE
endmacro
macro F5 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE PAGE_UP
onbreak
BREAK PAGE_UP
endmacro
macro F7 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE PAGE_DOWN
onbreak
BREAK PAGE_DOWN
endmacro
macro F10 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE F9
onbreak
BREAK F9
endmacro
endblock