最近在Linux中用QT做项目,开发一个全屏软件运行在公司的设备上,系统是统信UOS Linux系统,设备开机后会立即进入软件,且没有权限不允许用户进入Linux后台。

但有点麻烦,大家都知道,在Linux中,可以按快捷键 Ctrl + Alt + (F1 - F6) ,会进入黑屏终端,在这个黑屏终端就可以使用命令将软件强制关闭(kill);或者按快捷键 Ctrl + Alt + T 可以打开终端窗体,终端就可以使用命令将软件强制关闭;或者按快捷键 Ctrl + Alt + Delete 可以进入关机选项界面,可以调出UOS的后台任务管理器…

这些都是不允许的,所以我在网上找,有什么方式可以禁用统信UOSLinux系统的快捷键,找了很久,没有找到相关的解决方法;但是找到可以使用xmodmap去修改按键和禁用按键,感觉可行,于是自己亲自尝试后发现也可以行,于是记录下来!


  1. Ctrl + Alt + (F1 - F6)
    黑屏终端演示图:

  2. Ctrl + Alt + T
    终端演示图:

  3. Ctrl + Alt + Delete
    进入关机选项界面

存在以上的行为,对系统都是挺危险的,所以,得禁用这些快捷键!


1. xmodmap 是什么?

貌似是可以修改键盘映射和鼠标映射的命令…

查看keycode命令:
xmodmap -pke



等等一共有255个。

每个keycode对应一个键盘按键。

禁用键盘按键需要用到这些keycode。

2. 禁用

使用命令:
xmodmap -e 'keycode 数字 = '
暂时禁用键盘按键!

例如:
我在项目中禁用Alt键和F1 - F12键

首先找到左Alt键和右Alt键


代码命令禁用左Alt键和右Alt键:

xmodmap -e 'keycode 64 = '            // 禁用左Alt键
xmodmap -e 'keycode 108 = '          // 禁用右Alt键

让其等于空即可!(直接在终端运行命令即可)

我是在Linux下QT操作的,所以我可以使用C/C++的函数system()去调用命令:

// 暂时禁用Alt键
system("xmodmap -e 'keycode 64 = '");       // key Alt as Left
system("xmodmap -e 'keycode 108 = '");      // key Alt as Right

执行完之后,按键盘Alt键就没有反应了,可以测试快捷键Ctrl + Alt + F2,会发现这个快捷键没法使用了!
使用了取巧的方式进行禁用快捷键!(没办法,网上找不到禁用统信UOS系统的快捷键方法)

但是,使用这种方式有一个小缺点,就是重启系统后,他就会自动恢复了!

这个我看网上有教程说可以将命令写入一个什么什么文件,就可以实现开机自动调用进行禁用了,具体我没试过喔…

禁用F1 - F12:

system("xmodmap -e 'keycode 67 = '");
system("xmodmap -e 'keycode 68 = '");
system("xmodmap -e 'keycode 69 = '");
system("xmodmap -e 'keycode 70 = '");
system("xmodmap -e 'keycode 71 = '");
system("xmodmap -e 'keycode 72 = '");
system("xmodmap -e 'keycode 73 = '");
system("xmodmap -e 'keycode 74 = '");
system("xmodmap -e 'keycode 75 = '");
system("xmodmap -e 'keycode 76 = '");
system("xmodmap -e 'keycode 95 = '");
system("xmodmap -e 'keycode 96 = '");

3. 恢复

手动恢复!

调用命令:
xmodmap -e 'keycode'
恢复键盘按键!

keycode:上面截图等号右边那些字符串!

例如:
恢复左Alt键和右Alt键命令:

xmodmap -e 'keycode 64 = Alt_L Meta_L Alt_L Meta_L'
xmodmap -e 'keycode 108 = Alt_R Meta_R Alt_R Meta_R'

代码恢复:

system("xmodmap -e 'keycode 64 = Alt_L Meta_L Alt_L Meta_L'");
system("xmodmap -e 'keycode 108 = Alt_R Meta_R Alt_R Meta_R'");

这样就可以实现恢复操作了,然后可以测试快捷键Ctrl + Alt + F2,可以发现,又可以正常进入黑屏终端了!

恢复F1 - F12键:

system("xmodmap -e 'keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1'");
system("xmodmap -e 'keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2'");
system("xmodmap -e 'keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3'");
system("xmodmap -e 'keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4'");
system("xmodmap -e 'keycode 71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5'");
system("xmodmap -e 'keycode 72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6'");
system("xmodmap -e 'keycode 73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7'");
system("xmodmap -e 'keycode 74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8'");
system("xmodmap -e 'keycode 75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9'");
system("xmodmap -e 'keycode 76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10'");
system("xmodmap -e 'keycode 95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11'");
system("xmodmap -e 'keycode 96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12'");

总结

键盘禁用,简单的用法就是这样了,其实xmodmap还有很多高级用法的,例如键盘按键调换,鼠标左右点击调换等等…

我在项目中用法:软件启动就立刻禁用按键(快捷键),当使用权限正常进入后台前,就恢复!
使用很简单,但是却帮我解决很大的问题!

