Is there a way to edit the maximum CPS in pynput? - python

So recently I've been using pynput and I have noticed that no matter the delay I set it as the maximum CPS with pynput is always 10 cps. Now in pyautogui you can edit the hard coded pause between clicks, but I was wondering if this is possible in pynput.
For example:
import pynput
from pynput.mouse import Button as btn
from pynput.mouse import Controller
import time
mouse = Controller()
delay = 0
mouse.click(btn.left)
time.sleep(delay)
No matter what you change the "delay" value to, the max CPS is always 10 with Pynput, and trying "pynput.PAUSE = 0.01" doesn't change the output.

Related

Problem with keyboard library, exactly with stopping .record() in function

import keyboard
import time
import pyautogui
import mouse
def call_record():
event = keyboard.record(until='shift')
print("ended record")
def call_playrecord():
print('playing...')
keyboard.play(event)
keyboard.add_hotkey('l', call_record)
keyboard.add_hotkey('n+m', call_playrecord)
keyboard.wait('esc')
This is a code and a problem about that, is that record wont stop when i press 'shift'
(nevermind that i dont have global set on event i will make this later)
I tried to make a record and play system with hotkeys but i cant stop the record

Pynput check if key is currently being pressed

I'm writing a background scrypt that requires a left mouse button to be pressed. Currently my code looks something like this:
from pynput.mouse import Button
from pynput.mouse import Controller
mouse = Controller()
def main():
mouse.press(Button.left)
while True:
#do sth every n seconds
main()
However, background activity sometimes causes the mouse button to be released.
Is there a way to check if the key is pressed within the while loop (Something like mouse.is_pressed(Button.left)) other than adding another mouse.press(pynput.mouse.Button.left) every iteration of loop?

randomize the time from time.sleep

I'm fairly new to python and have been trying to write a script that automates a string of text. The problem is that i don't know how to randomize the time.sleep function. I have also tried adding the time in range function but still can't get it to randomize it.
The code looks like this at the moment. I have to get rid of the time.sleep(40) to randomize it
import time
from pynput.keyboard import Key, Controller
while True:
keyboard = Controller()
time.sleep(40)
for char in "nnnn":
keyboard.press(char)
keyboard.release(char)
time.sleep(0.21)
Use the random module
import random
import time
from pynput.keyboard import Key, Controller
while True:
keyboard = Controller()
sleep_time = random.randrange(0, 100)
time.sleep(sleep_time)
for char in "nnnn":
keyboard.press(char)
keyboard.release(char)
time.sleep(0.21)

Not able to select text in pynput

I'm writing a python script using pynput library, in which I want to select the text of particular length.
For that I'm first pressing shift and then pressing multiple times left arrow key. So that the text left to the cursor id selected and can be further used for copying purpose.
Here is my code:
from pynput import keyboard
from pynput.keyboard import Controller
keyboard_controller = Controller()
with keyboard_controller.pressed(keyboard.Key.shift_l):
keyboard_controller.press(keyboard.Key.left)
keyboard_controller.release(keyboard.Key.left)
keyboard_controller.press(keyboard.Key.left)
keyboard_controller.release(keyboard.Key.left)
keyboard_controller.press(keyboard.Key.left)
keyboard_controller.release(keyboard.Key.left)
This moves my cursor to left by 3 steps but even if the shift is pressed, the text is not getting selected. What I'm missing here?
Edit:
OS: Windows 10
Environment: Python 3.6.5
Here is demo of what is happening in my vs code.
Maybe try this?
from pynput.keyboard import Key
from pynput.keyboard import Controller
keyboard = Controller()
Option 1:
with keyboard.pressed(Key.shift):
keyboard.press(Key.left)
keyboard.release(Key.left)
keyboard.press(Key.left)
keyboard.release(Key.left)
Option 2:
keyboard.press(Key.shift)
keyboard.press(Key.left)
keyboard.release(Key.left)
keyboard.press(Key.left)
keyboard.release(Key.left)
keyboard.release(Key.shift)
Option 3:
keyboard.press(Key.shift.value)
keyboard.press(Key.left.value)
keyboard.release(Key.left.value)
keyboard.press(Key.left.value)
keyboard.release(Key.left.value)
keyboard.release(Key.shift.value)
Here is video proof it works on my machine :)
I've just toyed around with pynput and pyautogui and finally found a combination using pynput that will complete this shift hotkey function. I was using page_down rather than arrow keys for my code but I confirmed that both work. For some reason if you press down both the shift key and shift_r key, you are able to highlight text by moving the cursor.
Setup:
from pynput.keyboard import Key, Controller
keyboard = Controller()
Code:
keyboard.press(Key.shift)
keyboard.press(Key.shift_r)
keyboard.press(Key.page_down) # or keyboard.press(Key.left)
keyboard.release(Key.page_down) # or keyboard.release(Key.left)
keyboard.release(Key.shift_r)
keyboard.release(Key.shift)

python keyboard.press not working with other applicatons

I have made a python script that presses space once a second so I can go AFK in games and not get kicked for being idle. I tested it in notepad and it works but when i open Minecraft or Roblox nothing happens.
I did try looking for an answer but couldn't find anything
from pynput.keyboard import Key, Controller
import time
keyboard = Controller()
while True:
time.sleep(1)
keyboard.press(' ')
keyboard.release(' ')
Sometimes games won't recognize a super-short key press. You essentially have a space press of less than a microseconds. Try adding a delay between the press and release.
from pynput.keyboard import Key, Controller
import time
keyboard = Controller()
while True:
time.sleep(1)
keyboard.press(' ')
time.sleep(0.15)
keyboard.release(' ')
you should probably run the cmd as administrator and put in some delay for keys to be registered. play around with the values of the delay to find one that suits your need
from pynput.keyboard import Key, Controller
import time
import keyboard
keyboard = Controller()
while 1:
if keyboard.is_pressed('r'):
while True:
time.sleep(1)
keyboard.press('space')

Categories