
# you can edit this file to change keybindings lines that start with '#' are comments
# the syntax is pretty simple. Some examples:
#command        k             (command is executed when k is pressed)
#command        <C-k>         (command is executed when k is pressed while holding control)
#command        K             (command is executed when K is entered, which is shift+k)
#command        <A-k>         (command is executed when k is pressed while holding alt)
#command        +             (command is executed when = is pressed while holding shift)
#command        <C-K>       (command is executed when k is pressed while holding control and shift)
#command        gg            (command is executed when g is pressed twice)
#command        gt            (command is executed when g is pressed and then t is pressed)
#command        g<C-n>Dt  (command is executed when g is pressed and then n is pressed while holding\
#                               control and then d is pressed while holding shift and then t is pressed)
# you can execute multiple commands using the following syntax:
#command1;command2;command3        <keybinding>
# for more information see the documentation at https://sioyek-documentation.readthedocs.io/


# ---------- NAVIGATION AND ZOOM ----------

# Goto the beginning of document. If prefixed with a number, it will go to that page.
# for example 150gg goes to page 150.
goto_beginning gg

# Goto the end of the document
goto_end G

## Goto left/right/bottom/top side of the page
goto_left H
goto_right L
goto_top_of_page J
goto_bottom_of_page K

# Goto left/right side of the page ignoring white margins
goto_left_smart ^
goto_right_smart $

# Goto the top-right side of page. Useful for two column documents
goto_top_of_page;goto_right_smart zz

# Movement (can be prefixed with a number)
# move_down           <down>
# move_up             <up>
move_left           <right>
move_right          <left>

# Goto forward for one page width. (can be prefixed with a number)
# (note that going forward for one page width is not usually what you want because if
# the page is larger than the screen you will miss some content. What you usually want is screen_down)
next_page J
previous_page K

# Go down one screen width (can be prefixed with a number which tells how many screen widths should we go down)
screen_down <C-d>
screen_up <C-u>

# Goto the next/prev chapter
next_chapter gc
prev_chapter gC

# Goto previous viewing state and delete the current (and future) state(s).
pop_state w

# Goto the previous history point
prev_state <backspace>
prev_state [

# Create a new sioyek window
new_window <C-t>

# Close the current sioyek window
close_window <C-w>

## Search and switch between sioyek windows
#goto_window <unbound>

# If we are not at the end of viewing history, goto the next history point
next_state ]

# Open table of contents.
goto_toc t

# Zoom
zoom_in  +
fit_to_page_width =
zoom_out -

## Zoom in/out on the mouse cursor (instead of center of screen)
# zoom_in_cursor <unbound>
# zoom_out_cursor <unbound>

# Rotate document
rotate_clockwise r
rotate_counterclockwise R

# Automatically set the zoom level and horizontal offset such that the current page is centered horizontally and
# it fills the screen width
fit_to_page_width_smart A

## Similar to fit_to_page_width, but for height
#fit_to_page_height   <unbound>

## Similar to fit_to_page_width_smart but for height
#fit_to_page_height_smart   <unbound>

## Same as fit_to_page_width, but instead of filling the screen width, it fills the ratio of screen that is
## configured in `prefs_user.config` using `fit_to_page_width_ratio` config. See https://github.com/ahrm/sioyek/issues/162#issuecomment-1059738730.
#fit_to_page_width_ratio <unbound>

# Open a file dialog to select a document.
open_document o
# Open an embedded file dialog in sioyek
open_document_embedded <C-o>
# Open an embedded file dialog in sioyek rooted in the directory of current opened file
open_document_embedded_from_current_path <C-O>

# Open a searchable list of previously opened documents.
open_prev_doc O

## Opens the last document opened is sioyek. It is useful when you want to quickly toggle between two documents
#open_last_document <unbound>

## Keyboard shortcut to enter visual mark mode (instead of right clicking)
#enter_visual_mark_mode <unbound>

# Command the move the visual mark to the next/previous line
# these keys only work when a visual mark is set (by right clicking or using `visual_mark_under_cursor` command)
move_visual_mark_up k
move_visual_mark_down j

