键盘

All posts tagged 键盘

近来阅读电子书。电子书的一个好处是数据可以云下载、云携带、云阅读……然而,一个可预见的致命问题是:对于一些私有文件格式的,或干脆不是以文件方式提供的电子书来说,一旦提供方(公司)停止了服务,那么之前所购买的电子书很可能在短时间内就化为乌有——或者说,即便文件在,也可能因为电子书的软件不再提供新版本,或硬件无法维修或新购,而变成了逐渐无法打开阅读的电子数据。

在面临这样的灾难之前,有个办法是:截图。据我了解,好像在我所在的地区,在个人(不传播给他人)使用这一前提下,著作权物也是可以由用户自行复制的。因此,网上不少视频也会教人怎么用 iPad 查看电子书,并且用截图保存的方式,把电子书的图像保存下来,以便今后长期阅读。

然而……网上介绍的都是动手操作的技巧,顶多是在此之上增加一些小技巧,例如用 Apple Pencil 从 iPad 边角划入屏幕就可以截屏之类的技巧。换言之,每一次的截图、翻页都是要人工干预的。之前一阵子,我也尝试过这么做,比如拿一个蓝牙鼠标和 iPad 配对,然后每点一次截图,再点一次翻页……虽然书是能安心地保存成今后长期可读格式,但手动操作总显得有点麻烦——要人执行啊!

有没有更好的方法呢?那就是买一台具身智能机器人啊!让机器人帮你来按截图键!多棒!看他们金属的拟态肤质手指触摸最新 iPad Super Pro Ultra XXX 的金属按键……嗯,具身智能机器人这个话题似乎还早了 10 到 15年的时间……其实有个更廉价的方案,就是找一个可以模拟鼠标或键盘的东西,来进行循环模拟操作(我知道有类似可编程鼠标、可编程键盘的),而这一次,我找到了树莓派的小卡板 Raspberry Pi Pico W 。

那么下一个问题来了:虽然我有长年使用树莓派的经验,但是,我一直只是把它当作一个 Linux 电脑来用的,要怎么使用这个 Pico 呢?怎么把它变成一个键盘,然后反复对 iPad 操作截图和翻页呢?

这好办,都 2024 年了,来问问生成式 AI ( ChatGPT )吧!经过一番探讨,我们商量出了(其实是我指示 ChatGPT 给出了)以下的代码:

import time
import random
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

# 初始化键盘
keyboard = Keyboard(usb_hid.devices)

# 定义截图和翻页函数
def take_screenshot():
    # 模拟 Command + Shift + 3 截图快捷键
    keyboard.press(Keycode.COMMAND, Keycode.SHIFT, Keycode.THREE)
    time.sleep(0.1)  # 按住键一小段时间
    keyboard.release_all()

def turn_page():
    # 模拟左箭头按键翻页
    keyboard.press(Keycode.LEFT_ARROW)
    time.sleep(0.1)  # 按住键一小段时间
    keyboard.release_all()

# 主程序
def main():
    # 添加启动延迟,确保Pico W被正确识别
    time.sleep(5)  # 延迟5秒,让iPad充分识别Pico W

    while True:
        # 截图
        take_screenshot()
        time.sleep(3)  # 等待3秒保存图片

        # 翻页
        turn_page()
        # 随机等待4到6秒之间的时间 
        wait_time = random.uniform(1, 3) 
        time.sleep(wait_time)

# 启动主程序
main()

当然,在此之前,还要下载一个似乎是用于将 Pico 模拟成 HID 设备(鼠标、键盘等)的库所需的文件。 ChatGPT 如此说明:

确保 adafruit_hid 库可用:

前往 Adafruit_CircuitPython_HID 下载该库的 .mpy 文件。
将 adafruit_hid 文件夹复制到 Pico W 的 lib 文件夹中。

而在执行这个代码前,还要进行对 Pico 的 Python 运行环境的初始化操作,对此, ChatGPT 如此说明:

