Keyboards should include 8-bit computers in them
Posted: 21 Dec 2020, 17:08
Hi all,
with keyboard firmwares now running on increasingly complex microcontrollers, and with keyboards having stuff like displays, integrated memory, etc, I was wondering - why not put a full 8-bit micro in the keyboard?
This whole thing came after watching this really cool video of using the C64 as a serial terminal. I started asking myself what would be necessary to really make this practical. What if you could use the C64 as a full keyboard for any computer? Granted the switches aren't great and a bunch of keys are missing, but still, even the C64 would be pretty good at least for something like editing files with Vim. Then I remembered a video I watched earlier today, this review of the Reuters G80-9009 by Thomas, and this essentially has a large multiline screen integrated. The screen is definitely larger and more readable and holds more information than my Sharp 850V's integrated screen. So then it clicked: why not go all the way and make every keyboard hold something like an 8-bit microcomputer?
There could be so many benefits to this as far as using it as a keyboard:
1. Macro functionality. Being able to define simple macros is cool, but being able to use basic to program advanced macros is even cooler. Now imagine you're on eg Windows, and you can call out to Autohotkey functions directly (which wouldn't be that difficult using raw hid functionality). Or if autohotkey was even able to communicate variables back to the keyboard, eg what window is open currently, and based on that your macro could do one thing or another. For example, let's say you had a "next tab" button (as in next tab in the browser, editor, or terminal emulator window). In one program it might be ctrl+pgdn, and in another it would be ctrl+tab. It goes beyond that for me, though. Your keyboard is the way you communicate with your computer. Imagine if the way you communicate with your computer changed from a simple, shallow layer of key press -> key appears on screen to something that allows all sorts of complex, intricate interaction between human, machine, and the smart interface itself (the keyboard).
2. KVM functionality - it goes without saying that it would be simpler, especially if the keyboard had a dedicated serial output, which could be used to control kvm switches and the like
3. Terminal functionality - if the keyboard has an integrated display, say a 4x160 display, then you could easily use it as a full fledged terminal, given an rs-232 port on the back, or emulation of it via usb and an external ftdi232 dongle. Super useful for vintage computers, setting up home automation, and the like. Maybe if the SoC is smart enough, you could use ssh directly from your keyboard.
4. Sounds - solenoids and clickers are cool, but imagine what you could do given something like a sid chip or an atari pokey chip and a proper pc speaker type transducer inside
5. rgb - you could program your own really cool rgb effects in basic
6. automation - your keyboard could automate other stuff that can be controlled via serial, IR, bluetooth, ethernet, zigbee, or wifi. So as you are using your keyboard, you could use it to turn on the lights or make coffee.
7. Do computing without using or even turning on your main computer - if your keyboard has a display on it, then you could easily do some basic stuff (calculations, taking notes, writing small programs) without turning off your main pc
8. Compute on the go - most modern microcontrollers, even the more powerful ones, easily run off battery. If your keyboard has a display, take it out of your messenger bag while commuting or at the coffee shop and use it as a small 8-bit laptop.
9. Better calculator - it goes without saying that if you want your keyboard to have a calculator, then having a full programming language prompt available is even better
10. Add features easily - qmk requires knowledge of C++ and/or asm to add features. Many of those features are fairly simple and don't necessarily require the critical timing that's available via asm. Stuff like a calculator or an rgb animation is better done in a higher level language anyways. If you're committed and want to make your feature more cpu efficient, you can then re-write it in C++ or assembly.
11. The back of modern keyboards is sad - as someone who grew up with 8-bit computers, looking at the back of my keyboard... just kind of makes me sad. Compare to the back ports of a C-64, C-128, or an Amiga 500. All the cool stuff you could do with those ports! There was so much you could do here. If you've ever looked at the wild peripherals that vintage computers came with, you know what you're missing. Hook up a 5.25" floppy drive? A datasette, a vhs drive or LD as data medium? Composite output directly to tv? RGB output? Thermal printer, make some calculations on the internal calculator and print them out? Dot matrix printer?
12. Use cartridges with your keyboard - it's just cool. What do you put on the cartridge? New firmware? New software? A game? who knows. The sky is the limit. You can do anything with cartridges. Anything at all. The only limit is yourself. The infinite is possible with cartridges. The unattainable is unknown with cartridges. Cartridges are back baby
13. Use your keyboard to automate your mouse - if your keyboard was a bit smarter than it is now, your mouse could connect to and through it. This means that you could automate mouse movements using macros on your keyboard, as well as set it up based on that.
14. Games - play combat, pitfall, zork, adventure, oregon trail, or anything else on your keyboard. Want to port doom 2 or crysis? Sure, why not.
15. Experiment with non-standard keyboard layouts and keys - with the pc, we're pretty limited as to what keys we can really have on our keyboard. With this, you can have all sorts of cool keyboard functions that the computer will actually understand it, because you're who defines what keys it has and understands and what functions it can accept from the keyboard
16. Dial up - hook up your keyboard directly to a modem and call into your computer to do remote computing. It's even cooler if you consider that your Nokia 6210 contains an IrDA interface and a modem
17. Good excuse to start using your Nokia 6210 again - not like you need one of course
18. Connect all your keyboards in a token ring network - why aren't all your keyboards networked together already?
19. Fun - it's just cool
20. GOTO 1
with keyboard firmwares now running on increasingly complex microcontrollers, and with keyboards having stuff like displays, integrated memory, etc, I was wondering - why not put a full 8-bit micro in the keyboard?
This whole thing came after watching this really cool video of using the C64 as a serial terminal. I started asking myself what would be necessary to really make this practical. What if you could use the C64 as a full keyboard for any computer? Granted the switches aren't great and a bunch of keys are missing, but still, even the C64 would be pretty good at least for something like editing files with Vim. Then I remembered a video I watched earlier today, this review of the Reuters G80-9009 by Thomas, and this essentially has a large multiline screen integrated. The screen is definitely larger and more readable and holds more information than my Sharp 850V's integrated screen. So then it clicked: why not go all the way and make every keyboard hold something like an 8-bit microcomputer?
There could be so many benefits to this as far as using it as a keyboard:
1. Macro functionality. Being able to define simple macros is cool, but being able to use basic to program advanced macros is even cooler. Now imagine you're on eg Windows, and you can call out to Autohotkey functions directly (which wouldn't be that difficult using raw hid functionality). Or if autohotkey was even able to communicate variables back to the keyboard, eg what window is open currently, and based on that your macro could do one thing or another. For example, let's say you had a "next tab" button (as in next tab in the browser, editor, or terminal emulator window). In one program it might be ctrl+pgdn, and in another it would be ctrl+tab. It goes beyond that for me, though. Your keyboard is the way you communicate with your computer. Imagine if the way you communicate with your computer changed from a simple, shallow layer of key press -> key appears on screen to something that allows all sorts of complex, intricate interaction between human, machine, and the smart interface itself (the keyboard).
2. KVM functionality - it goes without saying that it would be simpler, especially if the keyboard had a dedicated serial output, which could be used to control kvm switches and the like
3. Terminal functionality - if the keyboard has an integrated display, say a 4x160 display, then you could easily use it as a full fledged terminal, given an rs-232 port on the back, or emulation of it via usb and an external ftdi232 dongle. Super useful for vintage computers, setting up home automation, and the like. Maybe if the SoC is smart enough, you could use ssh directly from your keyboard.
4. Sounds - solenoids and clickers are cool, but imagine what you could do given something like a sid chip or an atari pokey chip and a proper pc speaker type transducer inside
5. rgb - you could program your own really cool rgb effects in basic
6. automation - your keyboard could automate other stuff that can be controlled via serial, IR, bluetooth, ethernet, zigbee, or wifi. So as you are using your keyboard, you could use it to turn on the lights or make coffee.
7. Do computing without using or even turning on your main computer - if your keyboard has a display on it, then you could easily do some basic stuff (calculations, taking notes, writing small programs) without turning off your main pc
8. Compute on the go - most modern microcontrollers, even the more powerful ones, easily run off battery. If your keyboard has a display, take it out of your messenger bag while commuting or at the coffee shop and use it as a small 8-bit laptop.
9. Better calculator - it goes without saying that if you want your keyboard to have a calculator, then having a full programming language prompt available is even better
10. Add features easily - qmk requires knowledge of C++ and/or asm to add features. Many of those features are fairly simple and don't necessarily require the critical timing that's available via asm. Stuff like a calculator or an rgb animation is better done in a higher level language anyways. If you're committed and want to make your feature more cpu efficient, you can then re-write it in C++ or assembly.
11. The back of modern keyboards is sad - as someone who grew up with 8-bit computers, looking at the back of my keyboard... just kind of makes me sad. Compare to the back ports of a C-64, C-128, or an Amiga 500. All the cool stuff you could do with those ports! There was so much you could do here. If you've ever looked at the wild peripherals that vintage computers came with, you know what you're missing. Hook up a 5.25" floppy drive? A datasette, a vhs drive or LD as data medium? Composite output directly to tv? RGB output? Thermal printer, make some calculations on the internal calculator and print them out? Dot matrix printer?
12. Use cartridges with your keyboard - it's just cool. What do you put on the cartridge? New firmware? New software? A game? who knows. The sky is the limit. You can do anything with cartridges. Anything at all. The only limit is yourself. The infinite is possible with cartridges. The unattainable is unknown with cartridges. Cartridges are back baby
13. Use your keyboard to automate your mouse - if your keyboard was a bit smarter than it is now, your mouse could connect to and through it. This means that you could automate mouse movements using macros on your keyboard, as well as set it up based on that.
14. Games - play combat, pitfall, zork, adventure, oregon trail, or anything else on your keyboard. Want to port doom 2 or crysis? Sure, why not.
15. Experiment with non-standard keyboard layouts and keys - with the pc, we're pretty limited as to what keys we can really have on our keyboard. With this, you can have all sorts of cool keyboard functions that the computer will actually understand it, because you're who defines what keys it has and understands and what functions it can accept from the keyboard
16. Dial up - hook up your keyboard directly to a modem and call into your computer to do remote computing. It's even cooler if you consider that your Nokia 6210 contains an IrDA interface and a modem
17. Good excuse to start using your Nokia 6210 again - not like you need one of course
18. Connect all your keyboards in a token ring network - why aren't all your keyboards networked together already?
19. Fun - it's just cool
20. GOTO 1