νƒœκ·Έ 보관물: shortcut-keys

shortcut-keys

ν„°λ―Έλ„μ—μ„œ μ‚¬μš©μž μ •μ˜ ν‚€λ³΄λ“œ 단좕킀λ₯Ό μ„€μ •ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? λŒ€ν•΄ ν„°λ―Έλ„μ—μ„œ μ‚¬μš©μž μ •μ˜ ν‚€λ³΄λ“œ 단좕킀λ₯Ό μ„€μ •ν•˜λŠ”

λ‹€λ₯Έ Linux 버전에 λŒ€ν•΄ ν„°λ―Έλ„μ—μ„œ μ‚¬μš©μž μ •μ˜ ν‚€λ³΄λ“œ 단좕킀λ₯Ό μ„€μ •ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

기본적으둜 Linuxκ°€ ν‚€λ³΄λ“œ 단좕킀 νŒŒμΌμ„ μ €μž₯ν•˜λŠ” μœ„μΉ˜μ™€ νŽΈμ§‘ 방법을 μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ‚΄ μ—°κ΅¬μ—μ„œ νŒŒμΌμ„ μ°Ύμ•˜ ~/.config/compiz-1/compizconfigμ§€λ§Œ 파일 을 μ—΄λ €κ³  ν•  λ•Œ μ•”ν˜Έν™”λ˜μ—ˆκ±°λ‚˜ λΉ„μŠ·ν–ˆμŠ΅λ‹ˆλ‹€ nano.



λ‹΅λ³€

λͺ…λ Ή ν–‰μ—μ„œ 두 λ‹¨κ³„λ‘œ λ°”λ‘œ κ°€κΈ° ν‚€ 바인딩 μΆ”κ°€ (14.04+)

