#!/usr/bin/env python3 from .keyboard import Keyboard from .keymap import Keymap from .color import Color import openrazer.client from pynput import keyboard as keyboardnput keyboard = Keyboard(no_keymap=True) if not keyboard.found_keyboard(): print("No keyboard was found") exit() last_key_pressed = None def on_press(key): global last_key_pressed last_key_pressed = key return False def get_key(): with keyboardnput.Listener(on_press=on_press) as listener: listener.join() def set_key_columns(keymap, column_range, prefix=""): for row in range(0, 6): for column in column_range: keyboard.clear() keyboard.set_key(row,column, Color(255, 255, 255)) keyboard.draw() get_key() print('{} was pressed'.format(last_key_pressed)) keymap[prefix + str(last_key_pressed)] = row * 22 + column def iter_keys(): keymap = dict() print("Make sure caps lock and numpad are disabled, if not, do it now and restart the script") print("This script will iterate over all keys, row by row. When a key lights up white, press it, and use the mouse to cancel any F-key effects. First, we'll skip the numpad. If no key lights up, press the bottom-right most key, excluding the numpad(right-arrow).") set_key_columns(keymap, range(0, 18)) print("Now we'll iterate over the numpad, if no key lights up, press the bottom right key(enter)") set_key_columns(keymap, range(18, 22), "num_") return keymap keymap = Keymap() keymap.set_keys(iter_keys()) keymap.write_keymap_file(keyboard.keyboard_name) print('Saved keymap to file (.config/openrazer_scripter/keymap.json)')