My code for I did with mine, as a USB HID Keypad on my Windows 10 PC, is at the end of this post.
The first 10 buttons launch my first 10 pins to my Taskbar.
![]()
That gets me my Raspberry Pi Motion Eye Camera feeds, The Environment Canada Weather website, Edge, and Outlook for e-mail.
And other custom setups for Minimize and Maximize all windows, Close Window, and all LEDs off and on.
Pressing Key 12 will close the selected App / Windows. Press and hold shuts down Windows.
You really need to run my code and play with the buttons to see what I’m talking about. A lot of what happens on a second or third button press was a pleasant surprise. =)
Once a button is pressed, pressing it again changes focus to that window / app. Further presses will minimize and maximize that Window.
Very interested to know what others have done with theirs, code wise.
Forgot to mention that my setup is a 3 monitor setup. When launched Apps remember what monitor they were last opened on. For most people, once you go multi monitor, you never go back to just using one. ;)
import usb_hid
from pmk import PMK
from pmk.platform.rgbkeypadbase import RGBKeypadBase as Hardware
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
from adafruit_hid.keycode import Keycode
pmk = PMK(Hardware())
keys = pmk.keys
keyboard = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(keyboard)
key0 = keys[0] # Taskbar Pin 1
key1 = keys[1] # Taskbar Pin 2
key2 = keys[2] # Taskbar Pin 3
key3 = keys[3] # Taskbar Pin 4
key4 = keys[4] # Taskbar Pin 5
key5 = keys[5] # Taskbar Pin 6
key6 = keys[6] # Taskbar Pin 7
key7 = keys[7] # Taskbar Pin 8
key8 = keys[8] # Taskbar Pin 9
key9 = keys[9] # Taskbar Pin 10
key10 = keys[10] # File Explorer
key11 = keys[11] #
key12 = keys[12] # Close Current window
key13 = keys[13] # Maximize all minimized Windows
key14 = keys[14] # Minimize all open windows
key15 = keys[15] # Turn Button LED's off and on
pmk.set_all(23, 23, 23)
@pmk.on_press(key0)
def press_handler(key0):
pmk.set_led(0, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.ONE)
@pmk.on_press(key1)
def press_handler(key1):
pmk.set_led(1, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.TWO)
@pmk.on_press(key2)
def press_handler(key2):
pmk.set_led(2, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.THREE)
@pmk.on_press(key3)
def press_handler(key3):
pmk.set_led(3, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.FOUR)
@pmk.on_press(key4)
def press_handler(key4):
pmk.set_led(4, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.FIVE)
@pmk.on_press(key5)
def press_handler(key5):
pmk.set_led(5, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.SIX)
@pmk.on_press(key6)
def press_handler(key6):
pmk.set_led(6, 42, 42, 0)
keyboard.send(Keycode.GUI, Keycode.SEVEN)
@pmk.on_press(key7)
def press_handler(key7):
pmk.set_led(7, 0, 0, 85)
keyboard.send(Keycode.GUI, Keycode.EIGHT)
@pmk.on_press(key8)
def press_handler(key8):
pmk.set_led(8, 85, 23, 0)
keyboard.send(Keycode.GUI, Keycode.NINE)
@pmk.on_press(key9)
def press_handler(key9):
pmk.set_led(9, 0, 0, 85)
keyboard.send(Keycode.GUI, Keycode.ZERO)
@pmk.on_press(key10)
def press_handler(key10):
pmk.set_led(10, 0, 42, 42)
keyboard.send(Keycode.GUI, Keycode.E)
#@pmk.on_press(key11)
#def press_handler(key11):
@pmk.on_press(key12)
def press_handler(key12):
pmk.set_led(12, 85, 0, 0)
keyboard.send(Keycode.ALT, Keycode.F4)
@pmk.on_hold(key12)
def hold_handler(key12):
keyboard.send(Keycode.ENTER)
@pmk.on_press(key13)
def press_handler(key13):
pmk.set_led(13, 0, 85, 0)
pmk.set_led(14, 23, 23, 23)
keyboard.send(Keycode.GUI, Keycode.LEFT_SHIFT, Keycode.M)
@pmk.on_press(key14)
def press_handler(key14):
pmk.set_led(14, 23, 0, 85)
pmk.set_led(13, 23, 23, 23)
keyboard.send(Keycode.GUI, Keycode.M)
@pmk.on_press(key15)
def press_handler(key15):
key0.led_on()
key1.led_on()
key2.led_on()
key3.led_on()
key4.led_on()
key5.led_on()
key6.led_on()
key7.led_on()
key8.led_on()
key9.led_on()
key10.led_on()
key11.led_on()
key12.led_on()
key13.led_on()
key14.led_on()
key15.led_on()
@pmk.on_hold(key15)
def hold_handler(key15):
key0.led_off()
key1.led_off()
key2.led_off()
key3.led_off()
key4.led_off()
key5.led_off()
key6.led_off()
key7.led_off()
key8.led_off()
key9.led_off()
key10.led_off()
key11.led_off()
key12.led_off()
key13.led_off()
key14.led_off()
key15.led_off()
while True:
# Always remember to call keybow.update()!
pmk.update()