读取剪贴板英语转换为国际莫斯码

本文介绍了一个利用Python和第三方库pynput及win32clipboard开发的程序,能自动检测键盘输入并在按下Ctrl+Z时将剪贴板内容转换为国际莫斯码并重新粘贴。教程中还包含了一个完整的莫斯码对照表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python全代码如下
执行代码之后会自动检测按键,按下Ctrl+Z之后程序读取剪贴板然后转换为莫斯码再次写入剪贴板
使用第三方模块:
pynput
win32clipboard

文章尾部附带国际莫斯码表

示例:
Caesar openly defied the Senate's authority by crossing the Rubicon and marching towards Rome at the head of an army.

.-  .  ...  .-  .-.     ---  .--.  .  -.  .-..  -.--     -..  .  ..-.  ..  .  -..     -  ....  .     .  -.  .-  -  .  ...     .-  ..-  -  ....  ---  .-.  ..  -  -.--     -...  -.--     -.-.  .-.  ---  ...  ...  ..  -.  --.     -  ....  .     ..-  -...  ..  -.-.  ---  -.     .-  -.  -..     --  .-  .-.  -.-.  ....  ..  -.  --.     -  ---  .--  .-  .-.  -..  ...     ---  --  .     .-  -     -  ....  .     ....  .  .-  -..     ---  ..-.     .-  -.     .-  .-.  --  -.--  .-.-.-  

'''
英语->国际莫斯码转换器

执行代码之后会自动检测按键,按下Ctrl+Z之后程序读取剪贴板然后转换为莫斯码再次写入剪贴板

使用第三方模块:
pynput
win32clipboard
'''

import win32clipboard
import time
from pynput.keyboard import Key, Listener, HotKey
from multiprocessing import Process
from threading import Thread


class Detect_key():
	'''
		实时检测键盘输入
	'''
	def __init__(self,keys):
		self.lisener=None
		def handle_s():
			with Listener(on_press = self.on_press,on_release = self.on_release) as self.lisener:
				self.lisener.join()
		def handle_c():
			with Listener(on_press=self.for_canonical(hotkey.press),
						on_release=self.for_canonical(hotkey.release)) as self.l:
				self.l.join()
		lis_1=Thread(target=handle_s)
		lis_1.start()
		hotkey = HotKey(HotKey.parse(keys),self.on_activate)
		lis_2=Thread(target=handle_c)
		lis_2.start()

		#莫斯码表,换行换做为3个空格
		self.eng_morse={'a' : '.-', 'b' : '-...', 'c' : '-.-.', 'd' : '-..', 'e' : '.', 'f' : '..-.', 'g' : '--.',
		 'h' : '....', 'i' : '..', 'j' : '.---', 'k' : '-.-', 'l' : '.-..', 'm' : '--', 'n' : '-.', 'o' : '---',
		  'p' : '.--.', 'q' : '--.-', 'r' : '.-.', 's' : '...', 't' : '-', 'u' : '..-', 'v' : '...-', 'w' : '.--',
		  'x' : '-..-', 'y' : '-.--', 'z' : '--..', '.' : '.-.-.-', '?' : '..--..', ',' : '--..--',
		  '1':'.----','2':'..---','3':'...--','4':'....-','5':'.....','6':'-....','7':'--....','8':'---..',
		  '9':'----.','0':'-----',' ':' ',chr(10):'   '}

	def on_press(self,key):
		'''
			单个按键按下
		'''
		if key == Key.esc:
			self.lisener.stop()
			self.l.stop()

	def on_release(self,key):
		'''
			单个按键抬起
		'''
			pass

	def on_activate(self,):
		'''
			组合键按下
		'''
		win32clipboard.OpenClipboard()	#打开剪贴板
		try:
			result = win32clipboard.GetClipboardData()
		except TypeError:
			result = ''  #非文本
		morse=''
		for char in result:
			if char in self.eng_morse:
				morse += self.eng_morse[char]
				morse += ' '	#加入空格
		print(morse)
		win32clipboard.EmptyClipboard()
		win32clipboard.SetClipboardText(morse)
		win32clipboard.CloseClipboard()



	def for_canonical(self,f):#pynput模块连接
		return lambda k: f(self.l.canonical(k))


s_key=Detect_key('<ctrl>+z')#输入组合按键

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值