mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	split out modifier normalization in keyboard.js...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									34d9ab4ba2
								
							
						
					
					
						commit
						15bf8173be
					
				| @ -115,6 +115,39 @@ function doc(text, func){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | // Build or normalize a modifier string. 
 | ||||||
|  | //
 | ||||||
|  | // Acceptable argument sets:
 | ||||||
|  | // 	- none				-> ""
 | ||||||
|  | // 	- true, false, true	-> "ctrl+shift"
 | ||||||
|  | // 	- true, false		-> "ctrl"
 | ||||||
|  | // 	- [true, false]		-> "ctrl"
 | ||||||
|  | // 	- 'alt+shift'		-> "alt+shift"
 | ||||||
|  | // 	- 'shift - alt'		-> "alt+shift"
 | ||||||
|  | //
 | ||||||
|  | function normalizeModifiers(c, a, s){ | ||||||
|  | 		if(c != null && c.constructor.name == 'Array'){ | ||||||
|  | 			a = c[1] | ||||||
|  | 			s = c[2] | ||||||
|  | 			c = c[0] | ||||||
|  | 		} | ||||||
|  | 		if(typeof(c) == typeof('str')){ | ||||||
|  | 			var modifiers = c | ||||||
|  | 		} else { | ||||||
|  | 			var modifiers = (c ? 'ctrl' : '')  | ||||||
|  | 				+ (a ? ' alt' : '')  | ||||||
|  | 				+ (s ? ' shift' : '') | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// build the dormalized modifier string...
 | ||||||
|  | 		var res = /ctrl/i.test(modifiers) ? 'ctrl' : '' | ||||||
|  | 		res += /alt/i.test(modifiers) ? (res != '' ? '+alt' : 'alt') : '' | ||||||
|  | 		res += /shift/i.test(modifiers) ? (res != '' ? '+shift' : 'shift') : '' | ||||||
|  | 
 | ||||||
|  | 		return res | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /* Key handler getter | /* Key handler getter | ||||||
|  * |  * | ||||||
|  * For doc on format see makeKeyboardHandler(...) |  * For doc on format see makeKeyboardHandler(...) | ||||||
| @ -135,6 +168,8 @@ function doc(text, func){ | |||||||
|  * 							Ex: |  * 							Ex: | ||||||
|  * 								'ctrl+shift' |  * 								'ctrl+shift' | ||||||
|  * 							NOTE: 'shift+ctrl' is wrong. |  * 							NOTE: 'shift+ctrl' is wrong. | ||||||
|  |  * 							NOTE: normalizeModifiers(...) can be used as | ||||||
|  |  * 								a reference, if in doubt. | ||||||
|  * |  * | ||||||
|  * This will also resolve several shifted keys by name, for example: |  * This will also resolve several shifted keys by name, for example: | ||||||
|  * 'shift-/' is the same as '?', and either can be used, but the shorter  |  * 'shift-/' is the same as '?', and either can be used, but the shorter  | ||||||
| @ -153,6 +188,8 @@ function doc(text, func){ | |||||||
|  * 		present in the resulting object. |  * 		present in the resulting object. | ||||||
|  * NOTE: this will not unwrap lisp-style (see below) handlers. |  * NOTE: this will not unwrap lisp-style (see below) handlers. | ||||||
|  * NOTE: modes are prioritized by order of occurrence. |  * NOTE: modes are prioritized by order of occurrence. | ||||||
|  |  * NOTE: modifiers can be a list of three bools... | ||||||
|  |  * 		(see: normalizeModifiers(...) for further information) | ||||||
|  * |  * | ||||||
|  * XXX need an explicit way to prioritize modes, avoiding object attr  |  * XXX need an explicit way to prioritize modes, avoiding object attr  | ||||||
|  * 		ordering... |  * 		ordering... | ||||||
| @ -166,6 +203,7 @@ function getKeyHandlers(key, modifiers, keybindings, modes, shifted_keys){ | |||||||
| 	var s_chr = null | 	var s_chr = null | ||||||
| 	var did_handling = false | 	var did_handling = false | ||||||
| 	modifiers = modifiers == null ? '' : modifiers | 	modifiers = modifiers == null ? '' : modifiers | ||||||
|  | 	modifiers = modifiers != '?' ? normalizeModifiers(modifiers) : modifiers | ||||||
| 	modes = modes == null ? 'any' : modes | 	modes = modes == null ? 'any' : modes | ||||||
| 	shifted_keys = shifted_keys == null ? _SHIFT_KEYS : shifted_keys | 	shifted_keys = shifted_keys == null ? _SHIFT_KEYS : shifted_keys | ||||||
| 
 | 
 | ||||||
| @ -342,12 +380,14 @@ function getKeyHandlers(key, modifiers, keybindings, modes, shifted_keys){ | |||||||
|  * 				default: <callback> | <key-def-x>, |  * 				default: <callback> | <key-def-x>, | ||||||
|  * |  * | ||||||
|  *				// a modifier can be any single modifier, like shift or a 
 |  *				// a modifier can be any single modifier, like shift or a 
 | ||||||
|  *				// combination of modifiers like 'ctrl+shift', given in order 
 |  *				// combination of modifiers like 'ctrl+shift', in order 
 | ||||||
|  *				// of priority.
 |  *				// of priority.
 | ||||||
|  *				// supported modifiers are (in order of priority):
 |  *				// supported modifiers, ordered by priority, are:
 | ||||||
|  *				//	- ctrl
 |  *				//	- ctrl
 | ||||||
|  *				//	- alt
 |  *				//	- alt
 | ||||||
|  *				//	- shift
 |  *				//	- shift
 | ||||||
|  |  *				// NOTE: if in doubt use normalizeModifiers(..) as a 
 | ||||||
|  |  *				//		reference...
 | ||||||
|  * 				<modifer>: [...], |  * 				<modifer>: [...], | ||||||
|  * 				... |  * 				... | ||||||
|  * 			}, |  * 			}, | ||||||
| @ -402,10 +442,8 @@ function makeKeyboardHandler(keybindings, unhandled){ | |||||||
| 		// key data...
 | 		// key data...
 | ||||||
| 		var key = evt.keyCode | 		var key = evt.keyCode | ||||||
| 
 | 
 | ||||||
| 		// normalize the modifiers...
 | 		// get modifiers...
 | ||||||
| 		var modifiers = evt.ctrlKey ? 'ctrl' : '' | 		var modifiers = [evt.ctrlKey, evt.altKey, evt.shiftKey] | ||||||
| 		modifiers += evt.altKey ? (modifiers != '' ? '+alt' : 'alt') : '' |  | ||||||
| 		modifiers += evt.shiftKey ? (modifiers != '' ? '+shift' : 'shift') : '' |  | ||||||
| 
 | 
 | ||||||
| 		//window.DEBUG && console.log('KEY:', key, chr, modifiers)
 | 		//window.DEBUG && console.log('KEY:', key, chr, modifiers)
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user