diff --git a/src/apps/bin/keymap/Jamfile b/src/apps/bin/keymap/Jamfile new file mode 100644 index 0000000000..954af65e45 --- /dev/null +++ b/src/apps/bin/keymap/Jamfile @@ -0,0 +1,6 @@ +SubDir OBOS_TOP src apps bin keymap ; + +BinCommand keymap : + key_map.cpp + Keymap.cpp + : be ; diff --git a/src/apps/bin/keymap/Keymap.cpp b/src/apps/bin/keymap/Keymap.cpp new file mode 100644 index 0000000000..9bbb49477d --- /dev/null +++ b/src/apps/bin/keymap/Keymap.cpp @@ -0,0 +1,546 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2004, Haiku +// +// This software is part of the Haiku distribution and is covered +// by the Haiku license. +// +// +// File: Keymap.cpp +// Author: Jérôme Duval +// Description: keymap bin +// Created : July 29, 2004 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + +#include "Keymap.h" +#include +#include +#include +#include + +void +Keymap::GetKey( char *chars, int32 offset, char* string) +{ + int size = chars[offset++]; + char str[32]; + memset(str, 0, 32); + memset(string, 0, 32); + + switch( size ) { + case 0: + // Not mapped + sprintf(str, "''"); + break; + + case 1: + // 1-byte UTF-8/ASCII character + if ((uint8)chars[offset] < 0x20 + || (uint8)chars[offset] > 0x7e) + sprintf(str, "0x%02x", (uint8)chars[offset]); + else + sprintf(str, "'%s%c'", + (chars[offset] == '\\' || chars[offset] == '\'') ? "\\" : "", chars[offset]); + break; + + default: + // n-byte UTF-8/ASCII character + sprintf(str, "0x"); + for (int i=0; i 1) + operation = argv[i][1]; + else + break; + if (operation == 'd') { + Keymap keymap; + keymap.LoadCurrent(); + keymap.Dump(); + return 0; + } + } else { + if (operation == 'o') { + //return do_compile(argv[i]); + return 0; + } else + break; + } + } + usage("/bin/keymap"); + return 1; +}