Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 523eabc

Browse files
committedApr 23, 2017
Optimisations and bugfixes
Move to release 1.2 (Ludwig Von Drake) Optimised the keystroke converter by making as many keys as possible part of an ASCII number switch. Thanks to AntyStewie. Fixed a bug in which single word commands would register as two commands.
1 parent 508196e commit 523eabc

File tree

1 file changed

+146
-179
lines changed

1 file changed

+146
-179
lines changed
 

‎digiQuack.cpp

Lines changed: 146 additions & 179 deletions
Original file line numberDiff line numberDiff line change
@@ -24,187 +24,154 @@ int linecounter(string dir){
2424
//Some of the keys are encoded using their usage IDs. Refer to http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (Page 53-59)
2525
string stringprocessor(string key){
2626

27-
if((key == "A") || (key == "a")){
28-
key = "KEY_A";
29-
return key;
30-
}
31-
32-
else if((key == "B") || (key == "b")){
33-
key = "KEY_B";
34-
return key;
35-
}
36-
37-
else if((key == "C") || (key == "c")){
38-
key = "KEY_C";
39-
return key;
40-
}
41-
42-
else if((key == "D") || (key == "d")){
43-
key = "KEY_D";
44-
return key;
45-
}
46-
47-
else if((key == "E") || (key == "e")){
48-
key = "KEY_E";
49-
return key;
50-
}
51-
52-
else if((key == "F") || (key == "f")){
53-
key = "KEY_F";
54-
return key;
55-
}
56-
57-
else if((key == "G") || (key == "g")){
58-
key = "KEY_G";
59-
return key;
60-
}
61-
62-
else if((key == "H") || (key == "h")){
63-
key = "KEY_H";
64-
return key;
65-
}
66-
67-
else if((key == "I") || (key == "i")){
68-
key = "KEY_I";
69-
return key;
70-
}
71-
72-
else if((key == "J") || (key == "j")){
73-
key = "KEY_J";
74-
return key;
75-
}
76-
77-
else if((key == "K") || (key == "k")){
78-
key = "KEY_K";
79-
return key;
80-
}
81-
82-
else if((key == "L") || (key == "l")){
83-
key = "KEY_L";
84-
return key;
85-
}
86-
87-
else if((key == "M") || (key == "m")){
88-
key = "KEY_M";
89-
return key;
90-
}
91-
92-
else if((key == "N") || (key == "n")){
93-
key = "KEY_N";
94-
return key;
95-
}
96-
97-
else if((key == "O") || (key == "o")){
98-
key = "KEY_O";
99-
return key;
100-
}
101-
102-
else if((key == "P") || (key == "p")){
103-
key = "KEY_P";
104-
return key;
105-
}
106-
107-
else if((key == "Q") || (key == "q")){
108-
key = "KEY_Q";
109-
return key;
110-
}
111-
112-
else if((key == "R") || (key == "r")){
113-
key = "KEY_R";
114-
return key;
115-
}
116-
117-
else if((key == "S") || (key == "s")){
118-
key = "KEY_S";
119-
return key;
120-
}
121-
122-
else if((key == "T") || (key == "t")){
123-
key = "KEY_T";
124-
return key;
125-
}
126-
127-
else if((key == "U") || (key == "u")){
128-
key = "KEY_U";
129-
return key;
130-
}
131-
132-
else if((key == "V") || (key == "v")){
133-
key = "KEY_V";
134-
return key;
135-
}
136-
137-
else if((key == "W") || (key == "w")){
138-
key = "KEY_W";
139-
return key;
140-
}
141-
142-
else if((key == "X") || (key == "x")){
143-
key = "KEY_X";
144-
return key;
145-
}
146-
147-
else if((key == "Y") || (key == "y")){
148-
key = "KEY_Y";
149-
return key;
150-
}
151-
152-
else if((key == "Z") || (key == "z")){
153-
key = "KEY_Z";
154-
return key;
155-
}
156-
157-
else if(key=="1"){
158-
key = "KEY_1";
159-
return key;
160-
}
161-
162-
else if(key=="2"){
163-
key = "KEY_2";
164-
return key;
165-
}
166-
167-
else if(key=="3"){
168-
key = "KEY_3";
169-
return key;
170-
}
171-
172-
else if(key=="4"){
173-
key = "KEY_4";
174-
return key;
175-
}
176-
177-
else if(key=="5"){
178-
key = "KEY_5";
179-
return key;
180-
}
181-
182-
else if(key=="6"){
183-
key = "KEY_6";
184-
return key;
185-
}
186-
187-
else if(key=="7"){
188-
key = "KEY_7";
189-
return key;
190-
}
191-
192-
else if(key=="8"){
193-
key = "KEY_8";
194-
return key;
195-
}
196-
197-
else if(key=="9"){
198-
key = "KEY_9";
199-
return key;
27+
int asciinum;//Case for A and a
28+
29+
if(key.size() == 1){
30+
asciinum = (int)key[0]; //If the string length is 1, use a switch statement to improve speed. In order to do that we need to extract the character number in ascii with this line of code.
31+
32+
switch(asciinum){
33+
34+
case 65:
35+
case 97:
36+
key = "KEY_A";
37+
return key;
38+
case 66:
39+
case 98:
40+
key = "KEY_B";
41+
return key;
42+
case 67:
43+
case 99:
44+
key = "KEY_C";
45+
return key;
46+
case 68:
47+
case 100:
48+
key = "KEY_D";
49+
return key;
50+
case 69:
51+
case 101:
52+
key = "KEY_E";
53+
return key;
54+
case 70:
55+
case 102:
56+
key = "KEY_F";
57+
return key;
58+
case 71:
59+
case 103:
60+
key = "KEY_G";
61+
return key;
62+
case 72:
63+
case 104:
64+
key = "KEY_H";
65+
return key;
66+
case 73:
67+
case 105:
68+
key = "KEY_I";
69+
return key;
70+
case 74:
71+
case 106:
72+
key = "KEY_J";
73+
return key;
74+
case 75:
75+
case 107:
76+
key = "KEY_K";
77+
return key;
78+
case 76:
79+
case 108:
80+
key = "KEY_L";
81+
return key;
82+
case 77:
83+
case 109:
84+
key = "KEY_M";
85+
return key;
86+
case 78:
87+
case 110:
88+
key = "KEY_N";
89+
return key;
90+
case 79:
91+
case 111:
92+
key = "KEY_O";
93+
return key;
94+
case 80:
95+
case 112:
96+
key = "KEY_P";
97+
return key;
98+
case 81:
99+
case 113:
100+
key = "KEY_Q";
101+
return key;
102+
case 82:
103+
case 114:
104+
key = "KEY_R";
105+
return key;
106+
case 83:
107+
case 115:
108+
key = "KEY_S";
109+
return key;
110+
case 84:
111+
case 116:
112+
key = "KEY_T";
113+
return key;
114+
case 85:
115+
case 117:
116+
key = "KEY_U";
117+
return key;
118+
case 86:
119+
case 118:
120+
key = "KEY_V";
121+
return key;
122+
case 87:
123+
case 119:
124+
key = "KEY_W";
125+
return key;
126+
case 88:
127+
case 120:
128+
key = "KEY_X";
129+
return key;
130+
case 89:
131+
case 121:
132+
key = "KEY_Y";
133+
return key;
134+
case 90:
135+
case 122:
136+
key = "KEY_Z";
137+
return key;
138+
case 48:
139+
key = "KEY_0";
140+
return key;
141+
case 49:
142+
key = "KEY_1";
143+
return key;
144+
case 50:
145+
key = "KEY_2";
146+
return key;
147+
case 51:
148+
key = "KEY_3";
149+
return key;
150+
case 52:
151+
key = "KEY_4";
152+
return key;
153+
case 53:
154+
key = "KEY_5";
155+
return key;
156+
case 54:
157+
key = "KEY_6";
158+
return key;
159+
case 55:
160+
key = "KEY_7";
161+
return key;
162+
case 56:
163+
key = "KEY_8";
164+
return key;
165+
case 57:
166+
key = "KEY_9";
167+
return key;
168+
default:
169+
cout << "There was a problem in converting the ascii character:" << key << endl; //In case the character doesn't exist in the switch
170+
}
200171
}
201172

202-
else if(key=="0"){
203-
key = "KEY_0";
204-
return key;
205-
}
206173

207-
else if(key=="ENTER"){
174+
if(key=="ENTER"){
208175
key = "KEY_ENTER";
209176
return key;
210177
}
@@ -492,7 +459,7 @@ int main(){
492459
key = command.substr(0, command.find(' '));
493460
tmpstring = "DigiKeyboard.sendKeyStroke(" + stringprocessor(key);
494461
command.erase(0, command.find(' ')+1);
495-
if(!command.empty()){
462+
if(!command.empty() && command != key){ //If command is equal to key it means that the command is a one word line e.g ENTER so command.erase until a ' ' would have no effect.
496463
tmpstring = tmpstring + ",";
497464
tmpstring = tmpstring + stringprocessor(command);
498465
}

1 commit comments

Comments
 (1)

CedArctic commented on Apr 23, 2017

@CedArctic
OwnerAuthor

For ASCII table see http://ascii.cl/

Please sign in to comment.