43 for (row=0; row<(_ncols*_nrows); row++) |
43 for (row=0; row<(_ncols*_nrows); row++) |
44 _keys[row] = 0; |
44 _keys[row] = 0; |
45 |
45 |
46 while(_started) |
46 while(_started) |
47 { |
47 { |
|
48 // activate column col |
48 _columns[col].write(1); |
49 _columns[col].write(1); |
49 ThisThread::sleep_for(5); |
50 ThisThread::sleep_for(5); |
50 for(row=0; row<_nrows; row++) |
51 for(row=0; row<_nrows; row++) |
51 { |
52 { |
52 if (_rows[row].read()) |
53 if (_rows[row].read()) |
53 { |
54 { |
54 if (_keys[row + _nrows*col] < 2) |
55 if (_keys[row + _nrows*col] < 2) // ensure only one key is pressed in this column |
55 { |
56 { |
56 _keys[row + _nrows*col]++; |
57 _keys[row + _nrows*col]++; |
57 if ((_keys[row + _nrows*col] == 2) && _kp_callback) |
58 if ((_keys[row + _nrows*col] == 2) && _kp_callback) |
58 _kp_callback.call(row, col); |
59 _kp_callback.call(row, col); |
59 } |
60 } |