diff --git a/.config/karabiner/karabiner.json b/.config/karabiner/karabiner.json index 6032c7b..79a4fd9 100644 --- a/.config/karabiner/karabiner.json +++ b/.config/karabiner/karabiner.json @@ -1,998 +1,967 @@ { - "global": { - "check_for_updates_on_startup": true, - "show_in_menu_bar": false, - "show_profile_name_in_menu_bar": false, - "unsafe_ui": false - }, - "profiles": [ - { - "complex_modifications": { - "parameters": { - "basic.simultaneous_threshold_milliseconds": 50, - "basic.to_delayed_action_delay_milliseconds": 500, - "basic.to_if_alone_timeout_milliseconds": 1000, - "basic.to_if_held_down_threshold_milliseconds": 500, - "mouse_motion_to_scroll.speed": 100 + "global": { + "check_for_updates_on_startup": true, + "show_in_menu_bar": false, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["right_command"], + "optional": ["any"] + } }, - "rules": [ - { - "description": "Change right_command+hjkl to arrow keys", - "manipulators": [ - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_command" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_arrow" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_command" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "down_arrow" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_command" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "up_arrow" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_command" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "right_arrow" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Mouse keys Ambidextrous", - "manipulators": [ - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "fn" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "vertical_wheel": -64 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "fn" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "vertical_wheel": 64 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "fn" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "horizontal_wheel": 64 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "fn" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "horizontal_wheel": -64 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "pointing_button": "button1" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "pointing_button": "button2" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "x": -1300 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "y": 1300 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "y": -1300 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "mouse_key": { - "x": 1300 - } - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "pointing_button": "button1" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_control", - "left_shift" - ], - "optional": [ - "any" - ] - } - }, - "to": [ - { - "pointing_button": "button2" - } - ], - "type": "basic" - } - ] + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["right_command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["right_command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["right_command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Mouse keys Ambidextrous", + "manipulators": [ + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["left_control", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "vertical_wheel": -64 } - ] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["left_control", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "vertical_wheel": 64 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["fn"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "horizontal_wheel": 64 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["fn"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "horizontal_wheel": -64 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "pointing_button": "button1" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "pointing_button": "button2" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "x": -1300 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "y": 1300 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "y": -1300 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "mouse_key": { + "x": 1300 + } + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "pointing_button": "button1" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["left_option", "left_shift"], + "optional": ["any"] + } + }, + "to": [ + { + "pointing_button": "button2" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] }, - "devices": [ + { + "from": { + "key_code": "f2" + }, + "to": [ { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [ - { - "from": { - "key_code": "f1" - }, - "to": [ - { - "consumer_key_code": "mute" - } - ] - }, - { - "from": { - "key_code": "f2" - }, - "to": [ - { - "consumer_key_code": "volume_decrement" - } - ] - }, - { - "from": { - "key_code": "f3" - }, - "to": [ - { - "consumer_key_code": "volume_increment" - } - ] - }, - { - "from": { - "key_code": "f10" - }, - "to": [ - { - "consumer_key_code": "play_or_pause" - } - ] - }, - { - "from": { - "key_code": "f11" - }, - "to": [ - { - "consumer_key_code": "display_brightness_decrement" - } - ] - }, - { - "from": { - "key_code": "f12" - }, - "to": [ - { - "consumer_key_code": "display_brightness_increment" - } - ] - } - ], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 591, - "vendor_id": 1452 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [ - { - "from": { - "key_code": "caps_lock" - }, - "to": [ - { - "key_code": "escape" - } - ] - }, - { - "from": { - "key_code": "down_arrow" - }, - "to": [ - { - "pointing_button": "button32" - } - ] - }, - { - "from": { - "key_code": "escape" - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "from": { - "key_code": "left_arrow" - }, - "to": [ - { - "pointing_button": "button32" - } - ] - }, - { - "from": { - "key_code": "left_command" - }, - "to": [ - { - "key_code": "left_option" - } - ] - }, - { - "from": { - "key_code": "left_option" - }, - "to": [ - { - "key_code": "right_command" - } - ] - }, - { - "from": { - "key_code": "right_arrow" - }, - "to": [ - { - "pointing_button": "button32" - } - ] - }, - { - "from": { - "key_code": "right_command" - }, - "to": [ - { - "key_code": "right_option" - } - ] - }, - { - "from": { - "key_code": "up_arrow" - }, - "to": [ - { - "pointing_button": "button32" - } - ] - } - ], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 631, - "vendor_id": 1452 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [ - { - "from": { - "key_code": "non_us_backslash" - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "from": { - "key_code": "right_command" - }, - "to": [ - { - "key_code": "right_option" - } - ] - } - ], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": true, - "product_id": 591, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 6194, - "vendor_id": 4152 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 615, - "vendor_id": 76 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [ - { - "from": { - "key_code": "right_command" - }, - "to": [ - { - "key_code": "right_option" - } - ] - } - ], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 6194, - "vendor_id": 4152 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [ - { - "from": { - "pointing_button": "button5" - }, - "to": [ - { - "apple_vendor_keyboard_key_code": "launchpad" - } - ] - } - ], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 34304, - "vendor_id": 1452 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 30264, - "vendor_id": 3141 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [ - { - "from": { - "key_code": "left_command" - }, - "to": [ - { - "key_code": "left_option" - } - ] - }, - { - "from": { - "key_code": "left_option" - }, - "to": [ - { - "key_code": "right_command" - } - ] - } - ], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 631, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 0, - "vendor_id": 4152 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": true, - "product_id": 45081, - "vendor_id": 1133 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 1031, - "vendor_id": 4176 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 0, - "vendor_id": 0 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 0, - "vendor_id": 0 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 11310, - "vendor_id": 7805 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 34056, - "vendor_id": 3141 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [ - { - "from": { - "key_code": "left_option" - }, - "to": [ - { - "key_code": "right_command" - } - ] - }, - { - "from": { - "key_code": "left_command" - }, - "to": [ - { - "key_code": "left_option" - } - ] - } - ], - "treat_as_built_in_keyboard": false + "consumer_key_code": "volume_decrement" } - ], - "fn_function_keys": [ - { - "from": { - "key_code": "f1" - }, - "to": [ - { - "consumer_key_code": "display_brightness_decrement" - } - ] - }, - { - "from": { - "key_code": "f2" - }, - "to": [ - { - "consumer_key_code": "display_brightness_increment" - } - ] - }, - { - "from": { - "key_code": "f3" - }, - "to": [ - { - "apple_vendor_keyboard_key_code": "mission_control" - } - ] - }, - { - "from": { - "key_code": "f4" - }, - "to": [ - { - "apple_vendor_keyboard_key_code": "spotlight" - } - ] - }, - { - "from": { - "key_code": "f5" - }, - "to": [ - { - "consumer_key_code": "dictation" - } - ] - }, - { - "from": { - "key_code": "f6" - }, - "to": [ - { - "key_code": "f6" - } - ] - }, - { - "from": { - "key_code": "f7" - }, - "to": [ - { - "consumer_key_code": "rewind" - } - ] - }, - { - "from": { - "key_code": "f8" - }, - "to": [ - { - "consumer_key_code": "play_or_pause" - } - ] - }, - { - "from": { - "key_code": "f9" - }, - "to": [ - { - "consumer_key_code": "fast_forward" - } - ] - }, - { - "from": { - "key_code": "f10" - }, - "to": [ - { - "consumer_key_code": "mute" - } - ] - }, - { - "from": { - "key_code": "f11" - }, - "to": [ - { - "consumer_key_code": "volume_decrement" - } - ] - }, - { - "from": { - "key_code": "f12" - }, - "to": [ - { - "consumer_key_code": "volume_increment" - } - ] - } - ], - "name": "Default profile", - "parameters": { - "delay_milliseconds_before_open_device": 1000 + ] }, - "selected": true, - "simple_modifications": [ + { + "from": { + "key_code": "f3" + }, + "to": [ { - "from": { - "consumer_key_code": "eject" - }, - "to": [ - { - "consumer_key_code": "al_terminal_lock_or_screensaver" - } - ] - }, - { - "from": { - "key_code": "caps_lock" - }, - "to": [ - { - "key_code": "escape" - } - ] - }, - { - "from": { - "key_code": "left_command" - }, - "to": [ - { - "key_code": "right_command" - } - ] - }, - { - "from": { - "key_code": "non_us_backslash" - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] + "consumer_key_code": "volume_increment" } - ], - "virtual_hid_keyboard": { - "country_code": 0, - "indicate_sticky_modifier_keys_state": true, - "mouse_key_xy_scale": 100 + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] } + ], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 591, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "escape" + } + ] + }, + { + "from": { + "key_code": "down_arrow" + }, + "to": [ + { + "pointing_button": "button32" + } + ] + }, + { + "from": { + "key_code": "escape" + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "from": { + "key_code": "left_arrow" + }, + "to": [ + { + "pointing_button": "button32" + } + ] + }, + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "right_command" + } + ] + }, + { + "from": { + "key_code": "right_arrow" + }, + "to": [ + { + "pointing_button": "button32" + } + ] + }, + { + "from": { + "key_code": "right_command" + }, + "to": [ + { + "key_code": "right_option" + } + ] + }, + { + "from": { + "key_code": "up_arrow" + }, + "to": [ + { + "pointing_button": "button32" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 631, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "non_us_backslash" + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "from": { + "key_code": "right_command" + }, + "to": [ + { + "key_code": "right_option" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 591, + "vendor_id": 1452 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 6194, + "vendor_id": 4152 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 615, + "vendor_id": 76 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "right_command" + }, + "to": [ + { + "key_code": "right_option" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 6194, + "vendor_id": 4152 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [ + { + "from": { + "pointing_button": "button5" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "launchpad" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 30264, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "right_command" + } + ] + }, + { + "from": { + "key_code": "escape" + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 631, + "vendor_id": 1452 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 4152 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45081, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 1031, + "vendor_id": 4176 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "right_command" + }, + "to": [ + { + "key_code": "right_option" + } + ] + }, + { + "from": { + "key_code": "right_option" + }, + "to": [ + { + "key_code": "right_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 11310, + "vendor_id": 7805 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34056, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "right_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false } - ] -} \ No newline at end of file + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "consumer_key_code": "eject" + }, + "to": [ + { + "consumer_key_code": "al_terminal_lock_or_screensaver" + } + ] + }, + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "escape" + } + ] + }, + { + "from": { + "key_code": "escape" + }, + "to": [ + { + "key_code": "caps_lock" + } + ] + }, + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "right_command" + } + ] + }, + { + "from": { + "key_code": "non_us_backslash" + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} diff --git a/.config/keyboard/keychron_v1.json b/.config/keyboard/keychron_v1.json new file mode 100644 index 0000000..dc75d5f --- /dev/null +++ b/.config/keyboard/keychron_v1.json @@ -0,0 +1,417 @@ +{ + "name": "Keychron V1", + "vendorProductId": 875823889, + "macros": [ + "", + "{KC_LGUI,KC_LCTL,KC_Q}", + "{KC_RGUI,KC_L}", + "Have a nice day", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "it-infra-stream@wundermanthompson.com", + "marcin.wozniak@wundermanthompson.com", + "Have a nice day!\n\n---\nMarcin\n" + ], + "layers": [ + [ + "KC_GRV", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_F11", + "KC_F12", + "KC_DEL", + "KC_NO", + "KC_MUTE", + "KC_GRV", + "KC_1", + "KC_2", + "KC_3", + "KC_4", + "KC_5", + "KC_6", + "KC_7", + "KC_8", + "KC_9", + "KC_0", + "KC_MINS", + "KC_EQL", + "KC_BSPC", + "KC_NO", + "KC_PGUP", + "KC_TAB", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_LBRC", + "KC_RBRC", + "KC_BSLS", + "KC_NO", + "KC_PGDN", + "KC_ESC", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_SCLN", + "KC_QUOT", + "KC_NO", + "KC_ENT", + "KC_NO", + "KC_HOME", + "KC_LSFT", + "KC_NO", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_NO", + "KC_RSFT", + "KC_UP", + "KC_NO", + "KC_LCTL", + "USER02", + "USER05", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_SPC", + "KC_VOLD", + "KC_VOLU", + "KC_NO", + "USER03", + "MO(1)", + "USER05", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT" + ], + [ + "KC_TRNS", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "BL_DEC", + "BL_INC", + "KC_MPRV", + "KC_MPLY", + "KC_MNXT", + "KC_F10", + "KC_F11", + "KC_F12", + "KC_TRNS", + "KC_NO", + "RGB_TOG", + "KC_TRNS", + "KC_TRNS", + "MACRO01", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "MACRO13", + "MACRO14", + "MACRO15", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_MS_BTN1", + "KC_MS_UP", + "KC_MS_BTN2", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_MS_LEFT", + "KC_MS_DOWN", + "KC_MS_RIGHT", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_NO", + "KC_END", + "KC_TRNS", + "KC_NO", + "KC_MS_WH_UP", + "KC_MS_WH_DOWN", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_TRNS", + "RGB_VAD", + "RGB_VAI", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_GRV", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_F11", + "KC_F12", + "KC_DEL", + "KC_NO", + "KC_MUTE", + "KC_GRV", + "KC_1", + "KC_2", + "KC_3", + "KC_4", + "KC_5", + "KC_6", + "KC_7", + "KC_8", + "KC_9", + "KC_0", + "KC_MINS", + "KC_EQL", + "KC_BSPC", + "KC_NO", + "KC_PGUP", + "KC_TAB", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_LBRC", + "KC_RBRC", + "KC_BSLS", + "KC_NO", + "KC_PGUP", + "KC_ESC", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_SCLN", + "KC_QUOT", + "KC_NO", + "KC_ENT", + "KC_NO", + "KC_HOME", + "KC_LSFT", + "KC_NO", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_NO", + "KC_RSFT", + "KC_UP", + "KC_NO", + "KC_LCTL", + "KC_LGUI", + "KC_LALT", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_SPC", + "KC_VOLD", + "KC_VOLU", + "KC_NO", + "KC_RALT", + "MO(3)", + "KC_RCTL", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT" + ], + [ + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "BL_DEC", + "BL_INC", + "KC_MPRV", + "KC_MPLY", + "KC_MNXT", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "RGB_TOG", + "KC_TRNS", + "KC_TRNS", + "MACRO02", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "MACRO13", + "MACRO14", + "MACRO15", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_MS_BTN1", + "KC_MS_UP", + "KC_MS_BTN2", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_MS_LEFT", + "KC_MS_DOWN", + "KC_MS_RIGHT", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_NO", + "KC_END", + "KC_TRNS", + "KC_NO", + "KC_MS_WH_UP", + "KC_MS_WH_DOWN", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_TRNS", + "RGB_VAD", + "RGB_VAI", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ] + ], + "encoders": [] +} \ No newline at end of file diff --git a/.config/keyboard/v1_ansi_knob_rev1.05.json b/.config/keyboard/v1_ansi_knob_rev1.05.json new file mode 100644 index 0000000..f43a270 --- /dev/null +++ b/.config/keyboard/v1_ansi_knob_rev1.05.json @@ -0,0 +1,248 @@ +{ + "name": "Keychron V1", + "vendorId": "0x3434", + "productId": "0x0311", + "lighting": { + "extends": "qmk_rgblight", + "underglowEffects": [ + ["None", 0], + ["SOLID_COLOR", 1], + ["BREATHING", 1], + ["CYCLE_ALL", 1], + ["CYCLE_LEFT_RIGHT", 1], + ["CYCLE_UP_DOWN", 1], + ["RAINBOW_MOVING_CHEVRON", 1], + ["CYCLE_OUT_IN", 1], + ["CYCLE_OUT_IN_DUAL", 1], + ["CYCLE_PINWHEEL", 1], + ["CYCKE_SPIRAL", 1], + ["DUAL_BEACON", 1], + ["RAINBOW_BEACON", 1], + ["RAINDROPS", 1] + ] + }, + "matrix": {"rows": 6, "cols": 16}, + "customKeycodes": [ + {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "Mission Control"}, + {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "Launch Pad"}, + {"name": "Left Option", "title": "Left Option in macOS", "shortName": "Left Option"}, + {"name": "Right Option", "title": "Right Option in macOS", "shortName": "Right Option"}, + {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "Left Command"}, + {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "Right Command"}, + {"name": "Task View", "title": "Task View in windows", "shortName": "Task View"}, + {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File Explorer"} + ], + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0\nESC", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "x": 0.25 + }, + "0,5", + "0,6", + "0,7", + "0,8", + { + "x": 0.25 + }, + "0,9", + "0,10", + "0,11", + "0,12", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "0,13", + { + "x": 0.25, + "w": 0.75 + }, + "0,15", + { + "h": 0.5 + }, + "5,7", + { + "x": -1, + "y": 0.5, + "h": 0.5 + }, + "5,8" + ], + [ + { + "y": -0.25 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "1,13", + { + "x": 0.25 + }, + "1,15" + ], + [ + { + "w": 1.5 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + "2,12", + { + "w": 1.5 + }, + "2,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "w": 1.75 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#777777", + "w": 2.25 + }, + "3,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "3,15" + ], + [ + { + "w": 2.25 + }, + "4,0", + { + "c": "#cccccc" + }, + "4,2", + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + "4,8", + "4,9", + "4,10", + "4,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "4,13" + ], + [ + { + "y": -0.75, + "x": 14.25, + "c": "#777777" + }, + "4,14" + ], + [ + { + "y": -0.25, + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0", + { + "w": 1.25 + }, + "5,1", + { + "w": 1.25 + }, + "5,2", + { + "c": "#cccccc", + "a": 7, + "w": 6.25 + }, + "5,6", + { + "c": "#aaaaaa", + "a": 4 + }, + "5,10", + "5,11", + "5,12" + ], + [ + { + "y": -0.75, + "x": 13.25, + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] +] + } +} \ No newline at end of file diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml index 3a5c730..31c62bc 100644 --- a/.config/lazygit/config.yml +++ b/.config/lazygit/config.yml @@ -1,2 +1,5 @@ gui: mainPanelSplitMode: "horizontal" +git: + commit: + signOff: true diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 8b4d8c2..65c8def 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -142,7 +142,8 @@ call plug#begin('~/.config/nvim/plugged') Plug 'sbdchd/neoformat' Plug 'hrsh7th/cmp-vsnip' - Plug 'hrsh7th/nvim-vsnip' + Plug 'hrsh7th/vim-vsnip' + Plug 'hrsh7th/vim-vsnip-integ' " Telescope Plug 'nvim-lua/plenary.nvim' @@ -604,6 +605,9 @@ au BufNewFile,BufRead *.conf setfiletype conf " Mikrotik au BufNewFile,BufRead *.mikrotik setfiletype routeros +" Ebuild +au BufNewFile,BufRead,BufWritePre *.ebuild let g:shfmt_extra_args = '-ci -sr -s' + " Automatically deletes all trailing whitespace and newlines at end of file on save. autocmd BufWritePre * %s/\s\+$//e autocmd BufWritepre * %s/\n\+\%$//e diff --git a/.config/nvim/installer.sh b/.config/nvim/installer.sh index 01343ce..83f1129 100755 --- a/.config/nvim/installer.sh +++ b/.config/nvim/installer.sh @@ -20,6 +20,10 @@ function update_pip() { python3 -m pip install --upgrade pip --user } +function install_neovim_module_for_python() { + pip3 install neovim --pre --user --force +} + function install_pyright() { # Install pyright sudo npm -g i pyright --force @@ -53,7 +57,7 @@ function install_gopls() { function install_black() { # Install black - pip3 install black --user --force + pip3 install black --pre --user --force } function install_ansible() { diff --git a/.local/bin/git-delete-branch b/.local/bin/git-delete-branch index 268a043..deaa96a 100755 --- a/.local/bin/git-delete-branch +++ b/.local/bin/git-delete-branch @@ -10,21 +10,36 @@ function delete_remote_branch() { git push origin --delete "$1" } -echo -echo "List of branches:" -echo -e "$(git branch)" -echo +function list_of_the_branches() { + echo + echo "List of branches:" + echo -e "$(git branch)" + echo +} + +BRANCH="$1" while true; do - read -p "Select branch to remove: " BRANCH + [ -z "$BRANCH" ] && { + list_of_the_branches + read -p "Select branch to remove: " BRANCH + } + echo "$BRANCH" read -p "Remove locally / remote / both [L/R/B]: " CHOOSE case $CHOOSE in - [Bb]*) - delete_local_branch "$BRANCH" - delete_remote_branch "$BRANCH" - ;; - [Ll]*) delete_local_branch "$BRANCH" ;; - [Rr]*) delete_remote_branch "$BRANCH" ;; - *) echo "Please write good answer" ;; + [Bb]*) + delete_local_branch "$BRANCH" + delete_remote_branch "$BRANCH" + unset -f BRANCH + ;; + [Ll]*) + delete_local_branch "$BRANCH" + unset -f BRANCH + ;; + [Rr]*) + delete_remote_branch "$BRANCH" + unset -f BRANCH + ;; + *) echo "Please write good answer" ;; esac done