GitXplorerGitXplorer
B

touchpadAsNumpad

public
1 stars
0 forks
1 issues

Commits

List of commits on branch master.
Unverified
18a23fa3cfe8e7d237cba5ce808bc9a94168a559

fix no touchpad got err

BBackMountainDevil committed 9 months ago
Unverified
2976260aa432817a084896f58e7c044f0cf5eaf2

chore:add gitignore

BBackMountainDevil committed 2 years ago
Unverified
4e1f99d20857db2457ce1ad6ff693c11c5867dbf

refactor:use keymap replace eval() to kill CWE-94

BBackMountainDevil committed 2 years ago
Unverified
228fb40072156f02a81ec14ae65a0f523c62d54f

doc:format

BBackMountainDevil committed 2 years ago
Unverified
8836a1e9d0760991c82017997439efa8e624bbc0

feat:add notify

BBackMountainDevil committed 2 years ago
Unverified
e8f8869297b2e773dadcc9a86f43b3fee8d5d86f

update:实现模式切换v2

BBackMountainDevil committed 2 years ago

README

The README file for this repository.

触摸板当作数字小键盘

这python代码的作用是使笔记本的触摸板当作数字小键盘,即触摸板从移动光标模式切换为数字小键盘模式之后,这个代码监听用户触摸的位置,然后模拟对应的键盘事件

dev info

  • Python 3.8.13
  • evdev 1.6.1
  • pynput 1.7.6
  • device: Lenovo XiaoXinPro-13ARE 2020 Laptop

布局

7 8 9 backspace
4 5 6 +
1 2 3 -
0 0 . enter

简单编码为,实际是其转置矩阵

OUT = [
    [7, 8, 9, "backspace", "backspace"],
    [4, 5, 6, "+", "+"],
    [1, 2, 3, "-", "-"],
    [0, 0, ".", "enter", "enter"],
]

第四列是第三列的重复,因为测试发现absx // ((ABS_X_MAX - ABS_X_MIN) // 4) 时在触摸板边缘可以取到 4,本想者取值范围 [0,3],结果边缘是 4, 简单cv下即可

模式切换

切换快捷键组合:ctrl+alt+n

普通模式和数字小键盘模式:触摸板正常工作即为普通模式,当在程序里切换为数字小键盘之后,系统不再相应移动光标和单击,直到切换回普通模式

xinput list 可以获取到触摸板设备的id,xinput list-props device 可以获取到设备有哪些属性和对应的编号。根据前面两条指令可以得到“Device Enabled (162)”,xinput set-prop 14 162 0的意思是把设备14(因设备而异,我的触控板ID是14),162就是前面得到的属性,0就是关闭这个属性(1是开启),实测表明:关闭该属性不能移动鼠标,按钮无效、滚动无效,但是可以响应多指事件。

通知

QSystemTrayIcon 可以发送通知,结合 QMenu 还可以加一个退出按钮,但是和代码结果起来效果就变了。copilot 还给刘个建议是 from gi.repository import Notify。搜索引擎得到一个 subprocess.Popen(['notify-send', summary, body]),效果正好,但是用root运行就变的异常了。

Refer

dibsonthis/keyboard_listener

How do I send text messages to the notification bubbles? 2012