clang-format

This commit is contained in:
2025-02-27 16:22:54 +08:00
parent d0fd9eb4f0
commit bf09ac7123
3 changed files with 534 additions and 191 deletions

198
.clang-format Normal file
View File

@@ -0,0 +1,198 @@
# # https://clang.llvm.org/docs/ClangFormatStyleOptions.html
# # https://clang-format-configurator.site
IndentWidth: 4
TabWidth: 4
UseTab: Never
ColumnLimit: 80
AlignAfterOpenBracket: AlwaysBreak # Align, DontAlign, AlwaysBreak, BlockIndent
AlignArrayOfStructures: Right # Left, Right
AlignConsecutiveAssignments:
Enabled: true
AcrossEmptyLines: false
AcrossComments: true
AlignCompound: true
PadOperators: true
AlignConsecutiveBitFields:
Enabled: true
AcrossEmptyLines: false
AcrossComments: true
AlignCompound: true
PadOperators: true
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros:
Enabled: true
AcrossEmptyLines: false
AcrossComments: true
AlignCompound: true
PadOperators: true
AlignEscapedNewlines: Right # DontAlign, Left, Right
AllowShortCaseLabelsOnASingleLine: true
AlignConsecutiveShortCaseStatements: # AllowShortCaseLabelsOnASingleLine: true
Enabled: false
BreakBeforeBinaryOperators: true
AlignOperands: AlignAfterOperator # Align, AlignAfterOperator
AlignTrailingComments:
Kind: Always # Leave, Always, Never
OverEmptyLines: 1
AllowShortBlocksOnASingleLine: Never # Never, Empty, Always
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None # None, InlineOnly, Empty, Inline, All
AllowShortIfStatementsOnASingleLine: Never # Never, WithoutElse, OnlyFirstIf, AllIfsAndElse
AllowShortLambdasOnASingleLine: None # None, Empty, Inline, All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: All # None, All, TopLevel, AllDefinitions, TopLevelDefinitions
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes # No, MultiLine, Yes
# AttributeMacros # TODO
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: Both # Both, None, Before, After
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: MultiLine # Never, MultiLine, Always
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
# BracedInitializerIndentWidth: 4
BreakAfterAttributes: Always # Always, Leave, Never
# BreakBeforeBinaryOperators # TODO
# BreakBeforeConceptDeclarations # TODO
# BreakBeforeInlineASMColon # TODO
BreakBeforeTernaryOperators: true
ConstructorInitializerIndentWidth: 2
BreakConstructorInitializers: BeforeComma # BeforeColon, BeforeComma, AfterColon
BreakInheritanceList: BeforeComma # BeforeColon, BeforeComma, AfterColon, AfterComma
BreakStringLiterals: true
# ColumnLimit # TODO
# CommentPragmas # TODO
CompactNamespaces: false
# ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
# DisableFormat: false
EmptyLineAfterAccessModifier: Never # Never, Leave, Always
EmptyLineBeforeAccessModifier: Always # Never, Leave, LogicalBlock, Always
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
# ForEachMacros:
# IfMacros:
IncludeBlocks: Preserve # Preserve, Merge, Regroup
# IncludeCategories: # TODO
# IncludeIsMainRegex
# IncludeIsMainSourceRegex
AccessModifierOffset: -2
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: NoIndent # AfterExternBlock, NoIndent, Indent
IndentGotoLabels: false
IndentPPDirectives: None # None, AfterHash, BeforeHash
IndentRequiresClause: true # C++
# IndentWrappedFunctionNames: false
InsertBraces: true
InsertNewlineAtEOF: true
# InsertTrailingCommas: #TODO
# works only for C++14 and C23
# IntegerLiteralSeparator:
# Binary: 4
# Decimal: 3
# Hex: 2
IntegerLiteralSeparator:
Binary: -1
Decimal: -1
Hex: -1
KeepEmptyLinesAtEOF: false
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature # Signature, OuterScope
# LineEnding:
# MacroBlockBegin:
# MacroBlockEnd:
# Macros:
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None # None, Inner, All
# NamespaceMacros:
PPIndentWidth: -1
PackConstructorInitializers: Never # Never, BinPack, CurrentLine, NextLine, NextLineOnly
# PenaltyBreakAssignment:
# PenaltyBreakBeforeFirstCallParameter:
# PenaltyBreakComment
# PenaltyBreakFirstLessLess
# PenaltyBreakOpenParenthesis
# PenaltyBreakString
# PenaltyBreakTemplateDeclaration
# PenaltyExcessCharacter
# PenaltyIndentedWhitespace
# PenaltyReturnTypeOnItsOwnLine
PointerAlignment: Left
QualifierAlignment: Left
# QualifierOrder: TODO
# RawStringFormats:
ReferenceAlignment: Left
ReflowComments: true
RemoveBracesLLVM: false
RemoveParentheses: ReturnStatement
RemoveSemicolon: true
# RequiresClausePositionStyle: # TODO, C++
# RequiresExpressionIndentation: # TODO, C++
SeparateDefinitionBlocks: Always
# ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInContainerLiterals: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParens: Never
# SpacesInParensOptions:
SpacesInSquareBrackets: false
# StatementAttributeLikeMacros:
# StatementMacros:
# TypeNames:
# TypenameMacros:
# WhitespaceSensitiveMacros:

