我需要在python控制台(文本模式)程序中检测到按下 Ctrl 键时,同时没有其他键。我尝试使用curses库和stdin中的getch
,但它等待任何键但不是 Ctrl 或 Alt 。我在stackoverflow中找到了信息,但总是引用Windows /事件环境,或者与另一个键同时按下(例如 Ctrl + C ),但这不是我的情况。我在一些论坛上发现这是不可能的,但我可以相信。
答案 0 :(得分:1)
这个答案是以Linux为中心的,看到你提到Raspbian控制台模式意味着Debian GNU / Linux控制台系统。
如果你真的在谈论控制台,这可能是非常黑客的。 Curses有一个原始模式来读取大多数键,但是Control是一个修饰键,因此不会以这种方式显示。我能想到的方法是读取输入设备,就像X一样。使用<?php
$SO_ID=$_POST['so'];
$Status=$_POST['status'];
require_once 'Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue('A1', $SO_ID);
$objPHPExcel->getActiveSheet()->setCellValue('B1', $Status);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("/var/www/html/apps/asheet.xlsx");
查找键盘中的设备。正如输入事件所示,您可以在其他地方处理事件时查看事件。缺点是您不知道输入是否实际上是您的(除非您跟踪虚拟控制台切换,作业状态等)并且您需要访问该设备,因为该属性意味着它可能是敏感数据,如作为输入密码登录另一个虚拟控制台。
重新映射控件键本身使用lsinput
发送的内容可能更简单,从而将其从修饰符更改为可检测键。它仍将保留其较低级别的协议属性(例如,在USB HID引导协议键盘中,它将具有专用位而不是通常仅使用6个插槽用于按下的键)。
无论哪种方式,这都不容易或不便携,并且无法在终端环境(例如ssh会话)中工作。