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)
|
add_library(filecomplete STATIC filecomplete.h filecomplete.cpp)
|
||||||
target_include_directories(filecomplete PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(filecomplete PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
add_executable(key_value key_value.cxx)
|
||||||
|
|
||||||
if(DEFINED GEN_EXAMPLE)
|
if(DEFINED GEN_EXAMPLE)
|
||||||
message(STATUS "USE TEST")
|
message(STATUS "USE TEST")
|
||||||
add_executable(example main.cpp)
|
add_executable(example main.cpp)
|
||||||
|
11
Makefile
11
Makefile
@ -11,8 +11,11 @@ MAIN_SRC = main.cpp
|
|||||||
MAIN_OBJ = $(MAIN_SRC:.cpp=.o)
|
MAIN_OBJ = $(MAIN_SRC:.cpp=.o)
|
||||||
TARGET = main
|
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)
|
$(TARGET): $(LIB_OBJ) $(MAIN_OBJ)
|
||||||
@ -26,9 +29,13 @@ $(LIB_OBJ): $(LIB_SRC) $(LIB_HEADER)
|
|||||||
$(MAIN_OBJ): $(MAIN_SRC)
|
$(MAIN_OBJ): $(MAIN_SRC)
|
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
# 编译 key_value 二进制
|
||||||
|
$(KEY_VALUE_BIN): $(KEY_VALUE_SRC)
|
||||||
|
$(CXX) $(CXXFLAGS) -o $@ $<
|
||||||
|
|
||||||
# 清理生成文件
|
# 清理生成文件
|
||||||
clean:
|
clean:
|
||||||
rm -f $(LIB_OBJ) $(MAIN_OBJ) $(TARGET)
|
rm -f $(LIB_OBJ) $(MAIN_OBJ) $(TARGET) $(KEY_VALUE_BIN)
|
||||||
|
|
||||||
# 伪目标
|
# 伪目标
|
||||||
.PHONY: all clean
|
.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