linux/drivers/hid/hid-roccat-kone.h
<<
0.v3./spa > v3./form > v3.a 0.v3 href="../linux+v3.7.2/drivers/hid/hid-roccat-kone.h"> 0.v3.img src="../.static/gfx/right.png" alt=">>"> ./spa > .spa class="lxr_search"> 0. 0.v3.input typ v3hidden" nam v3navtarget" 4. v3"> 0.v3.input typ v3text" nam v3search" idv3search"> 0.v3.butt" typ v3submit">Search v3./form > ./spa > .spa class="lxr_prefs" > v3.a href="+prefs?return=drivers/hid/hid-roccat-kone.h" 0.v3 onclick="return ajax_prefs();"> 0.v3Prefs> v3./a> ./spa >0.v3 3./div >0.v3 3.form acn ="ajax+*" method="post" onsubmit="return false;"> .input typ v3hidden" nam v3ajax_lookup" idv3ajax_lookup" 4. v3"> 0.v3 3./form > 0.v3 3.div class="headingbott"m">
0.v3
0.v3 v3 3.div idv3search_results" class="search_results"> v >0.v3 3./div > .div idv3content">> .div idv3file_contents"
3 31./a>#ifndef3.a href="+code=__HID_ROCCAT_KONE_H" class="sref">__HID_ROCCAT_KONE_H./a> 3 32./a>#define3.a href="+code=__HID_ROCCAT_KONE_H" class="sref">__HID_ROCCAT_KONE_H./a> 3 33./a> 3 34./a>.spa  class="comment">/*./spa  >3 35./a>.spa  class="comment"> * Copyright (c) 2010 Stefa  Achatz <erazor_de@users.sourceforge.net>./spa  >3 36./a>.spa  class="comment"> */./spa  >3 37./a> 3 38./a>.spa  class="comment">/*./spa  >3 39./a>.spa  class="comment"> * This program is free software; you ca  redistribute it and/or modify it./spa  >3  v4.a>.spa  class="comment"> * under the terms of the GNU General Public License as published by the Free./spa  >3 114.a>.spa  class="comment"> * Software Foundan 	 ; either vers9"
	2 of the License, or (at your ion 	 )./spa  >3 124.a>.spa  class="comment"> * any later vers9"
../spa  >3 13./a>.spa  class="comment"> */./spa  >3 14./a> 3 15./a>#include <linux/typ s.h./a>> 3 16./a> 3 17./a>struct3.a href="+code=kone_keystroke" class="sref">kone_keystroke./a> { 3 18./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=key" class="sref">key./a>; 3 19./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=acn 	 " class="sref">acn 	 ./a>; 3 20./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=period" class="sref">period./a>; .spa  class="comment">/* in milliseconds */./spa  >3 214.a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3 22./a> 3 23./a>enum3.a href="+code=kone_keystroke_butt"
s" class="sref">kone_keystroke_butt"
s./a> { 3 24./a>        .a href="+code=kone_keystroke_butt"
_1" class="sref">kone_keystroke_butt"
_14.a> = 0xf0, .spa  class="comment">/* left mouse butt"
	*/./spa  >3 25./a>        .a href="+code=kone_keystroke_butt"
_2" class="sref">kone_keystroke_butt"
_24.a> = 0xf1, .spa  class="comment">/* right mouse butt"
	*/./spa  >3 26./a>        .a href="+code=kone_keystroke_butt"
_3" class="sref">kone_keystroke_butt"
_34.a> = 0xf2, .spa  class="comment">/* wheel	*/./spa  >3 27./a>        .a href="+code=kone_keystroke_butt"
_9" class="sref">kone_keystroke_butt"
_94.a> = 0xf3, .spa  class="comment">/* side butt"
	up	*/./spa  >3 28./a>        .a href="+code=kone_keystroke_butt"
_8" class="sref">kone_keystroke_butt"
_84.a> = 0xf4 .spa  class="comment">/* side butt"
	dow
	*/./spa  >3 294.a>}; 3 30./a> 3 31./a>enum3.a href="+code=kone_keystroke_acn 	 s" class="sref">kone_keystroke_acn 	 s./a> { 3 32./a>        .a href="+code=kone_keystroke_acn 	 _press" class="sref">kone_keystroke_acn 	 _press4.a> = 0, 3 33./a>        .a href="+code=kone_keystroke_acn 	 _release" class="sref">kone_keystroke_acn 	 _release4.a> = 1 3 344.a>}; 3 35./a> 3 36./a>struct3.a href="+code=kone_butt"