## lock horizontal scroll, useful when using laptop touchpads
# toggle_horizontal_scroll_lock <unbound>

# ---------- SEARCH ----------

# Search the document.
# example: /something                   (searches the document for 'something')
# you can also specify a page range to search:
# example: /<110,135>something          (searches pages 110 to 135 (inclusive) for 'something')
search /

# Searches the current chapter. This is essentially the same as search but the range prefix is autofilled
# with the range of the current lowest level subchapter.
chapter_search c<C-f>
chapter_search c/

# Goto the next search item. Can be prefixed with a number which is the same as performing the command n times
# for example if we are on the 10th search result and we input 15n, we go to the 25th search result.
next_item n
# Goto the previous search result. Can be prefixed with a number with similar rules as next_item.
previous_item N

# ---------- BOOKMARKS ----------
# Add a bookmark in the current location (opens a text input where you can specify the bookmark text)
add_bookmark b
delete_bookmark db

# Open bookmarks menu of the current document.
goto_bookmark gb

# Open bookmarks menu of all documents.
goto_bookmark_g gB

# ---------- HIGHLIGHTS ----------
# You can select a piece of text and press the `add_highlight` shortcut followed by a symbol (a character from a-z) to highlight
# the text
add_highlight h
# Goto highlights of current document
goto_highlight gh
# Goto highlights of all documents
goto_highlight_g gH
# Left click on a highlight and then press the `delete_highlight` shortcut to delete it.
delete_highlight dh

# Sets the highlight type to be used for other operations (the default highlight type is 'a')
#set_select_highlight_type

## Same as `add_highlight` but uses the current selected highlight type as the type of highlight
#add_highlight_with_current_type <unbound>

## Toggle select highlight mode. In select highlight mode, all text selected using mouse will automatically be highlighted
## with highlight type set using `set_select_highlight_type`
#toggle_select_highlight <unbound>

# Goto next/previous highlight in current document
goto_next_highlight gnh
goto_prev_highlight gNh

## Goto next/previous highlight of the current selected highlight type
#goto_next_highlight_of_type <unbound>
#goto_prev_highlight_of_type <unbound>

# ---------- MARKS ----------

