2009-05-12 16 views
17

Pythonでプログラムでを変更する方法はありますか? CAPS LOCK/NUM LOCK/SCROLL LOCKの状態はどうですか?キーボードロックをPythonで変更する

これは本当に冗談の質問ではありません。冗談のような質問です。私はライトを面白いものにするためにそれを使用しようとしています...

+1

どのOSで実行していますか? –

答えて

14

窓を使用している場合はSendKeysを使用することができます。 Linuxの

http://www.rutherfurd.net/python/sendkeys

import SendKeys 

SendKeys.SendKeys(""" 
{CAPSLOCK} 
{SCROLLOCK} 
{NUMLOCK} 
""") 
+0

Numlockを切り替えるように設計された内部コードはありません。 – Brian

+0

ありがとうございます。私はPythonがSendKeysを持っているのを知らなかった。 –

+0

python 2.7バージョンはありますか? SendKeysサイトで見つからないようです。 –

15

ここでオンとオフのすべてのキーボードのLEDを点滅させるPythonプログラムです:

import fcntl 
import os 
import time 

KDSETLED = 0x4B32 
SCR_LED = 0x01 
NUM_LED = 0x02 
CAP_LED = 0x04 

console_fd = os.open('/dev/console', os.O_NOCTTY) 

all_on = SCR_LED | NUM_LED | CAP_LED 
all_off = 0 

while 1: 
    fcntl.ioctl(console_fd, KDSETLED, all_on) 
    time.sleep(1) 
    fcntl.ioctl(console_fd, KDSETLED, all_off) 
    time.sleep(1) 
+0

私はLinux上にいるので、私はそのショットをあげるでしょう。私はWindowsを目指していましたが、それを明確にしておくべきです:) –

+3

ニースですが、権限が設定されていない限り、/ dev/consoleを開くにはroot権限が必要です。それは通常のユーザーとして実行するための任意の方法ですか? –

2

CAPSを設定するのSendKeysを使用して特定の値にLOCKそれは最初に重要ですCAPS LOCKの状態を検出します。ここで(窓の下)Pythonでそれを行う方法は次のとおりです。Windowsの場合

import win32api,win32con 

def IsCapsLockOn(): 
    # return 1 if CAPSLOCK is ON 
    return win32api.GetKeyState(win32con.VK_CAPITAL) 
+0

ScrollLockとNumLockの状態はどうやって取得できますか? –

+0

私はそれを理解し、ここで私の答えに追加しました。 –

0

#https://stackoverflow.com/questions/21549847/send-key-combination-with-python 
#https://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx 

import win32com.client as comclt 
wsh= comclt.Dispatch("WScript.Shell") 
wsh.SendKeys("abc") #types out abc directly into wherever you have your cursor (ex: right into this editor itself!) 

wsh.SendKeys("{NUMLOCK}{CAPSLOCK}{SCROLLLOCK}") #toggles the state of NumLock, CapsLock, and ScrollLock; remove whichever one you don't want to toggle 

出典:

  1. Send key combination with python
  2. https://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx

また、CapsLockの状態を読み取る方法についてのUriの答えに注意を払ってください。 LED状態を真または偽に設定するには、盲目的に切り替えるだけではなく、現在の状態が最初であることを知る必要があります。彼はあなたにCapsLockの状態を読む方法を示します。私があったように、誰かが答えを探しているかもしれないとして、おそらくOPが、共有する価値に役に立たないの

#https://stackoverflow.com/questions/854393/change-keyboard-locks-in-python/854442#854442abc 
#https://support.microsoft.com/en-us/kb/177674 
import win32api,win32con 

def isCapsLockOn(): 
    "return 1 if CapsLock is ON" 
    return win32api.GetKeyState(win32con.VK_CAPITAL) 

def isNumLockOn(): 
    "return 1 if NumLock is ON" 
    return win32api.GetKeyState(win32con.VK_NUMLOCK) 

def isScrollLockOn(): 
    "return 1 if ScrollLock is ON" 
    return win32api.GetKeyState(win32con.VK_SCROLL) 

print("IsCapsLockOn = ", IsCapsLockOn()) 
print("isNumLockOn = ", isNumLockOn()) 
print("isScrollLockOn = ", isScrollLockOn()) 
0

が、サードパーティ製のモジュールを使用せずに解決策を見つけることができませんでした。ここではすべて3つのLEDの状態を読み取る方法です。これが私がキャップロックをオンにしたものです

import ctypes 

def turn_capslock(): 
    dll = ctypes.WinDLL('User32.dll') 
    VK_CAPITAL = 0X14 
    if not dll.GetKeyState(VK_CAPITAL): 
     dll.keybd_event(VK_CAPITAL, 0X3a, 0X1, 0) 
     dll.keybd_event(VK_CAPITAL, 0X3a, 0X3, 0) 

    return dll.GetKeyState(VK_CAPITAL) 
print(turn_capslock()) 
関連する問題