下载并将 CircuitPython 固件
(引用略)
放入 Raspberry Pi Pico W 是为了让设备支持使用 Python 语言进行编程。这一步将 Pico W 的系统替换为 CircuitPython 固件,使其在连接到电脑后能够像 USB 闪存驱动器一样显示。

操作步骤很简单:按住 Pico W 的 BOOTSEL 按钮,将它连接到电脑,然后将下载的 .uf2 文件拖放到显示出来的 Pico 闪存驱动器上,等它自动重启后就完成了。这之后,你可以直接用 Python 编写和运行代码,适合初学者入门。

关于这一部分,各位可以自己找找看网上的 Pico 教程,或是问问 AI ,相信应该不难弄明白。

至于说这段代码的实现原理?不知道,反正即便是在没有 ChatGPT 的时代,我也差不多就是这样看着 API 说明文档以及网上教程来边试错边操作的。这一次总之就是用 python 程序控制 Pico 成为一个 HID键盘,循环输出键盘按键(截图组合快捷键、翻页用箭头方向按键)。

而通过简单观察代码可知:

    # 模拟左箭头按键翻页
    keyboard.press(Keycode.LEFT_ARROW)

这一行代码是控制翻页的,这里是用向左方向键来进行翻页。如果你的电子书是按别的方向键翻页的话,则请按需调整:

# 左方向键
keyboard.press(Keycode.LEFT_ARROW)

# 右方向键
keyboard.press(Keycode.RIGHT_ARROW)

# 上方向键
keyboard.press(Keycode.UP_ARROW)

# 下方向键
keyboard.press(Keycode.DOWN_ARROW)

你看,虽然具身人工智能机器人还没有来到我们身边,但是通过树莓派小小的硬件,以及通过与 ChatGPT 的问答进行简单学习,我已经实现了简化操作!整理和写这篇博客的时候,我的 iPad 连上 Pico W ,已经差不多截图了 3 本电子书了~

刚看到 Reddit 上有人用 ChatGPT 新发布的 o1-preview 做了个HTML中的简易 FPS 游戏。于是我也想仿效一下,做一个 3D 键盘按键模拟视图吧!

不过据说 o1-preview 的每周限制次数比较大,而 o1-mini 似乎还宽松一些(好像是这样?未确认),于是这次我选择了后者。

我给出的指示是:

我想做一个本地html文件,其中用webGL或者别的什么3D技术,或者纯粹线条,画出一个3D的、从斜上方看过去的键盘(类似人类操作键盘时的视角)。

当我按下我电脑键盘上的某个键时,该网页上对应的3D键盘上的某个键,也要在网页3D图像中看上去被按下。当我放开电脑上键盘的某个键时,也要在网页3D图像中看上去被释放(键盘恢复没有被按下时的状态)。

对于同时按住多个按键,网页上的3D键盘也应该要能反映,并显示对应的多个按键被按下或被释放(恢复原来位置)。

另外,我也希望有表示 CapsLock,NumLock的显示灯。

请为我生成完整的html代码。

经过大约 10 步的除错问答等,终于得到了一段比较符合我原来构想的代码(贴在本文最后)。

不过仍有一些不太符合我设想指出,包括:其一,这不太像是人使用键盘时的那种「斜上方视角」,其二,对于 CapsLock ,以及 F1 ~ F12 等功能键,模拟键盘中的对应反映仍不是很正常。

(注:本来想贴出代码的,不过好像 html 转义一多,就无法在 WordPress 中提交成功。于是代码从略。)

我用的macbook就是macbook——对,就是那台首先采用USB Type-C接口而且也是除音频接口外唯一一个数据交换及充电接口的那台12寸macbook,可以说是跨时代标志性的型号了。随着使用,键盘就渐渐出现磨损情况,而最近由于我进行的书本摘录的事务比较多(就是把读书有兴趣的段落甚至整页手工输入到笔记软件中),因此它的回车键出现了下陷、敲击时一侧无法触发的情况。于是我总算是把它拿去AppleStore送修了,现以本篇博客文章来记录一下磨损的状况、送修的过程以及听来的一些小知识。