# Mark the current location. After pressing the mark button, you must enter a symbol (a letter from a-z or A-Z).
# this marks the current location in the file with the entered symbol. Afterwards you will be able to return to
# the locations of the marks using goto_mark command.
# example:  mm      (marks the current location in the file with a mark named 'm')
set_mark m
# Goto a previously set mark. After pressing goto_mark you must enter a symbol associated with a previously set mark.
# example:  `m      (goes to the location of the mark named m)
goto_mark `

# ---------- PORTALS ----------
# If we are in default state, goto portal state with the current location in document as the portal source
# if we are already in the portal state, create the portal with the current location as destination.
portal p

# Delete the portal with the closest source to current location
delete_portal dp

# Goto the position of the portal with the closest source to current location
goto_portal gp
goto_portal <tab>

# Similar to goto_portal, except when prev_state is called, the destination of the portal is update to be the state
# on which prev_state is called
edit_portal P
edit_portal <S-<tab>>

# Open/Close the helper window for portals
toggle_window_configuration <f12>

## open/close helper window
#toggle_one_window <unbound>

# ---------- MISC ----------

# Copy selected text
copy <C-c>

toggle_fullscreen <f11>

# Toggles whether we highlight pdf links or not
toggle_highlight <f1>

# open command line
command :

# Search the selected text using one of the search engines defined using search_url_* settings in prefs.config (* can be any letter between 'a' and 'z')
# see https://sioyek-documentation.readthedocs.io/en/latest/usage.html#external-search
external_search s

# opens the selected text as a url in the default browser
# open_selected_url Q

# Toggle dark mode (inverted colors)
# toggle_dark_mode ,r

## Toggle custom color mode. You can specify the text background color in your `prefs_user.config` file
## see https://sioyek-documentation.readthedocs.io/en/latest/configuration.html#custom-background-color-and-custom-text-color
toggle_custom_color ,r

# Toggle synctex mode. When in synctex mode, right clicking on a pdf launches the corresponding latex page.
toggle_synctex <f4>

## Perform a synctex search under the mouse cursor
#synctex_under_cursor <unbound>

# While in mouse drag mode, instead of selecting text you can pan the screen using mouse
toggle_mouse_drag_mode <f6>

# In visual scroll mode, mouse wheel performs `move_visual_mark_up` and `move_visual_mark_down` commands
toggle_visual_scroll <f7>

# In visual scroll mode, create an overview to/go to/portal to the definition in highlighted line
overview_definition l
# goto_definition <C-]>
# portal_to_definition ]

# In presentation mode, we fit the pages to screen and movement keys move entire pages
toggle_presentation_mode ,p

## Quit sioyek
quit q

# Open PDF links using keyboard
open_link f

# Select text using keyboard
keyboard_select v

# Smart jump using keyboard
keyboard_smart_jump F

## Open overview window using keyboard
#keyboard_overview <unbound>

## If the preview is not correct, jump to the next preview
#next_preview <C-n>

## If the preview is not correct, jump to the previous preview
#previous_preview <C-N>

## Jump to the location of the current overview
#goto_overview <unbound>

## Create a portal to the location of the current overview
#portal_to_overview <unbound>

## Center the window on selected text
#goto_selected_text <unbound>

## Focus the visual mark on the text matching the given string (useful when extensions want to focus on a text)
#focus_text <unbound>

## Smart jump to the location under mouse cursor
#smart_jump_under_cursor <unbound>
## Open overview window to the location under mouse cursor
#overview_under_cursor <unbound>
## Set a visual mark under mouse cursor
#visual_mark_under_cursor <unbound>
## Close the overview window
#close_overview <unbound>
## Exit visual mark mode
#close_visual_mark <unbound>

## Import sioyek data from an exported file
#import <unbound>

## Export sioyek data into a json file
#export <unbound>

## Execute shell commands. For example:
## sioyek --new-instance %1
## in the command %1 expands to the path of the current file and %2 expand to the file name of the current file
#execute <unbound>

## (deprecated see bottom of the page) Execute a predefined command. these commands are defined in `prefs_user.config` file using the following syntax:
## --------prefs_user.config-----------
## execute_command_a	some_command %1 %2
## execute_command_x	another_command %2
## ------------------------------------
## now in order to execute the second command you can first execute `execute_predefined_command` and then press 'x'
#execute_predefined_command <unbound>

## Embed the annotations (highlights and bookmarks) into a new PDF file so they are visible to other PDF readers
#embed_annotations <unbound>

## Copy the current window configuration to clipboard so they can be used in `prefs_user.config`
#copy_window_size_config <unbound>

## Opens the default preference file
#prefs <unbound>
## Opens the user preference file with highest priority
#prefs_user <unbound>
## Opens a list of all user preference files
#prefs_user_all <unbound>

## Opens the default kwys file
#keys <unbound>
## Opens the user keys file with highest priority
#keys_user <unbound>
## Opens a list of all user keys files
#keys_user_all <unbound>

## Enter password for password protected documents
#enter_password <unbound>

## Toggle fastread mode. this is an experiental feature
#toggle_fastread <unbound>

## Toggle statusbar display
toggle_statusbar ,d

## Reload sioyek window
#reload <unbound>

## Set the status string to be displayed in sioyek's statusbar (it is useful for extensions)
#set_status_string <unbound>

## Clears the status string set by `set_status_string`
#clear_status_string <unbound>

## Toggles the window titlebar
#toggle_titlebar <unbound>

## You can bind custom commands defined in `prefs_user.config` using the same syntax as the built-in commands
## --------prefs_user.config-----------
## new_command	_my_command_name python /path/to/script.py %{file_name} %{paper_name}
## ------------------------------------
## now you can bind _my_command_name to a keybind here:
#_my_command_name <unbound>
