@@ -18,28 +18,84 @@ const CUSTOM_KEYS_SCHEMA = "org.cinnamon.desktop.keybindings.custom-keybinding";
1818
1919const MEDIA_KEYS_SCHEMA = "org.cinnamon.desktop.keybindings.media-keys" ;
2020
21- const REPEATABLE_MEDIA_KEYS = [
22- MK . VOLUME_UP ,
23- MK . VOLUME_UP_QUIET ,
24- MK . VOLUME_DOWN ,
25- MK . VOLUME_DOWN_QUIET ,
26- MK . SCREEN_BRIGHTNESS_UP ,
27- MK . SCREEN_BRIGHTNESS_DOWN ,
28- MK . KEYBOARD_BRIGHTNESS_UP ,
29- MK . KEYBOARD_BRIGHTNESS_DOWN ,
30- MK . REWIND ,
31- MK . FORWARD ,
21+ const MEDIA_KEYS = [
22+ // Volume/audio
23+ { key : MK . MUTE , mode : Cinnamon . ActionMode . ALL } ,
24+ { key : MK . MUTE_QUIET , mode : Cinnamon . ActionMode . ALL } ,
25+ { key : MK . VOLUME_UP , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
26+ { key : MK . VOLUME_UP_QUIET , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
27+ { key : MK . VOLUME_DOWN , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
28+ { key : MK . VOLUME_DOWN_QUIET , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
29+ { key : MK . MIC_MUTE , mode : Cinnamon . ActionMode . ALL } ,
30+
31+ // Disc/media
32+ { key : MK . EJECT , mode : Cinnamon . ActionMode . ALL } ,
33+ { key : MK . MEDIA , mode : Cinnamon . ActionMode . ALL } ,
34+
35+ // Playback
36+ { key : MK . PLAY , mode : Cinnamon . ActionMode . ALL } ,
37+ { key : MK . PAUSE , mode : Cinnamon . ActionMode . ALL } ,
38+ { key : MK . STOP , mode : Cinnamon . ActionMode . ALL } ,
39+ { key : MK . PREVIOUS , mode : Cinnamon . ActionMode . ALL } ,
40+ { key : MK . NEXT , mode : Cinnamon . ActionMode . ALL } ,
41+ { key : MK . REWIND , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
42+ { key : MK . FORWARD , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
43+ { key : MK . REPEAT , mode : Cinnamon . ActionMode . ALL } ,
44+ { key : MK . RANDOM , mode : Cinnamon . ActionMode . ALL } ,
45+
46+ // Screenshots
47+ { key : MK . SCREENSHOT , mode : Cinnamon . ActionMode . ALL } ,
48+ { key : MK . SCREENSHOT_CLIP , mode : Cinnamon . ActionMode . NORMAL } ,
49+ { key : MK . WINDOW_SCREENSHOT , mode : Cinnamon . ActionMode . NORMAL } ,
50+ { key : MK . WINDOW_SCREENSHOT_CLIP , mode : Cinnamon . ActionMode . NORMAL } ,
51+ { key : MK . AREA_SCREENSHOT , mode : Cinnamon . ActionMode . NORMAL } ,
52+ { key : MK . AREA_SCREENSHOT_CLIP , mode : Cinnamon . ActionMode . NORMAL } ,
53+
54+ // Touchpad
55+ { key : MK . TOUCHPAD , mode : Cinnamon . ActionMode . NORMAL } ,
56+ { key : MK . TOUCHPAD_ON , mode : Cinnamon . ActionMode . NORMAL } ,
57+ { key : MK . TOUCHPAD_OFF , mode : Cinnamon . ActionMode . NORMAL } ,
58+
59+ // Session
60+ { key : MK . LOGOUT , mode : Cinnamon . ActionMode . NORMAL } ,
61+ { key : MK . SHUTDOWN , mode : Cinnamon . ActionMode . NORMAL } ,
62+ { key : MK . SUSPEND , mode : Cinnamon . ActionMode . NORMAL } ,
63+ { key : MK . HIBERNATE , mode : Cinnamon . ActionMode . NORMAL } ,
64+ { key : MK . SCREENSAVER , mode : Cinnamon . ActionMode . NORMAL } ,
65+
66+ // App launchers
67+ { key : MK . HOME , mode : Cinnamon . ActionMode . NORMAL } ,
68+ { key : MK . CALCULATOR , mode : Cinnamon . ActionMode . NORMAL } ,
69+ { key : MK . SEARCH , mode : Cinnamon . ActionMode . NORMAL } ,
70+ { key : MK . EMAIL , mode : Cinnamon . ActionMode . NORMAL } ,
71+ { key : MK . HELP , mode : Cinnamon . ActionMode . NORMAL } ,
72+ { key : MK . TERMINAL , mode : Cinnamon . ActionMode . NORMAL } ,
73+ { key : MK . WWW , mode : Cinnamon . ActionMode . NORMAL } ,
74+
75+ // Display
76+ { key : MK . ROTATE_VIDEO_LOCK , mode : Cinnamon . ActionMode . ALL } ,
77+
78+ // Accessibility
79+ { key : MK . SCREENREADER , mode : Cinnamon . ActionMode . NORMAL } ,
80+ { key : MK . ON_SCREEN_KEYBOARD , mode : Cinnamon . ActionMode . NORMAL |
81+ Cinnamon . ActionMode . POPUP |
82+ Cinnamon . ActionMode . UNLOCK_SCREEN |
83+ Cinnamon . ActionMode . SYSTEM_MODAL } ,
84+ { key : MK . INCREASE_TEXT , mode : Cinnamon . ActionMode . NORMAL } ,
85+ { key : MK . DECREASE_TEXT , mode : Cinnamon . ActionMode . NORMAL } ,
86+ { key : MK . TOGGLE_CONTRAST , mode : Cinnamon . ActionMode . NORMAL } ,
87+
88+ // Brightness
89+ { key : MK . SCREEN_BRIGHTNESS_UP , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
90+ { key : MK . SCREEN_BRIGHTNESS_DOWN , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
91+ { key : MK . KEYBOARD_BRIGHTNESS_UP , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
92+ { key : MK . KEYBOARD_BRIGHTNESS_DOWN , mode : Cinnamon . ActionMode . ALL , repeatable : true } ,
93+ { key : MK . KEYBOARD_BRIGHTNESS_TOGGLE , mode : Cinnamon . ActionMode . ALL } ,
94+
95+ // Battery
96+ { key : MK . BATTERY , mode : Cinnamon . ActionMode . NORMAL } ,
3297] ;
3398
34- const OBSOLETE_MEDIA_KEYS = [
35- MK . VIDEO_OUT ,
36- MK . ROTATE_VIDEO
37- ]
38-
39- function is_obsolete_mk ( key_enum ) {
40- return OBSOLETE_MEDIA_KEYS . includes ( key_enum ) ;
41- } ;
42-
4399const iface = "\
44100 <node> \
45101 <interface name='org.cinnamon.SettingsDaemon.KeybindingHandler'> \
@@ -360,46 +416,22 @@ KeybindingManager.prototype = {
360416 } ,
361417
362418 setup_media_keys : function ( ) {
363- // Media keys before SEPARATOR work in all modes (global keys)
364- // These should work during lock screen, unlock dialog, etc.
365- let globalModes = Cinnamon . ActionMode . NORMAL | Cinnamon . ActionMode . OVERVIEW |
366- Cinnamon . ActionMode . LOCK_SCREEN | Cinnamon . ActionMode . UNLOCK_SCREEN |
367- Cinnamon . ActionMode . SYSTEM_MODAL | Cinnamon . ActionMode . LOOKING_GLASS |
368- Cinnamon . ActionMode . POPUP ;
369-
370- for ( let i = 0 ; i < MK . SEPARATOR ; i ++ ) {
371- if ( is_obsolete_mk ( i ) ) {
372- continue ;
373- }
374-
375- let flags = REPEATABLE_MEDIA_KEYS . includes ( i )
376- ? Meta . KeyBindingFlags . NONE
377- : Meta . KeyBindingFlags . IGNORE_AUTOREPEAT ;
378-
379- let bindings = this . media_key_settings . get_strv ( CinnamonDesktop . desktop_get_media_key_string ( i ) ) ;
380- this . addHotKeyArray ( "media-keys-" + i . toString ( ) ,
381- bindings ,
382- Lang . bind ( this , this . on_media_key_pressed , i ) ,
383- flags ,
384- globalModes ) ;
385- }
386-
387- // Media keys after SEPARATOR only work in normal mode
388- for ( let i = MK . SEPARATOR + 1 ; i < MK . LAST ; i ++ ) {
389- if ( is_obsolete_mk ( i ) ) {
390- continue ;
391- }
392-
393- let flags = REPEATABLE_MEDIA_KEYS . includes ( i )
419+ for ( const mk of MEDIA_KEYS ) {
420+ let flags = mk . repeatable
394421 ? Meta . KeyBindingFlags . NONE
395422 : Meta . KeyBindingFlags . IGNORE_AUTOREPEAT ;
396423
397- let bindings = this . media_key_settings . get_strv ( CinnamonDesktop . desktop_get_media_key_string ( i ) ) ;
398- this . addHotKeyArray ( "media-keys-" + i . toString ( ) ,
399- bindings ,
400- Lang . bind ( this , this . on_media_key_pressed , i ) ,
401- flags ,
402- Cinnamon . ActionMode . NORMAL ) ;
424+ let bindings = this . media_key_settings . get_strv (
425+ CinnamonDesktop . desktop_get_media_key_string ( mk . key )
426+ ) ;
427+
428+ this . addHotKeyArray (
429+ "media-keys-" + mk . key . toString ( ) ,
430+ bindings ,
431+ Lang . bind ( this , this . on_media_key_pressed , mk . key ) ,
432+ flags ,
433+ mk . mode
434+ ) ;
403435 }
404436 return true ;
405437 } ,
0 commit comments