12寸macbook购入、使用及售后

我这台12寸macbook是第一代12寸macbook,是我于2015年的夏天在日本东京购买的——要注意的是,日本所购买的键盘,大致分为两种布局:英文布局及日文布局。我当时一度考虑过日文布局,但最终还是购买了英文布局。现在想想还好买的是英文布局,这样在中国也能修理。

继续阅读

 

看到之前馄饨发的机械键盘贴,我想到自己也有几把机械键盘,还有几款鼠标可以与大家分享一下选购与使用体会。

以前用普通无线键鼠就不说啦,第一款记得型号的鼠标是罗技G7限量版。当然也不玩什么动作游戏,只是觉得想买来试着用用看,其实和其他中高端鼠标好像也没什么明显的区别。只是觉得这家伙的故障率挺高,当然也都是很常见的微动接触不良之类。我大概换过两三次,罗技每次倒也豪装直接换新的(应该是良品也就是返修品吧)。直到最后连库存的良品都没了罗技问我要不要换当年同档次MX Revolution,我想了想还是算了。

继续阅读

没想到时隔半年,又入了一次键盘坑。为何呢?因为罗技K750用了不到半年,坏了……罗技在传统领域——键鼠工艺方面还是不错的,不过这次故障出在能源系统上——K750是一款太阳能键盘,本来连续用了半年没问题的,这一周来电量很不正常,一天不见光就不行了。刚才早上查了下资料,罗技K750所用的可充电锂电池是研发投入生产才一年的新产品(网页链接找不到了)看来这种新技术果然还是需要经受时间检验啊。
刚才中午跑去送修,把键盘放在了罗技售后处,那边答应检测出来确实有问题就可以换个新的(之所以没有今天就换新的是因为售后没有K750存货),让我等两个礼拜。于是这两个礼拜我的一台电脑岂不是没键盘用了?(当然罗技维修点也提供了备用键盘,不过那个太挫了)遂去徐家汇和浦东太平洋逛了一圈,买了个新键盘。这次上的是filco的青轴,上图:

继续阅读

恩,其实昨天写初笔?建是有“预谋”的,今天就加上了个金字旁,变成了键盘的“键”。

 

在风影的谆谆怂恿下,了解到了这世界上还有机械键盘这东西,对外设我是比较感兴趣的,看网上评价似乎是个很神奇的东西,既复古(好像十几年前键盘都是)又时尚(继无线键盘之后又一个标杆)。于是趁这次打算配台新电脑的时机,先行买了一块机械键盘。

 

 

实物照片就不拍了,因为没有拔键器,没法展示传说中的Cherry轴。就贴一张软件设置图吧。测评也不写了,因为我本来就不懂什么键盘知识,没啥好测评的,写了反而像是蹩脚的枪文-__-。只是想给龙之谷玩家写一句:这款键盘的自定义按键,其映射功能可以在龙之谷中实现。(当前是2011年1月1日)比如我就把图中那个橘红色的按键设成“1”了,然后在龙之谷里就可以使用一号位的表情或技能了。(之前用罗技手柄作映射不行,不知道何故。)

 

买之前看网上说机械键盘是享受打字的感觉,在店里试的时候也只是觉得和薄膜键盘感觉有所不同,但并没有深刻体会。现在拿回家,在显示器前一放,一段话输入下来,终于体会到了这种神奇的效果。网上那些“手指在键盘上跳舞”、“指上马杀鸡(按摩)”也毫不为过了。

 

就像一年前玩DC的我第一次用单反拍照时对大光圈镜头随随便便就能拍出漂亮的焦外虚化效果感到神奇一样。

 

 

最后作个预告,新电脑的名字已经取好。

 

“贪狼”可谓打开其“Beast Mode”~