_info" class="sref">kone_butt"
_info./a> { 3 37./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=number" class="sref">number./a>; .spa  class="comment">/* range 1-8	*/./spa  >3 38./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=typ " class="sref">typ ./a>; 3 39./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=macro_typ " class="sref">macro_typ ./a>; .spa  class="comment">/* 0 = short, 1 = overlong	*/./spa  >3 40./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=macro_set_nam " class="sref">macro_set_nam ./a>[16]; .spa  class="comment">/* ca  be max 15 chars long	*/./spa  >3 41./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=macro_nam " class="sref">macro_nam ./a>[16]; .spa  class="comment">/* ca  be max 15 chars long	*/./spa  >3 42./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=count" class="sref">count./a>; 3 43./a>        struct3.a href="+code=kone_keystroke" class="sref">kone_keystroke./a> .a href="+code=keystrokes" class="sref">keystrokes./a>[20]; 3 444.a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3 45./a> 3 46./a>enum3.a href="+code=kone_butt"
_info_typ s" class="sref">kone_butt"
_info_typ s./a> { 3 47./a>        .spa  class="comment">/* valid butt"
	typ s until firmware 1.32	*/./spa  >3 48./a>        .a href="+code=kone_butt"
_info_typ _butt"
_1" class="sref">kone_butt"
_info_typ _butt"
_14.a> = 0x1, .spa  class="comment">/* click (left mouse butt"
)	*/./spa  >3 49./a>        .a href="+code=kone_butt"
_info_typ _butt"
_2" class="sref">kone_butt"
_info_typ _butt"
_24.a> = 0x2, .spa  class="comment">/* menu (right mouse butt"
)*/./spa  >3 50./a>        .a href="+code=kone_butt"
_info_typ _butt"
_3" class="sref">kone_butt"
_info_typ _butt"
_34.a> = 0x3, .spa  class="comment">/* scroll (wheel)	*/./spa  >3 51./a>        .a href="+code=kone_butt"
_info_typ _double_click" class="sref">kone_butt"
_info_typ _double_click4.a> = 0x4, 3 52./a>        .a href="+code=kone_butt"
_info_typ _key" class="sref">kone_butt"
_info_typ _key4.a> = 0x5, 3 53./a>        .a href="+code=kone_butt"
_info_typ _macro" class="sref">kone_butt"
_info_typ _macro4.a> = 0x6, 3 54./a>        .a href="+code=kone_butt"
_info_typ _off" class="sref">kone_butt"
_info_typ _off4.a> = 0x7, 3 55./a>        .spa  class="comment">/* TODO clarify funcn 	  and renam 	*/./spa  >3 56./a>        .a href="+code=kone_butt"
_info_typ _osd_xy_prescaling" class="sref">kone_butt"
_info_typ _osd_xy_prescaling4.a> = 0x8, 3 57./a>        .a href="+code=kone_butt"
_info_typ _osd_dpi" class="sref">kone_butt"
_info_typ _osd_dpi4.a> = 0x9, 3 58./a>        .a href="+code=kone_butt"
_info_typ _osd_profile" class="sref">kone_butt"
_info_typ _osd_profile4.a> = 0xa, 3 59./a>        .a href="+code=kone_butt"
_info_typ _butt"
_9" class="sref">kone_butt"
_info_typ _butt"
_94.a> = 0xb, .spa  class="comment">/* ie forward	*/./spa  >3 60./a>        .a href="+code=kone_butt"
_info_typ _butt"
_8" class="sref">kone_butt"
_info_typ _butt"
_84.a> = 0xc, .spa  class="comment">/* ie backward	*/./spa  >3 61./a>        .a href="+code=kone_butt"
_info_typ _dpi_up" class="sref">kone_butt"
_info_typ _dpi_up4.a> = 0xd, .spa  class="comment">/* internal	*/./spa  >3 62./a>        .a href="+code=kone_butt"
_info_typ _dpi_dow
" class="sref">kone_butt"
_info_typ _dpi_dow
4.a> = 0xe, .spa  class="comment">/* internal	*/./spa  >3 63./a>        .a href="+code=kone_butt"
_info_typ _butt"
_7" class="sref">kone_butt"
_info_typ _butt"
_74.a> = 0xf, .spa  class="comment">/* tilt left */./spa  >3 64./a>        .a href="+code=kone_butt"
_info_typ _butt"
_6" class="sref">kone_butt"
_info_typ _butt"
_64.a> = 0x10, .spa  class="comment">/* tilt right */./spa  >3 65./a>        .a href="+code=kone_butt"
_info_typ _profile_up" class="sref">kone_butt"
_info_typ _profile_up4.a> = 0x11, .spa  class="comment">/* internal	*/./spa  >3 66./a>        .a href="+code=kone_butt"
_info_typ _profile_dow
" class="sref">kone_butt"
_info_typ _profile_dow
4.a> = 0x12, .spa  class="comment">/* internal	*/./spa  >3 67./a>        .spa  class="comment">/* addin 	 al	valid butt"
	typ s since firmware 1.38	*/./spa  >3 68./a>        .a href="+code=kone_butt"
_info_typ _multimedia_open_player" class="sref">kone_butt"
_info_typ _multimedia_open_player4.a> = 0x20, 3 69./a>        .a href="+code=kone_butt"
_info_typ _multimedia_next_track" class="sref">kone_butt"
_info_typ _multimedia_next_track4.a> = 0x21, 3 70./a>        .a href="+code=kone_butt"
_info_typ _multimedia_prev_track" class="sref">kone_butt"
_info_typ _multimedia_prev_track4.a> = 0x22, 3 71./a>        .a href="+code=kone_butt"
_info_typ _multimedia_play_pause" class="sref">kone_butt"
_info_typ _multimedia_play_pause4.a> = 0x23, 3 72./a>        .a href="+code=kone_butt"
_info_typ _multimedia_stop" class="sref">kone_butt"
_info_typ _multimedia_stop4.a> = 0x24, 3 73./a>        .a href="+code=kone_butt"
_info_typ _multimedia_mute" class="sref">kone_butt"
_info_typ _multimedia_mute4.a> = 0x25, 3 74./a>        .a href="+code=kone_butt"
_info_typ _multimedia_volume_up" class="sref">kone_butt"
_info_typ _multimedia_volume_up4.a> = 0x26, 3 75./a>        .a href="+code=kone_butt"
_info_typ _multimedia_volume_dow
" class="sref">kone_butt"
_info_typ _multimedia_volume_dow
4.a> = 0x27 3 764.a>}; 3 77./a> 3 78./a>enum3.a href="+code=kone_butt"
_info_numbers" class="sref">kone_butt"
_info_numbers./a> { 3 79./a>        .a href="+code=kone_butt"
_top" class="sref">kone_butt"
_top4.a> = 1, 3 80./a>        .a href="+code=kone_butt"
_wheel_tilt_left" class="sref">kone_butt"
_wheel_tilt_left4.a> = 2, 3 81./a>        .a href="+code=kone_butt"
_wheel_tilt_right" class="sref">kone_butt"
_wheel_tilt_right4.a> = 3, 3 82./a>        .a href="+code=kone_butt"
_forward" class="sref">kone_butt"
_forward4.a> = 4, 3 83./a>        .a href="+code=kone_butt"
_backward" class="sref">kone_butt"
_backward4.a> = 5, 3 84./a>        .a href="+code=kone_butt"
_middle" class="sref">kone_butt"
_middle4.a> = 6, 3 85./a>        .a href="+code=kone_butt"
_plus" class="sref">kone_butt"
_plus4.a> = 7, 3 86./a>        .a href="+code=kone_butt"
_minus" class="sref">kone_butt"
_minus4.a> = 8, 3 874.a>}; 3 88./a> 3 89./a>struct3.a href="+code=kone_light_info" class="sref">kone_light_info./a> { 3 90./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=number" class="sref">number./a>; .spa  class="comment">/* number of light 1-5	*/./spa  >3 91./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=mod" class="sref">mod./a>;   .spa  class="comment">/* 1 = on, 2 = off	*/./spa  >3 92./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=red" class="sref">red./a>;   .spa  class="comment">/* range 0x00-0xff	*/./spa  >3 93./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=gree
" class="sref">gree
./a>; .spa  class="comment">/* range 0x00-0xff	*/./spa  >3 94./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=blue" class="sref">blue./a>;  .spa  class="comment">/* range 0x00-0xff	*/./spa  >3 954.a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3 96./a> 3 97./a>struct3.a href="+code=kone_profile" class="sref">kone_profile4.a> { 3 98./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=size" class="sref">size./a>; .spa  class="comment">/* always 975	*/./spa  >3 99./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=unused" class="sref">unused./a>; .spa  class="comment">/* always 0 */./spa  >3100./a> 3101./a>        .spa  class="comment">/*./spa  >31024.a>.spa  class="comment">         * range 1-5./spa  >3103./a>.spa  class="comment">         * This number does not need to correspond with locan 	  where profile4.spa  >3104./a>.spa  class="comment">         * saved./spa  >3105./a>.spa  class="comment">         */./spa  >3106./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=profile" class="sref">profile4.a>; .spa  class="comment">/* range 1-5	*/./spa  >3107./a> 3108./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=main_sensitivity" class="sref">main_sensitivity4.a>; .spa  class="comment">/* range 100-1000 */./spa  >3109./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=xy_sensitivity_enabled" class="sref">xy_sensitivity_enabled4.a>; .spa  class="comment">/* 1 = on, 2 = off	*/./spa  >3110./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=x_sensitivity" class="sref">x_sensitivity4.a>; .spa  class="comment">/* range 100-1000 */./spa  >3111./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=y_sensitivity" class="sref">y_sensitivity4.a>; .spa  class="comment">/* range 100-1000 */./spa  >3112./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=dpi_rate" class="sref">dpi_rate4.a>; .spa  class="comment">/* bit 1 = 800, ... */./spa  >3113./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=startup_dpi" class="sref">startup_dpi4.a>; .spa  class="comment">/* range 1-6 */./spa  >3114./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=polling_rate" class="sref">polling_rate4.a>; .spa  class="comment">/* 1 = 125Hz, 2 = 500Hz, 3 = 1000Hz */./spa  >3115./a>        .spa  class="comment">/* kone has no dcu./spa  >3116./a>.spa  class="comment">         *  4.   is always 2 in firmwares <= 1.32	and./spa  >3117./a>.spa  class="comment">         * 1 in firmwares > 1.32./spa  >3118./a>.spa  class="comment">         */./spa  >3119./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=dcu_flag" class="sref">dcu_flag4.a>;>3120./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=light_effect_1" class="sref">light_effect_14.a>; .spa  class="comment">/* range 1-3 */./spa  >3121./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=light_effect_2" class="sref">light_effect_24.a>; .spa  class="comment">/* range 1-5	*/./spa  >3122./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=light_effect_3" class="sref">light_effect_34.a>; .spa  class="comment">/* range 1-4	*/./spa  >3123./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=light_effect_speed" class="sref">light_effect_speed./a>; .spa  class="comment">/* range 0-255	*/./spa  >3124./a> 3125./a>        struct3.a href="+code=kone_light_info" class="sref">kone_light_info./a> .a href="+code=light_infos" class="sref">light_infos./a>[5]; 3126./a>        .spa  class="comment">/* offset is kone_butt"
_info_numbers - 1 */./spa  >3127./a>        struct3.a href="+code=kone_butt"
_info" class="sref">kone_butt"
_info./a> .a href="+code=butt"
_infos" class="sref">butt"
_infos./a>[8]; 3128./a> 3129./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=checksum" class="sref">checksum./a>; .spa  class="comment">/* \brief holds checksum of struct3*/./spa  >3130./a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3131./a> 3132./a>enum3.a href="+code=kone_polling_rates" class="sref">kone_polling_rates4.a> { 3133./a>        .a href="+code=kone_polling_rate_125" class="sref">kone_polling_rate_125./a> = 1, 3134./a>        .a href="+code=kone_polling_rate_500" class="sref">kone_polling_rate_500./a> = 2, 3135./a>        .a href="+code=kone_polling_rate_1000" class="sref">kone_polling_rate_10004.a> = 3 31364.a>}; 3137./a> 3138./a>struct3.a href="+code=kone_settings" class="sref">kone_settings4.a> { 3139./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=size" class="sref">size./a>; .spa  class="comment">/* always 36 */./spa  >3140./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=startup_profile" class="sref">startup_profile4.a>; .spa  class="comment">/* 1-5	*/./spa  >3141./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=unknown1" class="sref">unknown14.a>;>3142./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=tcu" class="sref">tcu./a>; .spa  class="comment">/* 0 = off, 1 = o
	*/./spa  >3143./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=unknown2" class="sref">unknown2./a>[23]; 3144./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=calibran 	 _data" class="sref">calibran 	 _data./a>[4]; 3145./a>        .a href="+code=uint8_t" class="sref">uint8_t./a>  .a href="+code=unknown3" class="sref">unknown3./a>[2]; 3146./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=checksum" class="sref">checksum./a>; 3147./a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3148./a> 3149./a>.spa  class="comment">/*./spa  >315v4.a>.spa  class="comment"> * 12 byte mouse event read by interrupt_read./spa  >31514.a>.spa  class="comment"> */./spa  >3152./a>struct3.a href="+code=kone_mouse_event" class="sref">kone_mouse_event4.a> { 3153./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=report_number" class="sref">report_number./a>; .spa  class="comment">/* always 1 */./spa  >3154./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=butt"
" class="sref">butt"
./a>; 3155./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=x" class="sref">x./a>; 3156./a>        .a href="+code=uint16_t" class="sref">uint16_t./a> .a href="+code=y" class="sref">y./a>; 3157./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=wheel" class="sref">wheel./a>; .spa  class="comment">/* up = 1,	dow
	= -1 */./spa  >3158./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=tilt" class="sref">tilt./a>; .spa  class="comment">/* right = 1,	left = -1 */./spa  >3159./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=unknown" class="sref">unknown./a>; 3160./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=event" class="sref">event4.a>; 3161./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code= 4.  " class="sref"> 4.  ./a>; .spa  class="comment">/* press = 0, release = 1 */./spa  >3162./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=macro_key" class="sref">macro_key./a>; .spa  class="comment">/* 0 to 8	*/./spa  >3163./a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3164./a> 3165./a>enum3.a href="+code=kone_mouse_events" class="sref">kone_mouse_events4.a> { 3166./a>        .spa  class="comment">/* osd events are thought to be display o
	scree
	*/./spa  >3167./a>        .a href="+code=kone_mouse_event_osd_dpi" class="sref">kone_mouse_event_osd_dpi4.a> = 0xa0, 3168./a>        .a href="+code=kone_mouse_event_osd_profile" class="sref">kone_mouse_event_osd_profile4.a> = 0xb0, 3169./a>        .spa  class="comment">/* TODO clarify meaning and occurence of kone_mouse_event_calibran 	 	*/./spa  >3170./a>        .a href="+code=kone_mouse_event_calibran 	 " class="sref">kone_mouse_event_calibran 	 4.a> = 0xc0, 3171./a>        .a href="+code=kone_mouse_event_call_overlong_macro" class="sref">kone_mouse_event_call_overlong_macro4.a> = 0xe0, 3172./a>        .spa  class="comment">/* switch events notify if user changed  4.  s with mousebutt"
	click */./spa  >3173./a>        .a href="+code=kone_mouse_event_switch_dpi" class="sref">kone_mouse_event_switch_dpi4.a> = 0xf0, 3174./a>        .a href="+code=kone_mouse_event_switch_profile" class="sref">kone_mouse_event_switch_profile4.a> = 0xf1 3175./a>}; 3176./a> 3177./a>enum3.a href="+code=kone_commands" class="sref">kone_commands4.a> { 3178./a>        .a href="+code=kone_command_profile" class="sref">kone_command_profile4.a> = 0x5a, 3179./a>        .a href="+code=kone_command_settings" class="sref">kone_command_settings4.a> = 0x15a, 3180./a>        .a href="+code=kone_command_firmware_vers 	 " class="sref">kone_command_firmware_vers 	 4.a> = 0x25a, 3181./a>        .a href="+code=kone_command_weight" class="sref">kone_command_weight4.a> = 0x45a, 3182./a>        .a href="+code=kone_command_calibrane" class="sref">kone_command_calibrane4.a> = 0x55a, 3183./a>        .a href="+code=kone_command_confirm_wrine" class="sref">kone_command_confirm_wrine4.a> = 0x65a, 3184./a>        .a href="+code=kone_command_firmware" class="sref">kone_command_firmware4.a> = 0xe5a 3185./a>}; 3186./a> 3187./a>struct3.a href="+code=kone_roccat_report" class="sref">kone_roccat_report4.a> { 3188./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=event" class="sref">event4.a>; 3189./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code= 4.  " class="sref"> 4.  ./a>; .spa  class="comment">/* holds dpi or profile  4.   */./spa  >3190./a>        .a href="+code=uint8_t" class="sref">uint8_t./a> .a href="+code=key" class="sref">key./a>; .spa  class="comment">/* macro key o
	overlong	macro execun 	 	*/./spa  >31914.a>}3.a href="+code=__attribute__" class="sref">__attribute__./a> ((.a href="+code=__packed__" class="sref">__packed__./a>)); 3192./a> 3193./a>struct3.a href="+code=kone_device" class="sref">kone_device4.a> { 3194./a>        .spa  class="comment">/*./spa  >3195./a>.spa  class="comment">         * Storing actual	val  s when we get informed about changes since there./spa  >3196./a>.spa  class="comment">         * is no way of getting this informan 	 	from the device o
	demand./spa  >3197./a>.spa  class="comment">         */./spa  >3198./a>        int3.a href="+code=actual_profile" class="sref">actual_profile./a>,3.a href="+code=actual_dpi" class="sref">actual_dpi4.a>; 3199./a>        .spa  class="comment">/* Used for neutralizing abnormal butt"
	behaviour	*/./spa  >3200./a>        struct3.a href="+code=kone_mouse_event" class="sref">kone_mouse_event4.a> .a href="+code=last_mouse_event" class="sref">last_mouse_event4.a>; 3201./a> 3202./a>        .spa  class="comment">/*./spa  >3203./a>.spa  class="comment">         * It's unlikely that multiple sysfs attributes are accessed at a time,./spa  >3204./a>.spa  class="comment">         * so o
ly o
e mutex is used to secure hardware access and profiles	and./spa  >3205./a>.spa  class="comment">         * settings of this struct../spa  >3206./a>.spa  class="comment">         */./spa  >3207./a>        struct3.a href="+code=mutex" class="sref">mutex./a> .a href="+code=kone_lock" class="sref">kone_lock4.a>; 3208./a> 3209./a>        .spa  class="comment">/*./spa  >321v4.a>.spa  class="comment">         * Storing the data here reduces IO and ensures that data is available./spa  >32114.a>.spa  class="comment">         * when its needed (E.g. interrupt handler)../spa  >32124.a>.spa  class="comment">         */./spa  >3213./a>        struct3.a href="+code=kone_profile" class="sref">kone_profile4.a> .a href="+code=profiles" class="sref">profiles./a>[5]; 3214./a>        struct3.a href="+code=kone_settings" class="sref">kone_settings4.a> .a href="+code=settings" class="sref">settings4.a>; 3215./a> 3216./a>        .spa  class="comment">/*./spa  >3217./a>.spa  class="comment">         * firmware doesn't change unless firmware updat  is implemented,./spa  >3218./a>.spa  class="comment">         * so it's read o
ly o
ce./spa  >3219./a>.spa  class="comment">         */./spa  >3220./a>        int3.a href="+code=firmware_vers 	 " class="sref">firmware_vers 	 4.a>; 3221./a> 3222./a>        int3.a href="+code=roccat_claimed" class="sref">roccat_claimed4.a>; 3223./a>        int3.a href="+code=chrdev_minor" class="sref">chrdev_minor4.a>; 3224./a>}; 3225./a> 3226./a>#endif 3227./a>
lxr.linux.no kindly hosted by Redpill Linpro AS4.a>, provider of Linux consulting and operan s services since 1995.