return键盘上哪个键(键盘上的return键)
前沿拓展:
return键盘上哪个键
在电脑键盘上写有Enter或return字样的按键,被叫做“回车键”。其中Enter是Windows系统的叫法,而macOS中叫做return。
有的Windows电脑的enter按键会有一弯箭头。
回车键有两个作用,一是确认输入的执行命令,是在文字处理中起换行的作用。
回车键也是电脑键盘上被用得较多的按键之一,使用回车键要注意:不要大力猛敲猛砸。
大家好,我是安果!
对于键盘没有背光灯的同学而言,切换大小写或控制 Num 键开关的时候没有提示,经常需要试探性地输入一些字符来判断开关是否打开,体验非常糟糕
因此,有人就想到自制脚本这一招,一旦触发大小写切换或 Num 键切换就进行 windows 通知提示:
https://github.com/skate1512/Toggle_Keys_Notification
今天我们来试试这个脚本,此外,我们还可以基于这个项目,扩展成任意一个按键被触发或切换都进行 windows 通知的脚本:
1.准备
请选择以下任一种方式输入命令安装依赖:1. Windows 环境 打开 Cmd (开始-运行-CMD )2. MacOS 环境 打开 Terminal ( Command + 空格输入Terminal )3. 如果你用的是 VSCode 编辑器 或 Pycharm,可以直接使用界面下方的Terminal
pip install win10toast
2.源码使用与解析
2.1 源码使用
作者的项目可以在 Toggle_Keys_Notification 项目内,运行 notify.py 启动**:
python notify.py
启动后点击一下大小写切换键,触发通知则说明代码正常运转:
2.2 源码分析
该项目通过 win32gui 和 win32con 实现了弹出 toast 进行通知的功能,最核心的 _show_toast 代码位于 toast.py 中
下面是这个函数的部分代码剖析:
注册和创建 window :
message_map = {WM_DESTROY: self.on_destroy, }# 注册Windowself.wc = WNDCLASS()self.hinst = self.wc.hInstance = GetModuleHandle(None)self.wc.lpszClassName = str("PythonTaskbar") # 定义该窗口结构的名称self.wc.lpfnWndProc = message_maptry: self.classAtom = RegisterClass(self.wc)except: pass # Window格式style = WS_OVERLAPPED | WS_SY**ENU# 创建Windowself.hwnd = CreateWindow(self.classAtom, "Taskbar", style, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, self.hinst, None)UpdateWindow(self.hwnd)
所使用到的 win32 模块解析如下。
GetModuleHandle : 获取一个应用程序或动态链接库的模块句柄。
WM_DESTROY : 关闭程序。
RegisterClass : 将定义好的Window属性保存保存下来。
WS_OVERLAPPED : 重叠式窗口,该式样窗口 带有一个标题栏和边框。
WS_SY**ENU : 具有 SYSTEM 菜单栏的样式
CW_USEDEFAULT : 采用系统默认位置
CreateWindow 这个函数有非常多的参数,甚至有一个百度百科来详细解析每一个参数的具体作用,大家感兴趣可以移步:
https://baike.baidu.com/item/CreateWindow/5076220
了解 win32 这些模块名称的意义后,理解上述代码的逻辑便很轻松了
图标加载及任务栏图标显示配置:
# 图标if icon_path is not None: # 获取图标地址 icon_path = path.realpath(icon_path)else: icon_path = resource_filename(Requirement.parse("win10toast"), "win10toast/data/python.ico")# 加载格式icon_flags = LR_LOADFROMFILE | LR_DEFAULTSIZEtry: hicon = LoadImage(self.hinst, icon_path, IMAGE_ICON, 0, 0, icon_flags)except Exception as e: logging.error("Some trouble with the icon ({}): {}" .format(icon_path, e)) hicon = LoadIcon(0, IDI_APPLICATION)# 任务栏图标flags = NIF_ICON | NIF_MESSAGE | NIF_TIPnid = (self.hwnd, 0, flags, WM_USER + 20, hicon, "Tooltip")Shell_NotifyIcon(NIM_ADD, nid)Shell_NotifyIcon(NIM_MODIFY, (self.hwnd, 0, NIF_INFO, WM_USER + 20, hicon, "Balloon Tooltip", msg, 200, title, NIIF_ICON_MASK))# 等待一会后销毁sleep(duration)DestroyWindow(self.hwnd)UnregisterClass(self.wc.lpszClassName, None)
这部分代码控制了通知弹出框的展示和销毁。如果你希望通知弹出框久一点再消失,可以适当修改传入的 duration 变量值。
DestroyWindow 后,通知弹出框便消失了,整个 show_toast 的过程结束。
其实非常简单,从 CreateWindow 到 DestroyWindow 处理弹出框的各种属性,然后注销窗体,完成整个弹出流程
3.扩展触发通知
为了扩展**的按键,并能**按键触发,需要先了解 notify.py 是如何检测到按键变化的。
获取按键状态:
keyboard = ctypes.WinDLL("User32.dll")VK_NUMLOCK = 0x90VK_CAPITAL = 0x14def get_capslock_state(): """Returns the current Caps Lock State(On/Off)""" return "Caps Lock On" if keyboard.GetKeyState(VK_CAPITAL) else "Caps Lock Off"def get_numlock_state(): """Returns The current Num Lock State(On/Off)""" return "Num Lock On" if keyboard.GetKeyState(VK_NUMLOCK) else "Num Lock Off"
可以看到,获取按键状态是通过 keyboard.GetKeyState(XXXX) 实现的。
而这个XXXX是对应的按键的十六进制,比如 VK_NUMLOCK 是Num键,对应的16进制代码是0x90, VK_CAPITAL 是大小写按键,对应的十六进制代码是0x14.
变量名是可以用户自定义的,比如大小写键有些人习惯称之为 VK_CAPITAL ,也有些人喜欢称之为 VK_CAPITAL ,都可以,只要其最终对应的变量值为十六进制的0x14即可。
部分按键 16 进制清单如下:
常数名称
十六进制值
对应按键
VK_BACK
08
Backspace键
VK_TAB
09
Tab键
VK_CLEAR
0C
Clear键(Num Lock关闭时的数字键盘5)
VK_RETURN
0D
Enter键
VK_SHIFT
10
Shift键
VK_CONTROL
11
Ctrl键
VK_MENU
12
Alt键
VK_PAUSE
13
Pause键
VK_CAPITAL
14
Caps Lock键
再来看看**逻辑:
caps_curr = get_capslock_state()num_curr = get_numlock_state()while True: caps_change = get_capslock_state() num_change = get_numlock_state() if caps_curr != caps_change: if caps_change == "Caps Lock On": pop_up("Caps Lock On", "CapsLock_On.ico") else: pop_up("Caps Lock Off", "CapsLock_Off.ico") caps_curr = caps_change time.sleep(0.1) if num_curr != num_change: if num_change == "Num Lock On": pop_up("Num Lock On", "NumLock_On.ico") else: pop_up("Num Lock Off", "NumLock_Off.ico") num_curr = num_change time.sleep(0.2)
在刚开始运行**脚本时,先获取到按键的状态,在循环体中,不断地获得当前按键状态,如果发生了状态变化,则触发 pop_up 函数,弹出刚刚我们提到的 show_toast 函数:
def pop_up(body, icon): """Generates Pop-up notification when state changes""" notification = ToastNotifier() notification.show_toast("Lock Key State", body, icon_path="assets\\"+icon, duration=1.5)
整套**并通知的机制还是非常简单的,如果我们想要自定义一些按键,你只需要在开头添加对应的按键的十六进制编码,然后添加一些**函数。
比如我们想** ESC 按键被按下: VK_ESCAPE=0x1B ,使用 keyboard 模块添加一个钩子函数,**按键:
import keyboard as kbdef hook_esc(button): """Alert if ESC button is pressed""" esc_button = kb.KeyboardEvent('down', VK_ESCAPE, 'ESC') if button.event_type == 'down' and esc_button.name == button.name: pop_up("ESC Pressed", "CapsLock_On.ico") # 敲击后回填为None button.event_type = None
然后再在循环体内添加判断逻辑:
kb.hook(hook_esc)
效果如下:
当然,图标和标题还可以进一步优化:
比如:将 Lock Key State 这个标题用 toast_title 变量替代,默认为 Lock Key State。这样在调用 pop_up 函数的时候就能自定义标题了
最后效果图如下:
拓展知识:
return键盘上哪个键
回车键,即键盘上的ENTER键,如果是标准键盘,一个是在主键盘区的右边,就是字母区域最大面积的按键;还有一个是在右侧小键盘区域的右下角,加号键的下面。以下是详细介绍:
1、在标准键盘上,回车键一共有2个,一个在主键盘区的右边,Shift键的上面,就是字母区域最大面积的按键。
2、一个是在右侧小键盘的右下角,加号键的下面,也有一个标注为【Enter】的按键。
关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个字符(原为单词,但是个人觉得这里应该是字符),“字车”就前进一格。
当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。
在电脑键盘上,“回车键”上曾经使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。
本回答被网友采纳
return键盘上哪个键
回车键其实就是我们键盘上面标示为“Enter”的那个键,这个键是我们在输入文字的时候最常用的一个键,它的作用是用来换行,比如你输入完一段文字,想在下一行输入下一个段落的时候,就可以按一下回车键,那么鼠标的光标就到了下一行去了,QQ聊天的时候,回车键默认是消息发送按键,当我们在QQ聊天框输入完内容,按一下回车键就可以发送了。
本回答被网友采纳
return键盘上哪个键
回车键:电脑键盘上的“Enter”字样的按键
return键盘上哪个键
就是这个。
原创文章,作者:九贤互联网实用分享网小编,如若转载,请注明出处:http://www.kaicen.cn/20220919472912.html