А мне тут ещё подумалось в процессе... по идее в специалисте можно сделать A и половинку C на вывод, B на ввод и сканировать клаву через ж... в обратном направлении - в A и C выставлять биты столбцов, а с B получать маску строк, в которых эти столбцы нажаты?