Linux 使用xmodmap禁用键盘按键(禁用Linux快捷键)相关推荐

  1. 组合用计算机怎么按,一种常用的计算机键盘按键组合(快捷键)-Windows组合键,解释非常详细...

    这次仅介绍Win键组合,而在下一期中将介绍Ctrl键组合. Windows键 单个Win键的功能是打开或隐藏"开始"菜单,该菜单的功能与" Ctrl + Esc" ...

  2. 发送linux键盘消息,在C#程序中模拟发送键盘按键消息

    using System.Runtime.InteropServices; 引入键盘事件函数 [DllImport("user32.dll")] public static ext ...

  3. Python 模拟发送键盘按键

    Python 模拟发送键盘按键,模拟快捷键 实现步骤 1.安装第三方库 2.模拟键入键盘按键 3.模拟鼠标点击 在rpa项目中,对于一些客户端软件,例如SAP,经常会用到一些快捷键来提高工作效率,或者 ...

  4. 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备

    在Linux系统下禁用键盘.触摸板.鼠标等输入设备,可以通过xinput命令来实现: 主要涉及: #xinput list #xinput list-props list-number #xinput ...

  5. linux系统下键盘按键的重新映射——xmodmap工具和xev工具

    虽然linux下小键盘还是不能用,但是找到一篇好文章 linux系统下键盘按键的重新映射--xmodmap工具和xev工具 文章目录 1. xev工具: 2. xmodmap工具 大家会不会有时候,感 ...

  6. linux系统怎么禁用键盘,桌面应用|如何在 Linux 下锁住键盘和鼠标而不锁屏

    我四岁的侄女是个好奇的孩子,她非常喜爱"阿凡达"电影,当阿凡达电影在播放时,她是如此的专注,好似眼睛粘在了屏幕上.但问题是当她观看电影时,她经常会碰到键盘上的某个键或者移动了鼠标, ...

  7. linux kbhit扫描键盘,(转)检测按键(Linux中kbhit()函数的实现)

    http://hi.baidu.com/jtntiivtemcnsue/item/90689ce172ee912c5a7cfb1b 编写过MS-DOS程序的人通常都会查找Linux下等同于kbhit的 ...

  8. python调用linux软键盘_在Linux中使用Python模拟键盘按键

    之前在做自动化测试中需要用Python在linux中模拟Ctrl+V 进行路径粘贴,试了很多种方法,起初用了xerox和pyperclip这两个python库,但打开对话框后调用粘贴API无法进行粘贴 ...

  9. 如何在Redhat 7 Linux系统上停止/启动和禁用/启用防火墙

    转载来源:https://linuxconfig.org/how-to-stop-start-and-disable-enable-firewall-on-redhat-7-linux-system ...

  10. Windows Mobile 6中禁用键盘或者是禁用某些按键(C#)

    1. 问题 在Windows Mobile的程序运行过程中需要屏蔽掉某些按键,或者是全部按键. 2. 如果是需要屏蔽掉全部按键,如下方法: 2.1 增加引用: using System.Runtime ...

最新文章

  1. 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
  2. python集合例题_python基础练习题、集合的讲解、一些公关方法
  3. androidsettitle方法_在Android应用程序中,Toolbar.setTitle方法无效-应用程序名称显示为标题...
  4. [转]javascript小技巧,超强推荐
  5. Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)
  6. 2048java课程设计报告_软件工程——Java版2048游戏学习报告
  7. [ 转载 ] Java基础14--创建线程的两个方法
  8. Android 系统(135)---Android anr 分析步骤总结
  9. linux 共享内存为分配,Linux在x86_64上共享内存分配
  10. c语言程序设计大一考题,C语言程序设计期末考试试题(含答案)
  11. 【转】微波射频工程师必读经典参考书
  12. 计算机控制系统在电厂的应用,计算机控制系统在电厂中的应用.doc
  13. 博科SAN交换机配置Trunk
  14. 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
  15. centos7.4更新安装ssh8.8
  16. 论文文献综述的题目是什么样的,应该怎么写?
  17. 全面领跑中国DevOps云服务市场,为什么是华为云?
  18. ios addressbook
  19. 计算机添加本地安全组用户名和密码错误,u租号总是密码错误-共享用户名和密码正确总提示错误...
  20. Android肝帝战纪之基于上篇单Activity+多Fragment框架,开发电商式导航栏,多Fragment切换

热门文章

  1. 视频理解综述:动作识别、时序动作定位、视频Embedding
  2. 读书笔记:余华--《活着--这是一本书》
  3. 计算机所有相关系统设置,关于win7系统5种电脑实用设置技巧
  4. FLV、AAC、AVC封装格式分析
  5. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | AVC 序列头格式解析 )
  6. Android常用库整理
  7. w10系统服务器连接错误代码,Win10升级失败常见问题及错误代码解决方法汇总
  8. 数据库 | PostgreSQL从入门到精通
  9. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习
  10. OFD文件预览—前后端两种实现方式