您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页键盘:代码?钢琴

键盘:代码?钢琴

来源:欧得旅游网

当打代码的键盘和钢琴的键盘联系起来时,会发生什么呢?

1. Code

# coding: utf-8

import pyHook
import pythoncom
import win32api, win32gui, win32con
import time

class Player(object):
    def __init__(self):
        # open https://virtualpiano.net/
        self.window_name = 'Virtual Piano | The Original Best Piano App Online - Google Chrome'
        self._y = 530
        self.ori = 320 # x
        self.per = 35
        self.keys = [str(x) for x in range(1, 10)]
        self.keys.append(0)
        self.keys += ['q','w','e','r','t','y','u','i','o','p', \
                 'a','s','d','f','g','h','j','k','l', \
                 'z','x','c','v','b','n','m']
        self.keys_dict = {}
        for enum, key in enumerate(self.keys):
            self.keys_dict[key] = enum

    def pos(self, ind):
        return (self.ori + self.per * ind, self._y)

    def delay(self, length=0.5):
        time.sleep(length)

    def click(self, keyStr):
        (x, y) = self.pos(self.keys_dict[keyStr])
        hld = win32gui.FindWindow(None, self.window_name)
        if hld > 0:
            lParam = win32api.MAKELONG(x, y)
            win32gui.PostMessage(hld, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam)
            win32gui.PostMessage(hld, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, lParam)

    def play(self, keyStr, ifDelay=True):
        if keyStr not in self.keys:
            return
        self.click(keyStr)
        if ifDelay:
            self.delay()

player = Player()

def onKeyboardEvent(event):
    player.play(event.Key.lower(), ifDelay=False)
    return True

def main():
    hm = pyHook.HookManager()
    hm.KeyDown = onKeyboardEvent
    hm.HookKeyboard()
    pythoncom.PumpMessages()

if __name__ == '__main__':
    main()

依赖模块:
- win32api, win32gui, win32con: 比较好安装,一般windows下用anaconda,默认就有。
- pyHook[py2.7 & 位]:
- pythoncom[py2.7]:

2. Usage

使用之后发现,hjkl用多了,听到的这4个音最多了,哈哈~

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务