Sí. Hay tres cosas que deberías hacer. La primera es la matriz del teclado. Los teclados normalmente se hacen utilizando una matriz de salidas a entradas, donde cada tecla del teclado corresponde a una combinación de entrada y salida. 8x8 es una matriz común. Los teclados de teléfono más pequeños son un ejemplo de matrices de 4x3 y 4x4, y se usan comúnmente en proyectos de Arduino.
La segunda parte y la tercera parte están entrelazadas. La segunda parte es el protocolo a la computadora. Serial, PS / 2 o USB son los más comunes, siendo el USB el más reciente (Bluetooth también, pero eso es inalámbrico). Serial y PS / 2 se pueden cambiar de bit, al igual que el USB, pero es un poco más difícil. V-USB es un proyecto para la implementación de software USB en procesadores ATTINY y ATTMEGA (como el arduino).
La tercera parte es el código real entre la lectura de la matriz del teclado y el envío a través de usb. En el lado USB desea un teclado USB-HID (sin controlador en el lado de la PC). En el lado del teclado, puede utilizar sondeo o interrupciones. Su código decidirá qué combinación de matrices es qué tecla del teclado y qué código de escaneo del teclado.
Las teclas de función se manejan esencialmente por software, al igual que la tecla shift / control / option / command / windows. Su código leería la tecla de función presionada, luego cualquier otra tecla presionada enviaría el código de escaneo de la función de la tecla, en lugar de solo el código de escaneo de la tecla.
Simplemente buscar en Google "Arduino USB Keyboard" te dará un google literal de proyectos de ejemplo haciendo eso. También "Arduino Keypad".