add:添加一个测试键位的工具。
This commit is contained in:
parent
31ed6b75b8
commit
ce813baf04
@ -26,6 +26,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}
|
||||
add_library(filecomplete STATIC filecomplete.h filecomplete.cpp)
|
||||
target_include_directories(filecomplete PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_executable(key_value key_value.cxx)
|
||||
|
||||
if(DEFINED GEN_EXAMPLE)
|
||||
message(STATUS "USE TEST")
|
||||
add_executable(example main.cpp)
|
||||
|
11
Makefile
11
Makefile
@ -11,8 +11,11 @@ MAIN_SRC = main.cpp
|
||||
MAIN_OBJ = $(MAIN_SRC:.cpp=.o)
|
||||
TARGET = main
|
||||
|
||||
KEY_VALUE_SRC = key_value.cxx
|
||||
KEY_VALUE_BIN = key_value
|
||||
|
||||
# 默认目标
|
||||
all: $(TARGET)
|
||||
all: $(TARGET) $(KEY_VALUE_BIN)
|
||||
|
||||
# 生成目标文件
|
||||
$(TARGET): $(LIB_OBJ) $(MAIN_OBJ)
|
||||
@ -26,9 +29,13 @@ $(LIB_OBJ): $(LIB_SRC) $(LIB_HEADER)
|
||||
$(MAIN_OBJ): $(MAIN_SRC)
|
||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
# 编译 key_value 二进制
|
||||
$(KEY_VALUE_BIN): $(KEY_VALUE_SRC)
|
||||
$(CXX) $(CXXFLAGS) -o $@ $<
|
||||
|
||||
# 清理生成文件
|
||||
clean:
|
||||
rm -f $(LIB_OBJ) $(MAIN_OBJ) $(TARGET)
|
||||
rm -f $(LIB_OBJ) $(MAIN_OBJ) $(TARGET) $(KEY_VALUE_BIN)
|
||||
|
||||
# 伪目标
|
||||
.PHONY: all clean
|
||||
|
47
key_value.cxx
Normal file
47
key_value.cxx
Normal file
@ -0,0 +1,47 @@
|
||||
#include <iostream>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// 设置终端为原始模式
|
||||
void setRawMode(bool enable)
|
||||
{
|
||||
static struct termios oldt, newt;
|
||||
|
||||
if (enable) {
|
||||
// 获取当前终端设置
|
||||
tcgetattr(STDIN_FILENO, &oldt);
|
||||
newt = oldt;
|
||||
|
||||
// 设置终端为原始模式
|
||||
newt.c_lflag &= ~(ICANON | ECHO); // 关闭回显和缓冲输入
|
||||
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
|
||||
} else {
|
||||
// 恢复原有终端设置
|
||||
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
std::cout << "Press any key to see its keycode (Press 'q' to quit)..." << std::endl;
|
||||
|
||||
// 启用原始模式
|
||||
setRawMode(true);
|
||||
|
||||
while (true) {
|
||||
// 读取按键
|
||||
char ch;
|
||||
if (read(STDIN_FILENO, &ch, 1) == 1) {
|
||||
std::cout << "Keycode: " << static_cast<int>(ch) << std::endl;
|
||||
|
||||
// 按 'q' 键退出程序
|
||||
if (ch == 'q') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 恢复终端模式
|
||||
setRawMode(false);
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user