{a[$1]=a[$1] "," $2}
накапливает вторые поля строк путем сопоставления первых полей
END {for (i in a) print a[i]}
в конце обработки печатает накопленные поля для каждой строки строка за строкой.
Проблемы, которые я вижу
- начальная висячая запятая.
- напечатанные значения не будут указывать, какой клавише они соответствуют