λͺ…λ Ή ν–‰μ—μ„œ μ»€μŠ€ν…€ 단좕킀λ₯Ό μΆ”κ°€ν•˜λŠ” 것은 κ°€λŠ₯ν•˜μ§€λ§Œ μ•½κ°„ λ³΅μž‘ν•©λ‹ˆλ‹€. ν‚€ λ°”μΈλ”©λ§ˆλ‹€ λͺ‡ 단계λ₯Ό κ±°μ³μ•Όν•©λ‹ˆλ‹€. λ‹€λ₯Έ ν•œνŽΈμœΌλ‘œλŠ” 이닀 맀우 κ°„λ‹¨ν•˜κ³  μ–΄λ–»κ²Œ λ“  λͺ…λ Ή ν–‰ (즉, 였λ₯Έμͺ½ μ§ˆλ¬Έμ΄μ—ˆλ‹€?)μ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λŠ” 경우 맀우 잘 μŠ€ν¬λ¦½νŒ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μΈν„°νŽ˜μ΄μŠ€ (μ‹œμŠ€ν…œ μ„€μ •> β€œν‚€λ³΄λ“œβ€> β€œλ°”λ‘œ 가기”> β€œμ‚¬μš©μž μ •μ˜ 단좕킀”)μ—μ„œμ™€ 같이 μ‚¬μš©μž μ •μ˜ ν‚€λ³΄λ“œ λ‹¨μΆ•ν‚€λŠ” λ‹€μŒ 두 λ‹¨κ³„λ‘œ λͺ…λ Ή ν–‰μ—μ„œ μž‘μ„±λ©λ‹ˆλ‹€.

  1. λͺ…령에 μ˜ν•΄ λ¦¬ν„΄λ˜λŠ” λͺ©λ‘μ„ νŽΈμ§‘ (μΆ”κ°€)ν•˜μ—¬ ν‚€ 바인딩을 μž‘μ„±ν•˜μ‹­μ‹œμ˜€.

    gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings
    

    λ°˜ν™˜ 된 λͺ©λ‘μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€ (ν˜„μž¬ ν•˜λ‚˜μ˜ λ°”λ‘œ κ°€κΈ° 인 경우).

    ['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']
    

    λ‹€μŒ λͺ…λ ΉμœΌλ‘œ νŽΈμ§‘ 된 λͺ©λ‘μ„ μ μš©ν•˜μ‹­μ‹œμ˜€.

    gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[<altered_list>]"
    

    (큰 λ”°μ˜΄ν‘œλ₯Ό μƒκ°ν•˜μ‹­μ‹œμ˜€)

    NBλŠ” ν•„μš”κ°€ λͺ©λ‘μ—μ„œ μ–ΈκΈ‰ (예λ₯Ό λ“€μ–΄ 말 μ—†μŠ΅λ‹ˆλ‹€ custom1, custom2) 고유 ν•œ κ²ƒμ΄μ–΄μ•Όν•œλ‹€. 슀크립트λ₯Ό μž‘μ„±ν•˜λ©΄ μŠ€ν¬λ¦½νŠΈκ°€ 쀑볡을 λ°©μ§€ν•΄μ•Όν•©λ‹ˆλ‹€. 이 경우 νŽΈμ§‘ 된 λͺ©λ‘μ€ λ‹€μŒκ³Ό κ°™μ•„μ•Όν•©λ‹ˆλ‹€.

    ['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']
    

    ν•˜λ‚˜μ˜ ν‚€ 바인딩을 μΆ”κ°€ν•˜λ €λ©΄ custom1

  2. 속성을 μ„€μ •ν•˜μ‹­μ‹œμ˜€.

    • 이름:

      gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ name '<newname>'
      
    • λͺ…λ Ή:

      gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ command '<newcommand>'
      
    • ν‚€ μ‘°ν•© (예 <Primary><Alt>gπŸ™‚ :

      gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding '<key_combination>'
      

μœ μš©ν•œ μ •λ³΄λŠ” μ—¬κΈ° μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€

μƒˆ μ‚¬μš©μž μ •μ˜ λ°”λ‘œ κ°€κΈ°λ₯Ό μ„€μ •ν•˜λŠ” 예제 슀크립트

μ•„λž˜ μŠ€ν¬λ¦½νŠΈλŠ” λͺ…λ Ή ν–‰μ—μ„œ μƒˆ 단좕킀 쑰합을 μ„€μ •ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€ 쑰합을 μ‚¬μš©ν•  수 μžˆλ‹€κ³  κ°€μ •ν•˜λ©΄ λͺ…λ Ήκ³Ό ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

python3 /path/to/script.py '<name>' '<command>' '<key_combination>'

예λ₯Ό λ“€λ©΄ :

geditν‚€ μ‘°ν•© Alt+ 둜 μ—΄ λ°”λ‘œ κ°€κΈ° ν‚€ 쑰합을 μ„€μ •ν•˜λ €λ©΄ 7:

python3 /path/to/script.py 'open gedit' 'gedit' '<Alt>7'

슀크립트 :

#!/usr/bin/env python3
import subprocess
import sys

# defining keys & strings to be used
key = "org.gnome.settings-daemon.plugins.media-keys custom-keybindings"
subkey1 = key.replace(" ", ".")[:-1]+":"
item_s = "/"+key.replace(" ", "/").replace(".", "/")+"/"
firstname = "custom"
# get the current list of custom shortcuts
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
array_str = get("gsettings get "+key)
# in case the array was empty, remove the annotation hints
command_result = array_str.lstrip("@as")
current = eval(command_result)
# make sure the additional keybinding mention is no duplicate
n = 1
while True:
    new = item_s+firstname+str(n)+"/"
    if new in current:
        n = n+1
    else:
        break
# add the new keybinding to the list
current.append(new)
# create the shortcut, set the name, command and shortcut key
cmd0 = 'gsettings set '+key+' "'+str(current)+'"'
cmd1 = 'gsettings set '+subkey1+new+" name '"+sys.argv[1]+"'"
cmd2 = 'gsettings set '+subkey1+new+" command '"+sys.argv[2]+"'"
cmd3 = 'gsettings set '+subkey1+new+" binding '"+sys.argv[3]+"'"

for cmd in [cmd0, cmd1, cmd2, cmd3]:
    subprocess.call(["/bin/bash", "-c", cmd])

μ‚¬μš©ν•˜λŠ” 방법:

슀크립트λ₯Ό 빈 νŒŒμΌμ— λΆ™μ—¬λ„£κ³ λ‘œ μ €μž₯ set_customshortcut.pyν•œ λ‹€μŒ μœ„μ— μ„€λͺ… λœλŒ€λ‘œ μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.

κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” μ£Όμš” μ–ΈκΈ‰ 쀑 μΌλΆ€λŠ” μ‹€ν—˜μ μœΌλ‘œ GUIκ°€ 바인딩 κ°’μœΌλ‘œ λ³€κ²½ ν•œ λ‚΄μš©μ„ μ‚΄νŽ΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

Super key:                 <Super>
Control key:               <Primary> or <Control>
Alt key:                   <Alt>
Shift key:                 <Shift>
numbers:                   1 (just the number)
Spacebar:                  space
Slash key:                 slash
Asterisk key:              asterisk (so it would need `<Shift>` as well)
Ampersand key:             ampersand (so it would need <Shift> as well)

a few numpad keys:
Numpad divide key (`/`):   KP_Divide
Numpad multiply (Asterisk):KP_Multiply
Numpad number key(s):      KP_1
Numpad `-`:                KP_Subtract

기타


λ‹΅λ³€

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•˜κ²Œ μˆ˜ν–‰ ν•  μˆ˜μžˆλŠ” κ°„λ‹¨ν•œ 방법이 μžˆμŠ΅λ‹ˆλ‹€ dconf.

dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'move-window.sh'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding "'<Primary><Alt>Page_Down'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'move-window'"

μ‚¬μš© gsettings:

gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "'move-window'"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "'<Primary><Alt>Page_Down'"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "'/usr/local/bin/move-window.sh'"

custom0바인딩을 더 μΆ”κ°€ ν•˜λ €λ©΄ 파트 μ—μ„œ 숫자λ₯Ό λŠ˜λ €μ•Ό ν•©λ‹ˆλ‹€. custom1, custom2λ“±

영ꡬ적으둜 λ§Œλ“€λ €λ©΄ .bash_profile둜그인 μ…Έμ—μ„œ μ‹€ν–‰ν•˜λŠ” μœ μ‚¬ν•œ 슀크립트 λ˜λŠ” μœ μ‚¬ν•œ μŠ€ν¬λ¦½νŠΈμ— μΆ”κ°€ν•˜μ‹­μ‹œμ˜€ . κ·Έλƒ₯ λΉ„ 둜그인 μ‰˜μ„ μœ„ν•΄ κ·Έκ²ƒμ„ν•˜μ§€ μ•ŠλŠ” .bashrcλ•Œλ¬Έμ— λ‚΄ κ²½ν—˜μ—μ„œ 이듀을 dconf와 gsettings크게 그것을 천천히. 30 바인딩 λ³€κ²½ / μΆ”κ°€μ—λŠ” 1 μ΄ˆκ°€ κ±Έλ¦½λ‹ˆλ‹€! λΉ„ 둜그인 μ‰˜ ( .bashrc) μ—μ„œλŠ” 이것을 μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ !


λ‹΅λ³€

λͺ¨λ“  μ‚¬μš©μž μ •μ˜ ν‚€λ³΄λ“œ 단좕킀 섀정은 dconf λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ©λ‹ˆλ‹€.

λ‹€μŒμ„ 톡해 μ‰½κ²Œ μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ dconf-editor.

sudo apt-get install dconf-editor

그런 λ‹€μŒ νŽΈμ§‘κΈ°μ—μ„œ λ‹€μŒ dconf 경둜둜 μ΄λ™ν•˜μ‹­μ‹œμ˜€.

/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/


λ‹΅λ³€

12.04의 λͺ…λ Ή μ€„μ—μ„œ λ°”λ‘œ κ°€κΈ° ν‚€ 바인딩 μΆ”κ°€

수락 된 닡변이 λ„ˆλ¬΄ κ΄‘λ²”μœ„ ν•΄μ§€μ§€ μ•Šλ„λ‘ν•˜λ €λ©΄ 12.04에 λŒ€ν•œ λ³„λ„μ˜ μ†”λ£¨μ…˜μ„ κ²Œμ‹œν•˜μ‹­μ‹œμ˜€.

12.04κΉŒμ§€ (및 포함) μ‚¬μš©μž μ •μ˜ ν‚€ 바인딩은 dconfλ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ§€ μ•Šκ³  ~/.gconf/desktop/gnome/keybindings(xml 파일, ν•˜μœ„ 폴더 custom0λ“±) μ €μž₯λ©λ‹ˆλ‹€.

μ•„λž˜ μŠ€ν¬λ¦½νŠΈλŠ” xmlμžλ™μœΌλ‘œ 이름이 μ˜¬λ°”λ₯΄κ²Œ μ§€μ •λœ 파일과 ν•΄λ‹Ή 포함 폴더λ₯Ό λ§Œλ“­λ‹ˆλ‹€ .

μ‚¬μš©ν•˜λŠ” 방법

  1. 슀크립트λ₯Ό 빈 νŒŒμΌμ— λΆ™μ—¬λ„£κ³  λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œ μ €μž₯ν•˜μ‹­μ‹œμ˜€. set_customshortcuts_12.py
  2. λ‹€μŒ λͺ…λ ΉμœΌλ‘œ μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€ :

    python /path/to/set_customshortcuts_12.py <name> <command> <key1> <key2> <key3>
    

    key3 선택적이며 λͺ…령은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

    python /path/to/set_customshortcuts_12.py run_browser firefox Primary 7
    

    λ˜λŠ”

    python /path/to/set_customshortcuts_12.py run_texteditor gedit Primary Alt 3
    

λ…ΈνŠΈ

  • ν‚€ 이름은 νŽΈμ§‘ μ„€μ •κ³Ό λ‹€λ¦…λ‹ˆλ‹€. ν‚€λŠ” μ‹œμŠ€ν…œ μ„€μ •> β€œν‚€λ³΄λ“œβ€> β€œλ°”λ‘œ 가기”> β€œμ‚¬μš©μž μ •μ˜ λ°”λ‘œ 가기”에 ν‘œμ‹œλœλŒ€λ‘œ 이름이 μ§€μ •λ©λ‹ˆλ‹€.
  • VirtualBoxμ—μ„œ 12.04의 슀크립트λ₯Ό ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. λ³€κ²½ 사항을 μ μš©ν•˜λ €λ©΄ 둜그 아웃 / 인이 ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€.
#!/usr/bin/env python
import os
import sys

home = os.environ["HOME"]
name = sys.argv[1]
command = sys.argv[2]
keys = sys.argv[3:]

keyfile = [
    '<?xml version="1.0"?>',
    '<gconf>',
    '\t<entry name="action" mtime="1427791732" type="string">',
    '\t\t<stringvalue>'+command+'</stringvalue>',
    '\t</entry>',
    '\t<entry name="name" mtime="1427791732" type="string">',
    '\t\t<stringvalue>'+name+'</stringvalue>',
    '\t</entry>',
    '\t<entry name="binding" mtime="1427791736" type="string">',
    '\t</entry>',
    '</gconf>',
    ]

if len(keys) == 2:
    keyfile.insert(9, '\t\t<stringvalue>&lt;'+keys[0]+'&gt;'+keys[1]+'</stringvalue>')
else:
    keyfile.insert(9, '\t\t<stringvalue>&lt;'+keys[0]+'&gt;&lt;'+keys[1]+'&gt;'+keys[2]+'</stringvalue>')

n = 0
while True:
    check = home+"/"+".gconf/desktop/gnome/keybindings/custom"+str(n)
    if os.path.exists(check):
        n = n+1
    else:
        newdir = check
        newfile = check+"/"+"%gconf.xml"
        break

os.makedirs(newdir)
with open(newfile, "wt") as shortcut:
    for l in keyfile:
        shortcut.write(l+"\n")

λ‹΅λ³€

sedλ₯Ό μ‚¬μš©ν•˜μ—¬ Python μŠ€ν¬λ¦½νŠΈμ—†μ΄ μƒˆ μ‚¬μš©μž μ •μ˜ λ°”λ‘œ κ°€κΈ°λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μŠ€ν¬λ¦½νŠΈμ—μ„œ name , binding 및 action 을 μ›ν•˜λŠ”λŒ€λ‘œ μ„€μ • ν•˜λ©΄λ©λ‹ˆλ‹€.

name="myaction"
binding="<CTRL><ALT>v"
action="/usr/local/bin/myaction"

media_keys=org.gnome.settings-daemon.plugins.media-keys
custom_kbd=org.gnome.settings-daemon.plugins.media-keys.custom-keybinding
kbd_path=/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/$name/
new_bindings=`gsettings get $media_keys custom-keybindings | sed -e"s>'\]>','$kbd_path']>"| sed -e"s>@as \[\]>['$kbd_path']>"`
gsettings set $media_keys custom-keybindings "$new_bindings"
gsettings set $custom_kbd:$kbd_path name $name
gsettings set $custom_kbd:$kbd_path binding $binding
gsettings set $custom_kbd:$kbd_path command $action

λ‹΅λ³€

이λ₯Ό μœ„ν•΄ 슀크립트λ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

creatShortcut호좜 μ—μ„œ μ‚¬μš©λ²•μ„ μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€ .

export nextShortcutId=0
function creatShortcut() {
    name="$1"
    commandToRun="$2"
    binding="$3"
    path="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${nextShortcutId}"
    nextShortcutId=$nextShortcutId+1
    dconf write "$path/name" "'""$name""'"
    dconf write "$path/command" "'""$commandToRun""'"
    dconf write "$path/binding" "'""$binding""'"
}

# dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding '"<Primary><Shift>exclam"'
creatShortcut 'copyq show' 'copyq show' '<Primary><Shift>exclam'
creatShortcut 'System Monitor' 'gnome-system-monitor' '<Primary><Alt>m'
creatShortcut 'Suspend' 'systemctl suspend -i' '<Super>d'
creatShortcut 'Volume Up' 'amixer -D pulse sset Master 5%+' '<Super>Page_Up'
creatShortcut 'Volume Down' 'amixer -D pulse sset Master 5%-' '<Super>Page_Down'

overallbindings=""
for ((i = 0 ; i < $nextShortcutId ; i++ ));
do
    overallbindings="$overallbindings, '$customindingPathPrefix$i/'"
done
overallbindings="[${overallbindings:2}]" # Delete the first 2 chars: " ," - space and comma
# echo $overallbindings

# Update the list of bindings for the shortcuts to work
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "$overallbindings"
# dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/']"

λ‹΅λ³€

@JacobVlijm이 κ²Œμ‹œ ν•œ λ‹΅λ³€ , 특히 μŠ€ν¬λ¦½νŠΈκ°€ 맀우 μœ μš©ν•˜λ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€ . μ½”λ“œλ₯Όμ— ν¬νŠΈν–ˆμŠ΅λ‹ˆλ‹€ bash. λ‚˜λŠ”μ΄ κΈ°λŠ₯이 μ™„λ²½ν•˜μ§€λŠ” μ•Šμ§€λ§Œ λͺ‡ κ°€μ§€ λ²„κ·Έκ°€μžˆμ„ 수 μžˆμ§€λ§Œ λ‚˜μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

function set_shortcuts(){
    # Usage: set_shortcuts [name] [command] [shortcut]
    unset num i name command shortcut value test value_new
    local name="$1"
    local command="$2"
    local shortcut="$3"
    local value=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)
    local test=$(echo $value | sed "s/\['//;s/', '/,/g;s/'\]//" - | tr ',' '\n' | grep -oP ".*/custom\K[0-9]*(?=/$)")

    if [ "$(echo "$value" | grep -o "@as")" = "@as" ]; then
        local num=0
        local value_new="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/']"
    else
        local i=1
        until [ "$num" != "" ]; do
            if [ "$(echo $test | grep -o $i)" != "$i" ]; then
                local num=$i
            fi
            i=$(echo 1+$i | bc);
        done
        local value_new=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | sed "s#']\$#', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/']#" -)
    fi

    gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$value_new"
    gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ name "$name"
    gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ command "$command"
    gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ binding "$shortcut"
}