1 Star 0 Fork 13

Damon / JingTerm

forked from outersky / JingTerm 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
keymap.py 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
outersky 提交于 2021-01-15 21:55 . small change
from gi.repository import Gdk
# 键盘事件有关函数,设置易读的快捷键
def get_keyevent_name(key_event):
if key_event.is_modifier != 0:
return ""
key_modifiers = get_key_event_modifiers(key_event)
key_name = get_key_name(key_event.keyval)
if len(key_modifiers) == 0:
return key_name
name = ""
for modifier in key_modifiers:
name += modifier + " + "
name += key_name
return name
def get_key_event_modifiers(key_event):
modifiers = []
if key_event.state & Gdk.ModifierType.CONTROL_MASK != 0:
modifiers.append("Ctrl")
if key_event.state & Gdk.ModifierType.SUPER_MASK != 0:
modifiers.append("Super")
if key_event.state & Gdk.ModifierType.HYPER_MASK != 0:
modifiers.append("Hyper")
if key_event.state & Gdk.ModifierType.MOD1_MASK != 0:
modifiers.append("Alt")
if key_event.state & Gdk.ModifierType.SHIFT_MASK != 0:
modifiers.append("Shift")
return modifiers
def get_key_name(keyval):
key_unicode = Gdk.keyval_to_unicode(Gdk.keyval_to_lower(keyval))
keycode_map = {
8:"Backspace",
9:"Tab",
13:"Enter",
27:"Esc",
32:"Space",
127:"Delete"
}
if key_unicode == 0: # function keys at top line of keyboard
keyname = Gdk.keyval_name(keyval)
# Gdk.keyval_name will return null when user's hardware got KEY_UNKNOWN from hardware.
# So, we need return empty string to protect program won't crash later.
if keyname == None:
return ""
if keyname == "ISO_Left_Tab":
return "Tab"
else:
return keyname
else:
if key_unicode in keycode_map:
return keycode_map[key_unicode]
else:
return chr(key_unicode)
Python
1
https://gitee.com/DamonT/JingTerm.git
git@gitee.com:DamonT/JingTerm.git
DamonT
JingTerm
JingTerm
master

搜索帮助