楼主的程序的却罗嗦。
当使用这么多个 switch(Y_) 时,第一反应是能否合并,例如是否可以使用一个函数来缩短长度等等。
其次是效率问题。这种矩阵式键盘扫描可以利用口线的连续性,简单地得到键码,例如
output = 0x1;
for (i=0; i<OUTPUTCOUNT; i++) {
KeyPortOutput = ~output;
input = 1;
for (j=0; j<INPUTCOUNT; j++) {
if ((KeyPortInput & input) == 0) {
return (i*INPUTCOUNT + j);
}
input <<= 1;
}
output <<=1;
}
return NOKEY;
思路大致如此,可以根据具体情况优化。或是得到的扫描码作为 index 查表,可得希望的键码。 |