需求分析

我想开机禁用触摸板.

方案设计

  • 安装驱动:比较麻烦,驱动也不一定支持开机禁用触摸板.
  • 编程实现,让一段代码开机禁用触摸板

编程实现也分好几种方法:

  • 使用windows API禁用触摸板,这需要了解windows的API.
  • 模拟键盘按键,开机就通过按键禁用触摸板.(如是你闻,这正是我想说的).这种方法非常好.

    解决一个问题有两种解决方案:模拟人的行为和真正的去执行操作.例如提交表单这个动作可以用selenium模拟浏览器提交表单,也可以使用httpClient库提交表单.通常,模拟人的行为实现起来简单稳定,可靠性高,对操作对象的依赖程度比较低(只要用户接口不变,我就无需重写代码).一言以蔽之,通过用户接口来模拟人的行为,往往能够独辟蹊径,巧妙简洁的解决问题.

我的电脑禁用/启用触摸板快捷键是Fn+F6.如果你的电脑这个快捷键不包含Fn,那是最好.否则本文描述的方案不可行.

关键类Robot

使用java.awt.Robot类可以模拟人的很多操作,包括按键,鼠标,屏幕截图等各种操作.
那么问题来了,在java中KeyEvent.VK_...没有Fn键.因为Fn键属于用户的私有按键,涉及系统关键操作,不允许程序控制这个按键.你可以编一段代码测试一下,当按下键盘键时,输出键值,会发现按Fn时,啥都不输出,好像没有按键一样.
解决方案只剩下一种了,通过JNI调用操作系统底层接口.

java Fn键的更多相关文章

  1. Fn键

    需求分析 我想开机禁用触摸板. 方案设计 安装驱动:比较麻烦,驱动也不一定支持开机禁用触摸板. 编程实现,让一段代码开机禁用触摸板 编程实现也分好几种方法: 使用windows API禁用触摸板,这需 ...

  2. ThinkPad L440 FN键设置

    刚入手了ThinkPad L440,用起来相当不错,嘿嘿! L440系统默认(F1-F12)键盘为系统默认功能键,主要控制音量.亮度.连接投影仪等. 因为编写程序需要调试,经常用到F10,F11等键, ...

  3. 联想 thinkpad fn键关闭,优化使用

    工作给配的电脑是,联想 thinkpad E431,fn键真的是很不合理的设计. 首先,从位置上来讲,这个fn键应该是ctrl才符合通常键盘的操作习惯. 其次,从功能上来讲,当我调是程序的时候,按F6 ...

  4. Mac中Fn键技巧

    此文适用:Mac自带苹果键盘或外接有Fn键的普通键盘 上一页=Fn+⬅️ 下一页=Fn+➡️ 向上卷动=Fn+⬆️ 向下卷动=Fn+⬇️

  5. Win10 Fn键切换

    [Win10 Fn键切换] 选择 FN+ESC 参考:https://zhidao.baidu.com/question/626159613433698444.html

  6. ThinkPad如何修改fn键默认操作

    ThinkPad如何修改fn键默认操作 ThinkPad笔记本如何修改fn键默认操作 Fn键F1-F12

  7. 联想 ThinkPad 笔记本 Fn 键 关闭与启用方法

    联想 ThinkPad 笔记本 Fn 键 关闭与启用方法 [最快捷的方式] 按 Fn + Esc 键,进行切换启用或者关闭 Fn 功能键 So easy!!! ^_^

  8. 笔记本如何不按Fn键就能实现F键的功能

    笔记本的F1~F12键的附带功能如何改成 不用按Fn键就能实现F1~F12的功能 本人现在使用的是一款ThinkPad的本本,之前在台式机上愉快的玩耍的时候键盘上的F键直接按一下就可以实现相应的功能, ...

  9. 电脑使用热键时是否需按住Fn键相关说明

    ThinkPad E系列机型 方法一: 在开机出现ThinkPad标志时,连续点F1(若无反应,请尝试Fn+F1)进入BIOS设置. 在BIOS中,依次选择Config---Keyboard/Mous ...

随机推荐

  1. 基于 HTML5 的 WebGL 技术构建 3D 场景(一)

    今天和大家分享的是 3D 系列之 3D 预定义模型. HT for Web 提供了多种基础类型供用户建模使用,不同于传统的 3D 建模方式,HT 的建模核心都是基于 API 的接口方式,通过 HT 预 ...

  2. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(五)

    (五)注册Website Cloud 1 注册Website Cloud 添加Website Cloud   连接Website Cloud 注意, endpoint 是使用Management Se ...

  3. asp.net MVC5 学习笔记(一)

    Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法,默认控 ...

  4. Android ORM -- Litepal(1)

    ORM,即Object Relation Mapping,对象关系映射,实现了程序里面的类和数据库里面的数据之间的对应关系,对数据库的操作可以通过对类的操作去实现,不用再写SQL语句,从而提高了开发效 ...

  5. Django模型类Meta元数据详解

    转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...

  6. 微信js框架第二篇(创建完整界面布局)

    接着昨天的继续谈关于微信新出的这个js框架,今天主要谈一个页面的创建到布局的详细步骤. 一.创建一个完整页面       页面你可以创建在项目的任何节点,只要你在入口文件正确引入创建该页面的路径就可使 ...

  7. 分布式任务&分布式锁(li)

    目前系统中存在批量审批.批量授权等各个操作,批量操作中可能因为处理机器.线程不同,造成刷新缓存丢失授权等信息,如批量审批同一用户权限多个权限申请后,流程平台并发的发送多个http请求到acl不同服务器 ...

  8. 项目编码规范(Ali)

    一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...

  9. 回顾java基础—Java数据类型

    1  java数据类型.8种基本类型,3种引用类型 基本类型(也称:原始类型):byte.short.int.long.char.float.double.boolean 引用类型:类,接口,数组 2 ...

  10. 同比 VS 环比

    同比(YoY=year on year):与历史同时期比较,例如2014年7月份与2013年7月份相比,叫同比 环比(MoM=month on month):是本期统计数据与上期比较,例如2014年7 ...