View File

@@ -6,12 +6,12 @@
// http://forum.shelek.ru/index.php/topic,9792.0.html // http://forum.shelek.ru/index.php/topic,9792.0.html
#include <stdlib.h> #include <stdlib.h>
#include <termios.h>
#include <string.h> #include <string.h>
#include <termios.h>
#include <unistd.h> #include <unistd.h>
void void
save_termsettings(struct termios *original_settings) save_termsettings(struct termios* original_settings)
{ {
// man tcsetattr // man tcsetattr
struct termios new_settings; struct termios new_settings;
@@ -21,7 +21,7 @@ save_termsettings(struct termios *original_settings)
// Disable canonical mode, and set buffer size to 1 byte // Disable canonical mode, and set buffer size to 1 byte
new_settings.c_lflag &= (~ICANON); new_settings.c_lflag &= (~ICANON);
//new_settings.c_lflag &= ICANON; // new_settings.c_lflag &= ICANON;
// Timeout in deciseconds for noncanonical read // Timeout in deciseconds for noncanonical read
new_settings.c_cc[VTIME] = 0; new_settings.c_cc[VTIME] = 0;
@@ -36,7 +36,7 @@ save_termsettings(struct termios *original_settings)
} }
void void
restore_termsettings(const struct termios *original_settings) restore_termsettings(const struct termios* original_settings)
{ {
tcsetattr(0, TCSANOW, original_settings); tcsetattr(0, TCSANOW, original_settings);
} }
@@ -56,14 +56,14 @@ keycode()
buffer[0] = getchar(); buffer[0] = getchar();
if (buffer[0] == KEY_ESC) { if (buffer[0] == KEY_ESC) {
//printf("ESC in\n"); // printf("ESC in\n");
struct termios current_settings; struct termios current_settings;
tcgetattr(0, &current_settings); tcgetattr(0, &current_settings);
current_settings.c_cc[VMIN] = 0; current_settings.c_cc[VMIN] = 0;
tcsetattr(0, TCSANOW, &current_settings); tcsetattr(0, TCSANOW, &current_settings);
while ((buffer[len] = getchar()) > 0) { while ((buffer[len] = getchar()) > 0) {
//printf("ESC_go; code = %3d\n", buffer[len]); // printf("ESC_go; code = %3d\n", buffer[len]);
len++; len++;
} }
clearerr(stdin); clearerr(stdin);
@@ -74,7 +74,8 @@ keycode()
if (len == 1) { if (len == 1) {
code = buffer[0]; code = buffer[0];
} else { }
else {
/*if (code == 0) { /*if (code == 0) {
printf("len = %d\n", len); printf("len = %d\n", len);
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
@@ -84,38 +85,114 @@ keycode()
}*/ }*/
// ugly code // ugly code
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 65)) code = KEY_UP; if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 65)) {
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 66)) code = KEY_DOWN; code = KEY_UP;
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 67)) code = KEY_RIGHT; }
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 68)) code = KEY_LEFT; if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 66)) {
code = KEY_DOWN;
}
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 67)) {
code = KEY_RIGHT;
}
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 68)) {
code = KEY_LEFT;
}
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 72)) code = KEY_HOME; if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 72)) {
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 70)) code = KEY_END; code = KEY_HOME;
}
if ((len == 3) && (buffer[1] == 91) && (buffer[2] == 70)) {
code = KEY_END;
}
// inside tmux on ubuntu 20.04 // inside tmux on ubuntu 20.04
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 126)) code = KEY_HOME; if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 49)
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 52) && (buffer[3] == 126)) code = KEY_END; && (buffer[3] == 126))
{
code = KEY_HOME;
}
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 52)
&& (buffer[3] == 126))
{
code = KEY_END;
}
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 126)) code = KEY_INS; if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 50)
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 51) && (buffer[3] == 126)) code = KEY_DEL; && (buffer[3] == 126))
{
code = KEY_INS;
}
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 51)
&& (buffer[3] == 126))
{
code = KEY_DEL;
}
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 53) && (buffer[3] == 126)) code = KEY_PGUP; if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 53)
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 54) && (buffer[3] == 126)) code = KEY_PGDN; && (buffer[3] == 126))
{
code = KEY_PGUP;
}
if ((len == 4) && (buffer[1] == 91) && (buffer[2] == 54)
&& (buffer[3] == 126))
{
code = KEY_PGDN;
}
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 80)) code = KEY_F1; if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 80)) {
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 81)) code = KEY_F2; code = KEY_F1;
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 82)) code = KEY_F3; }
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 83)) code = KEY_F4; if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 81)) {
code = KEY_F2;
}
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 82)) {
code = KEY_F3;
}
if ((len == 3) && (buffer[1] == 79) && (buffer[2] == 83)) {
code = KEY_F4;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 53) && (buffer[4] == 126)) code = KEY_F5; if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49)
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 55) && (buffer[4] == 126)) code = KEY_F6; && (buffer[3] == 53) && (buffer[4] == 126))
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 56) && (buffer[4] == 126)) code = KEY_F7; {
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 57) && (buffer[4] == 126)) code = KEY_F8; code = KEY_F5;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49)
&& (buffer[3] == 55) && (buffer[4] == 126))
{
code = KEY_F6;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49)
&& (buffer[3] == 56) && (buffer[4] == 126))
{
code = KEY_F7;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 49)
&& (buffer[3] == 57) && (buffer[4] == 126))
{
code = KEY_F8;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 48) && (buffer[4] == 126)) code = KEY_F9; if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50)
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 49) && (buffer[4] == 126)) code = KEY_F10; && (buffer[3] == 48) && (buffer[4] == 126))
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 51) && (buffer[4] == 126)) code = KEY_F11; {
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 52) && (buffer[4] == 126)) code = KEY_F12; code = KEY_F9;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50)
&& (buffer[3] == 49) && (buffer[4] == 126))
{
code = KEY_F10;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50)
&& (buffer[3] == 51) && (buffer[4] == 126))
{
code = KEY_F11;
}
if ((len == 5) && (buffer[1] == 91) && (buffer[2] == 50)
&& (buffer[3] == 52) && (buffer[4] == 126))
{
code = KEY_F12;
}
/*if (code == 0) { /*if (code == 0) {
printf("len = %d\n", len); printf("len = %d\n", len);
@@ -154,43 +231,120 @@ keycode()
len++; len++;
if (len == 2) { if (len == 2) {
if (buffer[1] == KEY_ESC) if (buffer[1] == KEY_ESC) {
code = KEY_ESC; code = KEY_ESC;
else if ((buffer[1] != 79) && (buffer[1] != 91)) }
else if ((buffer[1] != 79) && (buffer[1] != 91)) {
code = 0; code = 0;
} else if (len == 3) { }
if ((buffer[1] == 91) && (buffer[2] == 65)) code = KEY_UP; }
if ((buffer[1] == 91) && (buffer[2] == 66)) code = KEY_DOWN; else if (len == 3) {
if ((buffer[1] == 91) && (buffer[2] == 67)) code = KEY_RIGHT; if ((buffer[1] == 91) && (buffer[2] == 65)) {
if ((buffer[1] == 91) && (buffer[2] == 68)) code = KEY_LEFT; code = KEY_UP;
}
if ((buffer[1] == 91) && (buffer[2] == 66)) {
code = KEY_DOWN;
}
if ((buffer[1] == 91) && (buffer[2] == 67)) {
code = KEY_RIGHT;
}
if ((buffer[1] == 91) && (buffer[2] == 68)) {
code = KEY_LEFT;
}
if ((buffer[1] == 91) && (buffer[2] == 72)) code = KEY_HOME; if ((buffer[1] == 91) && (buffer[2] == 72)) {
if ((buffer[1] == 91) && (buffer[2] == 70)) code = KEY_END; code = KEY_HOME;
}
if ((buffer[1] == 91) && (buffer[2] == 70)) {
code = KEY_END;
}
if ((buffer[1] == 79) && (buffer[2] == 80)) code = KEY_F1; if ((buffer[1] == 79) && (buffer[2] == 80)) {
if ((buffer[1] == 79) && (buffer[2] == 81)) code = KEY_F2; code = KEY_F1;
if ((buffer[1] == 79) && (buffer[2] == 82)) code = KEY_F3; }
if ((buffer[1] == 79) && (buffer[2] == 83)) code = KEY_F4; if ((buffer[1] == 79) && (buffer[2] == 81)) {
} else if (len == 4) { code = KEY_F2;
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 126)) code = KEY_INS; }
if ((buffer[1] == 91) && (buffer[2] == 51) && (buffer[3] == 126)) code = KEY_DEL; if ((buffer[1] == 79) && (buffer[2] == 82)) {
code = KEY_F3;
}
if ((buffer[1] == 79) && (buffer[2] == 83)) {
code = KEY_F4;
}
}
else if (len == 4) {
if ((buffer[1] == 91) && (buffer[2] == 50)
&& (buffer[3] == 126))
{
code = KEY_INS;
}
if ((buffer[1] == 91) && (buffer[2] == 51)
&& (buffer[3] == 126))
{
code = KEY_DEL;
}
if ((buffer[1] == 91) && (buffer[2] == 53) && (buffer[3] == 126)) code = KEY_PGUP; if ((buffer[1] == 91) && (buffer[2] == 53)
if ((buffer[1] == 91) && (buffer[2] == 54) && (buffer[3] == 126)) code = KEY_PGDN; && (buffer[3] == 126))
} else if (len == 5) { {
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 53) && (buffer[4] == 126)) code = KEY_F5; code = KEY_PGUP;
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 55) && (buffer[4] == 126)) code = KEY_F6; }
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 56) && (buffer[4] == 126)) code = KEY_F7; if ((buffer[1] == 91) && (buffer[2] == 54)
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 57) && (buffer[4] == 126)) code = KEY_F8; && (buffer[3] == 126))
{
code = KEY_PGDN;
}
}
else if (len == 5) {
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 53)
&& (buffer[4] == 126))
{
code = KEY_F5;
}
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 55)
&& (buffer[4] == 126))
{
code = KEY_F6;
}
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 56)
&& (buffer[4] == 126))
{
code = KEY_F7;
}
if ((buffer[1] == 91) && (buffer[2] == 49) && (buffer[3] == 57)
&& (buffer[4] == 126))
{
code = KEY_F8;
}
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 48) && (buffer[4] == 126)) code = KEY_F9; if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 48)
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 49) && (buffer[4] == 126)) code = KEY_F10; && (buffer[4] == 126))
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 51) && (buffer[4] == 126)) code = KEY_F11; {
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 52) && (buffer[4] == 126)) code = KEY_F12; code = KEY_F9;
} else }
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 49)
&& (buffer[4] == 126))
{
code = KEY_F10;
}
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 51)
&& (buffer[4] == 126))
{
code = KEY_F11;
}
if ((buffer[1] == 91) && (buffer[2] == 50) && (buffer[3] == 52)
&& (buffer[4] == 126))
{
code = KEY_F12;
}
}
else {
code = 0; code = 0;
}
if (code >= 0) break; if (code >= 0) {
break;
}
} }
} }
@@ -219,39 +373,85 @@ keycode()
if (key == 0) { if (key == 0) {
key = getch(); key = getch();
//printf("(%3d;%3d) ", 0, key); // printf("(%3d;%3d) ", 0, key);
if (key == 59) code = KEY_F1; if (key == 59) {
if (key == 60) code = KEY_F2; code = KEY_F1;
if (key == 61) code = KEY_F3; }
if (key == 62) code = KEY_F4; if (key == 60) {
if (key == 63) code = KEY_F5; code = KEY_F2;
if (key == 64) code = KEY_F6; }
if (key == 65) code = KEY_F7; if (key == 61) {
if (key == 66) code = KEY_F8; code = KEY_F3;
if (key == 67) code = KEY_F9; }
if (key == 68) code = KEY_F10; if (key == 62) {
} else if (key == 224) { code = KEY_F4;
}
if (key == 63) {
code = KEY_F5;
}
if (key == 64) {
code = KEY_F6;
}
if (key == 65) {
code = KEY_F7;
}
if (key == 66) {
code = KEY_F8;
}
if (key == 67) {
code = KEY_F9;
}
if (key == 68) {
code = KEY_F10;
}
}
else if (key == 224) {
key = keycode(); key = keycode();
//printf("(%3d;%3d) ", 224, key); // printf("(%3d;%3d) ", 224, key);
if (key == 133) code = KEY_F11; if (key == 133) {
if (key == 134) code = KEY_F12; code = KEY_F11;
}
if (key == 134) {
code = KEY_F12;
}
if (key == 82) code = KEY_INS; if (key == 82) {
if (key == 83) code = KEY_DEL; code = KEY_INS;
}
if (key == 83) {
code = KEY_DEL;
}
if (key == 71) code = KEY_HOME; if (key == 71) {
if (key == 79) code = KEY_END; code = KEY_HOME;
}
if (key == 79) {
code = KEY_END;
}
if (key == 73) code = KEY_PGUP; if (key == 73) {
if (key == 81) code = KEY_PGDN; code = KEY_PGUP;
}
if (key == 81) {
code = KEY_PGDN;
}
if (key == 72) code = KEY_UP; if (key == 72) {
if (key == 80) code = KEY_DOWN; code = KEY_UP;
if (key == 75) code = KEY_LEFT; }
if (key == 77) code = KEY_RIGHT; if (key == 80) {
} else { code = KEY_DOWN;
}
if (key == 75) {
code = KEY_LEFT;
}
if (key == 77) {
code = KEY_RIGHT;
}
}
else {
code = key; code = key;
} }
@@ -269,89 +469,34 @@ test_keycodes()
int code; int code;
while ((code = keycode()) != 'q') { while ((code = keycode()) != 'q') {
switch (code) { switch (code) {
case KEY_UP : case KEY_UP: printf("KEY_UP "); break;
printf("KEY_UP "); case KEY_DOWN: printf("KEY_DOWN "); break;
break; case KEY_RIGHT: printf("KEY_RIGHT "); break;
case KEY_DOWN : case KEY_LEFT: printf("KEY_LEFT "); break;
printf("KEY_DOWN "); case KEY_TAB: printf("KEY_TAB "); break;
break; case KEY_BS: printf("KEY_BS "); break;
case KEY_RIGHT: case KEY_SPACE: printf("KEY_SPACE "); break;
printf("KEY_RIGHT "); case KEY_INS: printf("KEY_INS "); break;
break; case KEY_DEL: printf("KEY_DEL "); break;
case KEY_LEFT : case KEY_ESC: printf("KEY_ESC "); break;
printf("KEY_LEFT "); case KEY_ENTER: printf("KEY_ENTER "); break;
break; case KEY_F1: printf("KEY_F1 "); break;
case KEY_TAB : case KEY_F2: printf("KEY_F2 "); break;
printf("KEY_TAB "); case KEY_F3: printf("KEY_F3 "); break;
break; case KEY_F4: printf("KEY_F4 "); break;
case KEY_BS : case KEY_F5: printf("KEY_F5 "); break;
printf("KEY_BS "); case KEY_F6: printf("KEY_F6 "); break;
break; case KEY_F7: printf("KEY_F7 "); break;
case KEY_SPACE: case KEY_F8: printf("KEY_F8 "); break;
printf("KEY_SPACE "); case KEY_F9: printf("KEY_F9 "); break;
break; case KEY_F10: printf("KEY_F10 "); break;
case KEY_INS : case KEY_F11: printf("KEY_F11 "); break;
printf("KEY_INS "); case KEY_F12: printf("KEY_F12 "); break;
break; case KEY_HOME: printf("KEY_HOME "); break;
case KEY_DEL : case KEY_END: printf("KEY_END "); break;
printf("KEY_DEL "); case KEY_PGUP: printf("KEY_PGUP "); break;
break; case KEY_PGDN: printf("KEY_PGDN "); break;
case KEY_ESC : default: printf("%d - '%c'", code, code);
printf("KEY_ESC ");
break;
case KEY_ENTER:
printf("KEY_ENTER ");
break;
case KEY_F1 :
printf("KEY_F1 ");
break;
case KEY_F2 :
printf("KEY_F2 ");
break;
case KEY_F3 :
printf("KEY_F3 ");
break;
case KEY_F4 :
printf("KEY_F4 ");
break;
case KEY_F5 :
printf("KEY_F5 ");
break;
case KEY_F6 :
printf("KEY_F6 ");
break;
case KEY_F7 :
printf("KEY_F7 ");
break;
case KEY_F8 :
printf("KEY_F8 ");
break;
case KEY_F9 :
printf("KEY_F9 ");
break;
case KEY_F10:
printf("KEY_F10 ");
break;
case KEY_F11:
printf("KEY_F11 ");
break;
case KEY_F12:
printf("KEY_F12 ");
break;
case KEY_HOME :
printf("KEY_HOME ");
break;
case KEY_END :
printf("KEY_END ");
break;
case KEY_PGUP :
printf("KEY_PGUP ");
break;
case KEY_PGDN :
printf("KEY_PGDN ");
break;
default:
printf("%d - '%c'", code, code);
} }
printf("\n"); printf("\n");
} }