cleaning up everything in mac input setup
This commit is contained in:
parent
bb7a098663
commit
30c16d6752
|
@ -691,14 +691,18 @@ static int32_t named_map_count = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
change_mapping(Application_Links *app, String mapping){
|
change_mapping(Application_Links *app, String mapping){
|
||||||
|
bool32 did_remap = false;
|
||||||
for (int32_t i = 0; i < named_map_count; ++i){
|
for (int32_t i = 0; i < named_map_count; ++i){
|
||||||
if (match(mapping, named_maps[i].name)){
|
if (match(mapping, named_maps[i].name)){
|
||||||
|
did_remap = true;
|
||||||
exec_command(app, named_maps[i].remap_command);
|
exec_command(app, named_maps[i].remap_command);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!did_remap){
|
||||||
print_message(app, literal("Leaving bindings unaltered.\n"));
|
print_message(app, literal("Leaving bindings unaltered.\n"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(remap_interactive){
|
CUSTOM_COMMAND_SIG(remap_interactive){
|
||||||
Query_Bar bar = {0};
|
Query_Bar bar = {0};
|
||||||
|
|
|
@ -14,6 +14,16 @@ TYPE: 'drop-in-command-pack'
|
||||||
// Buffer Filling Helpers
|
// Buffer Filling Helpers
|
||||||
//
|
//
|
||||||
|
|
||||||
|
enum{
|
||||||
|
B_None,
|
||||||
|
B_Major,
|
||||||
|
B_Minor,
|
||||||
|
B_Both,
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
bind(Bind_Helper *context,
|
||||||
|
|
||||||
void
|
void
|
||||||
default_keys(Bind_Helper *context){
|
default_keys(Bind_Helper *context){
|
||||||
// NOTE(allen|a4.0.22): GLOBAL
|
// NOTE(allen|a4.0.22): GLOBAL
|
||||||
|
@ -201,6 +211,7 @@ void
|
||||||
bind_ctrl_and_cmnd(Bind_Helper *context, Key_Code code, Custom_Command_Function *command){
|
bind_ctrl_and_cmnd(Bind_Helper *context, Key_Code code, Custom_Command_Function *command){
|
||||||
bind(context, code, MDFR_CTRL, command);
|
bind(context, code, MDFR_CTRL, command);
|
||||||
bind(context, code, MDFR_CMND, command);
|
bind(context, code, MDFR_CMND, command);
|
||||||
|
bind(context, code, MDFR_CTRL|MDFR_CMND, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -629,3 +640,4 @@ CUSTOM_COMMAND_SIG(set_bindings_mac_default){
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
8
4ed.cpp
8
4ed.cpp
|
@ -687,6 +687,7 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
|
||||||
memset(new_mapping.map_id_table, -1, user_map_count*sizeof(i32));
|
memset(new_mapping.map_id_table, -1, user_map_count*sizeof(i32));
|
||||||
|
|
||||||
new_mapping.user_maps = push_array(part, Command_Map, user_map_count);
|
new_mapping.user_maps = push_array(part, Command_Map, user_map_count);
|
||||||
|
memset(new_mapping.user_maps, 0, user_map_count*sizeof(Command_Map));
|
||||||
|
|
||||||
// Find the Size of Each Map
|
// Find the Size of Each Map
|
||||||
for (++unit; unit < end; ++unit){
|
for (++unit; unit < end; ++unit){
|
||||||
|
@ -824,9 +825,10 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
|
||||||
{
|
{
|
||||||
if (map_ptr != 0){
|
if (map_ptr != 0){
|
||||||
Command_Function *func = 0;
|
Command_Function *func = 0;
|
||||||
if (unit->binding.command_id >= 0 && unit->binding.command_id < cmdid_count)
|
if (unit->binding.command_id >= 0 && unit->binding.command_id < cmdid_count){
|
||||||
func = command_table[unit->binding.command_id];
|
func = command_table[unit->binding.command_id];
|
||||||
if (func){
|
}
|
||||||
|
if (func != 0){
|
||||||
if (unit->binding.code == 0){
|
if (unit->binding.code == 0){
|
||||||
u32 index = 0;
|
u32 index = 0;
|
||||||
if (map_get_modifiers_hash(unit->binding.modifiers, &index)){
|
if (map_get_modifiers_hash(unit->binding.modifiers, &index)){
|
||||||
|
@ -846,7 +848,7 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
|
||||||
if (map_ptr != 0){
|
if (map_ptr != 0){
|
||||||
Command_Function *func = command_user_callback;
|
Command_Function *func = command_user_callback;
|
||||||
Custom_Command_Function *custom = unit->callback.func;
|
Custom_Command_Function *custom = unit->callback.func;
|
||||||
if (func){
|
if (func != 0){
|
||||||
if (unit->callback.code == 0){
|
if (unit->callback.code == 0){
|
||||||
u32 index = 0;
|
u32 index = 0;
|
||||||
if (map_get_modifiers_hash(unit->binding.modifiers, &index)){
|
if (map_get_modifiers_hash(unit->binding.modifiers, &index)){
|
||||||
|
|
|
@ -138,7 +138,7 @@ map_add(Command_Map *map, Key_Code event_code, u8 modifiers, Command_Function *f
|
||||||
u32 max = map->max;
|
u32 max = map->max;
|
||||||
u32 index = hash % max;
|
u32 index = hash % max;
|
||||||
Command_Binding entry = map->commands[index];
|
Command_Binding entry = map->commands[index];
|
||||||
while (entry.function != 0 && entry.hash != COMMAND_HASH_ERASED){
|
for (; entry.function != 0 && entry.hash != COMMAND_HASH_ERASED;){
|
||||||
if (entry.hash == hash){
|
if (entry.hash == hash){
|
||||||
result = true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
|
@ -148,13 +148,15 @@ map_add(Command_Map *map, Key_Code event_code, u8 modifiers, Command_Function *f
|
||||||
}
|
}
|
||||||
|
|
||||||
if (override_original || !result){
|
if (override_original || !result){
|
||||||
Command_Binding bind;
|
Command_Binding bind = {0};
|
||||||
bind.function = function;
|
bind.function = function;
|
||||||
bind.custom = custom;
|
bind.custom = custom;
|
||||||
bind.hash = hash;
|
bind.hash = hash;
|
||||||
map->commands[index] = bind;
|
map->commands[index] = bind;
|
||||||
|
if (!result){
|
||||||
++map->count;
|
++map->count;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
@ -171,7 +173,7 @@ map_find_entry(Command_Map *map, Key_Code event_code, u8 modifiers, u32 *index_o
|
||||||
u32 index = hash % max;
|
u32 index = hash % max;
|
||||||
b32 result = false;
|
b32 result = false;
|
||||||
Command_Binding entry = map->commands[index];
|
Command_Binding entry = map->commands[index];
|
||||||
while (entry.function != 0){
|
for (; entry.function != 0;){
|
||||||
if (entry.hash == hash){
|
if (entry.hash == hash){
|
||||||
*index_out = index;
|
*index_out = index;
|
||||||
result = true;
|
result = true;
|
||||||
|
@ -222,13 +224,16 @@ map_get_modifiers_hash(u8 modifiers, u32 *hash_out){
|
||||||
b32 result = true;
|
b32 result = true;
|
||||||
u32 hash = 0;
|
u32 hash = 0;
|
||||||
if (modifiers & MDFR_SHIFT){
|
if (modifiers & MDFR_SHIFT){
|
||||||
hash += 0x1;
|
hash += MDFR_SHIFT;
|
||||||
}
|
}
|
||||||
if (modifiers & MDFR_CTRL){
|
if (modifiers & MDFR_CTRL){
|
||||||
hash += 0x2;
|
hash += MDFR_CTRL;
|
||||||
|
}
|
||||||
|
if (modifiers & MDFR_CMND){
|
||||||
|
hash += MDFR_CMND;
|
||||||
}
|
}
|
||||||
if (modifiers & MDFR_ALT){
|
if (modifiers & MDFR_ALT){
|
||||||
hash += 0x4;
|
hash += MDFR_ALT;
|
||||||
}
|
}
|
||||||
*hash_out = hash;
|
*hash_out = hash;
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -253,8 +258,8 @@ map_extract(Command_Map *map, Key_Event_Data key){
|
||||||
|
|
||||||
u8 mod_flags = MDFR_NONE;
|
u8 mod_flags = MDFR_NONE;
|
||||||
if (ctrl) mod_flags |= MDFR_CTRL;
|
if (ctrl) mod_flags |= MDFR_CTRL;
|
||||||
if (command) mod_flags |= MDFR_CMND;
|
|
||||||
if (alt) mod_flags |= MDFR_ALT;
|
if (alt) mod_flags |= MDFR_ALT;
|
||||||
|
if (command) mod_flags |= MDFR_CMND;
|
||||||
if (shift) mod_flags |= MDFR_SHIFT;
|
if (shift) mod_flags |= MDFR_SHIFT;
|
||||||
|
|
||||||
Key_Code code = key.character_no_caps_lock;
|
Key_Code code = key.character_no_caps_lock;
|
||||||
|
|
|
@ -4146,10 +4146,14 @@ internal Single_Line_Input_Step
|
||||||
app_single_line_input_core(System_Functions *system, Working_Set *working_set, Key_Event_Data key, Single_Line_Mode mode){
|
app_single_line_input_core(System_Functions *system, Working_Set *working_set, Key_Event_Data key, Single_Line_Mode mode){
|
||||||
Single_Line_Input_Step result = {0};
|
Single_Line_Input_Step result = {0};
|
||||||
|
|
||||||
|
b8 ctrl = key.modifiers[MDFR_CONTROL_INDEX];
|
||||||
|
b8 cmnd = key.modifiers[MDFR_COMMAND_INDEX];
|
||||||
|
b8 alt = key.modifiers[MDFR_ALT_INDEX];
|
||||||
|
|
||||||
if (key.keycode == key_back){
|
if (key.keycode == key_back){
|
||||||
result.hit_backspace = 1;
|
result.hit_backspace = true;
|
||||||
if (mode.string->size > 0){
|
if (mode.string->size > 0){
|
||||||
result.made_a_change = 1;
|
result.made_a_change = true;
|
||||||
--mode.string->size;
|
--mode.string->size;
|
||||||
switch (mode.type){
|
switch (mode.type){
|
||||||
case SINGLE_LINE_STRING:
|
case SINGLE_LINE_STRING:
|
||||||
|
@ -4159,7 +4163,7 @@ app_single_line_input_core(System_Functions *system, Working_Set *working_set, K
|
||||||
|
|
||||||
case SINGLE_LINE_FILE:
|
case SINGLE_LINE_FILE:
|
||||||
{
|
{
|
||||||
if (!key.modifiers[MDFR_CONTROL_INDEX]){
|
if (!ctrl && !cmnd && !alt){
|
||||||
char end_character = mode.string->str[mode.string->size];
|
char end_character = mode.string->str[mode.string->size];
|
||||||
if (char_is_slash(end_character)){
|
if (char_is_slash(end_character)){
|
||||||
mode.string->size = reverse_seek_slash(*mode.string) + 1;
|
mode.string->size = reverse_seek_slash(*mode.string) + 1;
|
||||||
|
@ -4183,13 +4187,13 @@ app_single_line_input_core(System_Functions *system, Working_Set *working_set, K
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (key.keycode == key_esc){
|
else if (key.keycode == key_esc){
|
||||||
result.hit_esc = 1;
|
result.hit_esc = true;
|
||||||
result.made_a_change = 1;
|
result.made_a_change = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (key.character){
|
else if (key.character){
|
||||||
result.hit_a_character = 1;
|
result.hit_a_character = true;
|
||||||
if (!key.modifiers[MDFR_CONTROL_INDEX] && !key.modifiers[MDFR_ALT_INDEX]){
|
if (!ctrl && !cmnd && !alt){
|
||||||
if (mode.string->size + 1 < mode.string->memory_size){
|
if (mode.string->size + 1 < mode.string->memory_size){
|
||||||
u8 new_character = (u8)key.character;
|
u8 new_character = (u8)key.character;
|
||||||
mode.string->str[mode.string->size] = new_character;
|
mode.string->str[mode.string->size] = new_character;
|
||||||
|
@ -4198,11 +4202,11 @@ app_single_line_input_core(System_Functions *system, Working_Set *working_set, K
|
||||||
if (mode.type == SINGLE_LINE_FILE && char_is_slash(new_character)){
|
if (mode.type == SINGLE_LINE_FILE && char_is_slash(new_character)){
|
||||||
hot_directory_set(system, mode.hot_directory, *mode.string);
|
hot_directory_set(system, mode.hot_directory, *mode.string);
|
||||||
}
|
}
|
||||||
result.made_a_change = 1;
|
result.made_a_change = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
result.did_command = 1;
|
result.did_command = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,9 @@ SOURCE=$PHYS_DIR/$TARGET_FILE
|
||||||
|
|
||||||
FLAGS="-Wno-write-strings -Wno-null-dereference -Wno-comment -Wno-switch -Wno-writable-strings"
|
FLAGS="-Wno-write-strings -Wno-null-dereference -Wno-comment -Wno-switch -Wno-writable-strings"
|
||||||
|
|
||||||
|
DEBUG=-g
|
||||||
|
|
||||||
cd "$REAL_PWD"
|
cd "$REAL_PWD"
|
||||||
echo "Building custom_4coders.so from $SOURCE"
|
echo "Building custom_4coders.so from $SOURCE"
|
||||||
g++ -I"$CODE_HOME" $FLAGS -std=gnu++0x "$SOURCE" -shared -o custom_4coder.so -fPIC
|
g++ -I"$CODE_HOME" $FLAGS $DEBUG -std=gnu++0x "$SOURCE" -shared -o custom_4coder.so -fPIC
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mr. 4th Dimention - Allen Webster
|
* Mr. 4th Dimention - Allen Webster
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue