clang-format
This commit is contained in:
198
.clang-format
Normal file
198
.clang-format
Normal 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:
|
||||||
483
src/keycode.c
483
src/keycode.c
@@ -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, ¤t_settings);
|
tcgetattr(0, ¤t_settings);
|
||||||
|
|
||||||
current_settings.c_cc[VMIN] = 0;
|
current_settings.c_cc[VMIN] = 0;
|
||||||
tcsetattr(0, TCSANOW, ¤t_settings);
|
tcsetattr(0, TCSANOW, ¤t_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");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user