diff options
| author | Isaac Andrade <andradei@proton.me> | 2024-08-27 18:51:58 -0600 |
|---|---|---|
| committer | Isaac Andrade <andradei@proton.me> | 2024-08-27 18:51:58 -0600 |
| commit | 45322023e30a372e4a22fe51a2841b07d68ebfc6 (patch) | |
| tree | 1de0b1961a147430541d3a7c408e0055d1f61b99 | |
| parent | 7d94810d016dc12327cd390aeb618a7753418295 (diff) | |
| parent | 9684ade23e80540da9a44ee33e7a3b4c14f85ea0 (diff) | |
Merge branch 'master' of github.com:odin-lang/Odin into posix-linux
67 files changed, 2993 insertions, 2652 deletions
diff --git a/base/intrinsics/intrinsics.odin b/base/intrinsics/intrinsics.odin index b7e8c1189..3cf99bbd2 100644 --- a/base/intrinsics/intrinsics.odin +++ b/base/intrinsics/intrinsics.odin @@ -219,6 +219,8 @@ type_map_cell_info :: proc($T: typeid) -> ^runtime.Map_Cell_Info --- type_convert_variants_to_pointers :: proc($T: typeid) -> typeid where type_is_union(T) --- type_merge :: proc($U, $V: typeid) -> typeid where type_is_union(U), type_is_union(V) --- +type_has_shared_fields :: proc($U, $V: typeid) -> bool typeid where type_is_struct(U), type_is_struct(V) --- + constant_utf16_cstring :: proc($literal: string) -> [^]u16 --- constant_log2 :: proc($v: $T) -> T where type_is_integer(T) --- diff --git a/base/runtime/default_allocators_nil.odin b/base/runtime/default_allocators_nil.odin index ce8519c10..e7a1b1a74 100644 --- a/base/runtime/default_allocators_nil.odin +++ b/base/runtime/default_allocators_nil.odin @@ -1,8 +1,8 @@ package runtime nil_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, - size, alignment: int, - old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) { + size, alignment: int, + old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) { switch mode { case .Alloc, .Alloc_Non_Zeroed: return nil, .Out_Of_Memory diff --git a/base/runtime/thread_management.odin b/base/runtime/thread_management.odin new file mode 100644 index 000000000..cabd4691c --- /dev/null +++ b/base/runtime/thread_management.odin @@ -0,0 +1,34 @@ +package runtime + +Thread_Local_Cleaner :: #type proc "odin" () + +@(private="file") +thread_local_cleaners: [8]Thread_Local_Cleaner + +// Add a procedure that will be run at the end of a thread for the purpose of +// deallocating state marked as `thread_local`. +// +// Intended to be called in an `init` procedure of a package with +// dynamically-allocated memory that is stored in `thread_local` variables. +add_thread_local_cleaner :: proc "contextless" (p: Thread_Local_Cleaner) { + for &v in thread_local_cleaners { + if v == nil { + v = p + return + } + } + panic_contextless("There are no more thread-local cleaner slots available.") +} + +// Run all of the thread-local cleaner procedures. +// +// Intended to be called by the internals of a threading API at the end of a +// thread's lifetime. +run_thread_local_cleaners :: proc "odin" () { + for p in thread_local_cleaners { + if p == nil { + break + } + p() + } +} diff --git a/core/encoding/uuid/writing.odin b/core/encoding/uuid/writing.odin index 499cba72b..7acaa3cd7 100644 --- a/core/encoding/uuid/writing.odin +++ b/core/encoding/uuid/writing.odin @@ -11,7 +11,7 @@ Write a UUID in the 8-4-4-4-12 format. This procedure performs error checking with every byte written. If you can guarantee beforehand that your stream has enough space to hold the -UUID (32 bytes), then it is better to use `unsafe_write` instead as that will +UUID (36 bytes), then it is better to use `unsafe_write` instead as that will be faster. Inputs: @@ -22,7 +22,7 @@ Returns: - error: An `io` error, if one occurred, otherwise `nil`. */ write :: proc(w: io.Writer, id: Identifier) -> (error: io.Error) #no_bounds_check { - write_octet :: proc (w: io.Writer, octet: u8) -> io.Error #no_bounds_check { + write_octet :: proc(w: io.Writer, octet: u8) -> io.Error #no_bounds_check { high_nibble := octet >> 4 low_nibble := octet & 0xF @@ -31,15 +31,15 @@ write :: proc(w: io.Writer, id: Identifier) -> (error: io.Error) #no_bounds_chec return nil } - for index in 0 ..< 4 { write_octet(w, id[index]) or_return } + for index in 0 ..< 4 {write_octet(w, id[index]) or_return} io.write_byte(w, '-') or_return - for index in 4 ..< 6 { write_octet(w, id[index]) or_return } + for index in 4 ..< 6 {write_octet(w, id[index]) or_return} io.write_byte(w, '-') or_return - for index in 6 ..< 8 { write_octet(w, id[index]) or_return } + for index in 6 ..< 8 {write_octet(w, id[index]) or_return} io.write_byte(w, '-') or_return - for index in 8 ..< 10 { write_octet(w, id[index]) or_return } + for index in 8 ..< 10 {write_octet(w, id[index]) or_return} io.write_byte(w, '-') or_return - for index in 10 ..< 16 { write_octet(w, id[index]) or_return } + for index in 10 ..< 16 {write_octet(w, id[index]) or_return} return nil } @@ -54,7 +54,7 @@ Inputs: - id: The identifier to convert. */ unsafe_write :: proc(w: io.Writer, id: Identifier) #no_bounds_check { - write_octet :: proc (w: io.Writer, octet: u8) #no_bounds_check { + write_octet :: proc(w: io.Writer, octet: u8) #no_bounds_check { high_nibble := octet >> 4 low_nibble := octet & 0xF @@ -62,15 +62,15 @@ unsafe_write :: proc(w: io.Writer, id: Identifier) #no_bounds_check { io.write_byte(w, strconv.digits[low_nibble]) } - for index in 0 ..< 4 { write_octet(w, id[index]) } + for index in 0 ..< 4 {write_octet(w, id[index])} io.write_byte(w, '-') - for index in 4 ..< 6 { write_octet(w, id[index]) } + for index in 4 ..< 6 {write_octet(w, id[index])} io.write_byte(w, '-') - for index in 6 ..< 8 { write_octet(w, id[index]) } + for index in 6 ..< 8 {write_octet(w, id[index])} io.write_byte(w, '-') - for index in 8 ..< 10 { write_octet(w, id[index]) } + for index in 8 ..< 10 {write_octet(w, id[index])} io.write_byte(w, '-') - for index in 10 ..< 16 { write_octet(w, id[index]) } + for index in 10 ..< 16 {write_octet(w, id[index])} } /* @@ -106,7 +106,7 @@ Convert a UUID to a string in the 8-4-4-4-12 format. Inputs: - id: The identifier to convert. -- buffer: A byte buffer to store the result. Must be at least 32 bytes large. +- buffer: A byte buffer to store the result. Must be at least 36 bytes large. - loc: The caller location for debugging purposes (default: #caller_location) Returns: @@ -119,7 +119,11 @@ to_string_buffer :: proc( ) -> ( str: string, ) { - assert(len(buffer) >= EXPECTED_LENGTH, "The buffer provided is not at least 32 bytes large.", loc) + assert( + len(buffer) >= EXPECTED_LENGTH, + "The buffer provided is not at least 36 bytes large.", + loc, + ) builder := strings.builder_from_bytes(buffer) unsafe_write(strings.to_writer(&builder), id) return strings.to_string(builder) @@ -129,3 +133,4 @@ to_string :: proc { to_string_allocated, to_string_buffer, } + diff --git a/core/hash/xxhash/xxhash_64.odin b/core/hash/xxhash/xxhash_64.odin index 3b24f20a1..c2976fb3b 100644 --- a/core/hash/xxhash/xxhash_64.odin +++ b/core/hash/xxhash/xxhash_64.odin @@ -19,15 +19,15 @@ xxh_u64 :: u64 XXH64_DEFAULT_SEED :: XXH64_hash(0) XXH64_state :: struct { - total_len: XXH64_hash, /*!< Total length hashed. This is always 64-bit. */ - v1: XXH64_hash, /*!< First accumulator lane */ - v2: XXH64_hash, /*!< Second accumulator lane */ - v3: XXH64_hash, /*!< Third accumulator lane */ - v4: XXH64_hash, /*!< Fourth accumulator lane */ - mem64: [4]XXH64_hash, /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */ - memsize: XXH32_hash, /*!< Amount of data in @ref mem64 */ - reserved32: XXH32_hash, /*!< Reserved field, needed for padding anyways*/ - reserved64: XXH64_hash, /*!< Reserved field. Do not read or write to it, it may be removed. */ + total_len: XXH64_hash, /*!< Total length hashed. This is always 64-bit. */ + v1: XXH64_hash, /*!< First accumulator lane */ + v2: XXH64_hash, /*!< Second accumulator lane */ + v3: XXH64_hash, /*!< Third accumulator lane */ + v4: XXH64_hash, /*!< Fourth accumulator lane */ + mem64: [4]XXH64_hash, /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */ + memsize: XXH32_hash, /*!< Amount of data in @ref mem64 */ + reserved32: XXH32_hash, /*!< Reserved field, needed for padding anyways*/ + reserved64: XXH64_hash, /*!< Reserved field. Do not read or write to it, it may be removed. */ } XXH64_canonical :: struct { diff --git a/core/image/common.odin b/core/image/common.odin index 62deb60a9..690ebc045 100644 --- a/core/image/common.odin +++ b/core/image/common.odin @@ -1393,6 +1393,7 @@ expand_grayscale :: proc(img: ^Image, allocator := context.allocator) -> (ok: bo for p in inp { out[0].rgb = p.r // Gray component. out[0].a = p.g // Alpha component. + out = out[1:] } case: @@ -1417,6 +1418,7 @@ expand_grayscale :: proc(img: ^Image, allocator := context.allocator) -> (ok: bo for p in inp { out[0].rgb = p.r // Gray component. out[0].a = p.g // Alpha component. + out = out[1:] } case: diff --git a/core/math/big/common.odin b/core/math/big/common.odin index fabf39520..5428b00ee 100644 --- a/core/math/big/common.odin +++ b/core/math/big/common.odin @@ -195,7 +195,7 @@ Error_String :: #sparse[Error]string{ } Primality_Flag :: enum u8 { - Blum_Blum_Shub = 0, // Make prime congruent to 3 mod 4 + Blum_Blum_Shub = 0, // Make prime congruent to 3 mod 4 Safe = 1, // Make sure (p-1)/2 is prime as well (implies .Blum_Blum_Shub) Second_MSB_On = 3, // Make the 2nd highest bit one } diff --git a/core/mem/alloc.odin b/core/mem/alloc.odin index acd77241f..e51d971e1 100644 --- a/core/mem/alloc.odin +++ b/core/mem/alloc.odin @@ -178,11 +178,11 @@ make_dynamic_array :: proc($T: typeid/[dynamic]$E, allocator := context.allocato } @(require_results) make_dynamic_array_len :: proc($T: typeid/[dynamic]$E, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) { - return runtime.make_dynamic_array(T, len, allocator, loc) + return runtime.make_dynamic_array_len_cap(T, len, len, allocator, loc) } @(require_results) make_dynamic_array_len_cap :: proc($T: typeid/[dynamic]$E, #any_int len: int, #any_int cap: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) { - return runtime.make_dynamic_array(T, len, cap, allocator, loc) + return runtime.make_dynamic_array_len_cap(T, len, cap, allocator, loc) } @(require_results) make_map :: proc($T: typeid/map[$K]$E, #any_int cap: int = 1<<runtime.MAP_MIN_LOG2_CAPACITY, allocator := context.allocator, loc := #caller_location) -> (m: T, err: Allocator_Error) { diff --git a/core/net/dns_windows.odin b/core/net/dns_windows.odin index b7af050b1..1b7fe7196 100644 --- a/core/net/dns_windows.odin +++ b/core/net/dns_windows.odin @@ -128,33 +128,37 @@ _get_dns_records_os :: proc(hostname: string, type: DNS_Record_Type, allocator : append(&recs, record) case .SRV: - target := strings.clone(string(r.Data.SRV.pNameTarget)) // The target hostname/address that the service can be found on - priority := int(r.Data.SRV.wPriority) - weight := int(r.Data.SRV.wWeight) - port := int(r.Data.SRV.wPort) - // NOTE(tetra): Srv record name should be of the form '_servicename._protocol.hostname' // The record name is the name of the record. // Not to be confused with the _target_ of the record, which is--in combination with the port--what we're looking up // by making this request in the first place. - // NOTE(Jeroen): Service Name and Protocol Name can probably just be string slices into the record name. - // It's already cloned, after all. I wouldn't put them on the temp allocator like this. + service_name, protocol_name: string + + s := base_record.record_name + i := strings.index_byte(s, '.') + if i > -1 { + service_name = s[:i] + s = s[len(service_name) + 1:] + } else { + continue + } - parts := strings.split_n(base_record.record_name, ".", 3, context.temp_allocator) - if len(parts) != 3 { + i = strings.index_byte(s, '.') + if i > -1 { + protocol_name = s[:i] + } else { continue } - service_name, protocol_name := parts[0], parts[1] append(&recs, DNS_Record_SRV { base = base_record, - target = target, - port = port, + target = strings.clone(string(r.Data.SRV.pNameTarget)), // The target hostname/address that the service can be found on + port = int(r.Data.SRV.wPort), service_name = service_name, protocol_name = protocol_name, - priority = priority, - weight = weight, + priority = int(r.Data.SRV.wPriority), + weight = int(r.Data.SRV.wWeight), }) } diff --git a/core/os/os2/allocators.odin b/core/os/os2/allocators.odin index 0ab3adfb2..ddfe230be 100644 --- a/core/os/os2/allocators.odin +++ b/core/os/os2/allocators.odin @@ -61,3 +61,8 @@ TEMP_ALLOCATOR_GUARD :: #force_inline proc(loc := #caller_location) -> (runtime. global_default_temp_allocator_index = (global_default_temp_allocator_index+1)%MAX_TEMP_ARENA_COUNT return tmp, loc } + +@(init, private) +init_thread_local_cleaner :: proc() { + runtime.add_thread_local_cleaner(temp_allocator_fini) +} diff --git a/core/os/os2/file_util.odin b/core/os/os2/file_util.odin index e328f9a02..963544985 100644 --- a/core/os/os2/file_util.odin +++ b/core/os/os2/file_util.odin @@ -125,9 +125,6 @@ read_entire_file_from_file :: proc(f: ^File, allocator: runtime.Allocator) -> (d has_size = true size = int(size64) } - } else if serr != .No_Size { - err = serr - return } if has_size && size > 0 { diff --git a/core/os/os2/process.odin b/core/os/os2/process.odin index f7a542276..ce65987b0 100644 --- a/core/os/os2/process.odin +++ b/core/os/os2/process.odin @@ -166,15 +166,15 @@ Process_Info :: struct { This procedure obtains an information, specified by `selection` parameter of a process given by `pid`. - - Use `free_process_info` to free the memory allocated by this procedure. In - case the function returns an error it may only have been an error for one part - of the information and you would still need to call it to free the other parts. + + Use `free_process_info` to free the memory allocated by this procedure. The + `free_process_info` procedure needs to be called, even if this procedure + returned an error, as some of the fields may have been allocated. **Note**: The resulting information may or may contain the fields specified by the `selection` parameter. Always check whether the returned `Process_Info` struct has the required fields before checking the error code - returned by this function. + returned by this procedure. */ @(require_results) process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (Process_Info, Error) { @@ -188,14 +188,14 @@ process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator: about a process that has been opened by the application, specified in the `process` parameter. - Use `free_process_info` to free the memory allocated by this procedure. In - case the function returns an error it may only have been an error for one part - of the information and you would still need to call it to free the other parts. + Use `free_process_info` to free the memory allocated by this procedure. The + `free_process_info` procedure needs to be called, even if this procedure + returned an error, as some of the fields may have been allocated. **Note**: The resulting information may or may contain the fields specified by the `selection` parameter. Always check whether the returned `Process_Info` struct has the required fields before checking the error code - returned by this function. + returned by this procedure. */ @(require_results) process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (Process_Info, Error) { @@ -208,14 +208,14 @@ process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields, This procedure obtains the information, specified by `selection` parameter about the currently running process. - Use `free_process_info` to free the memory allocated by this procedure. In - case the function returns an error it may only have been an error for one part - of the information and you would still need to call it to free the other parts. + Use `free_process_info` to free the memory allocated by this procedure. The + `free_process_info` procedure needs to be called, even if this procedure + returned an error, as some of the fields may have been allocated. **Note**: The resulting information may or may contain the fields specified by the `selection` parameter. Always check whether the returned `Process_Info` struct has the required fields before checking the error code - returned by this function. + returned by this procedure. */ @(require_results) current_process_info :: proc(selection: Process_Info_Fields, allocator: runtime.Allocator) -> (Process_Info, Error) { @@ -305,6 +305,7 @@ Process_Desc :: struct { // A slice of strings, each having the format `KEY=VALUE` representing the // full environment that the child process will receive. // In case this slice is `nil`, the current process' environment is used. + // NOTE(laytan): maybe should be `Maybe([]string)` so you can do `nil` == current env, empty == empty/no env. env: []string, // The `stderr` handle to give to the child process. It can be either a file // or a writeable end of a pipe. Passing `nil` will shut down the process' diff --git a/core/os/os2/process_linux.odin b/core/os/os2/process_linux.odin index 40406bad5..b6db46423 100644 --- a/core/os/os2/process_linux.odin +++ b/core/os/os2/process_linux.odin @@ -490,7 +490,6 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { if errno = linux.pipe2(&child_pipe_fds, {.CLOEXEC}); errno != .NONE { return process, _get_platform_error(errno) } - defer linux.close(child_pipe_fds[WRITE]) defer linux.close(child_pipe_fds[READ]) @@ -508,6 +507,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { // pid: linux.Pid if pid, errno = linux.fork(); errno != .NONE { + linux.close(child_pipe_fds[WRITE]) return process, _get_platform_error(errno) } @@ -573,25 +573,19 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { write_errno_to_parent_and_abort(child_pipe_fds[WRITE], errno) } - success_byte: [1]u8 - linux.write(child_pipe_fds[WRITE], success_byte[:]) - errno = linux.execveat(exe_fd, "", &cargs[0], env, {.AT_EMPTY_PATH}) - - // NOTE: we can't tell the parent about this failure because we already wrote the success byte. - // So if this happens the user will just see the process failed when they call process_wait. - assert(errno != nil) - intrinsics.trap() + write_errno_to_parent_and_abort(child_pipe_fds[WRITE], errno) } + linux.close(child_pipe_fds[WRITE]) + process.pid = int(pid) - n: int child_byte: [1]u8 errno = .EINTR for errno == .EINTR { - n, errno = linux.read(child_pipe_fds[READ], child_byte[:]) + _, errno = linux.read(child_pipe_fds[READ], child_byte[:]) } // If the read failed, something weird happened. Do not return the read diff --git a/core/os/os2/process_posix.odin b/core/os/os2/process_posix.odin index c9b67f199..ea4ada81e 100644 --- a/core/os/os2/process_posix.odin +++ b/core/os/os2/process_posix.odin @@ -139,20 +139,22 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { err = _get_platform_error() return } - defer posix.close(pipe[WRITE]) defer posix.close(pipe[READ]) if posix.fcntl(pipe[READ], .SETFD, i32(posix.FD_CLOEXEC)) == -1 { + posix.close(pipe[WRITE]) err = _get_platform_error() return } if posix.fcntl(pipe[WRITE], .SETFD, i32(posix.FD_CLOEXEC)) == -1 { + posix.close(pipe[WRITE]) err = _get_platform_error() return } switch pid := posix.fork(); pid { case -1: + posix.close(pipe[WRITE]) err = _get_platform_error() return @@ -179,25 +181,20 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { if posix.chdir(cwd) != .OK { abort(pipe[WRITE]) } } - ok := u8(0) - posix.write(pipe[WRITE], &ok, 1) - res := posix.execve(strings.to_cstring(&exe_builder), raw_data(cmd), env) - - // NOTE: we can't tell the parent about this failure because we already wrote the success byte. - // So if this happens the user will just see the process failed when they call process_wait. - assert(res == -1) - runtime.trap() + abort(pipe[WRITE]) case: + posix.close(pipe[WRITE]) + errno: posix.Errno for { errno_byte: u8 switch posix.read(pipe[READ], &errno_byte, 1) { - case 1: + case 1: errno = posix.Errno(errno_byte) - case: + case -1: errno = posix.errno() if errno == .EINTR { continue diff --git a/core/os/os2/process_windows.odin b/core/os/os2/process_windows.odin index 47fd62401..edb321509 100644 --- a/core/os/os2/process_windows.odin +++ b/core/os/os2/process_windows.odin @@ -93,16 +93,33 @@ read_memory_as_slice :: proc(h: win32.HANDLE, addr: rawptr, dest: []$T) -> (byte @(private="package") _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (info: Process_Info, err: Error) { info.pid = pid - defer if err != nil { - free_process_info(info, allocator) + // Note(flysand): Open the process handle right away to prevent some race + // conditions. Once the handle is open, the process will be kept alive by + // the OS. + ph := win32.INVALID_HANDLE_VALUE + if selection >= {.Command_Line, .Environment, .Working_Dir, .Username} { + ph = win32.OpenProcess( + win32.PROCESS_QUERY_LIMITED_INFORMATION | win32.PROCESS_VM_READ, + false, + u32(pid), + ) + if ph == win32.INVALID_HANDLE_VALUE { + err = _get_platform_error() + return + } } - - // Data obtained from process snapshots - if selection >= {.PPid, .Priority} { + defer if ph != win32.INVALID_HANDLE_VALUE { + win32.CloseHandle(ph) + } + snapshot_process: if selection >= {.PPid, .Priority} { entry, entry_err := _process_entry_by_pid(info.pid) if entry_err != nil { - err = General_Error.Not_Exist - return + err = entry_err + if entry_err == General_Error.Not_Exist { + return + } else { + break snapshot_process + } } if .PPid in selection { info.fields += {.PPid} @@ -113,29 +130,18 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator info.priority = int(entry.pcPriClassBase) } } - if .Executable_Path in selection { // snap module - info.executable_path = _process_exe_by_pid(pid, allocator) or_return - info.fields += {.Executable_Path} - } - - ph := win32.INVALID_HANDLE_VALUE - - if selection >= {.Command_Line, .Environment, .Working_Dir, .Username} { // need process handle - ph = win32.OpenProcess( - win32.PROCESS_QUERY_LIMITED_INFORMATION | win32.PROCESS_VM_READ, - false, - u32(pid), - ) - if ph == win32.INVALID_HANDLE_VALUE { - err = _get_platform_error() + snapshot_modules: if .Executable_Path in selection { + exe_path: string + exe_path, err = _process_exe_by_pid(pid, allocator) + if _, ok := err.(runtime.Allocator_Error); ok { return + } else if err != nil { + break snapshot_modules } + info.executable_path = exe_path + info.fields += {.Executable_Path} } - defer if ph != win32.INVALID_HANDLE_VALUE { - win32.CloseHandle(ph) - } - - if selection >= {.Command_Line, .Environment, .Working_Dir} { // need peb + read_peb: if selection >= {.Command_Line, .Environment, .Working_Dir} { process_info_size: u32 process_info: win32.PROCESS_BASIC_INFORMATION status := win32.NtQueryInformationProcess(ph, .ProcessBasicInformation, &process_info, size_of(process_info), &process_info_size) @@ -143,25 +149,26 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator // TODO(flysand): There's probably a mismatch between NTSTATUS and // windows userland error codes, I haven't checked. err = Platform_Error(status) - return - } - if process_info.PebBaseAddress == nil { - // Not sure what the error is - err = General_Error.Unsupported - return + break read_peb } + assert(process_info.PebBaseAddress != nil) process_peb: win32.PEB - - _ = read_memory_as_struct(ph, process_info.PebBaseAddress, &process_peb) or_return - + _, err = read_memory_as_struct(ph, process_info.PebBaseAddress, &process_peb) + if err != nil { + break read_peb + } process_params: win32.RTL_USER_PROCESS_PARAMETERS - _ = read_memory_as_struct(ph, process_peb.ProcessParameters, &process_params) or_return - + _, err = read_memory_as_struct(ph, process_peb.ProcessParameters, &process_params) + if err != nil { + break read_peb + } if selection >= {.Command_Line, .Command_Args} { TEMP_ALLOCATOR_GUARD() cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) or_return - + _, err = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) + if err != nil { + break read_peb + } if .Command_Line in selection { info.command_line = win32_utf16_to_utf8(cmdline_w, allocator) or_return info.fields += {.Command_Line} @@ -175,23 +182,33 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator TEMP_ALLOCATOR_GUARD() env_len := process_params.EnvironmentSize / 2 envs_w := make([]u16, env_len, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.Environment, envs_w) or_return - + _, err = read_memory_as_slice(ph, process_params.Environment, envs_w) + if err != nil { + break read_peb + } info.environment = _parse_environment_block(raw_data(envs_w), allocator) or_return info.fields += {.Environment} } if .Working_Dir in selection { TEMP_ALLOCATOR_GUARD() cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) or_return - + _, err = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) + if err != nil { + break read_peb + } info.working_dir = win32_utf16_to_utf8(cwd_w, allocator) or_return info.fields += {.Working_Dir} } } - - if .Username in selection { - info.username = _get_process_user(ph, allocator) or_return + read_username: if .Username in selection { + username: string + username, err = _get_process_user(ph, allocator) + if _, ok := err.(runtime.Allocator_Error); ok { + return + } else if err != nil { + break read_username + } + info.username = username info.fields += {.Username} } err = nil @@ -202,16 +219,16 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (info: Process_Info, err: Error) { pid := process.pid info.pid = pid - defer if err != nil { - free_process_info(info, allocator) - } - // Data obtained from process snapshots - if selection >= {.PPid, .Priority} { // snap process + snapshot_process: if selection >= {.PPid, .Priority} { entry, entry_err := _process_entry_by_pid(info.pid) if entry_err != nil { - err = General_Error.Not_Exist - return + err = entry_err + if entry_err == General_Error.Not_Exist { + return + } else { + break snapshot_process + } } if .PPid in selection { info.fields += {.PPid} @@ -222,12 +239,19 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields info.priority = int(entry.pcPriClassBase) } } - if .Executable_Path in selection { // snap module - info.executable_path = _process_exe_by_pid(pid, allocator) or_return + snapshot_module: if .Executable_Path in selection { + exe_path: string + exe_path, err = _process_exe_by_pid(pid, allocator) + if _, ok := err.(runtime.Allocator_Error); ok { + return + } else if err != nil { + break snapshot_module + } + info.executable_path = exe_path info.fields += {.Executable_Path} } ph := win32.HANDLE(process.handle) - if selection >= {.Command_Line, .Environment, .Working_Dir} { // need peb + read_peb: if selection >= {.Command_Line, .Environment, .Working_Dir} { process_info_size: u32 process_info: win32.PROCESS_BASIC_INFORMATION status := win32.NtQueryInformationProcess(ph, .ProcessBasicInformation, &process_info, size_of(process_info), &process_info_size) @@ -237,23 +261,24 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields err = Platform_Error(status) return } - if process_info.PebBaseAddress == nil { - // Not sure what the error is - err = General_Error.Unsupported - return - } - + assert(process_info.PebBaseAddress != nil) process_peb: win32.PEB - _ = read_memory_as_struct(ph, process_info.PebBaseAddress, &process_peb) or_return - + _, err = read_memory_as_struct(ph, process_info.PebBaseAddress, &process_peb) + if err != nil { + break read_peb + } process_params: win32.RTL_USER_PROCESS_PARAMETERS - _ = read_memory_as_struct(ph, process_peb.ProcessParameters, &process_params) or_return - + _, err = read_memory_as_struct(ph, process_peb.ProcessParameters, &process_params) + if err != nil { + break read_peb + } if selection >= {.Command_Line, .Command_Args} { TEMP_ALLOCATOR_GUARD() cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) or_return - + _, err = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) + if err != nil { + break read_peb + } if .Command_Line in selection { info.command_line = win32_utf16_to_utf8(cmdline_w, allocator) or_return info.fields += {.Command_Line} @@ -263,28 +288,37 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields info.fields += {.Command_Args} } } - if .Environment in selection { TEMP_ALLOCATOR_GUARD() env_len := process_params.EnvironmentSize / 2 envs_w := make([]u16, env_len, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.Environment, envs_w) or_return - + _, err = read_memory_as_slice(ph, process_params.Environment, envs_w) + if err != nil { + break read_peb + } info.environment = _parse_environment_block(raw_data(envs_w), allocator) or_return info.fields += {.Environment} } - if .Working_Dir in selection { TEMP_ALLOCATOR_GUARD() cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator()) or_return - _ = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) or_return - + _, err = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) + if err != nil { + break read_peb + } info.working_dir = win32_utf16_to_utf8(cwd_w, allocator) or_return info.fields += {.Working_Dir} } } - if .Username in selection { - info.username = _get_process_user(ph, allocator) or_return + read_username: if .Username in selection { + username: string + username, err = _get_process_user(ph, allocator) + if _, ok := err.(runtime.Allocator_Error); ok { + return + } else if err != nil { + break read_username + } + info.username = username info.fields += {.Username} } err = nil @@ -294,15 +328,15 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields @(private="package") _current_process_info :: proc(selection: Process_Info_Fields, allocator: runtime.Allocator) -> (info: Process_Info, err: Error) { info.pid = get_pid() - defer if err != nil { - free_process_info(info, allocator) - } - - if selection >= {.PPid, .Priority} { // snap process + snapshot_process: if selection >= {.PPid, .Priority} { entry, entry_err := _process_entry_by_pid(info.pid) if entry_err != nil { - err = General_Error.Not_Exist - return + err = entry_err + if entry_err == General_Error.Not_Exist { + return + } else { + break snapshot_process + } } if .PPid in selection { info.fields += {.PPid} @@ -313,14 +347,16 @@ _current_process_info :: proc(selection: Process_Info_Fields, allocator: runtime info.priority = int(entry.pcPriClassBase) } } - if .Executable_Path in selection { + module_filename: if .Executable_Path in selection { exe_filename_w: [256]u16 path_len := win32.GetModuleFileNameW(nil, raw_data(exe_filename_w[:]), len(exe_filename_w)) + assert(path_len > 0) info.executable_path = win32_utf16_to_utf8(exe_filename_w[:path_len], allocator) or_return info.fields += {.Executable_Path} } - if selection >= {.Command_Line, .Command_Args} { + command_line: if selection >= {.Command_Line, .Command_Args} { command_line_w := win32.GetCommandLineW() + assert(command_line_w != nil) if .Command_Line in selection { info.command_line = win32_wstring_to_utf8(command_line_w, allocator) or_return info.fields += {.Command_Line} @@ -330,14 +366,22 @@ _current_process_info :: proc(selection: Process_Info_Fields, allocator: runtime info.fields += {.Command_Args} } } - if .Environment in selection { + read_environment: if .Environment in selection { env_block := win32.GetEnvironmentStringsW() + assert(env_block != nil) info.environment = _parse_environment_block(env_block, allocator) or_return info.fields += {.Environment} } - if .Username in selection { + read_username: if .Username in selection { process_handle := win32.GetCurrentProcess() - info.username = _get_process_user(process_handle, allocator) or_return + username: string + username, err = _get_process_user(process_handle, allocator) + if _, ok := err.(runtime.Allocator_Error); ok { + return + } else if err != nil { + break read_username + } + info.username = username info.fields += {.Username} } if .Working_Dir in selection { diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin index 0a3a2e236..74a67f366 100644 --- a/core/os/os_linux.odin +++ b/core/os/os_linux.odin @@ -398,9 +398,9 @@ SIOCGIFFLAG :: enum c.int { PORTSEL = 13, /* Can set media type. */ AUTOMEDIA = 14, /* Auto media select active. */ DYNAMIC = 15, /* Dialup device with changing addresses. */ - LOWER_UP = 16, - DORMANT = 17, - ECHO = 18, + LOWER_UP = 16, + DORMANT = 17, + ECHO = 18, } SIOCGIFFLAGS :: bit_set[SIOCGIFFLAG; c.int] diff --git a/core/reflect/iterator.odin b/core/reflect/iterator.odin index 5b84f0133..090fe04cc 100644 --- a/core/reflect/iterator.odin +++ b/core/reflect/iterator.odin @@ -19,6 +19,7 @@ iterate_array :: proc(val: any, it: ^int) -> (elem: any, index: int, ok: bool) { elem.data = rawptr(uintptr(val.data) + uintptr(it^ * info.elem_size)) elem.id = info.elem.id ok = true + index = it^ it^ += 1 } case Type_Info_Slice: @@ -27,6 +28,7 @@ iterate_array :: proc(val: any, it: ^int) -> (elem: any, index: int, ok: bool) { elem.data = rawptr(uintptr(array.data) + uintptr(it^ * info.elem_size)) elem.id = info.elem.id ok = true + index = it^ it^ += 1 } case Type_Info_Dynamic_Array: @@ -35,6 +37,7 @@ iterate_array :: proc(val: any, it: ^int) -> (elem: any, index: int, ok: bool) { elem.data = rawptr(uintptr(array.data) + uintptr(it^ * info.elem_size)) elem.id = info.elem.id ok = true + index = it^ it^ += 1 } } @@ -69,10 +72,12 @@ iterate_map :: proc(val: any, it: ^int) -> (key, value: any, ok: bool) { key.id = info.key.id value.id = info.value.id ok = true + it^ += 1 break } } } return -}
\ No newline at end of file +} + diff --git a/core/sys/darwin/CoreFoundation/CFString.odin b/core/sys/darwin/CoreFoundation/CFString.odin index 6ad3c5bfc..ad3d67258 100644 --- a/core/sys/darwin/CoreFoundation/CFString.odin +++ b/core/sys/darwin/CoreFoundation/CFString.odin @@ -9,157 +9,157 @@ String :: distinct TypeRef // same as CFStringRef StringEncoding :: distinct u32 StringBuiltInEncodings :: enum StringEncoding { - MacRoman = 0, + MacRoman = 0, WindowsLatin1 = 0x0500, - ISOLatin1 = 0x0201, + ISOLatin1 = 0x0201, NextStepLatin = 0x0B01, - ASCII = 0x0600, - Unicode = 0x0100, - UTF8 = 0x08000100, + ASCII = 0x0600, + Unicode = 0x0100, + UTF8 = 0x08000100, NonLossyASCII = 0x0BFF, - UTF16 = 0x0100, + UTF16 = 0x0100, UTF16BE = 0x10000100, UTF16LE = 0x14000100, - UTF32 = 0x0c000100, - UTF32BE = 0x18000100, - UTF32LE = 0x1c000100, + UTF32 = 0x0c000100, + UTF32BE = 0x18000100, + UTF32LE = 0x1c000100, } StringEncodings :: enum Index { - MacJapanese = 1, - MacChineseTrad = 2, - MacKorean = 3, - MacArabic = 4, - MacHebrew = 5, - MacGreek = 6, - MacCyrillic = 7, - MacDevanagari = 9, - MacGurmukhi = 10, - MacGujarati = 11, - MacOriya = 12, - MacBengali = 13, - MacTamil = 14, - MacTelugu = 15, - MacKannada = 16, - MacMalayalam = 17, - MacSinhalese = 18, - MacBurmese = 19, - MacKhmer = 20, - MacThai = 21, - MacLaotian = 22, - MacGeorgian = 23, - MacArmenian = 24, - MacChineseSimp = 25, - MacTibetan = 26, - MacMongolian = 27, - MacEthiopic = 28, - MacCentralEurRoman = 29, - MacVietnamese = 30, - MacExtArabic = 31, - MacSymbol = 33, - MacDingbats = 34, - MacTurkish = 35, - MacCroatian = 36, - MacIcelandic = 37, - MacRomanian = 38, - MacCeltic = 39, - MacGaelic = 40, - MacFarsi = 0x8C, - MacUkrainian = 0x98, - MacInuit = 0xEC, - MacVT100 = 0xFC, - MacHFS = 0xFF, - ISOLatin2 = 0x0202, - ISOLatin3 = 0x0203, - ISOLatin4 = 0x0204, - ISOLatinCyrillic = 0x0205, - ISOLatinArabic = 0x0206, - ISOLatinGreek = 0x0207, - ISOLatinHebrew = 0x0208, - ISOLatin5 = 0x0209, - ISOLatin6 = 0x020A, - ISOLatinThai = 0x020B, - ISOLatin7 = 0x020D, - ISOLatin8 = 0x020E, - ISOLatin9 = 0x020F, - ISOLatin10 = 0x0210, - DOSLatinUS = 0x0400, - DOSGreek = 0x0405, - DOSBalticRim = 0x0406, - DOSLatin1 = 0x0410, - DOSGreek1 = 0x0411, - DOSLatin2 = 0x0412, - DOSCyrillic = 0x0413, - DOSTurkish = 0x0414, - DOSPortuguese = 0x0415, - DOSIcelandic = 0x0416, - DOSHebrew = 0x0417, - DOSCanadianFrench = 0x0418, - DOSArabic = 0x0419, - DOSNordic = 0x041A, - DOSRussian = 0x041B, - DOSGreek2 = 0x041C, - DOSThai = 0x041D, - DOSJapanese = 0x0420, - DOSChineseSimplif = 0x0421, - DOSKorean = 0x0422, - DOSChineseTrad = 0x0423, - WindowsLatin2 = 0x0501, - WindowsCyrillic = 0x0502, - WindowsGreek = 0x0503, - WindowsLatin5 = 0x0504, - WindowsHebrew = 0x0505, - WindowsArabic = 0x0506, - WindowsBalticRim = 0x0507, - WindowsVietnamese = 0x0508, - WindowsKoreanJohab = 0x0510, - ANSEL = 0x0601, - JIS_X0201_76 = 0x0620, - JIS_X0208_83 = 0x0621, - JIS_X0208_90 = 0x0622, - JIS_X0212_90 = 0x0623, - JIS_C6226_78 = 0x0624, - ShiftJIS_X0213 = 0x0628, - ShiftJIS_X0213_MenKuTen = 0x0629, - GB_2312_80 = 0x0630, - GBK_95 = 0x0631, - GB_18030_2000 = 0x0632, - KSC_5601_87 = 0x0640, - KSC_5601_92_Johab = 0x0641, - CNS_11643_92_P1 = 0x0651, - CNS_11643_92_P2 = 0x0652, - CNS_11643_92_P3 = 0x0653, - ISO_2022_JP = 0x0820, - ISO_2022_JP_2 = 0x0821, - ISO_2022_JP_1 = 0x0822, - ISO_2022_JP_3 = 0x0823, - ISO_2022_CN = 0x0830, - ISO_2022_CN_EXT = 0x0831, - ISO_2022_KR = 0x0840, - EUC_JP = 0x0920, - EUC_CN = 0x0930, - EUC_TW = 0x0931, - EUC_KR = 0x0940, - ShiftJIS = 0x0A01, - KOI8_R = 0x0A02, - Big5 = 0x0A03, - MacRomanLatin1 = 0x0A04, - HZ_GB_2312 = 0x0A05, - Big5_HKSCS_1999 = 0x0A06, - VISCII = 0x0A07, - KOI8_U = 0x0A08, - Big5_E = 0x0A09, - NextStepJapanese = 0x0B02, - EBCDIC_US = 0x0C01, - EBCDIC_CP037 = 0x0C02, - UTF7 = 0x04000100, - UTF7_IMAP = 0x0A10, - ShiftJIS_X0213_00 = 0x0628, // Deprecated. Use `ShiftJIS_X0213` instead. + MacJapanese = 1, + MacChineseTrad = 2, + MacKorean = 3, + MacArabic = 4, + MacHebrew = 5, + MacGreek = 6, + MacCyrillic = 7, + MacDevanagari = 9, + MacGurmukhi = 10, + MacGujarati = 11, + MacOriya = 12, + MacBengali = 13, + MacTamil = 14, + MacTelugu = 15, + MacKannada = 16, + MacMalayalam = 17, + MacSinhalese = 18, + MacBurmese = 19, + MacKhmer = 20, + MacThai = 21, + MacLaotian = 22, + MacGeorgian = 23, + MacArmenian = 24, + MacChineseSimp = 25, + MacTibetan = 26, + MacMongolian = 27, + MacEthiopic = 28, + MacCentralEurRoman = 29, + MacVietnamese = 30, + MacExtArabic = 31, + MacSymbol = 33, + MacDingbats = 34, + MacTurkish = 35, + MacCroatian = 36, + MacIcelandic = 37, + MacRomanian = 38, + MacCeltic = 39, + MacGaelic = 40, + MacFarsi = 0x8C, + MacUkrainian = 0x98, + MacInuit = 0xEC, + MacVT100 = 0xFC, + MacHFS = 0xFF, + ISOLatin2 = 0x0202, + ISOLatin3 = 0x0203, + ISOLatin4 = 0x0204, + ISOLatinCyrillic = 0x0205, + ISOLatinArabic = 0x0206, + ISOLatinGreek = 0x0207, + ISOLatinHebrew = 0x0208, + ISOLatin5 = 0x0209, + ISOLatin6 = 0x020A, + ISOLatinThai = 0x020B, + ISOLatin7 = 0x020D, + ISOLatin8 = 0x020E, + ISOLatin9 = 0x020F, + ISOLatin10 = 0x0210, + DOSLatinUS = 0x0400, + DOSGreek = 0x0405, + DOSBalticRim = 0x0406, + DOSLatin1 = 0x0410, + DOSGreek1 = 0x0411, + DOSLatin2 = 0x0412, + DOSCyrillic = 0x0413, + DOSTurkish = 0x0414, + DOSPortuguese = 0x0415, + DOSIcelandic = 0x0416, + DOSHebrew = 0x0417, + DOSCanadianFrench = 0x0418, + DOSArabic = 0x0419, + DOSNordic = 0x041A, + DOSRussian = 0x041B, + DOSGreek2 = 0x041C, + DOSThai = 0x041D, + DOSJapanese = 0x0420, + DOSChineseSimplif = 0x0421, + DOSKorean = 0x0422, + DOSChineseTrad = 0x0423, + WindowsLatin2 = 0x0501, + WindowsCyrillic = 0x0502, + WindowsGreek = 0x0503, + WindowsLatin5 = 0x0504, + WindowsHebrew = 0x0505, + WindowsArabic = 0x0506, + WindowsBalticRim = 0x0507, + WindowsVietnamese = 0x0508, + WindowsKoreanJohab = 0x0510, + ANSEL = 0x0601, + JIS_X0201_76 = 0x0620, + JIS_X0208_83 = 0x0621, + JIS_X0208_90 = 0x0622, + JIS_X0212_90 = 0x0623, + JIS_C6226_78 = 0x0624, + ShiftJIS_X0213 = 0x0628, + ShiftJIS_X0213_MenKuTen = 0x0629, + GB_2312_80 = 0x0630, + GBK_95 = 0x0631, + GB_18030_2000 = 0x0632, + KSC_5601_87 = 0x0640, + KSC_5601_92_Johab = 0x0641, + CNS_11643_92_P1 = 0x0651, + CNS_11643_92_P2 = 0x0652, + CNS_11643_92_P3 = 0x0653, + ISO_2022_JP = 0x0820, + ISO_2022_JP_2 = 0x0821, + ISO_2022_JP_1 = 0x0822, + ISO_2022_JP_3 = 0x0823, + ISO_2022_CN = 0x0830, + ISO_2022_CN_EXT = 0x0831, + ISO_2022_KR = 0x0840, + EUC_JP = 0x0920, + EUC_CN = 0x0930, + EUC_TW = 0x0931, + EUC_KR = 0x0940, + ShiftJIS = 0x0A01, + KOI8_R = 0x0A02, + Big5 = 0x0A03, + MacRomanLatin1 = 0x0A04, + HZ_GB_2312 = 0x0A05, + Big5_HKSCS_1999 = 0x0A06, + VISCII = 0x0A07, + KOI8_U = 0x0A08, + Big5_E = 0x0A09, + NextStepJapanese = 0x0B02, + EBCDIC_US = 0x0C01, + EBCDIC_CP037 = 0x0C02, + UTF7 = 0x04000100, + UTF7_IMAP = 0x0A10, + ShiftJIS_X0213_00 = 0x0628, // Deprecated. Use `ShiftJIS_X0213` instead. } -@(link_prefix = "CF", default_calling_convention = "c") +@(link_prefix="CF", default_calling_convention="c") foreign CoreFoundation { // Copies the character contents of a string to a local C string buffer after converting the characters to a given encoding. StringGetCString :: proc(theString: String, buffer: [^]byte, bufferSize: Index, encoding: StringEncoding) -> b8 --- @@ -181,23 +181,16 @@ foreign CoreFoundation { STR :: StringMakeConstantString -StringCopyToOdinString :: proc( - theString: String, - allocator := context.allocator, -) -> ( - str: string, - ok: bool, -) #optional_ok { +StringCopyToOdinString :: proc(theString: String, allocator := context.allocator) -> (str: string, ok: bool) #optional_ok { length := StringGetLength(theString) max := StringGetMaximumSizeForEncoding(length, StringEncoding(StringBuiltInEncodings.UTF8)) buf, err := make([]byte, max, allocator) - if err != nil { return } - - raw_str := runtime.Raw_String { - data = raw_data(buf), + if err != nil { + return } - StringGetBytes(theString, {0, length}, StringEncoding(StringBuiltInEncodings.UTF8), 0, false, raw_data(buf), max, (^Index)(&raw_str.len)) - return transmute(string)raw_str, true + n: Index + StringGetBytes(theString, {0, length}, StringEncoding(StringBuiltInEncodings.UTF8), 0, false, raw_data(buf), Index(len(buf)), &n) + return string(buf[:n]), true } diff --git a/core/sys/darwin/xnu_system_call_helpers.odin b/core/sys/darwin/xnu_system_call_helpers.odin index a641a4be9..ae8373f99 100644 --- a/core/sys/darwin/xnu_system_call_helpers.odin +++ b/core/sys/darwin/xnu_system_call_helpers.odin @@ -15,9 +15,9 @@ sys_write_string :: proc (fd: c.int, message: string) -> bool { Offset_From :: enum c.int { SEEK_SET = 0, // the offset is set to offset bytes. SEEK_CUR = 1, // the offset is set to its current location plus offset bytes. - SEEK_END = 2, // the offset is set to the size of the file plus offset bytes. - SEEK_HOLE = 3, // the offset is set to the start of the next hole greater than or equal to the supplied offset. - SEEK_DATA = 4, // the offset is set to the start of the next non-hole file region greater than or equal to the supplied offset. + SEEK_END = 2, // the offset is set to the size of the file plus offset bytes. + SEEK_HOLE = 3, // the offset is set to the start of the next hole greater than or equal to the supplied offset. + SEEK_DATA = 4, // the offset is set to the start of the next non-hole file region greater than or equal to the supplied offset. } Open_Flags_Enum :: enum u8 { diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin index 30faf86be..1188091a9 100644 --- a/core/sys/darwin/xnu_system_call_wrappers.odin +++ b/core/sys/darwin/xnu_system_call_wrappers.odin @@ -192,43 +192,43 @@ _STRUCT_TIMEVAL :: struct { /* pwd.h */ _Password_Entry :: struct { - pw_name: cstring, /* username */ - pw_passwd: cstring, /* user password */ - pw_uid: i32, /* user ID */ - pw_gid: i32, /* group ID */ + pw_name: cstring, /* username */ + pw_passwd: cstring, /* user password */ + pw_uid: i32, /* user ID */ + pw_gid: i32, /* group ID */ pw_change: u64, /* password change time */ pw_class: cstring, /* user access class */ - pw_gecos: cstring, /* full user name */ - pw_dir: cstring, /* home directory */ - pw_shell: cstring, /* shell program */ + pw_gecos: cstring, /* full user name */ + pw_dir: cstring, /* home directory */ + pw_shell: cstring, /* shell program */ pw_expire: u64, /* account expiration */ pw_fields: i32, /* filled fields */ } /* processinfo.h */ _Proc_Bsdinfo :: struct { - pbi_flags: u32, /* if is 64bit; emulated etc */ - pbi_status: u32, - pbi_xstatus: u32, - pbi_pid: u32, - pbi_ppid: u32, - pbi_uid: u32, - pbi_gid: u32, - pbi_ruid: u32, - pbi_rgid: u32, - pbi_svuid: u32, - pbi_svgid: u32, - res: u32, - pbi_comm: [DARWIN_MAXCOMLEN]u8, - pbi_name: [2 * DARWIN_MAXCOMLEN]u8, /* empty if no name is registered */ - pbi_nfiles: u32, - pbi_pgid: u32, - pbi_pjobc: u32, - e_tdev: u32, /* controlling tty dev */ - e_tpgid: u32, /* tty process group id */ - pbi_nice: i32, - pbi_start_tvsec: u64, - pbi_start_tvusec: u64, + pbi_flags: u32, /* if is 64bit; emulated etc */ + pbi_status: u32, + pbi_xstatus: u32, + pbi_pid: u32, + pbi_ppid: u32, + pbi_uid: u32, + pbi_gid: u32, + pbi_ruid: u32, + pbi_rgid: u32, + pbi_svuid: u32, + pbi_svgid: u32, + res: u32, + pbi_comm: [DARWIN_MAXCOMLEN]u8, + pbi_name: [2 * DARWIN_MAXCOMLEN]u8, /* empty if no name is registered */ + pbi_nfiles: u32, + pbi_pgid: u32, + pbi_pjobc: u32, + e_tdev: u32, /* controlling tty dev */ + e_tpgid: u32, /* tty process group id */ + pbi_nice: i32, + pbi_start_tvsec: u64, + pbi_start_tvusec: u64, } /*--==========================================================================--*/ diff --git a/core/sys/freebsd/types.odin b/core/sys/freebsd/types.odin index a13961a47..37e8abf68 100644 --- a/core/sys/freebsd/types.odin +++ b/core/sys/freebsd/types.odin @@ -695,12 +695,12 @@ Record_Lock_Flag :: enum c.int { // struct flock File_Lock :: struct { - start: off_t, /* starting offset */ - len: off_t, /* len = 0 means until end of file */ - pid: pid_t, /* lock owner */ - type: Record_Lock_Flag, /* lock type: read/write, etc. */ - whence: c.short, /* type of l_start */ - sysid: c.int, /* remote system id or zero for local */ + start: off_t, /* starting offset */ + len: off_t, /* len = 0 means until end of file */ + pid: pid_t, /* lock owner */ + type: Record_Lock_Flag, /* lock type: read/write, etc. */ + whence: c.short, /* type of l_start */ + sysid: c.int, /* remote system id or zero for local */ } /* diff --git a/core/sys/windows/dwmapi.odin b/core/sys/windows/dwmapi.odin index 91911baae..d0ffc6b46 100644 --- a/core/sys/windows/dwmapi.odin +++ b/core/sys/windows/dwmapi.odin @@ -4,7 +4,7 @@ package sys_windows foreign import dwmapi "system:Dwmapi.lib" DWMWINDOWATTRIBUTE :: enum { - DWMWA_NCRENDERING_ENABLED, + DWMWA_NCRENDERING_ENABLED = 1, DWMWA_NCRENDERING_POLICY, DWMWA_TRANSITIONS_FORCEDISABLED, DWMWA_ALLOW_NCPAINT, @@ -28,7 +28,7 @@ DWMWINDOWATTRIBUTE :: enum { DWMWA_TEXT_COLOR, DWMWA_VISIBLE_FRAME_BORDER_THICKNESS, DWMWA_SYSTEMBACKDROP_TYPE, - DWMWA_LAST, + DWMWA_LAST, } DWMNCRENDERINGPOLICY :: enum { diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 54dc11389..629ece3de 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1175,17 +1175,17 @@ SYSTEM_POWER_STATUS :: struct { } AC_Line_Status :: enum BYTE { - Offline = 0, - Online = 1, - Unknown = 255, + Offline = 0, + Online = 1, + Unknown = 255, } Battery_Flag :: enum BYTE { - High = 0, - Low = 1, - Critical = 2, - Charging = 3, - No_Battery = 7, + High = 0, + Low = 1, + Critical = 2, + Charging = 3, + No_Battery = 7, } Battery_Flags :: bit_set[Battery_Flag; BYTE] diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin index d9a6bd1fd..934d103e5 100644 --- a/core/sys/windows/types.odin +++ b/core/sys/windows/types.odin @@ -3546,11 +3546,11 @@ SIGDN :: enum c_int { } SIATTRIBFLAGS :: enum c_int { - AND = 0x1, - OR = 0x2, - APPCOMPAT = 0x3, - MASK = 0x3, - ALLITEMS = 0x4000, + AND = 0x1, + OR = 0x2, + APPCOMPAT = 0x3, + MASK = 0x3, + ALLITEMS = 0x4000, } FDAP :: enum c_int { @@ -4503,35 +4503,35 @@ DNS_INFO_NO_RECORDS :: 9501 DNS_QUERY_NO_RECURSION :: 0x00000004 DNS_RECORD :: struct { // aka DNS_RECORDA - pNext: ^DNS_RECORD, - pName: cstring, - wType: WORD, - wDataLength: USHORT, - Flags: DWORD, - dwTtl: DWORD, - _: DWORD, - Data: struct #raw_union { - CNAME: DNS_PTR_DATAA, - A: u32be, // Ipv4 Address - AAAA: u128be, // Ipv6 Address - TXT: DNS_TXT_DATAA, - NS: DNS_PTR_DATAA, - MX: DNS_MX_DATAA, - SRV: DNS_SRV_DATAA, - }, + pNext: ^DNS_RECORD, + pName: cstring, + wType: WORD, + wDataLength: USHORT, + Flags: DWORD, + dwTtl: DWORD, + _: DWORD, + Data: struct #raw_union { + CNAME: DNS_PTR_DATAA, + A: u32be, // Ipv4 Address + AAAA: u128be, // Ipv6 Address + TXT: DNS_TXT_DATAA, + NS: DNS_PTR_DATAA, + MX: DNS_MX_DATAA, + SRV: DNS_SRV_DATAA, + }, } DNS_TXT_DATAA :: struct { - dwStringCount: DWORD, - pStringArray: cstring, + dwStringCount: DWORD, + pStringArray: cstring, } DNS_PTR_DATAA :: cstring DNS_MX_DATAA :: struct { - pNameExchange: cstring, // the hostname - wPreference: WORD, // lower values preferred - _: WORD, // padding. + pNameExchange: cstring, // the hostname + wPreference: WORD, // lower values preferred + _: WORD, // padding. } DNS_SRV_DATAA :: struct { pNameTarget: cstring, diff --git a/core/text/table/table.odin b/core/text/table/table.odin index 27c99b1f1..66a7d442b 100644 --- a/core/text/table/table.odin +++ b/core/text/table/table.odin @@ -56,7 +56,7 @@ Decorations :: struct { // Connecting decorations: nw, n, ne, - w, x, e, + w, x, e, sw, s, se: string, // Straight lines: diff --git a/core/thread/thread_pool.odin b/core/thread/thread_pool.odin index da5e116ff..7e2489013 100644 --- a/core/thread/thread_pool.odin +++ b/core/thread/thread_pool.odin @@ -175,10 +175,12 @@ pool_stop_task :: proc(pool: ^Pool, user_index: int, exit_code: int = 1) -> bool intrinsics.atomic_sub(&pool.num_outstanding, 1) intrinsics.atomic_sub(&pool.num_in_processing, 1) + old_thread_user_index := t.user_index + destroy(t) replacement := create(pool_thread_runner) - replacement.user_index = t.user_index + replacement.user_index = old_thread_user_index replacement.data = data data.task = {} pool.threads[i] = replacement @@ -207,10 +209,12 @@ pool_stop_all_tasks :: proc(pool: ^Pool, exit_code: int = 1) { intrinsics.atomic_sub(&pool.num_outstanding, 1) intrinsics.atomic_sub(&pool.num_in_processing, 1) + old_thread_user_index := t.user_index + destroy(t) replacement := create(pool_thread_runner) - replacement.user_index = t.user_index + replacement.user_index = old_thread_user_index replacement.data = data data.task = {} pool.threads[i] = replacement diff --git a/core/thread/thread_unix.odin b/core/thread/thread_unix.odin index f56454bfc..3d25b1909 100644 --- a/core/thread/thread_unix.odin +++ b/core/thread/thread_unix.odin @@ -2,6 +2,7 @@ // +private package thread +import "base:runtime" import "core:sync" import "core:sys/unix" import "core:time" @@ -55,7 +56,10 @@ _create :: proc(procedure: Thread_Proc, priority: Thread_Priority) -> ^Thread { // Here on Unix, we start the OS thread in a running state, and so we manually have it wait on a condition // variable above. We must perform that waiting BEFORE we select the context! context = _select_context_for_thread(init_context) - defer _maybe_destroy_default_temp_allocator(init_context) + defer { + _maybe_destroy_default_temp_allocator(init_context) + runtime.run_thread_local_cleaners() + } t.procedure(t) } diff --git a/core/thread/thread_windows.odin b/core/thread/thread_windows.odin index 8da75a2d9..50a4e5fbc 100644 --- a/core/thread/thread_windows.odin +++ b/core/thread/thread_windows.odin @@ -3,6 +3,7 @@ package thread import "base:intrinsics" +import "base:runtime" import "core:sync" import win32 "core:sys/windows" @@ -39,7 +40,10 @@ _create :: proc(procedure: Thread_Proc, priority: Thread_Priority) -> ^Thread { // Here on Windows, the thread is created in a suspended state, and so we can select the context anywhere before the call // to t.procedure(). context = _select_context_for_thread(init_context) - defer _maybe_destroy_default_temp_allocator(init_context) + defer { + _maybe_destroy_default_temp_allocator(init_context) + runtime.run_thread_local_cleaners() + } t.procedure(t) } diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 1c4b88101..3742caeda 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -2048,6 +2048,14 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As return ok; } + if (BuiltinProc__atomic_begin < id && id < BuiltinProc__atomic_end) { + if (build_context.metrics.arch == TargetArch_riscv64) { + if (!check_target_feature_is_enabled(str_lit("a"), nullptr)) { + error(call, "missing required target feature \"a\" for atomics, enable it by setting a different -microarch or explicitly adding it through -target-features"); + } + } + } + switch (id) { default: GB_PANIC("Implement built-in procedure: %.*s", LIT(builtin_name)); @@ -5665,6 +5673,59 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As break; } break; + + case BuiltinProc_type_has_shared_fields: + { + Type *u = check_type(c, ce->args[0]); + Type *ut = base_type(u); + if (ut == nullptr || ut == t_invalid) { + error(ce->args[0], "Expected a type for '%.*s'", LIT(builtin_name)); + return false; + } + if (ut->kind != Type_Struct || ut->Struct.soa_kind != StructSoa_None) { + gbString t = type_to_string(ut); + error(ce->args[0], "Expected a struct type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + Type *v = check_type(c, ce->args[1]); + Type *vt = base_type(v); + if (vt == nullptr || vt == t_invalid) { + error(ce->args[1], "Expected a type for '%.*s'", LIT(builtin_name)); + return false; + } + if (vt->kind != Type_Struct || vt->Struct.soa_kind != StructSoa_None) { + gbString t = type_to_string(vt); + error(ce->args[1], "Expected a struct type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + bool is_shared = true; + + for (Entity *v_field : vt->Struct.fields) { + bool found = false; + for (Entity *u_field : ut->Struct.fields) { + if (v_field->token.string == u_field->token.string && + are_types_identical(v_field->type, u_field->type)) { + found = true; + break; + } + } + + if (!found) { + is_shared = false; + break; + } + } + + operand->mode = Addressing_Constant; + operand->value = exact_value_bool(is_shared); + operand->type = t_untyped_bool; + break; + } + case BuiltinProc_type_field_type: { Operand op = {}; diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 9cdba2710..7ac09ac56 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1180,11 +1180,15 @@ gb_internal void check_assignment(CheckerContext *c, Operand *operand, Type *typ LIT(article), LIT(context_name)); } else { + ERROR_BLOCK(); error(operand->expr, "Cannot assign '%s', a type, to %.*s%.*s", op_type_str, LIT(article), LIT(context_name)); + if (type && are_types_identical(type, t_any)) { + error_line("\tSuggestion: 'typeid_of(%s)'", expr_str); + } } break; default: @@ -3782,10 +3786,10 @@ gb_internal void check_binary_expr(CheckerContext *c, Operand *x, Ast *node, Typ // NOTE(bill): Allow comparisons between types if (is_ise_expr(be->left)) { // Evalute the right before the left for an '.X' expression - check_expr_or_type(c, y, be->right, type_hint); + check_expr_or_type(c, y, be->right, nullptr /* ignore type hint */); check_expr_or_type(c, x, be->left, y->type); } else { - check_expr_or_type(c, x, be->left, type_hint); + check_expr_or_type(c, x, be->left, nullptr /* ignore type hint */); check_expr_or_type(c, y, be->right, x->type); } bool xt = x->mode == Addressing_Type; @@ -4658,7 +4662,8 @@ gb_internal bool check_index_value(CheckerContext *c, Type *main_type, bool open check_expr_with_type_hint(c, &operand, index_value, type_hint); if (operand.mode == Addressing_Invalid) { if (value) *value = 0; - return false; + // NOTE(bill): return true here to propagate the errors better + return true; } Type *index_type = t_int; @@ -4879,7 +4884,7 @@ gb_internal ExactValue get_constant_field_single(CheckerContext *c, ExactValue v TypeAndValue tav = fv->value->tav; if (success_) *success_ = true; if (finish_) *finish_ = false; - return tav.value;; + return tav.value; } } @@ -4954,7 +4959,6 @@ gb_internal ExactValue get_constant_field(CheckerContext *c, Operand const *oper return value; } } - if (success_) *success_ = true; return value; } else if (value.kind == ExactValue_Quaternion) { @@ -7625,7 +7629,7 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O gbString s = gb_string_make_reserve(heap_allocator(), e->token.string.len+3); s = gb_string_append_fmt(s, "%.*s(", LIT(e->token.string)); - TypeTuple *tuple = get_record_polymorphic_params(e->type); + TypeTuple *tuple = get_record_polymorphic_params(bt); if (tuple != nullptr) for_array(i, tuple->variables) { Entity *v = tuple->variables[i]; String name = v->token.string; @@ -7640,8 +7644,10 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O s = write_type_to_string(s, v->type, false); } } else if (v->kind == Entity_Constant) { - s = gb_string_append_fmt(s, "="); - s = write_exact_value_to_string(s, v->Constant.value); + if (v->Constant.value.kind != ExactValue_Invalid) { + s = gb_string_append_fmt(s, "="); + s = write_exact_value_to_string(s, v->Constant.value); + } } } s = gb_string_append_fmt(s, ")"); @@ -10055,6 +10061,22 @@ gb_internal ExprKind check_compound_literal(CheckerContext *c, Operand *o, Ast * is_constant = o->mode == Addressing_Constant; } + if (elem->kind == Ast_BinaryExpr) { + switch (elem->BinaryExpr.op.kind) { + case Token_Or: + { + gbString x = expr_to_string(elem->BinaryExpr.left); + gbString y = expr_to_string(elem->BinaryExpr.right); + gbString e = expr_to_string(elem); + error(elem, "Was the following intended? '%s, %s'; if not, surround the expression with parentheses '(%s)'", x, y, e); + gb_string_free(e); + gb_string_free(y); + gb_string_free(x); + } + break; + } + } + check_assignment(c, o, t->BitSet.elem, str_lit("bit_set literal")); if (o->mode == Addressing_Constant) { i64 lower = t->BitSet.lower; @@ -10544,7 +10566,8 @@ gb_internal ExprKind check_index_expr(CheckerContext *c, Operand *o, Ast *node, o->expr = node; return kind; } else if (ok && !is_type_matrix(t)) { - ExactValue value = type_and_value_of_expr(ie->expr).value; + TypeAndValue tav = type_and_value_of_expr(ie->expr); + ExactValue value = tav.value; o->mode = Addressing_Constant; bool success = false; bool finish = false; diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 12156df01..c8717ba98 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -199,6 +199,9 @@ gb_internal bool check_has_break(Ast *stmt, String const &label, bool implicit) } break; + case Ast_DeferStmt: + return check_has_break(stmt->DeferStmt.stmt, label, implicit); + case Ast_BlockStmt: return check_has_break_list(stmt->BlockStmt.stmts, label, implicit); @@ -1695,7 +1698,7 @@ gb_internal void check_range_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) } } } - bool is_ptr = type_deref(operand.type); + bool is_ptr = is_type_pointer(type_deref(operand.type)); Type *t = base_type(type_deref(operand.type)); switch (t->kind) { @@ -1735,6 +1738,7 @@ gb_internal void check_range_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) break; case Type_EnumeratedArray: + is_possibly_addressable = operand.mode == Addressing_Variable || is_ptr; array_add(&vals, t->EnumeratedArray.elem); array_add(&vals, t->EnumeratedArray.index); break; @@ -2706,6 +2710,7 @@ gb_internal void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) error(bs->label, "A branch statement's label name must be an identifier"); return; } + Ast *ident = bs->label; String name = ident->Ident.token.string; Operand o = {}; @@ -2737,6 +2742,10 @@ gb_internal void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) break; } + + if (ctx->in_defer) { + error(bs->label, "A labelled '%.*s' cannot be used within a 'defer'", LIT(token.string)); + } } case_end; diff --git a/src/checker.cpp b/src/checker.cpp index b24a7afdb..fdc1ce840 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3174,8 +3174,8 @@ gb_internal DECL_ATTRIBUTE_PROC(foreign_block_decl_attribute) { return true; } else if (name == "link_prefix") { if (ev.kind == ExactValue_String) { - String link_prefix = ev.value_string; - if (!is_foreign_name_valid(link_prefix)) { + String link_prefix = string_trim_whitespace(ev.value_string); + if (link_prefix.len != 0 && !is_foreign_name_valid(link_prefix)) { error(elem, "Invalid link prefix: '%.*s'", LIT(link_prefix)); } else { c->foreign_context.link_prefix = link_prefix; @@ -3186,8 +3186,8 @@ gb_internal DECL_ATTRIBUTE_PROC(foreign_block_decl_attribute) { return true; } else if (name == "link_suffix") { if (ev.kind == ExactValue_String) { - String link_suffix = ev.value_string; - if (!is_foreign_name_valid(link_suffix)) { + String link_suffix = string_trim_whitespace(ev.value_string); + if (link_suffix.len != 0 && !is_foreign_name_valid(link_suffix)) { error(elem, "Invalid link suffix: '%.*s'", LIT(link_suffix)); } else { c->foreign_context.link_suffix = link_suffix; @@ -3489,7 +3489,7 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { if (ev.kind == ExactValue_String) { ac->link_prefix = ev.value_string; - if (!is_foreign_name_valid(ac->link_prefix)) { + if (ac->link_prefix.len != 0 && !is_foreign_name_valid(ac->link_prefix)) { error(elem, "Invalid link prefix: %.*s", LIT(ac->link_prefix)); } } else { @@ -3501,7 +3501,7 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { if (ev.kind == ExactValue_String) { ac->link_suffix = ev.value_string; - if (!is_foreign_name_valid(ac->link_suffix)) { + if (ac->link_suffix.len != 0 && !is_foreign_name_valid(ac->link_suffix)) { error(elem, "Invalid link suffix: %.*s", LIT(ac->link_suffix)); } } else { @@ -3774,7 +3774,7 @@ gb_internal DECL_ATTRIBUTE_PROC(var_decl_attribute) { ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_String) { ac->link_prefix = ev.value_string; - if (!is_foreign_name_valid(ac->link_prefix)) { + if (ac->link_prefix.len != 0 && !is_foreign_name_valid(ac->link_prefix)) { error(elem, "Invalid link prefix: %.*s", LIT(ac->link_prefix)); } } else { @@ -3785,7 +3785,7 @@ gb_internal DECL_ATTRIBUTE_PROC(var_decl_attribute) { ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_String) { ac->link_suffix = ev.value_string; - if (!is_foreign_name_valid(ac->link_suffix)) { + if (ac->link_suffix.len != 0 && !is_foreign_name_valid(ac->link_suffix)) { error(elem, "Invalid link suffix: %.*s", LIT(ac->link_suffix)); } } else { @@ -4532,7 +4532,9 @@ gb_internal void check_collect_entities(CheckerContext *c, Slice<Ast *> const &n case_end; case_ast_node(fb, ForeignBlockDecl, decl); - check_add_foreign_block_decl(c, decl); + if (curr_file != nullptr) { + array_add(&curr_file->delayed_decls_queues[AstDelayQueue_ForeignBlock], decl); + } case_end; default: @@ -4548,6 +4550,14 @@ gb_internal void check_collect_entities(CheckerContext *c, Slice<Ast *> const &n // NOTE(bill): 'when' stmts need to be handled after the other as the condition may refer to something // declared after this stmt in source if (curr_file == nullptr) { + // For 'foreign' block statements that are not in file scope. + for_array(decl_index, nodes) { + Ast *decl = nodes[decl_index]; + if (decl->kind == Ast_ForeignBlockDecl) { + check_add_foreign_block_decl(c, decl); + } + } + for_array(decl_index, nodes) { Ast *decl = nodes[decl_index]; if (decl->kind == Ast_WhenStmt) { @@ -5512,6 +5522,16 @@ gb_internal void check_import_entities(Checker *c) { AstFile *f = pkg->files[i]; reset_checker_context(&ctx, f, &untyped); + for (Ast *decl : f->delayed_decls_queues[AstDelayQueue_ForeignBlock]) { + check_add_foreign_block_decl(&ctx, decl); + } + array_clear(&f->delayed_decls_queues[AstDelayQueue_ForeignBlock]); + } + + for_array(i, pkg->files) { + AstFile *f = pkg->files[i]; + reset_checker_context(&ctx, f, &untyped); + for (Ast *expr : f->delayed_decls_queues[AstDelayQueue_Expr]) { Operand o = {}; check_expr(&ctx, &o, expr); diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index ef07938c7..2dfd570e4 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -99,6 +99,7 @@ enum BuiltinProcId { BuiltinProc_prefetch_write_instruction, BuiltinProc_prefetch_write_data, +BuiltinProc__atomic_begin, BuiltinProc_atomic_type_is_lock_free, BuiltinProc_atomic_thread_fence, BuiltinProc_atomic_signal_fence, @@ -124,6 +125,7 @@ enum BuiltinProcId { BuiltinProc_atomic_compare_exchange_strong_explicit, BuiltinProc_atomic_compare_exchange_weak, BuiltinProc_atomic_compare_exchange_weak_explicit, +BuiltinProc__atomic_end, BuiltinProc_fixed_point_mul, BuiltinProc_fixed_point_div, @@ -313,6 +315,8 @@ BuiltinProc__type_simple_boolean_end, BuiltinProc_type_map_info, BuiltinProc_type_map_cell_info, + BuiltinProc_type_has_shared_fields, + BuiltinProc__type_end, BuiltinProc_procedure_of, @@ -436,6 +440,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("prefetch_write_instruction"), 2, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("prefetch_write_data"), 2, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, + {STR_LIT(""), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("atomic_type_is_lock_free"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("atomic_thread_fence"), 1, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("atomic_signal_fence"), 1, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, @@ -461,6 +466,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("atomic_compare_exchange_strong_explicit"), 5, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("atomic_compare_exchange_weak"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("atomic_compare_exchange_weak_explicit"), 5, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, + {STR_LIT(""), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("fixed_point_mul"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("fixed_point_div"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics}, @@ -647,6 +653,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("type_map_info"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_map_cell_info"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("type_has_shared_fields"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT(""), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index c896f889d..5d90dccea 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -55,6 +55,16 @@ gb_internal void lb_debug_file_line(lbModule *m, Ast *node, LLVMMetadataRef *fil } } +gb_internal LLVMMetadataRef lb_debug_procedure_parameters(lbModule *m, Type *type) { + if (is_type_proc(type)) { + return lb_debug_type(m, t_rawptr); + } + if (type->kind == Type_Tuple && type->Tuple.variables.count == 1) { + return lb_debug_procedure_parameters(m, type->Tuple.variables[0]->type); + } + return lb_debug_type(m, type); +} + gb_internal LLVMMetadataRef lb_debug_type_internal_proc(lbModule *m, Type *type) { i64 size = type_size_of(type); // Check size gb_unused(size); @@ -78,7 +88,7 @@ gb_internal LLVMMetadataRef lb_debug_type_internal_proc(lbModule *m, Type *type) if (type->Proc.result_count == 0) { parameters[param_index++] = nullptr; } else { - parameters[param_index++] = lb_debug_type(m, type->Proc.results); + parameters[param_index++] = lb_debug_procedure_parameters(m, type->Proc.results); } LLVMMetadataRef file = nullptr; @@ -88,7 +98,7 @@ gb_internal LLVMMetadataRef lb_debug_type_internal_proc(lbModule *m, Type *type) if (e->kind != Entity_Variable) { continue; } - parameters[param_index] = lb_debug_type(m, e->type); + parameters[param_index] = lb_debug_procedure_parameters(m, e->type); param_index += 1; } @@ -969,7 +979,7 @@ gb_internal LLVMMetadataRef lb_debug_type(lbModule *m, Type *type) { return lb_debug_struct(m, type, bt, name, scope, file, line); } - case Type_Struct: return lb_debug_struct(m, type, base_type(type), name, scope, file, line); + case Type_Struct: return lb_debug_struct(m, type, bt, name, scope, file, line); case Type_Slice: return lb_debug_slice(m, type, name, scope, file, line); case Type_DynamicArray: return lb_debug_dynamic_array(m, type, name, scope, file, line); case Type_Union: return lb_debug_union(m, type, name, scope, file, line); diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 68c1e9d1e..f63c42ab9 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -263,7 +263,7 @@ gb_internal lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t) { if (is_type_simd_vector(src) && is_type_simd_vector(dst)) { res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(p->module, t), ""); return res; - } else if (is_type_array_like(src) && is_type_simd_vector(dst)) { + } else if (is_type_array_like(src) && (is_type_simd_vector(dst) || is_type_integer_128bit(dst))) { unsigned align = cast(unsigned)gb_max(type_align_of(src), type_align_of(dst)); lbValue ptr = lb_address_from_load_or_generate_local(p, value); if (lb_try_update_alignment(ptr, align)) { diff --git a/src/parser.cpp b/src/parser.cpp index 5796012d9..e3143dd33 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1921,6 +1921,9 @@ gb_internal Array<Ast *> parse_enum_field_list(AstFile *f) { f->curr_token.kind != Token_EOF) { CommentGroup *docs = f->lead_comment; CommentGroup *comment = nullptr; + + parse_enforce_tabs(f); + Ast *name = parse_value(f); Ast *value = nullptr; if (f->curr_token.kind == Token_Eq) { @@ -2259,6 +2262,7 @@ gb_internal Array<Ast *> parse_union_variant_list(AstFile *f) { auto variants = array_make<Ast *>(ast_allocator(f)); while (f->curr_token.kind != Token_CloseBrace && f->curr_token.kind != Token_EOF) { + parse_enforce_tabs(f); Ast *type = parse_type(f); if (type->kind != Ast_BadExpr) { array_add(&variants, type); @@ -4274,6 +4278,7 @@ gb_internal Ast *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_fl while (f->curr_token.kind != follow && f->curr_token.kind != Token_Colon && f->curr_token.kind != Token_EOF) { + if (!is_signature) parse_enforce_tabs(f); u32 flags = parse_field_prefixes(f); Ast *param = parse_var_type(f, allow_ellipsis, allow_typeid_token); if (param->kind == Ast_Ellipsis) { @@ -4363,6 +4368,8 @@ gb_internal Ast *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_fl f->curr_token.kind != Token_EOF && f->curr_token.kind != Token_Semicolon) { CommentGroup *docs = f->lead_comment; + + if (!is_signature) parse_enforce_tabs(f); u32 set_flags = parse_field_prefixes(f); Token tag = {}; Array<Ast *> names = parse_ident_list(f, allow_poly_names); @@ -4532,6 +4539,10 @@ gb_internal Ast *parse_if_stmt(AstFile *f) { return ast_bad_stmt(f, f->curr_token, f->curr_token); } + Ast *top_if_stmt = nullptr; + + Ast *prev_if_stmt = nullptr; +if_else_chain:; Token token = expect_token(f, Token_if); Ast *init = nullptr; Ast *cond = nullptr; @@ -4573,12 +4584,24 @@ gb_internal Ast *parse_if_stmt(AstFile *f) { ignore_strict_style = true; } skip_possible_newline_for_literal(f, ignore_strict_style); + + Ast *curr_if_stmt = ast_if_stmt(f, token, init, cond, body, nullptr); + if (top_if_stmt == nullptr) { + top_if_stmt = curr_if_stmt; + } + if (prev_if_stmt != nullptr) { + prev_if_stmt->IfStmt.else_stmt = curr_if_stmt; + } + if (f->curr_token.kind == Token_else) { Token else_token = expect_token(f, Token_else); switch (f->curr_token.kind) { case Token_if: - else_stmt = parse_if_stmt(f); - break; + // NOTE(bill): Instead of relying on recursive descent for an if-else chain + // we can just inline the tail-recursion manually with a simple loop like + // construct using a `goto` + prev_if_stmt = curr_if_stmt; + goto if_else_chain; case Token_OpenBrace: else_stmt = parse_block_stmt(f, false); break; @@ -4593,7 +4616,9 @@ gb_internal Ast *parse_if_stmt(AstFile *f) { } } - return ast_if_stmt(f, token, init, cond, body, else_stmt); + curr_if_stmt->IfStmt.else_stmt = else_stmt; + + return top_if_stmt; } gb_internal Ast *parse_when_stmt(AstFile *f) { @@ -5357,6 +5382,11 @@ gb_internal u64 check_vet_flags(AstFile *file) { gb_internal void parse_enforce_tabs(AstFile *f) { + // Checks to see if tabs have been used for indentation + if ((check_vet_flags(f) & VetFlag_Tabs) == 0) { + return; + } + Token prev = f->prev_token; Token curr = f->curr_token; if (prev.pos.line < curr.pos.line) { @@ -5373,6 +5403,10 @@ gb_internal void parse_enforce_tabs(AstFile *f) { isize len = end-it; for (isize i = 0; i < len; i++) { + if (it[i] == '/') { + // ignore comments + break; + } if (it[i] == ' ') { syntax_error(curr, "With '-vet-tabs', tabs must be used for indentation"); break; @@ -5387,11 +5421,7 @@ gb_internal Array<Ast *> parse_stmt_list(AstFile *f) { while (f->curr_token.kind != Token_case && f->curr_token.kind != Token_CloseBrace && f->curr_token.kind != Token_EOF) { - - // Checks to see if tabs have been used for indentation - if (check_vet_flags(f) & VetFlag_Tabs) { - parse_enforce_tabs(f); - } + parse_enforce_tabs(f); Ast *stmt = parse_stmt(f); if (stmt && stmt->kind != Ast_EmptyStmt) { @@ -6416,7 +6446,7 @@ gb_internal bool parse_file(Parser *p, AstFile *f) { } f->total_file_decl_count += calc_decl_count(stmt); - if (stmt->kind == Ast_WhenStmt || stmt->kind == Ast_ExprStmt || stmt->kind == Ast_ImportDecl) { + if (stmt->kind == Ast_WhenStmt || stmt->kind == Ast_ExprStmt || stmt->kind == Ast_ImportDecl || stmt->kind == Ast_ForeignBlockDecl) { f->delayed_decl_count += 1; } } diff --git a/src/parser.hpp b/src/parser.hpp index 565a8e621..d5117a31e 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -82,6 +82,7 @@ enum AstFileFlag : u32 { enum AstDelayQueueKind { AstDelayQueue_Import, AstDelayQueue_Expr, + AstDelayQueue_ForeignBlock, AstDelayQueue_COUNT, }; @@ -885,4 +886,7 @@ gb_internal gb_inline gbAllocator ast_allocator(AstFile *f) { gb_internal Ast *alloc_ast_node(AstFile *f, AstKind kind); gb_internal gbString expr_to_string(Ast *expression); -gb_internal bool allow_field_separator(AstFile *f);
\ No newline at end of file +gb_internal bool allow_field_separator(AstFile *f); + + +gb_internal void parse_enforce_tabs(AstFile *f);
\ No newline at end of file diff --git a/tests/core/c/libc/test_core_libc_complex_pow.odin b/tests/core/c/libc/test_core_libc_complex_pow.odin index cd50c8f6a..e308cc171 100644 --- a/tests/core/c/libc/test_core_libc_complex_pow.odin +++ b/tests/core/c/libc/test_core_libc_complex_pow.odin @@ -69,18 +69,18 @@ test_libc_pow_binding :: proc(t: ^testing.T, $LIBC_COMPLEX:typeid, $F:typeid, po complex_power := LIBC_COMPLEX(complex(F(n), F(0.))) result := pow(complex_base, complex_power) switch n%%4 { - case 0: - expected_real = value - expected_imag = 0. - case 1: - expected_real = 0. - expected_imag = value - case 2: - expected_real = -value - expected_imag = 0. - case 3: - expected_real = 0. - expected_imag = -value + case 0: + expected_real = value + expected_imag = 0. + case 1: + expected_real = 0. + expected_imag = value + case 2: + expected_real = -value + expected_imag = 0. + case 3: + expected_real = 0. + expected_imag = -value } testing.expectf(t, isclose(t, expected_real, F(real(result)), rtol, atol), "ftype:%T, n:%v reldiff(%v, re(%v)) is greater than specified rtol:%e", F{}, n, expected_real, result, rtol) testing.expectf(t, isclose(t, expected_imag, F(imag(result)), rtol, atol), "ftype:%T, n:%v reldiff(%v, im(%v)) is greater than specified rtol:%e", F{}, n, expected_imag, result, rtol) diff --git a/tests/core/container/test_core_rbtree.odin b/tests/core/container/test_core_rbtree.odin index b686ef6dd..bdd23691c 100644 --- a/tests/core/container/test_core_rbtree.odin +++ b/tests/core/container/test_core_rbtree.odin @@ -187,7 +187,7 @@ validate_rbtree :: proc(t: ^testing.T, tree: ^$T/rb.Tree($Key, $Value)) { } verify_rbtree_propery_1 :: proc(t: ^testing.T, n: ^$N/rb.Node($Key, $Value)) { - testing.expect(t, rb.node_color(n) == .Black || rb.node_color(n) == .Red, "Property #1: Each node is either red or black.") + testing.expect(t, rb.node_color(n) == .Black || rb.node_color(n) == .Red, "Property #1: Each node is either red or black.") if n == nil { return } diff --git a/tests/core/encoding/json/test_core_json.odin b/tests/core/encoding/json/test_core_json.odin index 42ac9ce0f..f588d34fa 100644 --- a/tests/core/encoding/json/test_core_json.odin +++ b/tests/core/encoding/json/test_core_json.odin @@ -429,7 +429,7 @@ map_with_integer_keys :: proc(t: ^testing.T) { defer delete_map(my_map2) unmarshal_err := json.unmarshal(marshaled_data, &my_map2) - defer for key, item in my_map2 { + defer for _, item in my_map2 { runtime.delete_string(item) } testing.expectf(t, unmarshal_err == nil, "Expected `json.unmarshal` to return nil, got %v", unmarshal_err) diff --git a/tests/core/encoding/xml/test_core_xml.odin b/tests/core/encoding/xml/test_core_xml.odin index b29431e10..c0e4329bd 100644 --- a/tests/core/encoding/xml/test_core_xml.odin +++ b/tests/core/encoding/xml/test_core_xml.odin @@ -241,7 +241,7 @@ doc_to_string :: proc(doc: ^xml.Document) -> (result: string) { written += fmt.wprintf(writer, "[DOCTYPE] %v\n", doc.doctype.ident) if len(doc.doctype.rest) > 0 { - fmt.wprintf(writer, "\t%v\n", doc.doctype.rest) + fmt.wprintf(writer, "\t%v\n", doc.doctype.rest) } } @@ -250,10 +250,10 @@ doc_to_string :: proc(doc: ^xml.Document) -> (result: string) { } if doc.element_count > 0 { - fmt.wprintln(writer, " --- ") - print_element(writer, doc, 0) - fmt.wprintln(writer, " --- ") - } + fmt.wprintln(writer, " --- ") + print_element(writer, doc, 0) + fmt.wprintln(writer, " --- ") + } return written, .None } diff --git a/tests/core/runtime/test_core_runtime.odin b/tests/core/runtime/test_core_runtime.odin index 008146dcf..f39caff48 100644 --- a/tests/core/runtime/test_core_runtime.odin +++ b/tests/core/runtime/test_core_runtime.odin @@ -11,6 +11,7 @@ import "core:testing" test_temp_allocator_alignment_boundary :: proc(t: ^testing.T) { arena: runtime.Arena context.allocator = runtime.arena_allocator(&arena) + defer runtime.arena_destroy(&arena) _, _ = mem.alloc(int(runtime.DEFAULT_ARENA_GROWING_MINIMUM_BLOCK_SIZE)-120) _, err := mem.alloc(112, 32) @@ -22,6 +23,7 @@ test_temp_allocator_alignment_boundary :: proc(t: ^testing.T) { test_temp_allocator_big_alloc_and_alignment :: proc(t: ^testing.T) { arena: runtime.Arena context.allocator = runtime.arena_allocator(&arena) + defer runtime.arena_destroy(&arena) mappy: map[[8]int]int err := reserve(&mappy, 50000) @@ -32,6 +34,7 @@ test_temp_allocator_big_alloc_and_alignment :: proc(t: ^testing.T) { test_temp_allocator_returns_correct_size :: proc(t: ^testing.T) { arena: runtime.Arena context.allocator = runtime.arena_allocator(&arena) + defer runtime.arena_destroy(&arena) bytes, err := mem.alloc_bytes(10, 16) testing.expect(t, err == nil) diff --git a/tests/core/unicode/test_core_unicode.odin b/tests/core/unicode/test_core_unicode.odin index a1f6ac934..30a40b30b 100644 --- a/tests/core/unicode/test_core_unicode.odin +++ b/tests/core/unicode/test_core_unicode.odin @@ -16,8 +16,7 @@ run_test_cases :: proc(t: ^testing.T, test_cases: []Test_Case, loc := #caller_lo result, _, _ := utf8.grapheme_count(c.str) if !testing.expectf(t, result == c.expected_clusters, "(#% 4i) graphemes: %i != %i, %q %s", i, result, c.expected_clusters, c.str, c.str, - loc = loc) - { + loc = loc) { failed += 1 } } diff --git a/vendor/commonmark/cmark.odin b/vendor/commonmark/cmark.odin index 50544b9bd..2fdf1387c 100644 --- a/vendor/commonmark/cmark.odin +++ b/vendor/commonmark/cmark.odin @@ -338,7 +338,7 @@ foreign lib { node_set_list_tight :: proc(node: ^Node, tight: b32) -> (success: b32) --- // Returns the info string from a fenced code block. - get_fence_info :: proc(node: ^Node) -> (fence_info: cstring) --- + node_get_fence_info :: proc(node: ^Node) -> (fence_info: cstring) --- // Sets the info string in a fenced code block, returning `true` on success and `false` on failure. node_set_fence_info :: proc(node: ^Node, fence_info: cstring) -> (success: b32) --- diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index e33845b73..4e51d5203 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -3459,10 +3459,10 @@ DRED_DEVICE_STATE :: enum i32 { } DRED_PAGE_FAULT_OUTPUT2 :: struct { - PageFaultVA: GPU_VIRTUAL_ADDRESS, - pHeadExistingAllocationNode: ^DRED_ALLOCATION_NODE1, - pHeadRecentFreedAllocationNode: ^DRED_ALLOCATION_NODE1, - PageFaultFlags: DRED_PAGE_FAULT_FLAGS, + PageFaultVA: GPU_VIRTUAL_ADDRESS, + pHeadExistingAllocationNode: ^DRED_ALLOCATION_NODE1, + pHeadRecentFreedAllocationNode: ^DRED_ALLOCATION_NODE1, + PageFaultFlags: DRED_PAGE_FAULT_FLAGS, } DEVICE_REMOVED_EXTENDED_DATA1 :: struct { diff --git a/vendor/directx/dxc/dxcapi.odin b/vendor/directx/dxc/dxcapi.odin index 79d305ea0..23dbc8f30 100644 --- a/vendor/directx/dxc/dxcapi.odin +++ b/vendor/directx/dxc/dxcapi.odin @@ -476,8 +476,8 @@ IVersionInfo3_VTable :: struct { } ArgPair :: struct { - pName: wstring, - pValue: wstring, + pName: wstring, + pValue: wstring, } IPdbUtils_UUID_STRING :: "E6C9647E-9D6A-4C3B-B94C-524B5A6C343D" diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index 9be8fea55..a45de4d49 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -575,7 +575,7 @@ PRELOAD_TABLE :: "_PRELOAD" L_Reg :: struct { name: cstring, - func: CFunction, + func: CFunction, } L_NUMSIZES :: size_of(Integer)*16 + size_of(Number) diff --git a/vendor/miniaudio/decoding.odin b/vendor/miniaudio/decoding.odin index 4860680c9..f1fa279ac 100644 --- a/vendor/miniaudio/decoding.odin +++ b/vendor/miniaudio/decoding.odin @@ -69,9 +69,9 @@ decoder :: struct { outputSampleRate: u32, converter: data_converter, /* <-- Data conversion is achieved by running frames through this. */ pInputCache: rawptr, /* In input format. Can be null if it's not needed. */ - inputCacheCap: u64, /* The capacity of the input cache. */ - inputCacheConsumed: u64, /* The number of frames that have been consumed in the cache. Used for determining the next valid frame. */ - inputCacheRemaining: u64, /* The number of valid frames remaining in the cahce. */ + inputCacheCap: u64, /* The capacity of the input cache. */ + inputCacheConsumed: u64, /* The number of frames that have been consumed in the cache. Used for determining the next valid frame. */ + inputCacheRemaining: u64, /* The number of valid frames remaining in the cahce. */ allocationCallbacks: allocation_callbacks, data: struct #raw_union { vfs: struct { diff --git a/vendor/miniaudio/device_io_types.odin b/vendor/miniaudio/device_io_types.odin index 857e53ff5..eae804720 100644 --- a/vendor/miniaudio/device_io_types.odin +++ b/vendor/miniaudio/device_io_types.odin @@ -381,7 +381,7 @@ device_config :: struct { noPreSilencedOutputBuffer: b8, /* When set to true, the contents of the output buffer passed into the data callback will be left undefined rather than initialized to zero. */ noClip: b8, /* When set to true, the contents of the output buffer passed into the data callback will not be clipped after returning. Only applies when the playback sample format is f32. */ noDisableDenormals: b8, /* Do not disable denormals when firing the data callback. */ - noFixedSizedCallback: b8, /* Disables strict fixed-sized data callbacks. Setting this to true will result in the period size being treated only as a hint to the backend. This is an optimization for those who don't need fixed sized callbacks. */ + noFixedSizedCallback: b8, /* Disables strict fixed-sized data callbacks. Setting this to true will result in the period size being treated only as a hint to the backend. This is an optimization for those who don't need fixed sized callbacks. */ dataCallback: device_data_proc, notificationCallback: device_notification_proc, stopCallback: stop_proc, @@ -813,7 +813,7 @@ context_type :: struct { /*pa_mainloop**/ pMainLoop: rawptr, /*pa_context**/ pPulseContext: rawptr, pApplicationName: cstring, /* Set when the context is initialized. Used by devices for their local pa_context objects. */ - pServerName: cstring, /* Set when the context is initialized. Used by devices for their local pa_context objects. */ + pServerName: cstring, /* Set when the context is initialized. Used by devices for their local pa_context objects. */ } when SUPPORT_PULSEAUDIO else struct {}), jack: (struct { @@ -1140,7 +1140,7 @@ device :: struct { pulse: (struct { /*pa_mainloop**/ pMainLoop: rawptr, - /*pa_context**/ pPulseContext: rawptr, + /*pa_context**/ pPulseContext: rawptr, /*pa_stream**/ pStreamPlayback: rawptr, /*pa_stream**/ pStreamCapture: rawptr, } when SUPPORT_PULSEAUDIO else struct {}), diff --git a/vendor/raylib/raylib.odin b/vendor/raylib/raylib.odin index cff590b7f..8d26c8824 100644 --- a/vendor/raylib/raylib.odin +++ b/vendor/raylib/raylib.odin @@ -84,7 +84,6 @@ package raylib import "core:c" import "core:fmt" import "core:mem" -import "core:strings" import "core:math/linalg" _ :: linalg @@ -447,9 +446,9 @@ VrStereoConfig :: struct #align(4) { // File path list FilePathList :: struct { - capacity: c.uint, // Filepaths max entries - count: c.uint, // Filepaths entries count - paths: [^]cstring, // Filepaths entries + capacity: c.uint, // Filepaths max entries + count: c.uint, // Filepaths entries count + paths: [^]cstring, // Filepaths entries } // Automation event @@ -1029,7 +1028,6 @@ foreign lib { SetTraceLogLevel :: proc(logLevel: TraceLogLevel) --- // Set the current threshold (minimum) log level MemAlloc :: proc(size: c.uint) -> rawptr --- // Internal memory allocator MemRealloc :: proc(ptr: rawptr, size: c.uint) -> rawptr --- // Internal memory reallocator - MemFree :: proc(ptr: rawptr) --- // Internal memory free // Set custom callbacks // WARNING: Callbacks setup is intended for advance users @@ -1256,7 +1254,7 @@ foreign lib { LoadImage :: proc(fileName: cstring) -> Image --- // Load image from file into CPU memory (RAM) LoadImageRaw :: proc(fileName: cstring, width, height: c.int, format: PixelFormat, headerSize: c.int) -> Image --- // Load image from RAW file data LoadImageSvg :: proc(fileNameOrString: cstring, width, height: c.int) -> Image --- // Load image from SVG file data or string with specified size - LoadImageAnim :: proc(fileName: cstring, frames: [^]c.int) -> Image --- // Load image sequence from file (frames appended to image.data) + LoadImageAnim :: proc(fileName: cstring, frames: ^c.int) -> Image --- // Load image sequence from file (frames appended to image.data) LoadImageFromMemory :: proc(fileType: cstring, fileData: rawptr, dataSize: c.int) -> Image --- // Load image from memory buffer, fileType refers to extension: i.e. '.png' LoadImageFromTexture :: proc(texture: Texture2D) -> Image --- // Load image from GPU texture data LoadImageFromScreen :: proc() -> Image --- // Load image from screen buffer and (screenshot) @@ -1684,8 +1682,25 @@ TextFormat :: proc(text: cstring, args: ..any) -> cstring { // Text formatting with variables (sprintf style) and allocates (must be freed with 'MemFree') TextFormatAlloc :: proc(text: cstring, args: ..any) -> cstring { - str := fmt.tprintf(string(text), ..args) - return strings.clone_to_cstring(str, MemAllocator()) + return fmt.caprintf(string(text), ..args, allocator=MemAllocator()) +} + + +// Internal memory free +MemFree :: proc{ + MemFreePtr, + MemFreeCstring, +} + + +@(default_calling_convention="c") +foreign lib { + @(link_name="MemFree") + MemFreePtr :: proc(ptr: rawptr) --- +} + +MemFreeCstring :: proc "c" (s: cstring) { + MemFreePtr(rawptr(s)) } diff --git a/vendor/sdl2/sdl2.odin b/vendor/sdl2/sdl2.odin index 73d95e18a..b23389a64 100644 --- a/vendor/sdl2/sdl2.odin +++ b/vendor/sdl2/sdl2.odin @@ -41,6 +41,12 @@ MAJOR_VERSION :: 2 MINOR_VERSION :: 0 PATCHLEVEL :: 16 +VERSION :: proc "contextless" (ver: ^version) { + ver.major = MAJOR_VERSION + ver.minor = MINOR_VERSION + ver.patch = PATCHLEVEL +} + @(default_calling_convention="c", link_prefix="SDL_") foreign lib { GetVersion :: proc(ver: ^version) --- diff --git a/vendor/sdl2/sdl_events.odin b/vendor/sdl2/sdl_events.odin index 60daaea56..b4c92683c 100644 --- a/vendor/sdl2/sdl_events.odin +++ b/vendor/sdl2/sdl_events.odin @@ -171,9 +171,9 @@ KeyboardEvent :: struct { TEXTEDITINGEVENT_TEXT_SIZE :: 32 TextEditingEvent :: struct { type: EventType, /**< ::SDL_TEXTEDITING */ - timestamp: u32, /**< In milliseconds, populated using SDL_GetTicks() */ - windowID: u32, /**< The window with keyboard focus, if any */ - text: [TEXTEDITINGEVENT_TEXT_SIZE]u8, /**< The editing text */ + timestamp: u32, /**< In milliseconds, populated using SDL_GetTicks() */ + windowID: u32, /**< The window with keyboard focus, if any */ + text: [TEXTEDITINGEVENT_TEXT_SIZE]u8, /**< The editing text */ start: i32, /**< The start cursor of selected editing text */ length: i32, /**< The length of selected editing text */ } @@ -184,7 +184,7 @@ TextInputEvent :: struct { type: EventType, /**< ::SDL_TEXTINPUT */ timestamp: u32, /**< In milliseconds, populated using SDL_GetTicks() */ windowID: u32, /**< The window with keyboard focus, if any */ - text: [TEXTINPUTEVENT_TEXT_SIZE]u8, /**< The input text */ + text: [TEXTINPUTEVENT_TEXT_SIZE]u8, /**< The input text */ } MouseMotionEvent :: struct { diff --git a/vendor/sdl2/sdl_gamecontroller.odin b/vendor/sdl2/sdl_gamecontroller.odin index 8772faa26..beb7d5ce7 100644 --- a/vendor/sdl2/sdl_gamecontroller.odin +++ b/vendor/sdl2/sdl_gamecontroller.odin @@ -54,29 +54,29 @@ GameControllerAxis :: enum c.int { } GameControllerButton :: enum c.int { - INVALID = -1, - A, - B, - X, - Y, - BACK, - GUIDE, - START, - LEFTSTICK, - RIGHTSTICK, - LEFTSHOULDER, - RIGHTSHOULDER, - DPAD_UP, - DPAD_DOWN, - DPAD_LEFT, - DPAD_RIGHT, - MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ - PADDLE1, /* Xbox Elite paddle P1 */ - PADDLE2, /* Xbox Elite paddle P3 */ - PADDLE3, /* Xbox Elite paddle P2 */ - PADDLE4, /* Xbox Elite paddle P4 */ - TOUCHPAD, /* PS4/PS5 touchpad button */ - MAX, + INVALID = -1, + A, + B, + X, + Y, + BACK, + GUIDE, + START, + LEFTSTICK, + RIGHTSTICK, + LEFTSHOULDER, + RIGHTSHOULDER, + DPAD_UP, + DPAD_DOWN, + DPAD_LEFT, + DPAD_RIGHT, + MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + PADDLE1, /* Xbox Elite paddle P1 */ + PADDLE2, /* Xbox Elite paddle P3 */ + PADDLE3, /* Xbox Elite paddle P2 */ + PADDLE4, /* Xbox Elite paddle P4 */ + TOUCHPAD, /* PS4/PS5 touchpad button */ + MAX, } diff --git a/vendor/sdl2/sdl_touch.odin b/vendor/sdl2/sdl_touch.odin index f2a8cc695..f0ca69333 100644 --- a/vendor/sdl2/sdl_touch.odin +++ b/vendor/sdl2/sdl_touch.odin @@ -19,10 +19,10 @@ TouchDeviceType :: enum c.int { } Finger :: struct { - id: FingerID, - x: f32, - y: f32, - pressure: f32, + id: FingerID, + x: f32, + y: f32, + pressure: f32, } TOUCH_MOUSEID :: ~u32(0) diff --git a/vendor/stb/image/stb_image_resize.odin b/vendor/stb/image/stb_image_resize.odin index d407a1852..e22b587b2 100644 --- a/vendor/stb/image/stb_image_resize.odin +++ b/vendor/stb/image/stb_image_resize.odin @@ -166,7 +166,7 @@ datatype :: enum c.int { UINT32, FLOAT, - MAX_TYPES, + MAX_TYPES, } @(default_calling_convention="c", link_prefix="stbir_") diff --git a/vendor/wgpu/README.md b/vendor/wgpu/README.md index 8b2c95b5e..1022e8541 100644 --- a/vendor/wgpu/README.md +++ b/vendor/wgpu/README.md @@ -11,8 +11,8 @@ Have a look at the `example/` directory for the rendering of a basic triangle. ## Getting the wgpu-native libraries For native support (not the browser), some libraries are required. Fortunately this is -extremely easy, just download them from the [releases on GitHub](https://github.com/gfx-rs/wgpu-native/releases/tag/v0.19.4.1), -the bindings are for v0.19.4.1 at the moment. +extremely easy, just download them from the [releases on GitHub](https://github.com/gfx-rs/wgpu-native/releases/tag/v22.1.0.1), +the bindings are for v22.1.0.1 at the moment. These are expected in the `lib` folder under the same name as they are released (just unzipped). By default it will look for a static release version (`wgpu-OS-ARCH-release.a|lib`), diff --git a/vendor/wgpu/examples/glfw/main.odin b/vendor/wgpu/examples/glfw/main.odin index bddd2c5f7..b57206371 100644 --- a/vendor/wgpu/examples/glfw/main.odin +++ b/vendor/wgpu/examples/glfw/main.odin @@ -158,15 +158,17 @@ frame :: proc "c" (dt: f32) { view = frame, loadOp = .Clear, storeOp = .Store, + depthSlice = wgpu.DEPTH_SLICE_UNDEFINED, clearValue = { 0, 1, 0, 1 }, }, }, ) - defer wgpu.RenderPassEncoderRelease(render_pass_encoder) wgpu.RenderPassEncoderSetPipeline(render_pass_encoder, state.pipeline) wgpu.RenderPassEncoderDraw(render_pass_encoder, vertexCount=3, instanceCount=1, firstVertex=0, firstInstance=0) + wgpu.RenderPassEncoderEnd(render_pass_encoder) + wgpu.RenderPassEncoderRelease(render_pass_encoder) command_buffer := wgpu.CommandEncoderFinish(command_encoder, nil) defer wgpu.CommandBufferRelease(command_buffer) diff --git a/vendor/wgpu/examples/sdl2/main.odin b/vendor/wgpu/examples/sdl2/main.odin index fa0a84bd5..58e357f7a 100644 --- a/vendor/wgpu/examples/sdl2/main.odin +++ b/vendor/wgpu/examples/sdl2/main.odin @@ -158,15 +158,17 @@ frame :: proc "c" (dt: f32) { view = frame, loadOp = .Clear, storeOp = .Store, + depthSlice = wgpu.DEPTH_SLICE_UNDEFINED, clearValue = { 0, 1, 0, 1 }, }, }, ) - defer wgpu.RenderPassEncoderRelease(render_pass_encoder) wgpu.RenderPassEncoderSetPipeline(render_pass_encoder, state.pipeline) wgpu.RenderPassEncoderDraw(render_pass_encoder, vertexCount=3, instanceCount=1, firstVertex=0, firstInstance=0) + wgpu.RenderPassEncoderEnd(render_pass_encoder) + wgpu.RenderPassEncoderRelease(render_pass_encoder) command_buffer := wgpu.CommandEncoderFinish(command_encoder, nil) defer wgpu.CommandBufferRelease(command_buffer) diff --git a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll Binary files differindex 650260bfc..b8f782a2f 100644 --- a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll +++ b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll diff --git a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll.lib b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll.lib Binary files differindex b838c2695..864b7eb53 100644 --- a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll.lib +++ b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.dll.lib diff --git a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.lib b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.lib Binary files differindex ea4044d81..7c9f95c33 100644 --- a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.lib +++ b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.lib diff --git a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.pdb b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.pdb Binary files differindex b30090276..52865e174 100644 --- a/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.pdb +++ b/vendor/wgpu/lib/wgpu-windows-x86_64-release/wgpu_native.pdb diff --git a/vendor/wgpu/sdl2glue/glue_linux.odin b/vendor/wgpu/sdl2glue/glue_linux.odin index b01df251a..58ec90499 100644 --- a/vendor/wgpu/sdl2glue/glue_linux.odin +++ b/vendor/wgpu/sdl2glue/glue_linux.odin @@ -5,7 +5,9 @@ import "vendor:wgpu" GetSurface :: proc(instance: wgpu.Instance, window: ^sdl2.Window) -> wgpu.Surface { window_info: sdl2.SysWMinfo + sdl2.VERSION(&window_info.version) sdl2.GetWindowWMInfo(window, &window_info) + if window_info.subsystem == .WAYLAND { display := window_info.info.wl.display surface := window_info.info.wl.surface diff --git a/vendor/wgpu/wgpu.js b/vendor/wgpu/wgpu.js index 4fe78c992..c100808e3 100644 --- a/vendor/wgpu/wgpu.js +++ b/vendor/wgpu/wgpu.js @@ -44,6 +44,7 @@ class WebGPUInterface { BlendFactor: ["zero", "one", "src", "one-minus-src", "src-alpha", "one-minus-src-alpha", "dst", "one-minus-dst", "dst-alpha", "one-minus-dst-alpha", "src-alpha-saturated", "constant", "one-minus-constant", ], PresentMode: ["fifo", "fifo-relaxed", "immediate", "mailbox", ], TextureAspect: ["all", "stencil-only", "depth-only"], + DeviceLostReason: [undefined, "unknown", "destroyed"], }; /** @type {WebGPUObjectManager<{}>} */ @@ -382,13 +383,19 @@ class WebGPUInterface { */ RenderPassColorAttachment(start) { const viewIdx = this.mem.loadPtr(start + 4); - const resolveTargetIdx = this.mem.loadPtr(start + 8); + const resolveTargetIdx = this.mem.loadPtr(start + 12); + + let depthSlice = this.mem.loadU32(start + 8); + if (depthSlice == 0xFFFFFFFF) { // DEPTH_SLICE_UNDEFINED. + depthSlice = undefined; + } return { view: viewIdx > 0 ? this.textureViews.get(viewIdx) : undefined, resolveTarget: resolveTargetIdx > 0 ? this.textureViews.get(resolveTargetIdx) : undefined, - loadOp: this.enumeration("LoadOp", start + 12), - storeOp: this.enumeration("StoreOp", start + 16), + depthSlice: depthSlice, + loadOp: this.enumeration("LoadOp", start + 16), + storeOp: this.enumeration("StoreOp", start + 20), clearValue: this.Color(start + 24), }; } @@ -950,14 +957,25 @@ class WebGPUInterface { /** * @param {number} adapterIdx - * @param {number} propertiesPtr + * @param {number} infoPtr */ - wgpuAdapterGetProperties: (adapterIdx, propertiesPtr) => { - this.assert(propertiesPtr != 0); - // Unknown adapter. - this.mem.storeI32(propertiesPtr + 28, 3); + wgpuAdapterGetInfo: (adapterIdx, infoPtr) => { + this.assert(infoPtr != 0); + // WebGPU backend. - this.mem.storeI32(propertiesPtr + 32, 2); + this.mem.storeI32(infoPtr + 20, 2); + // Unknown adapter. + this.mem.storeI32(infoPtr + 24, 3); + + // NOTE: I don't think getting the other fields in this struct is possible. + // `adapter.requestAdapterInfo` is deprecated. + }, + + /** + * @param {number} infoPtr + */ + wgpuAdapterInfoFreeMembers: (infoPtr) => { + // NOTE: nothing to free. }, /** @@ -972,50 +990,6 @@ class WebGPUInterface { /** * @param {number} adapterIdx - * @param {number} callbackPtr - * @param {0|number} userdata - */ - wgpuAdapterRequestAdapterInfo: async (adapterIdx, callbackPtr, userdata) => { - const adapter = this.adapters.get(adapterIdx); - const callback = this.mem.exports.__indirect_function_table.get(callbackPtr); - - const info = await adapter.requestAdapterInfo(); - - const addr = this.mem.exports.wgpu_alloc(16); - - const vendorLength = new TextEncoder().encode(info.vendor).length; - const vendorAddr = this.mem.exports.wgpu_alloc(vendorLength); - this.mem.storeString(vendorAddr, info.vendor); - this.mem.storeI32(addr + 0, vendorAddr); - - const architectureLength = new TextEncoder().encode(info.architecture).length; - const architectureAddr = this.mem.exports.wgpu_alloc(architectureLength); - this.mem.storeString(architectureAddr, info.architecture); - this.mem.storeI32(addr + 4, architectureAddr); - - - const deviceLength = new TextEncoder().encode(info.device).length; - const deviceAddr = this.mem.exports.wgpu_alloc(deviceLength); - this.mem.storeString(deviceAddr, info.device); - this.mem.storeI32(addr + 8, deviceAddr); - - - const descriptionLength = new TextEncoder().encode(info.description).length; - const descriptionAddr = this.mem.exports.wgpu_alloc(descriptionLength); - this.mem.storeString(descriptionAddr, info.description); - this.mem.storeI32(addr + 12, descriptionAddr); - - callback(addr, userdata); - - this.mem.exports.wgpu_free(descriptionAddr); - this.mem.exports.wgpu_free(deviceAddr); - this.mem.exports.wgpu_free(architectureAddr); - this.mem.exports.wgpu_free(vendorAddr); - this.mem.exports.wgpu_free(addr); - }, - - /** - * @param {number} adapterIdx * @param {0|number} descriptorPtr * @param {number} callbackPtr * @param {0|number} userdata @@ -1040,14 +1014,69 @@ class WebGPUInterface { }; } + let device; let deviceIdx; try { - const device = await adapter.requestDevice(descriptor); + device = await adapter.requestDevice(descriptor); deviceIdx = this.devices.create(device); // NOTE: don't callback here, any errors that happen later will then be caught by the catch here. } catch (e) { - console.warn(e); - callback(1, null, null, userdata); + const messageLength = new TextEncoder().encode(e.message).length; + const messageAddr = this.mem.exports.wgpu_alloc(messageLength + 1); + this.mem.storeString(messageAddr, e.message); + + callback(1, null, messageAddr, userdata); + + this.mem.exports.wgpu_free(messageAddr); + } + + let callbacksPtr = descriptorPtr + 24 + this.mem.intSize; + + const deviceLostCallbackPtr = this.mem.loadPtr(callbacksPtr); + if (deviceLostCallbackPtr != 0) { + const deviceLostUserData = this.mem.loadPtr(callbacksPtr) + 4; + const deviceLostCallback = this.mem.exports.__indirect_function_table.get(deviceLostCallbackPtr); + + device.lost.then((info) => { + const reason = this.enums.DeviceLostReason.indexOf(info.reason); + + const messageLength = new TextEncoder().encode(info.message).length; + const messageAddr = this.mem.exports.wgpu_alloc(messageLength + 1); + this.mem.storeString(messageAddr, info.message); + + deviceLostCallback(reason, messageAddr, deviceLostUserData); + + this.mem.exports.wgpu_free(messageAddr); + }); + } + callbacksPtr += 8; + + // Skip over `nextInChain`. + callbacksPtr += 4; + + const uncapturedErrorCallbackPtr = this.mem.loadPtr(callbacksPtr); + if (uncapturedErrorCallbackPtr != 0) { + const uncapturedErrorUserData = this.mem.loadPtr(callbacksPtr + 4); + const uncapturedErrorCallback = this.mem.exports.__indirect_function_table.get(uncapturedErrorCallbackPtr); + + device.onuncapturederror = (ev) => { + let status = 4; // Unknown + if (ev.error instanceof GPUValidationError) { + status = 1; // Validation + } else if (ev.error instanceof GPUOutOfMemoryError) { + status = 2; // OutOfMemory + } else if (ev.error instanceof GPUInternalError) { + status = 3; // Internal + } + + const messageLength = new TextEncoder().encode(ev.error.message).length; + const messageAddr = this.mem.exports.wgpu_alloc(messageLength + 1); + this.mem.storeString(messageAddr, ev.error.message); + + uncapturedErrorCallback(status, messageAddr, uncapturedErrorUserData); + + this.mem.exports.wgpu_free(messageAddr); + }; } callback(0, deviceIdx, null, userdata); @@ -1918,29 +1947,6 @@ class WebGPUInterface { device.pushErrorScope(this.enums.ErrorFilter[filterInt]); }, - /** - * @param {number} deviceIdx - * @param {number} callbackPtr - * @param {number} userdata - */ - wgpuDeviceSetUncapturedErrorCallback: (deviceIdx, callbackPtr, userdata) => { - const device = this.devices.get(deviceIdx); - const callback = this.mem.exports.__indirect_function_table.get(callbackPtr); - - device.onuncapturederror = (ev) => { - console.warn(ev.error); - let status = 4; - if (error instanceof GPUValidationError) { - status = 1; - } else if (error instanceof GPUOutOfMemoryError) { - status = 2; - } else if (error instanceof GPUInternalError) { - status = 3; - } - callback(status, null, userdata); - }; - }, - ...this.devices.interface(true), /* ---------------------- Instance ---------------------- */ @@ -2646,23 +2652,23 @@ class WebGPUInterface { const formatStr = navigator.gpu.getPreferredCanvasFormat(); const format = this.enums.TextureFormat.indexOf(formatStr); - this.mem.storeUint(capabilitiesPtr + this.mem.intSize, 1); + this.mem.storeUint(capabilitiesPtr + 8, 1); const formatAddr = this.mem.exports.wgpu_alloc(4); this.mem.storeI32(formatAddr, format); - this.mem.storeI32(capabilitiesPtr + this.mem.intSize*2, formatAddr); + this.mem.storeI32(capabilitiesPtr + 8 + this.mem.intSize, formatAddr); // NOTE: present modes don't seem to actually do anything in JS, we can just give back a default FIFO though. - this.mem.storeUint(capabilitiesPtr + this.mem.intSize*3, 1); + this.mem.storeUint(capabilitiesPtr + 8 + this.mem.intSize*2, 1); const presentModesAddr = this.mem.exports.wgpu_alloc(4); this.mem.storeI32(presentModesAddr, 0); - this.mem.storeI32(capabilitiesPtr + this.mem.intSize*4, presentModesAddr); + this.mem.storeI32(capabilitiesPtr + 8 + this.mem.intSize*3, presentModesAddr); // Browser seems to support opaque (1) and premultiplied (2). - this.mem.storeUint(capabilitiesPtr + this.mem.intSize*5, 2); + this.mem.storeUint(capabilitiesPtr + 8 + this.mem.intSize*4, 2); const alphaModesAddr = this.mem.exports.wgpu_alloc(8); this.mem.storeI32(alphaModesAddr + 0, 1); // Opaque. this.mem.storeI32(alphaModesAddr + 4, 2); // premultiplied. - this.mem.storeI32(capabilitiesPtr + this.mem.intSize*6, alphaModesAddr); + this.mem.storeI32(capabilitiesPtr + 8 + this.mem.intSize*5, alphaModesAddr); }, /** @@ -2682,17 +2688,6 @@ class WebGPUInterface { /** * @param {number} surfaceIdx - * @param {number} texturePtr - * @returns {number} - */ - wgpuSurfaceGetPreferredFormat: (surfaceIdx, adapterIdx) => { - const formatStr = navigator.gpu.getPreferredCanvasFormat(); - const format = this.enums.TextureFormat.indexOf(formatStr); - return format; - }, - - /** - * @param {number} surfaceIdx */ wgpuSurfacePresent: (surfaceIdx) => { // NOTE: Not really anything to do here. diff --git a/vendor/wgpu/wgpu.odin b/vendor/wgpu/wgpu.odin index af81dde56..ff52cdcb5 100644 --- a/vendor/wgpu/wgpu.odin +++ b/vendor/wgpu/wgpu.odin @@ -13,7 +13,7 @@ when ODIN_OS == .Windows { @(private) LIB :: "lib/wgpu-windows-" + ARCH + "-" + TYPE + "/wgpu_native" + EXT when !#exists(LIB) { - #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v0.19.4.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") + #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v22.1.0.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") } foreign import libwgpu { @@ -34,7 +34,7 @@ when ODIN_OS == .Windows { @(private) LIB :: "lib/wgpu-macos-" + ARCH + "-" + TYPE + "/libwgpu_native" + EXT when !#exists(LIB) { - #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v0.19.4.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") + #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v22.1.0.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") } foreign import libwgpu { @@ -49,7 +49,7 @@ when ODIN_OS == .Windows { @(private) LIB :: "lib/wgpu-linux-" + ARCH + "-" + TYPE + "/libwgpu_native" + EXT when !#exists(LIB) { - #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v0.19.4.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") + #panic("Could not find the compiled WGPU Native library at '" + #directory + LIB + "', these can be downloaded from https://github.com/gfx-rs/wgpu-native/releases/tag/v22.1.0.1, make sure to read the README at '" + #directory + "vendor/wgpu/README.md'") } foreign import libwgpu { @@ -220,7 +220,8 @@ CullMode :: enum i32 { DeviceLostReason :: enum i32 { Undefined = 0x00000000, - Destroyed = 0x00000001, + Unknown = 0x00000001, + Destroyed = 0x00000002, } ErrorFilter :: enum i32 { @@ -264,6 +265,30 @@ FeatureName :: enum i32 { PipelineStatisticsQuery, StorageResourceBindingArray, PartiallyBoundBindingArray, + TextureFormat16bitNorm, + TextureCompressionAstcHdr, + // TODO: requires wgpu.h api change + // TimestampQueryInsidePasses, + MappablePrimaryBuffers = 0x0003000E, + BufferBindingArray, + UniformBufferAndStorageTextureArrayNonUniformIndexing, + // TODO: requires wgpu.h api change + // AddressModeClampToZero, + // AddressModeClampToBorder, + // PolygonModeLine, + // PolygonModePoint, + // ConservativeRasterization, + // ClearTexture, + // SprivShaderPassThrough, + // MultiView, + VertexAttribute64bit = 0x00030019, + TextureFormatNv12, + RayTracingAccelarationStructure, + RayQuery, + ShaderF64, + ShaderI16, + ShaderPrimitiveIndex, + ShaderEarlyDepthTest, } FilterMode :: enum i32 { @@ -520,6 +545,18 @@ TextureFormat :: enum i32 { ASTC12x10UnormSrgb = 0x0000005D, ASTC12x12Unorm = 0x0000005E, ASTC12x12UnormSrgb = 0x0000005F, + + // Native. + + // From FeatureName.TextureFormat16bitNorm + R16Unorm = 0x00030001, + R16Snorm, + Rg16Unorm, + Rg16Snorm, + Rgba16Unorm, + Rgba16Snorm, + // From FeatureName.TextureFormatNv12 + NV12, } TextureSampleType :: enum i32 { @@ -581,13 +618,13 @@ VertexStepMode :: enum i32 { VertexBufferNotUsed = 0x00000002, } -// WGSLFeatureName :: enum i32 { -// Undefined = 0x00000000, -// ReadonlyAndReadwriteStorageTextures = 0x00000001, -// Packed4x8IntegerDotProduct = 0x00000002, -// UnrestrictedPointerParameters = 0x00000003, -// PointerCompositeAccess = 0x00000004, -// } +WGSLFeatureName :: enum i32 { + Undefined = 0x00000000, + ReadonlyAndReadwriteStorageTextures = 0x00000001, + Packed4x8IntegerDotProduct = 0x00000002, + UnrestrictedPointerParameters = 0x00000003, + PointerCompositeAccess = 0x00000004, +} BufferUsage :: enum i32 { MapRead = 0x00000000, @@ -634,22 +671,18 @@ TextureUsage :: enum i32 { } TextureUsageFlags :: bit_set[TextureUsage; Flags] - -BufferMapAsyncCallback :: #type proc "c" (status: BufferMapAsyncStatus, /* NULLABLE */ userdata: rawptr) -ShaderModuleGetCompilationInfoCallback :: #type proc "c" (status: CompilationInfoRequestStatus, compilationInfo: ^CompilationInfo, /* NULLABLE */ userdata: rawptr) -DeviceCreateComputePipelineAsyncCallback :: #type proc "c" (status: CreatePipelineAsyncStatus, pipeline: ComputePipeline, message: cstring, /* NULLABLE */ userdata: rawptr) -DeviceCreateRenderPipelineAsyncCallback :: #type proc "c" (status: CreatePipelineAsyncStatus, pipeline: RenderPipeline, message: cstring, /* NULLABLE */ userdata: rawptr) +Proc :: distinct rawptr DeviceLostCallback :: #type proc "c" (reason: DeviceLostReason, message: cstring, userdata: rawptr) ErrorCallback :: #type proc "c" (type: ErrorType, message: cstring, userdata: rawptr) -Proc :: distinct rawptr - -QueueOnSubmittedWorkDoneCallback :: #type proc "c" (status: QueueWorkDoneStatus, /* NULLABLE */ userdata: rawptr) -InstanceRequestAdapterCallback :: #type proc "c" (status: RequestAdapterStatus, adapter: Adapter, message: cstring, /* NULLABLE */ userdata: rawptr) AdapterRequestDeviceCallback :: #type proc "c" (status: RequestDeviceStatus, device: Device, message: cstring, /* NULLABLE */ userdata: rawptr) - -// AdapterRequestAdapterInfoCallback :: #type proc "c" (adapterInfo: AdapterInfo, /* NULLABLE */ userdata: rawptr) +BufferMapAsyncCallback :: #type proc "c" (status: BufferMapAsyncStatus, /* NULLABLE */ userdata: rawptr) +DeviceCreateComputePipelineAsyncCallback :: #type proc "c" (status: CreatePipelineAsyncStatus, pipeline: ComputePipeline, message: cstring, /* NULLABLE */ userdata: rawptr) +DeviceCreateRenderPipelineAsyncCallback :: #type proc "c" (status: CreatePipelineAsyncStatus, pipeline: RenderPipeline, message: cstring, /* NULLABLE */ userdata: rawptr) +InstanceRequestAdapterCallback :: #type proc "c" (status: RequestAdapterStatus, adapter: Adapter, message: cstring, /* NULLABLE */ userdata: rawptr) +QueueOnSubmittedWorkDoneCallback :: #type proc "c" (status: QueueWorkDoneStatus, /* NULLABLE */ userdata: rawptr) +ShaderModuleGetCompilationInfoCallback :: #type proc "c" (status: CompilationInfoRequestStatus, compilationInfo: ^CompilationInfo, /* NULLABLE */ userdata: rawptr) ChainedStruct :: struct { next: ^ChainedStruct, @@ -661,28 +694,23 @@ ChainedStructOut :: struct { sType: SType, } -// AdapterInfo :: struct { -// next: ^ChainedStructOut, -// vendor: cstring, -// architecture: cstring, -// device: cstring, -// description: cstring, -// backendType: BackendType, -// adapterType: AdapterType, -// vendorID: u32, -// deviceID: u32, -// } - -AdapterProperties :: struct { +AdapterInfo :: struct { nextInChain: ^ChainedStructOut, - vendorID: u32, - vendorName: cstring, + vendor: cstring, architecture: cstring, - deviceID: u32, - name: cstring, - driverDescription: cstring, - adapterType: AdapterType, + device: cstring, + description: cstring, backendType: BackendType, + adapterType: AdapterType, + vendorID: u32, + deviceID: u32, +} +when ODIN_OS == .JS { + #assert(int(BackendType.WebGPU) == 2) + #assert(offset_of(AdapterInfo, backendType) == 20) + + #assert(int(AdapterType.Unknown) == 3) + #assert(offset_of(AdapterInfo, adapterType) == 24) } BindGroupEntry :: struct { @@ -943,6 +971,7 @@ StorageTextureBindingLayout :: struct { SurfaceCapabilities :: struct { nextInChain: ^ChainedStructOut, + usages: TextureUsageFlags, formatCount: uint, formats: /* const */ [^]TextureFormat `fmt:"v,formatCount"`, presentModeCount: uint, @@ -950,6 +979,16 @@ SurfaceCapabilities :: struct { alphaModeCount: uint, alphaModes: /* const */ [^]CompositeAlphaMode `fmt:"v,alphaModeCount"`, } +when ODIN_OS == .JS { + #assert(offset_of(SurfaceCapabilities, formatCount) == 8) + #assert(offset_of(SurfaceCapabilities, formats) == 8 + 1*size_of(int)) + + #assert(offset_of(SurfaceCapabilities, presentModeCount) == 8 + 2*size_of(int)) + #assert(offset_of(SurfaceCapabilities, presentModes) == 8 + 3*size_of(int)) + + #assert(offset_of(SurfaceCapabilities, alphaModeCount) == 8 + 4*size_of(int)) + #assert(offset_of(SurfaceCapabilities, alphaModes) == 8 + 5*size_of(int)) +} SurfaceConfiguration :: struct { nextInChain: ^ChainedStruct, @@ -1040,6 +1079,12 @@ TextureViewDescriptor :: struct { aspect: TextureAspect, } +UncapturedErrorCallbackInfo :: struct { + nextInChain: ^ChainedStruct, + callback: ErrorCallback, + userdata: rawptr, +} + VertexAttribute :: struct { format: VertexFormat, offset: u64, @@ -1120,12 +1165,21 @@ ProgrammableStageDescriptor :: struct { RenderPassColorAttachment :: struct { nextInChain: ^ChainedStruct, /* NULLABLE */ view: TextureView, - // depthSlice: u32, + depthSlice: u32, /* NULLABLE */ resolveTarget: TextureView, loadOp: LoadOp, storeOp: StoreOp, clearValue: Color, } +when ODIN_OS == .JS { + #assert(size_of(RenderPassColorAttachment) == 56) + #assert(offset_of(RenderPassColorAttachment, view) == 4) + #assert(offset_of(RenderPassColorAttachment, depthSlice) == 8) + #assert(offset_of(RenderPassColorAttachment, resolveTarget) == 12) + #assert(offset_of(RenderPassColorAttachment, loadOp) == 16) + #assert(offset_of(RenderPassColorAttachment, storeOp) == 20) + #assert(offset_of(RenderPassColorAttachment, clearValue) == 24) +} RequiredLimits :: struct { nextInChain: ^ChainedStruct, @@ -1194,6 +1248,10 @@ DeviceDescriptor :: struct { defaultQueue: QueueDescriptor, deviceLostCallback: DeviceLostCallback, deviceLostUserdata: rawptr, + uncapturedErrorCallbackInfo: UncapturedErrorCallbackInfo, +} +when ODIN_OS == .JS { + #assert(offset_of(DeviceDescriptor, deviceLostCallback) == 24 + size_of(int)) } RenderPassDescriptor :: struct { @@ -1245,16 +1303,18 @@ foreign libwgpu { // Methods of Adapter @(link_name="wgpuAdapterEnumerateFeatures") RawAdapterEnumerateFeatures :: proc(adapter: Adapter, features: [^]FeatureName) -> uint --- + @(link_name="wgpuAdapterGetInfo") + RawAdapterGetInfo :: proc(adapter: Adapter, info: ^AdapterInfo) --- @(link_name="wgpuAdapterGetLimits") RawAdapterGetLimits :: proc(adapter: Adapter, limits: ^SupportedLimits) -> b32 --- - @(link_name="wgpuAdapterGetProperties") - RawAdapterGetProperties :: proc(adapter: Adapter, properties: ^AdapterProperties) --- AdapterHasFeature :: proc(adapter: Adapter, feature: FeatureName) -> b32 --- - // AdapterRequestAdapterInfo :: proc(adapter: Adapter, callback: AdapterRequestAdapterInfoCallback, /* NULLABLE */ userdata: rawptr) --- AdapterRequestDevice :: proc(adapter: Adapter, /* NULLABLE */ descriptor: /* const */ ^DeviceDescriptor, callback: AdapterRequestDeviceCallback, /* NULLABLE */ userdata: rawptr = nil) --- AdapterReference :: proc(adapter: Adapter) --- AdapterRelease :: proc(adapter: Adapter) --- + // Procs of AdapterInfo + AdapterInfoFreeMembers :: proc(adapterInfo: AdapterInfo) --- + // Methods of BindGroup BindGroupSetLabel :: proc(bindGroup: BindGroup, label: cstring) --- BindGroupReference :: proc(bindGroup: BindGroup) --- @@ -1348,13 +1408,12 @@ foreign libwgpu { DevicePopErrorScope :: proc(device: Device, callback: ErrorCallback, userdata: rawptr) --- DevicePushErrorScope :: proc(device: Device, filter: ErrorFilter) --- DeviceSetLabel :: proc(device: Device, label: cstring) --- - DeviceSetUncapturedErrorCallback :: proc(device: Device, callback: ErrorCallback, userdata: rawptr) --- DeviceReference :: proc(device: Device) --- DeviceRelease :: proc(device: Device) --- // Methods of Instance InstanceCreateSurface :: proc(instance: Instance, descriptor: /* const */ ^SurfaceDescriptor) -> Surface --- - // InstanceHasWGSLLanguageFeature :: proc(instance: Instance, feature: WGSLFeatureName) -> b32 --- + InstanceHasWGSLLanguageFeature :: proc(instance: Instance, feature: WGSLFeatureName) -> b32 --- InstanceProcessEvents :: proc(instance: Instance) --- InstanceRequestAdapter :: proc(instance: Instance, /* NULLABLE */ options: /* const */ ^RequestAdapterOptions, callback: InstanceRequestAdapterCallback, /* NULLABLE */ userdata: rawptr = nil) --- InstanceReference :: proc(instance: Instance) --- @@ -1455,9 +1514,8 @@ foreign libwgpu { RawSurfaceGetCapabilities :: proc(surface: Surface, adapter: Adapter, capabilities: ^SurfaceCapabilities) --- @(link_name="wgpuSurfaceGetCurrentTexture") RawSurfaceGetCurrentTexture :: proc(surface: Surface, surfaceTexture: ^SurfaceTexture) --- - SurfaceGetPreferredFormat :: proc(surface: Surface, adapter: Adapter) -> TextureFormat --- SurfacePresent :: proc(surface: Surface) --- - // SurfaceSetLabel :: proc(surface: Surface, label: cstring) --- + SurfaceSetLabel :: proc(surface: Surface, label: cstring) --- SurfaceUnconfigure :: proc(surface: Surface) --- SurfaceReference :: proc(surface: Surface) --- SurfaceRelease :: proc(surface: Surface) --- @@ -1500,8 +1558,8 @@ AdapterGetLimits :: proc(adapter: Adapter) -> (limits: SupportedLimits, ok: bool return } -AdapterGetProperties :: proc(adapter: Adapter) -> (properties: AdapterProperties) { - RawAdapterGetProperties(adapter, &properties) +AdapterGetInfo :: proc(adapter: Adapter) -> (info: AdapterInfo) { + RawAdapterGetInfo(adapter, &info) return } @@ -1634,8 +1692,8 @@ SurfaceGetCurrentTexture :: proc(surface: Surface) -> (surface_texture: SurfaceT // WGPU Native bindings -BINDINGS_VERSION :: [4]u8{0, 19, 4, 1} -BINDINGS_VERSION_STRING :: "0.19.4.1" +BINDINGS_VERSION :: [4]u8{22, 1, 0, 1} +BINDINGS_VERSION_STRING :: "22.1.0.1" when ODIN_OS != .JS { @(private="file", init) diff --git a/vendor/x11/xlib/xlib_keysym.odin b/vendor/x11/xlib/xlib_keysym.odin index 594d966a4..acb16c530 100644 --- a/vendor/x11/xlib/xlib_keysym.odin +++ b/vendor/x11/xlib/xlib_keysym.odin @@ -2,1680 +2,1680 @@ package xlib KeySym :: enum u32 { - XK_BackSpace = 0xff08, /* Back space, back char */ - XK_Tab = 0xff09, - XK_Linefeed = 0xff0a, /* Linefeed, LF */ - XK_Clear = 0xff0b, - XK_Return = 0xff0d, /* Return, enter */ - XK_Pause = 0xff13, /* Pause, hold */ - XK_Scroll_Lock = 0xff14, - XK_Sys_Req = 0xff15, - XK_Escape = 0xff1b, - XK_Delete = 0xffff, /* Delete, rubout */ - XK_Multi_key = 0xff20, /* Multi-key character compose */ - XK_Codeinput = 0xff37, - XK_SingleCandidate = 0xff3c, - XK_MultipleCandidate = 0xff3d, - XK_PreviousCandidate = 0xff3e, - XK_Kanji = 0xff21, /* Kanji, Kanji convert */ - XK_Muhenkan = 0xff22, /* Cancel Conversion */ - XK_Henkan_Mode = 0xff23, /* Start/Stop Conversion */ - XK_Henkan = 0xff23, /* Alias for Henkan_Mode */ - XK_Romaji = 0xff24, /* to Romaji */ - XK_Hiragana = 0xff25, /* to Hiragana */ - XK_Katakana = 0xff26, /* to Katakana */ - XK_Hiragana_Katakana = 0xff27, /* Hiragana/Katakana toggle */ - XK_Zenkaku = 0xff28, /* to Zenkaku */ - XK_Hankaku = 0xff29, /* to Hankaku */ - XK_Zenkaku_Hankaku = 0xff2a, /* Zenkaku/Hankaku toggle */ - XK_Touroku = 0xff2b, /* Add to Dictionary */ - XK_Massyo = 0xff2c, /* Delete from Dictionary */ - XK_Kana_Lock = 0xff2d, /* Kana Lock */ - XK_Kana_Shift = 0xff2e, /* Kana Shift */ - XK_Eisu_Shift = 0xff2f, /* Alphanumeric Shift */ - XK_Eisu_toggle = 0xff30, /* Alphanumeric toggle */ - XK_Kanji_Bangou = 0xff37, /* Codeinput */ - XK_Zen_Koho = 0xff3d, /* Multiple/All Candidate(s) */ - XK_Mae_Koho = 0xff3e, /* Previous Candidate */ - XK_Home = 0xff50, - XK_Left = 0xff51, /* Move left, left arrow */ - XK_Up = 0xff52, /* Move up, up arrow */ - XK_Right = 0xff53, /* Move right, right arrow */ - XK_Down = 0xff54, /* Move down, down arrow */ - XK_Prior = 0xff55, /* Prior, previous */ - XK_Page_Up = 0xff55, - XK_Next = 0xff56, /* Next */ - XK_Page_Down = 0xff56, - XK_End = 0xff57, /* EOL */ - XK_Begin = 0xff58, /* BOL */ - XK_Select = 0xff60, /* Select, mark */ - XK_Print = 0xff61, - XK_Execute = 0xff62, /* Execute, run, do */ - XK_Insert = 0xff63, /* Insert, insert here */ - XK_Undo = 0xff65, - XK_Redo = 0xff66, /* Redo, again */ - XK_Menu = 0xff67, - XK_Find = 0xff68, /* Find, search */ - XK_Cancel = 0xff69, /* Cancel, stop, abort, exit */ - XK_Help = 0xff6a, /* Help */ - XK_Break = 0xff6b, - XK_Mode_switch = 0xff7e, /* Character set switch */ - XK_script_switch = 0xff7e, /* Alias for mode_switch */ - XK_Num_Lock = 0xff7f, - XK_KP_Space = 0xff80, /* Space */ - XK_KP_Tab = 0xff89, - XK_KP_Enter = 0xff8d, /* Enter */ - XK_KP_F1 = 0xff91, /* PF1, KP_A, ... */ - XK_KP_F2 = 0xff92, - XK_KP_F3 = 0xff93, - XK_KP_F4 = 0xff94, - XK_KP_Home = 0xff95, - XK_KP_Left = 0xff96, - XK_KP_Up = 0xff97, - XK_KP_Right = 0xff98, - XK_KP_Down = 0xff99, - XK_KP_Prior = 0xff9a, - XK_KP_Page_Up = 0xff9a, - XK_KP_Next = 0xff9b, - XK_KP_Page_Down = 0xff9b, - XK_KP_End = 0xff9c, - XK_KP_Begin = 0xff9d, - XK_KP_Insert = 0xff9e, - XK_KP_Delete = 0xff9f, - XK_KP_Equal = 0xffbd, /* Equals */ - XK_KP_Multiply = 0xffaa, - XK_KP_Add = 0xffab, - XK_KP_Separator = 0xffac, /* Separator, often comma */ - XK_KP_Subtract = 0xffad, - XK_KP_Decimal = 0xffae, - XK_KP_Divide = 0xffaf, - XK_KP_0 = 0xffb0, - XK_KP_1 = 0xffb1, - XK_KP_2 = 0xffb2, - XK_KP_3 = 0xffb3, - XK_KP_4 = 0xffb4, - XK_KP_5 = 0xffb5, - XK_KP_6 = 0xffb6, - XK_KP_7 = 0xffb7, - XK_KP_8 = 0xffb8, - XK_KP_9 = 0xffb9, - XK_F1 = 0xffbe, - XK_F2 = 0xffbf, - XK_F3 = 0xffc0, - XK_F4 = 0xffc1, - XK_F5 = 0xffc2, - XK_F6 = 0xffc3, - XK_F7 = 0xffc4, - XK_F8 = 0xffc5, - XK_F9 = 0xffc6, - XK_F10 = 0xffc7, - XK_F11 = 0xffc8, - XK_L1 = 0xffc8, - XK_F12 = 0xffc9, - XK_L2 = 0xffc9, - XK_F13 = 0xffca, - XK_L3 = 0xffca, - XK_F14 = 0xffcb, - XK_L4 = 0xffcb, - XK_F15 = 0xffcc, - XK_L5 = 0xffcc, - XK_F16 = 0xffcd, - XK_L6 = 0xffcd, - XK_F17 = 0xffce, - XK_L7 = 0xffce, - XK_F18 = 0xffcf, - XK_L8 = 0xffcf, - XK_F19 = 0xffd0, - XK_L9 = 0xffd0, - XK_F20 = 0xffd1, - XK_L10 = 0xffd1, - XK_F21 = 0xffd2, - XK_R1 = 0xffd2, - XK_F22 = 0xffd3, - XK_R2 = 0xffd3, - XK_F23 = 0xffd4, - XK_R3 = 0xffd4, - XK_F24 = 0xffd5, - XK_R4 = 0xffd5, - XK_F25 = 0xffd6, - XK_R5 = 0xffd6, - XK_F26 = 0xffd7, - XK_R6 = 0xffd7, - XK_F27 = 0xffd8, - XK_R7 = 0xffd8, - XK_F28 = 0xffd9, - XK_R8 = 0xffd9, - XK_F29 = 0xffda, - XK_R9 = 0xffda, - XK_F30 = 0xffdb, - XK_R10 = 0xffdb, - XK_F31 = 0xffdc, - XK_R11 = 0xffdc, - XK_F32 = 0xffdd, - XK_R12 = 0xffdd, - XK_F33 = 0xffde, - XK_R13 = 0xffde, - XK_F34 = 0xffdf, - XK_R14 = 0xffdf, - XK_F35 = 0xffe0, - XK_R15 = 0xffe0, - XK_Shift_L = 0xffe1, /* Left shift */ - XK_Shift_R = 0xffe2, /* Right shift */ - XK_Control_L = 0xffe3, /* Left control */ - XK_Control_R = 0xffe4, /* Right control */ - XK_Caps_Lock = 0xffe5, /* Caps lock */ - XK_Shift_Lock = 0xffe6, /* Shift lock */ - XK_Meta_L = 0xffe7, /* Left meta */ - XK_Meta_R = 0xffe8, /* Right meta */ - XK_Alt_L = 0xffe9, /* Left alt */ - XK_Alt_R = 0xffea, /* Right alt */ - XK_Super_L = 0xffeb, /* Left super */ - XK_Super_R = 0xffec, /* Right super */ - XK_Hyper_L = 0xffed, /* Left hyper */ - XK_Hyper_R = 0xffee, /* Right hyper */ - XK_ISO_Lock = 0xfe01, - XK_ISO_Level2_Latch = 0xfe02, - XK_ISO_Level3_Shift = 0xfe03, - XK_ISO_Level3_Latch = 0xfe04, - XK_ISO_Level3_Lock = 0xfe05, - XK_ISO_Group_Shift = 0xff7e, /* Alias for mode_switch */ - XK_ISO_Group_Latch = 0xfe06, - XK_ISO_Group_Lock = 0xfe07, - XK_ISO_Next_Group = 0xfe08, - XK_ISO_Next_Group_Lock = 0xfe09, - XK_ISO_Prev_Group = 0xfe0a, - XK_ISO_Prev_Group_Lock = 0xfe0b, - XK_ISO_First_Group = 0xfe0c, - XK_ISO_First_Group_Lock = 0xfe0d, - XK_ISO_Last_Group = 0xfe0e, - XK_ISO_Last_Group_Lock = 0xfe0f, - XK_ISO_Left_Tab = 0xfe20, - XK_ISO_Move_Line_Up = 0xfe21, - XK_ISO_Move_Line_Down = 0xfe22, - XK_ISO_Partial_Line_Up = 0xfe23, - XK_ISO_Partial_Line_Down = 0xfe24, - XK_ISO_Partial_Space_Left = 0xfe25, - XK_ISO_Partial_Space_Right = 0xfe26, - XK_ISO_Set_Margin_Left = 0xfe27, - XK_ISO_Set_Margin_Right = 0xfe28, - XK_ISO_Release_Margin_Left = 0xfe29, - XK_ISO_Release_Margin_Right = 0xfe2a, - XK_ISO_Release_Both_Margins = 0xfe2b, - XK_ISO_Fast_Cursor_Left = 0xfe2c, - XK_ISO_Fast_Cursor_Right = 0xfe2d, - XK_ISO_Fast_Cursor_Up = 0xfe2e, - XK_ISO_Fast_Cursor_Down = 0xfe2f, - XK_ISO_Continuous_Underline = 0xfe30, - XK_ISO_Discontinuous_Underline = 0xfe31, - XK_ISO_Emphasize = 0xfe32, - XK_ISO_Center_Object = 0xfe33, - XK_ISO_Enter = 0xfe34, - XK_dead_grave = 0xfe50, - XK_dead_acute = 0xfe51, - XK_dead_circumflex = 0xfe52, - XK_dead_tilde = 0xfe53, - XK_dead_macron = 0xfe54, - XK_dead_breve = 0xfe55, - XK_dead_abovedot = 0xfe56, - XK_dead_diaeresis = 0xfe57, - XK_dead_abovering = 0xfe58, - XK_dead_doubleacute = 0xfe59, - XK_dead_caron = 0xfe5a, - XK_dead_cedilla = 0xfe5b, - XK_dead_ogonek = 0xfe5c, - XK_dead_iota = 0xfe5d, - XK_dead_voiced_sound = 0xfe5e, - XK_dead_semivoiced_sound = 0xfe5f, - XK_dead_belowdot = 0xfe60, - XK_dead_hook = 0xfe61, - XK_dead_horn = 0xfe62, - XK_First_Virtual_Screen = 0xfed0, - XK_Prev_Virtual_Screen = 0xfed1, - XK_Next_Virtual_Screen = 0xfed2, - XK_Last_Virtual_Screen = 0xfed4, - XK_Terminate_Server = 0xfed5, - XK_AccessX_Enable = 0xfe70, - XK_AccessX_Feedback_Enable = 0xfe71, - XK_RepeatKeys_Enable = 0xfe72, - XK_SlowKeys_Enable = 0xfe73, - XK_BounceKeys_Enable = 0xfe74, - XK_StickyKeys_Enable = 0xfe75, - XK_MouseKeys_Enable = 0xfe76, - XK_MouseKeys_Accel_Enable = 0xfe77, - XK_Overlay1_Enable = 0xfe78, - XK_Overlay2_Enable = 0xfe79, - XK_AudibleBell_Enable = 0xfe7a, - XK_Pointer_Left = 0xfee0, - XK_Pointer_Right = 0xfee1, - XK_Pointer_Up = 0xfee2, - XK_Pointer_Down = 0xfee3, - XK_Pointer_UpLeft = 0xfee4, - XK_Pointer_UpRight = 0xfee5, - XK_Pointer_DownLeft = 0xfee6, - XK_Pointer_DownRight = 0xfee7, - XK_Pointer_Button_Dflt = 0xfee8, - XK_Pointer_Button1 = 0xfee9, - XK_Pointer_Button2 = 0xfeea, - XK_Pointer_Button3 = 0xfeeb, - XK_Pointer_Button4 = 0xfeec, - XK_Pointer_Button5 = 0xfeed, - XK_Pointer_DblClick_Dflt = 0xfeee, - XK_Pointer_DblClick1 = 0xfeef, - XK_Pointer_DblClick2 = 0xfef0, - XK_Pointer_DblClick3 = 0xfef1, - XK_Pointer_DblClick4 = 0xfef2, - XK_Pointer_DblClick5 = 0xfef3, - XK_Pointer_Drag_Dflt = 0xfef4, - XK_Pointer_Drag1 = 0xfef5, - XK_Pointer_Drag2 = 0xfef6, - XK_Pointer_Drag3 = 0xfef7, - XK_Pointer_Drag4 = 0xfef8, - XK_Pointer_Drag5 = 0xfefd, - XK_Pointer_EnableKeys = 0xfef9, - XK_Pointer_Accelerate = 0xfefa, - XK_Pointer_DfltBtnNext = 0xfefb, - XK_Pointer_DfltBtnPrev = 0xfefc, - XK_3270_Duplicate = 0xfd01, - XK_3270_FieldMark = 0xfd02, - XK_3270_Right2 = 0xfd03, - XK_3270_Left2 = 0xfd04, - XK_3270_BackTab = 0xfd05, - XK_3270_EraseEOF = 0xfd06, - XK_3270_EraseInput = 0xfd07, - XK_3270_Reset = 0xfd08, - XK_3270_Quit = 0xfd09, - XK_3270_PA1 = 0xfd0a, - XK_3270_PA2 = 0xfd0b, - XK_3270_PA3 = 0xfd0c, - XK_3270_Test = 0xfd0d, - XK_3270_Attn = 0xfd0e, - XK_3270_CursorBlink = 0xfd0f, - XK_3270_AltCursor = 0xfd10, - XK_3270_KeyClick = 0xfd11, - XK_3270_Jump = 0xfd12, - XK_3270_Ident = 0xfd13, - XK_3270_Rule = 0xfd14, - XK_3270_Copy = 0xfd15, - XK_3270_Play = 0xfd16, - XK_3270_Setup = 0xfd17, - XK_3270_Record = 0xfd18, - XK_3270_ChangeScreen = 0xfd19, - XK_3270_DeleteWord = 0xfd1a, - XK_3270_ExSelect = 0xfd1b, - XK_3270_CursorSelect = 0xfd1c, - XK_3270_PrintScreen = 0xfd1d, - XK_3270_Enter = 0xfd1e, - XK_space = 0x0020, /* U+0020 SPACE */ - XK_exclam = 0x0021, /* U+0021 EXCLAMATION MARK */ - XK_quotedbl = 0x0022, /* U+0022 QUOTATION MARK */ - XK_numbersign = 0x0023, /* U+0023 NUMBER SIGN */ - XK_dollar = 0x0024, /* U+0024 DOLLAR SIGN */ - XK_percent = 0x0025, /* U+0025 PERCENT SIGN */ - XK_ampersand = 0x0026, /* U+0026 AMPERSAND */ - XK_apostrophe = 0x0027, /* U+0027 APOSTROPHE */ - XK_quoteright = 0x0027, /* deprecated */ - XK_parenleft = 0x0028, /* U+0028 LEFT PARENTHESIS */ - XK_parenright = 0x0029, /* U+0029 RIGHT PARENTHESIS */ - XK_asterisk = 0x002a, /* U+002A ASTERISK */ - XK_plus = 0x002b, /* U+002B PLUS SIGN */ - XK_comma = 0x002c, /* U+002C COMMA */ - XK_minus = 0x002d, /* U+002D HYPHEN-MINUS */ - XK_period = 0x002e, /* U+002E FULL STOP */ - XK_slash = 0x002f, /* U+002F SOLIDUS */ - XK_0 = 0x0030, /* U+0030 DIGIT ZERO */ - XK_1 = 0x0031, /* U+0031 DIGIT ONE */ - XK_2 = 0x0032, /* U+0032 DIGIT TWO */ - XK_3 = 0x0033, /* U+0033 DIGIT THREE */ - XK_4 = 0x0034, /* U+0034 DIGIT FOUR */ - XK_5 = 0x0035, /* U+0035 DIGIT FIVE */ - XK_6 = 0x0036, /* U+0036 DIGIT SIX */ - XK_7 = 0x0037, /* U+0037 DIGIT SEVEN */ - XK_8 = 0x0038, /* U+0038 DIGIT EIGHT */ - XK_9 = 0x0039, /* U+0039 DIGIT NINE */ - XK_colon = 0x003a, /* U+003A COLON */ - XK_semicolon = 0x003b, /* U+003B SEMICOLON */ - XK_less = 0x003c, /* U+003C LESS-THAN SIGN */ - XK_equal = 0x003d, /* U+003D EQUALS SIGN */ - XK_greater = 0x003e, /* U+003E GREATER-THAN SIGN */ - XK_question = 0x003f, /* U+003F QUESTION MARK */ - XK_at = 0x0040, /* U+0040 COMMERCIAL AT */ - XK_A = 0x0041, /* U+0041 LATIN CAPITAL LETTER A */ - XK_B = 0x0042, /* U+0042 LATIN CAPITAL LETTER B */ - XK_C = 0x0043, /* U+0043 LATIN CAPITAL LETTER C */ - XK_D = 0x0044, /* U+0044 LATIN CAPITAL LETTER D */ - XK_E = 0x0045, /* U+0045 LATIN CAPITAL LETTER E */ - XK_F = 0x0046, /* U+0046 LATIN CAPITAL LETTER F */ - XK_G = 0x0047, /* U+0047 LATIN CAPITAL LETTER G */ - XK_H = 0x0048, /* U+0048 LATIN CAPITAL LETTER H */ - XK_I = 0x0049, /* U+0049 LATIN CAPITAL LETTER I */ - XK_J = 0x004a, /* U+004A LATIN CAPITAL LETTER J */ - XK_K = 0x004b, /* U+004B LATIN CAPITAL LETTER K */ - XK_L = 0x004c, /* U+004C LATIN CAPITAL LETTER L */ - XK_M = 0x004d, /* U+004D LATIN CAPITAL LETTER M */ - XK_N = 0x004e, /* U+004E LATIN CAPITAL LETTER N */ - XK_O = 0x004f, /* U+004F LATIN CAPITAL LETTER O */ - XK_P = 0x0050, /* U+0050 LATIN CAPITAL LETTER P */ - XK_Q = 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */ - XK_R = 0x0052, /* U+0052 LATIN CAPITAL LETTER R */ - XK_S = 0x0053, /* U+0053 LATIN CAPITAL LETTER S */ - XK_T = 0x0054, /* U+0054 LATIN CAPITAL LETTER T */ - XK_U = 0x0055, /* U+0055 LATIN CAPITAL LETTER U */ - XK_V = 0x0056, /* U+0056 LATIN CAPITAL LETTER V */ - XK_W = 0x0057, /* U+0057 LATIN CAPITAL LETTER W */ - XK_X = 0x0058, /* U+0058 LATIN CAPITAL LETTER X */ - XK_Y = 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */ - XK_Z = 0x005a, /* U+005A LATIN CAPITAL LETTER Z */ - XK_bracketleft = 0x005b, /* U+005B LEFT SQUARE BRACKET */ - XK_backslash = 0x005c, /* U+005C REVERSE SOLIDUS */ - XK_bracketright = 0x005d, /* U+005D RIGHT SQUARE BRACKET */ - XK_asciicircum = 0x005e, /* U+005E CIRCUMFLEX ACCENT */ - XK_underscore = 0x005f, /* U+005F LOW LINE */ - XK_grave = 0x0060, /* U+0060 GRAVE ACCENT */ - XK_quoteleft = 0x0060, /* deprecated */ - XK_a = 0x0061, /* U+0061 LATIN SMALL LETTER A */ - XK_b = 0x0062, /* U+0062 LATIN SMALL LETTER B */ - XK_c = 0x0063, /* U+0063 LATIN SMALL LETTER C */ - XK_d = 0x0064, /* U+0064 LATIN SMALL LETTER D */ - XK_e = 0x0065, /* U+0065 LATIN SMALL LETTER E */ - XK_f = 0x0066, /* U+0066 LATIN SMALL LETTER F */ - XK_g = 0x0067, /* U+0067 LATIN SMALL LETTER G */ - XK_h = 0x0068, /* U+0068 LATIN SMALL LETTER H */ - XK_i = 0x0069, /* U+0069 LATIN SMALL LETTER I */ - XK_j = 0x006a, /* U+006A LATIN SMALL LETTER J */ - XK_k = 0x006b, /* U+006B LATIN SMALL LETTER K */ - XK_l = 0x006c, /* U+006C LATIN SMALL LETTER L */ - XK_m = 0x006d, /* U+006D LATIN SMALL LETTER M */ - XK_n = 0x006e, /* U+006E LATIN SMALL LETTER N */ - XK_o = 0x006f, /* U+006F LATIN SMALL LETTER O */ - XK_p = 0x0070, /* U+0070 LATIN SMALL LETTER P */ - XK_q = 0x0071, /* U+0071 LATIN SMALL LETTER Q */ - XK_r = 0x0072, /* U+0072 LATIN SMALL LETTER R */ - XK_s = 0x0073, /* U+0073 LATIN SMALL LETTER S */ - XK_t = 0x0074, /* U+0074 LATIN SMALL LETTER T */ - XK_u = 0x0075, /* U+0075 LATIN SMALL LETTER U */ - XK_v = 0x0076, /* U+0076 LATIN SMALL LETTER V */ - XK_w = 0x0077, /* U+0077 LATIN SMALL LETTER W */ - XK_x = 0x0078, /* U+0078 LATIN SMALL LETTER X */ - XK_y = 0x0079, /* U+0079 LATIN SMALL LETTER Y */ - XK_z = 0x007a, /* U+007A LATIN SMALL LETTER Z */ - XK_braceleft = 0x007b, /* U+007B LEFT CURLY BRACKET */ - XK_bar = 0x007c, /* U+007C VERTICAL LINE */ - XK_braceright = 0x007d, /* U+007D RIGHT CURLY BRACKET */ - XK_asciitilde = 0x007e, /* U+007E TILDE */ - XK_nobreakspace = 0x00a0, /* U+00A0 NO-BREAK SPACE */ - XK_exclamdown = 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */ - XK_cent = 0x00a2, /* U+00A2 CENT SIGN */ - XK_sterling = 0x00a3, /* U+00A3 POUND SIGN */ - XK_currency = 0x00a4, /* U+00A4 CURRENCY SIGN */ - XK_yen = 0x00a5, /* U+00A5 YEN SIGN */ - XK_brokenbar = 0x00a6, /* U+00A6 BROKEN BAR */ - XK_section = 0x00a7, /* U+00A7 SECTION SIGN */ - XK_diaeresis = 0x00a8, /* U+00A8 DIAERESIS */ - XK_copyright = 0x00a9, /* U+00A9 COPYRIGHT SIGN */ - XK_ordfeminine = 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */ - XK_guillemotleft = 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ - XK_notsign = 0x00ac, /* U+00AC NOT SIGN */ - XK_hyphen = 0x00ad, /* U+00AD SOFT HYPHEN */ - XK_registered = 0x00ae, /* U+00AE REGISTERED SIGN */ - XK_macron = 0x00af, /* U+00AF MACRON */ - XK_degree = 0x00b0, /* U+00B0 DEGREE SIGN */ - XK_plusminus = 0x00b1, /* U+00B1 PLUS-MINUS SIGN */ - XK_twosuperior = 0x00b2, /* U+00B2 SUPERSCRIPT TWO */ - XK_threesuperior = 0x00b3, /* U+00B3 SUPERSCRIPT THREE */ - XK_acute = 0x00b4, /* U+00B4 ACUTE ACCENT */ - XK_mu = 0x00b5, /* U+00B5 MICRO SIGN */ - XK_paragraph = 0x00b6, /* U+00B6 PILCROW SIGN */ - XK_periodcentered = 0x00b7, /* U+00B7 MIDDLE DOT */ - XK_cedilla = 0x00b8, /* U+00B8 CEDILLA */ - XK_onesuperior = 0x00b9, /* U+00B9 SUPERSCRIPT ONE */ - XK_masculine = 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */ - XK_guillemotright = 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ - XK_onequarter = 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */ - XK_onehalf = 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */ - XK_threequarters = 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */ - XK_questiondown = 0x00bf, /* U+00BF INVERTED QUESTION MARK */ - XK_Agrave = 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ - XK_Aacute = 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ - XK_Acircumflex = 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ - XK_Atilde = 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ - XK_Adiaeresis = 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ - XK_Aring = 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ - XK_AE = 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */ - XK_Ccedilla = 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ - XK_Egrave = 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ - XK_Eacute = 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ - XK_Ecircumflex = 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ - XK_Ediaeresis = 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ - XK_Igrave = 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ - XK_Iacute = 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ - XK_Icircumflex = 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ - XK_Idiaeresis = 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ - XK_ETH = 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */ - XK_Eth = 0x00d0, /* deprecated */ - XK_Ntilde = 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ - XK_Ograve = 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ - XK_Oacute = 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ - XK_Ocircumflex = 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ - XK_Otilde = 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ - XK_Odiaeresis = 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ - XK_multiply = 0x00d7, /* U+00D7 MULTIPLICATION SIGN */ - XK_Oslash = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ - XK_Ooblique = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ - XK_Ugrave = 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ - XK_Uacute = 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ - XK_Ucircumflex = 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ - XK_Udiaeresis = 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ - XK_Yacute = 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ - XK_THORN = 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */ - XK_Thorn = 0x00de, /* deprecated */ - XK_ssharp = 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */ - XK_agrave = 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ - XK_aacute = 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ - XK_acircumflex = 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ - XK_atilde = 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ - XK_adiaeresis = 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ - XK_aring = 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ - XK_ae = 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */ - XK_ccedilla = 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ - XK_egrave = 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ - XK_eacute = 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ - XK_ecircumflex = 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ - XK_ediaeresis = 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ - XK_igrave = 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ - XK_iacute = 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ - XK_icircumflex = 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ - XK_idiaeresis = 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ - XK_eth = 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */ - XK_ntilde = 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ - XK_ograve = 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ - XK_oacute = 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ - XK_ocircumflex = 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ - XK_otilde = 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ - XK_odiaeresis = 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ - XK_division = 0x00f7, /* U+00F7 DIVISION SIGN */ - XK_oslash = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ - XK_ooblique = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ - XK_ugrave = 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ - XK_uacute = 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ - XK_ucircumflex = 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ - XK_udiaeresis = 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ - XK_yacute = 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ - XK_thorn = 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */ - XK_ydiaeresis = 0x00ff, /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ - XK_Aogonek = 0x01a1, /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */ - XK_breve = 0x01a2, /* U+02D8 BREVE */ - XK_Lstroke = 0x01a3, /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */ - XK_Lcaron = 0x01a5, /* U+013D LATIN CAPITAL LETTER L WITH CARON */ - XK_Sacute = 0x01a6, /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */ - XK_Scaron = 0x01a9, /* U+0160 LATIN CAPITAL LETTER S WITH CARON */ - XK_Scedilla = 0x01aa, /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */ - XK_Tcaron = 0x01ab, /* U+0164 LATIN CAPITAL LETTER T WITH CARON */ - XK_Zacute = 0x01ac, /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */ - XK_Zcaron = 0x01ae, /* U+017D LATIN CAPITAL LETTER Z WITH CARON */ - XK_Zabovedot = 0x01af, /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */ - XK_aogonek = 0x01b1, /* U+0105 LATIN SMALL LETTER A WITH OGONEK */ - XK_ogonek = 0x01b2, /* U+02DB OGONEK */ - XK_lstroke = 0x01b3, /* U+0142 LATIN SMALL LETTER L WITH STROKE */ - XK_lcaron = 0x01b5, /* U+013E LATIN SMALL LETTER L WITH CARON */ - XK_sacute = 0x01b6, /* U+015B LATIN SMALL LETTER S WITH ACUTE */ - XK_caron = 0x01b7, /* U+02C7 CARON */ - XK_scaron = 0x01b9, /* U+0161 LATIN SMALL LETTER S WITH CARON */ - XK_scedilla = 0x01ba, /* U+015F LATIN SMALL LETTER S WITH CEDILLA */ - XK_tcaron = 0x01bb, /* U+0165 LATIN SMALL LETTER T WITH CARON */ - XK_zacute = 0x01bc, /* U+017A LATIN SMALL LETTER Z WITH ACUTE */ - XK_doubleacute = 0x01bd, /* U+02DD DOUBLE ACUTE ACCENT */ - XK_zcaron = 0x01be, /* U+017E LATIN SMALL LETTER Z WITH CARON */ - XK_zabovedot = 0x01bf, /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */ - XK_Racute = 0x01c0, /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */ - XK_Abreve = 0x01c3, /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */ - XK_Lacute = 0x01c5, /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */ - XK_Cacute = 0x01c6, /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */ - XK_Ccaron = 0x01c8, /* U+010C LATIN CAPITAL LETTER C WITH CARON */ - XK_Eogonek = 0x01ca, /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */ - XK_Ecaron = 0x01cc, /* U+011A LATIN CAPITAL LETTER E WITH CARON */ - XK_Dcaron = 0x01cf, /* U+010E LATIN CAPITAL LETTER D WITH CARON */ - XK_Dstroke = 0x01d0, /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */ - XK_Nacute = 0x01d1, /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */ - XK_Ncaron = 0x01d2, /* U+0147 LATIN CAPITAL LETTER N WITH CARON */ - XK_Odoubleacute = 0x01d5, /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ - XK_Rcaron = 0x01d8, /* U+0158 LATIN CAPITAL LETTER R WITH CARON */ - XK_Uring = 0x01d9, /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */ - XK_Udoubleacute = 0x01db, /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ - XK_Tcedilla = 0x01de, /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */ - XK_racute = 0x01e0, /* U+0155 LATIN SMALL LETTER R WITH ACUTE */ - XK_abreve = 0x01e3, /* U+0103 LATIN SMALL LETTER A WITH BREVE */ - XK_lacute = 0x01e5, /* U+013A LATIN SMALL LETTER L WITH ACUTE */ - XK_cacute = 0x01e6, /* U+0107 LATIN SMALL LETTER C WITH ACUTE */ - XK_ccaron = 0x01e8, /* U+010D LATIN SMALL LETTER C WITH CARON */ - XK_eogonek = 0x01ea, /* U+0119 LATIN SMALL LETTER E WITH OGONEK */ - XK_ecaron = 0x01ec, /* U+011B LATIN SMALL LETTER E WITH CARON */ - XK_dcaron = 0x01ef, /* U+010F LATIN SMALL LETTER D WITH CARON */ - XK_dstroke = 0x01f0, /* U+0111 LATIN SMALL LETTER D WITH STROKE */ - XK_nacute = 0x01f1, /* U+0144 LATIN SMALL LETTER N WITH ACUTE */ - XK_ncaron = 0x01f2, /* U+0148 LATIN SMALL LETTER N WITH CARON */ - XK_odoubleacute = 0x01f5, /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */ - XK_udoubleacute = 0x01fb, /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */ - XK_rcaron = 0x01f8, /* U+0159 LATIN SMALL LETTER R WITH CARON */ - XK_uring = 0x01f9, /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */ - XK_tcedilla = 0x01fe, /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */ - XK_abovedot = 0x01ff, /* U+02D9 DOT ABOVE */ - XK_Hstroke = 0x02a1, /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */ - XK_Hcircumflex = 0x02a6, /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ - XK_Iabovedot = 0x02a9, /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ - XK_Gbreve = 0x02ab, /* U+011E LATIN CAPITAL LETTER G WITH BREVE */ - XK_Jcircumflex = 0x02ac, /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ - XK_hstroke = 0x02b1, /* U+0127 LATIN SMALL LETTER H WITH STROKE */ - XK_hcircumflex = 0x02b6, /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */ - XK_idotless = 0x02b9, /* U+0131 LATIN SMALL LETTER DOTLESS I */ - XK_gbreve = 0x02bb, /* U+011F LATIN SMALL LETTER G WITH BREVE */ - XK_jcircumflex = 0x02bc, /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */ - XK_Cabovedot = 0x02c5, /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */ - XK_Ccircumflex = 0x02c6, /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ - XK_Gabovedot = 0x02d5, /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */ - XK_Gcircumflex = 0x02d8, /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ - XK_Ubreve = 0x02dd, /* U+016C LATIN CAPITAL LETTER U WITH BREVE */ - XK_Scircumflex = 0x02de, /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ - XK_cabovedot = 0x02e5, /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */ - XK_ccircumflex = 0x02e6, /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */ - XK_gabovedot = 0x02f5, /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */ - XK_gcircumflex = 0x02f8, /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */ - XK_ubreve = 0x02fd, /* U+016D LATIN SMALL LETTER U WITH BREVE */ - XK_scircumflex = 0x02fe, /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */ - XK_kra = 0x03a2, /* U+0138 LATIN SMALL LETTER KRA */ - XK_kappa = 0x03a2, /* deprecated */ - XK_Rcedilla = 0x03a3, /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */ - XK_Itilde = 0x03a5, /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */ - XK_Lcedilla = 0x03a6, /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */ - XK_Emacron = 0x03aa, /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */ - XK_Gcedilla = 0x03ab, /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */ - XK_Tslash = 0x03ac, /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */ - XK_rcedilla = 0x03b3, /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */ - XK_itilde = 0x03b5, /* U+0129 LATIN SMALL LETTER I WITH TILDE */ - XK_lcedilla = 0x03b6, /* U+013C LATIN SMALL LETTER L WITH CEDILLA */ - XK_emacron = 0x03ba, /* U+0113 LATIN SMALL LETTER E WITH MACRON */ - XK_gcedilla = 0x03bb, /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */ - XK_tslash = 0x03bc, /* U+0167 LATIN SMALL LETTER T WITH STROKE */ - XK_ENG = 0x03bd, /* U+014A LATIN CAPITAL LETTER ENG */ - XK_eng = 0x03bf, /* U+014B LATIN SMALL LETTER ENG */ - XK_Amacron = 0x03c0, /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */ - XK_Iogonek = 0x03c7, /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */ - XK_Eabovedot = 0x03cc, /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */ - XK_Imacron = 0x03cf, /* U+012A LATIN CAPITAL LETTER I WITH MACRON */ - XK_Ncedilla = 0x03d1, /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */ - XK_Omacron = 0x03d2, /* U+014C LATIN CAPITAL LETTER O WITH MACRON */ - XK_Kcedilla = 0x03d3, /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */ - XK_Uogonek = 0x03d9, /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */ - XK_Utilde = 0x03dd, /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */ - XK_Umacron = 0x03de, /* U+016A LATIN CAPITAL LETTER U WITH MACRON */ - XK_amacron = 0x03e0, /* U+0101 LATIN SMALL LETTER A WITH MACRON */ - XK_iogonek = 0x03e7, /* U+012F LATIN SMALL LETTER I WITH OGONEK */ - XK_eabovedot = 0x03ec, /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */ - XK_imacron = 0x03ef, /* U+012B LATIN SMALL LETTER I WITH MACRON */ - XK_ncedilla = 0x03f1, /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */ - XK_omacron = 0x03f2, /* U+014D LATIN SMALL LETTER O WITH MACRON */ - XK_kcedilla = 0x03f3, /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */ - XK_uogonek = 0x03f9, /* U+0173 LATIN SMALL LETTER U WITH OGONEK */ - XK_utilde = 0x03fd, /* U+0169 LATIN SMALL LETTER U WITH TILDE */ - XK_umacron = 0x03fe, /* U+016B LATIN SMALL LETTER U WITH MACRON */ - XK_Babovedot = 0x1001e02, /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */ - XK_babovedot = 0x1001e03, /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */ - XK_Dabovedot = 0x1001e0a, /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */ - XK_Wgrave = 0x1001e80, /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */ - XK_Wacute = 0x1001e82, /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */ - XK_dabovedot = 0x1001e0b, /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */ - XK_Ygrave = 0x1001ef2, /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */ - XK_Fabovedot = 0x1001e1e, /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */ - XK_fabovedot = 0x1001e1f, /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */ - XK_Mabovedot = 0x1001e40, /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */ - XK_mabovedot = 0x1001e41, /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */ - XK_Pabovedot = 0x1001e56, /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */ - XK_wgrave = 0x1001e81, /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */ - XK_pabovedot = 0x1001e57, /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */ - XK_wacute = 0x1001e83, /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */ - XK_Sabovedot = 0x1001e60, /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */ - XK_ygrave = 0x1001ef3, /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */ - XK_Wdiaeresis = 0x1001e84, /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */ - XK_wdiaeresis = 0x1001e85, /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */ - XK_sabovedot = 0x1001e61, /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */ - XK_Wcircumflex = 0x1000174, /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ - XK_Tabovedot = 0x1001e6a, /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */ - XK_Ycircumflex = 0x1000176, /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ - XK_wcircumflex = 0x1000175, /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */ - XK_tabovedot = 0x1001e6b, /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */ - XK_ycircumflex = 0x1000177, /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */ - XK_OE = 0x13bc, /* U+0152 LATIN CAPITAL LIGATURE OE */ - XK_oe = 0x13bd, /* U+0153 LATIN SMALL LIGATURE OE */ - XK_Ydiaeresis = 0x13be, /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */ - XK_overline = 0x047e, /* U+203E OVERLINE */ - XK_kana_fullstop = 0x04a1, /* U+3002 IDEOGRAPHIC FULL STOP */ - XK_kana_openingbracket = 0x04a2, /* U+300C LEFT CORNER BRACKET */ - XK_kana_closingbracket = 0x04a3, /* U+300D RIGHT CORNER BRACKET */ - XK_kana_comma = 0x04a4, /* U+3001 IDEOGRAPHIC COMMA */ - XK_kana_conjunctive = 0x04a5, /* U+30FB KATAKANA MIDDLE DOT */ - XK_kana_middledot = 0x04a5, /* deprecated */ - XK_kana_WO = 0x04a6, /* U+30F2 KATAKANA LETTER WO */ - XK_kana_a = 0x04a7, /* U+30A1 KATAKANA LETTER SMALL A */ - XK_kana_i = 0x04a8, /* U+30A3 KATAKANA LETTER SMALL I */ - XK_kana_u = 0x04a9, /* U+30A5 KATAKANA LETTER SMALL U */ - XK_kana_e = 0x04aa, /* U+30A7 KATAKANA LETTER SMALL E */ - XK_kana_o = 0x04ab, /* U+30A9 KATAKANA LETTER SMALL O */ - XK_kana_ya = 0x04ac, /* U+30E3 KATAKANA LETTER SMALL YA */ - XK_kana_yu = 0x04ad, /* U+30E5 KATAKANA LETTER SMALL YU */ - XK_kana_yo = 0x04ae, /* U+30E7 KATAKANA LETTER SMALL YO */ - XK_kana_tsu = 0x04af, /* U+30C3 KATAKANA LETTER SMALL TU */ - XK_kana_tu = 0x04af, /* deprecated */ - XK_prolongedsound = 0x04b0, /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */ - XK_kana_A = 0x04b1, /* U+30A2 KATAKANA LETTER A */ - XK_kana_I = 0x04b2, /* U+30A4 KATAKANA LETTER I */ - XK_kana_U = 0x04b3, /* U+30A6 KATAKANA LETTER U */ - XK_kana_E = 0x04b4, /* U+30A8 KATAKANA LETTER E */ - XK_kana_O = 0x04b5, /* U+30AA KATAKANA LETTER O */ - XK_kana_KA = 0x04b6, /* U+30AB KATAKANA LETTER KA */ - XK_kana_KI = 0x04b7, /* U+30AD KATAKANA LETTER KI */ - XK_kana_KU = 0x04b8, /* U+30AF KATAKANA LETTER KU */ - XK_kana_KE = 0x04b9, /* U+30B1 KATAKANA LETTER KE */ - XK_kana_KO = 0x04ba, /* U+30B3 KATAKANA LETTER KO */ - XK_kana_SA = 0x04bb, /* U+30B5 KATAKANA LETTER SA */ - XK_kana_SHI = 0x04bc, /* U+30B7 KATAKANA LETTER SI */ - XK_kana_SU = 0x04bd, /* U+30B9 KATAKANA LETTER SU */ - XK_kana_SE = 0x04be, /* U+30BB KATAKANA LETTER SE */ - XK_kana_SO = 0x04bf, /* U+30BD KATAKANA LETTER SO */ - XK_kana_TA = 0x04c0, /* U+30BF KATAKANA LETTER TA */ - XK_kana_CHI = 0x04c1, /* U+30C1 KATAKANA LETTER TI */ - XK_kana_TI = 0x04c1, /* deprecated */ - XK_kana_TSU = 0x04c2, /* U+30C4 KATAKANA LETTER TU */ - XK_kana_TU = 0x04c2, /* deprecated */ - XK_kana_TE = 0x04c3, /* U+30C6 KATAKANA LETTER TE */ - XK_kana_TO = 0x04c4, /* U+30C8 KATAKANA LETTER TO */ - XK_kana_NA = 0x04c5, /* U+30CA KATAKANA LETTER NA */ - XK_kana_NI = 0x04c6, /* U+30CB KATAKANA LETTER NI */ - XK_kana_NU = 0x04c7, /* U+30CC KATAKANA LETTER NU */ - XK_kana_NE = 0x04c8, /* U+30CD KATAKANA LETTER NE */ - XK_kana_NO = 0x04c9, /* U+30CE KATAKANA LETTER NO */ - XK_kana_HA = 0x04ca, /* U+30CF KATAKANA LETTER HA */ - XK_kana_HI = 0x04cb, /* U+30D2 KATAKANA LETTER HI */ - XK_kana_FU = 0x04cc, /* U+30D5 KATAKANA LETTER HU */ - XK_kana_HU = 0x04cc, /* deprecated */ - XK_kana_HE = 0x04cd, /* U+30D8 KATAKANA LETTER HE */ - XK_kana_HO = 0x04ce, /* U+30DB KATAKANA LETTER HO */ - XK_kana_MA = 0x04cf, /* U+30DE KATAKANA LETTER MA */ - XK_kana_MI = 0x04d0, /* U+30DF KATAKANA LETTER MI */ - XK_kana_MU = 0x04d1, /* U+30E0 KATAKANA LETTER MU */ - XK_kana_ME = 0x04d2, /* U+30E1 KATAKANA LETTER ME */ - XK_kana_MO = 0x04d3, /* U+30E2 KATAKANA LETTER MO */ - XK_kana_YA = 0x04d4, /* U+30E4 KATAKANA LETTER YA */ - XK_kana_YU = 0x04d5, /* U+30E6 KATAKANA LETTER YU */ - XK_kana_YO = 0x04d6, /* U+30E8 KATAKANA LETTER YO */ - XK_kana_RA = 0x04d7, /* U+30E9 KATAKANA LETTER RA */ - XK_kana_RI = 0x04d8, /* U+30EA KATAKANA LETTER RI */ - XK_kana_RU = 0x04d9, /* U+30EB KATAKANA LETTER RU */ - XK_kana_RE = 0x04da, /* U+30EC KATAKANA LETTER RE */ - XK_kana_RO = 0x04db, /* U+30ED KATAKANA LETTER RO */ - XK_kana_WA = 0x04dc, /* U+30EF KATAKANA LETTER WA */ - XK_kana_N = 0x04dd, /* U+30F3 KATAKANA LETTER N */ - XK_voicedsound = 0x04de, /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */ - XK_semivoicedsound = 0x04df, /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ - XK_kana_switch = 0xff7e, /* Alias for mode_switch */ - XK_Farsi_0 = 0x10006f0, /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */ - XK_Farsi_1 = 0x10006f1, /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */ - XK_Farsi_2 = 0x10006f2, /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */ - XK_Farsi_3 = 0x10006f3, /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */ - XK_Farsi_4 = 0x10006f4, /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */ - XK_Farsi_5 = 0x10006f5, /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */ - XK_Farsi_6 = 0x10006f6, /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */ - XK_Farsi_7 = 0x10006f7, /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */ - XK_Farsi_8 = 0x10006f8, /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */ - XK_Farsi_9 = 0x10006f9, /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */ - XK_Arabic_percent = 0x100066a, /* U+066A ARABIC PERCENT SIGN */ - XK_Arabic_superscript_alef = 0x1000670, /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */ - XK_Arabic_tteh = 0x1000679, /* U+0679 ARABIC LETTER TTEH */ - XK_Arabic_peh = 0x100067e, /* U+067E ARABIC LETTER PEH */ - XK_Arabic_tcheh = 0x1000686, /* U+0686 ARABIC LETTER TCHEH */ - XK_Arabic_ddal = 0x1000688, /* U+0688 ARABIC LETTER DDAL */ - XK_Arabic_rreh = 0x1000691, /* U+0691 ARABIC LETTER RREH */ - XK_Arabic_comma = 0x05ac, /* U+060C ARABIC COMMA */ - XK_Arabic_fullstop = 0x10006d4, /* U+06D4 ARABIC FULL STOP */ - XK_Arabic_0 = 0x1000660, /* U+0660 ARABIC-INDIC DIGIT ZERO */ - XK_Arabic_1 = 0x1000661, /* U+0661 ARABIC-INDIC DIGIT ONE */ - XK_Arabic_2 = 0x1000662, /* U+0662 ARABIC-INDIC DIGIT TWO */ - XK_Arabic_3 = 0x1000663, /* U+0663 ARABIC-INDIC DIGIT THREE */ - XK_Arabic_4 = 0x1000664, /* U+0664 ARABIC-INDIC DIGIT FOUR */ - XK_Arabic_5 = 0x1000665, /* U+0665 ARABIC-INDIC DIGIT FIVE */ - XK_Arabic_6 = 0x1000666, /* U+0666 ARABIC-INDIC DIGIT SIX */ - XK_Arabic_7 = 0x1000667, /* U+0667 ARABIC-INDIC DIGIT SEVEN */ - XK_Arabic_8 = 0x1000668, /* U+0668 ARABIC-INDIC DIGIT EIGHT */ - XK_Arabic_9 = 0x1000669, /* U+0669 ARABIC-INDIC DIGIT NINE */ - XK_Arabic_semicolon = 0x05bb, /* U+061B ARABIC SEMICOLON */ - XK_Arabic_question_mark = 0x05bf, /* U+061F ARABIC QUESTION MARK */ - XK_Arabic_hamza = 0x05c1, /* U+0621 ARABIC LETTER HAMZA */ - XK_Arabic_maddaonalef = 0x05c2, /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */ - XK_Arabic_hamzaonalef = 0x05c3, /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */ - XK_Arabic_hamzaonwaw = 0x05c4, /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */ - XK_Arabic_hamzaunderalef = 0x05c5, /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */ - XK_Arabic_hamzaonyeh = 0x05c6, /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */ - XK_Arabic_alef = 0x05c7, /* U+0627 ARABIC LETTER ALEF */ - XK_Arabic_beh = 0x05c8, /* U+0628 ARABIC LETTER BEH */ - XK_Arabic_tehmarbuta = 0x05c9, /* U+0629 ARABIC LETTER TEH MARBUTA */ - XK_Arabic_teh = 0x05ca, /* U+062A ARABIC LETTER TEH */ - XK_Arabic_theh = 0x05cb, /* U+062B ARABIC LETTER THEH */ - XK_Arabic_jeem = 0x05cc, /* U+062C ARABIC LETTER JEEM */ - XK_Arabic_hah = 0x05cd, /* U+062D ARABIC LETTER HAH */ - XK_Arabic_khah = 0x05ce, /* U+062E ARABIC LETTER KHAH */ - XK_Arabic_dal = 0x05cf, /* U+062F ARABIC LETTER DAL */ - XK_Arabic_thal = 0x05d0, /* U+0630 ARABIC LETTER THAL */ - XK_Arabic_ra = 0x05d1, /* U+0631 ARABIC LETTER REH */ - XK_Arabic_zain = 0x05d2, /* U+0632 ARABIC LETTER ZAIN */ - XK_Arabic_seen = 0x05d3, /* U+0633 ARABIC LETTER SEEN */ - XK_Arabic_sheen = 0x05d4, /* U+0634 ARABIC LETTER SHEEN */ - XK_Arabic_sad = 0x05d5, /* U+0635 ARABIC LETTER SAD */ - XK_Arabic_dad = 0x05d6, /* U+0636 ARABIC LETTER DAD */ - XK_Arabic_tah = 0x05d7, /* U+0637 ARABIC LETTER TAH */ - XK_Arabic_zah = 0x05d8, /* U+0638 ARABIC LETTER ZAH */ - XK_Arabic_ain = 0x05d9, /* U+0639 ARABIC LETTER AIN */ - XK_Arabic_ghain = 0x05da, /* U+063A ARABIC LETTER GHAIN */ - XK_Arabic_tatweel = 0x05e0, /* U+0640 ARABIC TATWEEL */ - XK_Arabic_feh = 0x05e1, /* U+0641 ARABIC LETTER FEH */ - XK_Arabic_qaf = 0x05e2, /* U+0642 ARABIC LETTER QAF */ - XK_Arabic_kaf = 0x05e3, /* U+0643 ARABIC LETTER KAF */ - XK_Arabic_lam = 0x05e4, /* U+0644 ARABIC LETTER LAM */ - XK_Arabic_meem = 0x05e5, /* U+0645 ARABIC LETTER MEEM */ - XK_Arabic_noon = 0x05e6, /* U+0646 ARABIC LETTER NOON */ - XK_Arabic_ha = 0x05e7, /* U+0647 ARABIC LETTER HEH */ - XK_Arabic_heh = 0x05e7, /* deprecated */ - XK_Arabic_waw = 0x05e8, /* U+0648 ARABIC LETTER WAW */ - XK_Arabic_alefmaksura = 0x05e9, /* U+0649 ARABIC LETTER ALEF MAKSURA */ - XK_Arabic_yeh = 0x05ea, /* U+064A ARABIC LETTER YEH */ - XK_Arabic_fathatan = 0x05eb, /* U+064B ARABIC FATHATAN */ - XK_Arabic_dammatan = 0x05ec, /* U+064C ARABIC DAMMATAN */ - XK_Arabic_kasratan = 0x05ed, /* U+064D ARABIC KASRATAN */ - XK_Arabic_fatha = 0x05ee, /* U+064E ARABIC FATHA */ - XK_Arabic_damma = 0x05ef, /* U+064F ARABIC DAMMA */ - XK_Arabic_kasra = 0x05f0, /* U+0650 ARABIC KASRA */ - XK_Arabic_shadda = 0x05f1, /* U+0651 ARABIC SHADDA */ - XK_Arabic_sukun = 0x05f2, /* U+0652 ARABIC SUKUN */ - XK_Arabic_madda_above = 0x1000653, /* U+0653 ARABIC MADDAH ABOVE */ - XK_Arabic_hamza_above = 0x1000654, /* U+0654 ARABIC HAMZA ABOVE */ - XK_Arabic_hamza_below = 0x1000655, /* U+0655 ARABIC HAMZA BELOW */ - XK_Arabic_jeh = 0x1000698, /* U+0698 ARABIC LETTER JEH */ - XK_Arabic_veh = 0x10006a4, /* U+06A4 ARABIC LETTER VEH */ - XK_Arabic_keheh = 0x10006a9, /* U+06A9 ARABIC LETTER KEHEH */ - XK_Arabic_gaf = 0x10006af, /* U+06AF ARABIC LETTER GAF */ - XK_Arabic_noon_ghunna = 0x10006ba, /* U+06BA ARABIC LETTER NOON GHUNNA */ - XK_Arabic_heh_doachashmee = 0x10006be, /* U+06BE ARABIC LETTER HEH DOACHASHMEE */ - XK_Farsi_yeh = 0x10006cc, /* U+06CC ARABIC LETTER FARSI YEH */ - XK_Arabic_farsi_yeh = 0x10006cc, /* U+06CC ARABIC LETTER FARSI YEH */ - XK_Arabic_yeh_baree = 0x10006d2, /* U+06D2 ARABIC LETTER YEH BARREE */ - XK_Arabic_heh_goal = 0x10006c1, /* U+06C1 ARABIC LETTER HEH GOAL */ - XK_Arabic_switch = 0xff7e, /* Alias for mode_switch */ - XK_Cyrillic_GHE_bar = 0x1000492, /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */ - XK_Cyrillic_ghe_bar = 0x1000493, /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */ - XK_Cyrillic_ZHE_descender = 0x1000496, /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ - XK_Cyrillic_zhe_descender = 0x1000497, /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ - XK_Cyrillic_KA_descender = 0x100049a, /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ - XK_Cyrillic_ka_descender = 0x100049b, /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */ - XK_Cyrillic_KA_vertstroke = 0x100049c, /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */ - XK_Cyrillic_ka_vertstroke = 0x100049d, /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */ - XK_Cyrillic_EN_descender = 0x10004a2, /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ - XK_Cyrillic_en_descender = 0x10004a3, /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */ - XK_Cyrillic_U_straight = 0x10004ae, /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */ - XK_Cyrillic_u_straight = 0x10004af, /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */ - XK_Cyrillic_U_straight_bar = 0x10004b0, /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ - XK_Cyrillic_u_straight_bar = 0x10004b1, /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ - XK_Cyrillic_HA_descender = 0x10004b2, /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ - XK_Cyrillic_ha_descender = 0x10004b3, /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */ - XK_Cyrillic_CHE_descender = 0x10004b6, /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ - XK_Cyrillic_che_descender = 0x10004b7, /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */ - XK_Cyrillic_CHE_vertstroke = 0x10004b8, /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */ - XK_Cyrillic_che_vertstroke = 0x10004b9, /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */ - XK_Cyrillic_SHHA = 0x10004ba, /* U+04BA CYRILLIC CAPITAL LETTER SHHA */ - XK_Cyrillic_shha = 0x10004bb, /* U+04BB CYRILLIC SMALL LETTER SHHA */ - XK_Cyrillic_SCHWA = 0x10004d8, /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */ - XK_Cyrillic_schwa = 0x10004d9, /* U+04D9 CYRILLIC SMALL LETTER SCHWA */ - XK_Cyrillic_I_macron = 0x10004e2, /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */ - XK_Cyrillic_i_macron = 0x10004e3, /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */ - XK_Cyrillic_O_bar = 0x10004e8, /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */ - XK_Cyrillic_o_bar = 0x10004e9, /* U+04E9 CYRILLIC SMALL LETTER BARRED O */ - XK_Cyrillic_U_macron = 0x10004ee, /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */ - XK_Cyrillic_u_macron = 0x10004ef, /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */ - XK_Serbian_dje = 0x06a1, /* U+0452 CYRILLIC SMALL LETTER DJE */ - XK_Macedonia_gje = 0x06a2, /* U+0453 CYRILLIC SMALL LETTER GJE */ - XK_Cyrillic_io = 0x06a3, /* U+0451 CYRILLIC SMALL LETTER IO */ - XK_Ukrainian_ie = 0x06a4, /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */ - XK_Ukranian_je = 0x06a4, /* deprecated */ - XK_Macedonia_dse = 0x06a5, /* U+0455 CYRILLIC SMALL LETTER DZE */ - XK_Ukrainian_i = 0x06a6, /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ - XK_Ukranian_i = 0x06a6, /* deprecated */ - XK_Ukrainian_yi = 0x06a7, /* U+0457 CYRILLIC SMALL LETTER YI */ - XK_Ukranian_yi = 0x06a7, /* deprecated */ - XK_Cyrillic_je = 0x06a8, /* U+0458 CYRILLIC SMALL LETTER JE */ - XK_Serbian_je = 0x06a8, /* deprecated */ - XK_Cyrillic_lje = 0x06a9, /* U+0459 CYRILLIC SMALL LETTER LJE */ - XK_Serbian_lje = 0x06a9, /* deprecated */ - XK_Cyrillic_nje = 0x06aa, /* U+045A CYRILLIC SMALL LETTER NJE */ - XK_Serbian_nje = 0x06aa, /* deprecated */ - XK_Serbian_tshe = 0x06ab, /* U+045B CYRILLIC SMALL LETTER TSHE */ - XK_Macedonia_kje = 0x06ac, /* U+045C CYRILLIC SMALL LETTER KJE */ - XK_Ukrainian_ghe_with_upturn = 0x06ad, /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */ - XK_Byelorussian_shortu = 0x06ae, /* U+045E CYRILLIC SMALL LETTER SHORT U */ - XK_Cyrillic_dzhe = 0x06af, /* U+045F CYRILLIC SMALL LETTER DZHE */ - XK_Serbian_dze = 0x06af, /* deprecated */ - XK_numerosign = 0x06b0, /* U+2116 NUMERO SIGN */ - XK_Serbian_DJE = 0x06b1, /* U+0402 CYRILLIC CAPITAL LETTER DJE */ - XK_Macedonia_GJE = 0x06b2, /* U+0403 CYRILLIC CAPITAL LETTER GJE */ - XK_Cyrillic_IO = 0x06b3, /* U+0401 CYRILLIC CAPITAL LETTER IO */ - XK_Ukrainian_IE = 0x06b4, /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */ - XK_Ukranian_JE = 0x06b4, /* deprecated */ - XK_Macedonia_DSE = 0x06b5, /* U+0405 CYRILLIC CAPITAL LETTER DZE */ - XK_Ukrainian_I = 0x06b6, /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ - XK_Ukranian_I = 0x06b6, /* deprecated */ - XK_Ukrainian_YI = 0x06b7, /* U+0407 CYRILLIC CAPITAL LETTER YI */ - XK_Ukranian_YI = 0x06b7, /* deprecated */ - XK_Cyrillic_JE = 0x06b8, /* U+0408 CYRILLIC CAPITAL LETTER JE */ - XK_Serbian_JE = 0x06b8, /* deprecated */ - XK_Cyrillic_LJE = 0x06b9, /* U+0409 CYRILLIC CAPITAL LETTER LJE */ - XK_Serbian_LJE = 0x06b9, /* deprecated */ - XK_Cyrillic_NJE = 0x06ba, /* U+040A CYRILLIC CAPITAL LETTER NJE */ - XK_Serbian_NJE = 0x06ba, /* deprecated */ - XK_Serbian_TSHE = 0x06bb, /* U+040B CYRILLIC CAPITAL LETTER TSHE */ - XK_Macedonia_KJE = 0x06bc, /* U+040C CYRILLIC CAPITAL LETTER KJE */ - XK_Ukrainian_GHE_WITH_UPTURN = 0x06bd, /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ - XK_Byelorussian_SHORTU = 0x06be, /* U+040E CYRILLIC CAPITAL LETTER SHORT U */ - XK_Cyrillic_DZHE = 0x06bf, /* U+040F CYRILLIC CAPITAL LETTER DZHE */ - XK_Serbian_DZE = 0x06bf, /* deprecated */ - XK_Cyrillic_yu = 0x06c0, /* U+044E CYRILLIC SMALL LETTER YU */ - XK_Cyrillic_a = 0x06c1, /* U+0430 CYRILLIC SMALL LETTER A */ - XK_Cyrillic_be = 0x06c2, /* U+0431 CYRILLIC SMALL LETTER BE */ - XK_Cyrillic_tse = 0x06c3, /* U+0446 CYRILLIC SMALL LETTER TSE */ - XK_Cyrillic_de = 0x06c4, /* U+0434 CYRILLIC SMALL LETTER DE */ - XK_Cyrillic_ie = 0x06c5, /* U+0435 CYRILLIC SMALL LETTER IE */ - XK_Cyrillic_ef = 0x06c6, /* U+0444 CYRILLIC SMALL LETTER EF */ - XK_Cyrillic_ghe = 0x06c7, /* U+0433 CYRILLIC SMALL LETTER GHE */ - XK_Cyrillic_ha = 0x06c8, /* U+0445 CYRILLIC SMALL LETTER HA */ - XK_Cyrillic_i = 0x06c9, /* U+0438 CYRILLIC SMALL LETTER I */ - XK_Cyrillic_shorti = 0x06ca, /* U+0439 CYRILLIC SMALL LETTER SHORT I */ - XK_Cyrillic_ka = 0x06cb, /* U+043A CYRILLIC SMALL LETTER KA */ - XK_Cyrillic_el = 0x06cc, /* U+043B CYRILLIC SMALL LETTER EL */ - XK_Cyrillic_em = 0x06cd, /* U+043C CYRILLIC SMALL LETTER EM */ - XK_Cyrillic_en = 0x06ce, /* U+043D CYRILLIC SMALL LETTER EN */ - XK_Cyrillic_o = 0x06cf, /* U+043E CYRILLIC SMALL LETTER O */ - XK_Cyrillic_pe = 0x06d0, /* U+043F CYRILLIC SMALL LETTER PE */ - XK_Cyrillic_ya = 0x06d1, /* U+044F CYRILLIC SMALL LETTER YA */ - XK_Cyrillic_er = 0x06d2, /* U+0440 CYRILLIC SMALL LETTER ER */ - XK_Cyrillic_es = 0x06d3, /* U+0441 CYRILLIC SMALL LETTER ES */ - XK_Cyrillic_te = 0x06d4, /* U+0442 CYRILLIC SMALL LETTER TE */ - XK_Cyrillic_u = 0x06d5, /* U+0443 CYRILLIC SMALL LETTER U */ - XK_Cyrillic_zhe = 0x06d6, /* U+0436 CYRILLIC SMALL LETTER ZHE */ - XK_Cyrillic_ve = 0x06d7, /* U+0432 CYRILLIC SMALL LETTER VE */ - XK_Cyrillic_softsign = 0x06d8, /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */ - XK_Cyrillic_yeru = 0x06d9, /* U+044B CYRILLIC SMALL LETTER YERU */ - XK_Cyrillic_ze = 0x06da, /* U+0437 CYRILLIC SMALL LETTER ZE */ - XK_Cyrillic_sha = 0x06db, /* U+0448 CYRILLIC SMALL LETTER SHA */ - XK_Cyrillic_e = 0x06dc, /* U+044D CYRILLIC SMALL LETTER E */ - XK_Cyrillic_shcha = 0x06dd, /* U+0449 CYRILLIC SMALL LETTER SHCHA */ - XK_Cyrillic_che = 0x06de, /* U+0447 CYRILLIC SMALL LETTER CHE */ - XK_Cyrillic_hardsign = 0x06df, /* U+044A CYRILLIC SMALL LETTER HARD SIGN */ - XK_Cyrillic_YU = 0x06e0, /* U+042E CYRILLIC CAPITAL LETTER YU */ - XK_Cyrillic_A = 0x06e1, /* U+0410 CYRILLIC CAPITAL LETTER A */ - XK_Cyrillic_BE = 0x06e2, /* U+0411 CYRILLIC CAPITAL LETTER BE */ - XK_Cyrillic_TSE = 0x06e3, /* U+0426 CYRILLIC CAPITAL LETTER TSE */ - XK_Cyrillic_DE = 0x06e4, /* U+0414 CYRILLIC CAPITAL LETTER DE */ - XK_Cyrillic_IE = 0x06e5, /* U+0415 CYRILLIC CAPITAL LETTER IE */ - XK_Cyrillic_EF = 0x06e6, /* U+0424 CYRILLIC CAPITAL LETTER EF */ - XK_Cyrillic_GHE = 0x06e7, /* U+0413 CYRILLIC CAPITAL LETTER GHE */ - XK_Cyrillic_HA = 0x06e8, /* U+0425 CYRILLIC CAPITAL LETTER HA */ - XK_Cyrillic_I = 0x06e9, /* U+0418 CYRILLIC CAPITAL LETTER I */ - XK_Cyrillic_SHORTI = 0x06ea, /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */ - XK_Cyrillic_KA = 0x06eb, /* U+041A CYRILLIC CAPITAL LETTER KA */ - XK_Cyrillic_EL = 0x06ec, /* U+041B CYRILLIC CAPITAL LETTER EL */ - XK_Cyrillic_EM = 0x06ed, /* U+041C CYRILLIC CAPITAL LETTER EM */ - XK_Cyrillic_EN = 0x06ee, /* U+041D CYRILLIC CAPITAL LETTER EN */ - XK_Cyrillic_O = 0x06ef, /* U+041E CYRILLIC CAPITAL LETTER O */ - XK_Cyrillic_PE = 0x06f0, /* U+041F CYRILLIC CAPITAL LETTER PE */ - XK_Cyrillic_YA = 0x06f1, /* U+042F CYRILLIC CAPITAL LETTER YA */ - XK_Cyrillic_ER = 0x06f2, /* U+0420 CYRILLIC CAPITAL LETTER ER */ - XK_Cyrillic_ES = 0x06f3, /* U+0421 CYRILLIC CAPITAL LETTER ES */ - XK_Cyrillic_TE = 0x06f4, /* U+0422 CYRILLIC CAPITAL LETTER TE */ - XK_Cyrillic_U = 0x06f5, /* U+0423 CYRILLIC CAPITAL LETTER U */ - XK_Cyrillic_ZHE = 0x06f6, /* U+0416 CYRILLIC CAPITAL LETTER ZHE */ - XK_Cyrillic_VE = 0x06f7, /* U+0412 CYRILLIC CAPITAL LETTER VE */ - XK_Cyrillic_SOFTSIGN = 0x06f8, /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */ - XK_Cyrillic_YERU = 0x06f9, /* U+042B CYRILLIC CAPITAL LETTER YERU */ - XK_Cyrillic_ZE = 0x06fa, /* U+0417 CYRILLIC CAPITAL LETTER ZE */ - XK_Cyrillic_SHA = 0x06fb, /* U+0428 CYRILLIC CAPITAL LETTER SHA */ - XK_Cyrillic_E = 0x06fc, /* U+042D CYRILLIC CAPITAL LETTER E */ - XK_Cyrillic_SHCHA = 0x06fd, /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */ - XK_Cyrillic_CHE = 0x06fe, /* U+0427 CYRILLIC CAPITAL LETTER CHE */ - XK_Cyrillic_HARDSIGN = 0x06ff, /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */ - XK_Greek_ALPHAaccent = 0x07a1, /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */ - XK_Greek_EPSILONaccent = 0x07a2, /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */ - XK_Greek_ETAaccent = 0x07a3, /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */ - XK_Greek_IOTAaccent = 0x07a4, /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */ - XK_Greek_IOTAdieresis = 0x07a5, /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ - XK_Greek_IOTAdiaeresis = 0x07a5, /* old typo */ - XK_Greek_OMICRONaccent = 0x07a7, /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */ - XK_Greek_UPSILONaccent = 0x07a8, /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */ - XK_Greek_UPSILONdieresis = 0x07a9, /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ - XK_Greek_OMEGAaccent = 0x07ab, /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */ - XK_Greek_accentdieresis = 0x07ae, /* U+0385 GREEK DIALYTIKA TONOS */ - XK_Greek_horizbar = 0x07af, /* U+2015 HORIZONTAL BAR */ - XK_Greek_alphaaccent = 0x07b1, /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */ - XK_Greek_epsilonaccent = 0x07b2, /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */ - XK_Greek_etaaccent = 0x07b3, /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */ - XK_Greek_iotaaccent = 0x07b4, /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */ - XK_Greek_iotadieresis = 0x07b5, /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */ - XK_Greek_iotaaccentdieresis = 0x07b6, /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ - XK_Greek_omicronaccent = 0x07b7, /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */ - XK_Greek_upsilonaccent = 0x07b8, /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */ - XK_Greek_upsilondieresis = 0x07b9, /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ - XK_Greek_upsilonaccentdieresis = 0x07ba, /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ - XK_Greek_omegaaccent = 0x07bb, /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */ - XK_Greek_ALPHA = 0x07c1, /* U+0391 GREEK CAPITAL LETTER ALPHA */ - XK_Greek_BETA = 0x07c2, /* U+0392 GREEK CAPITAL LETTER BETA */ - XK_Greek_GAMMA = 0x07c3, /* U+0393 GREEK CAPITAL LETTER GAMMA */ - XK_Greek_DELTA = 0x07c4, /* U+0394 GREEK CAPITAL LETTER DELTA */ - XK_Greek_EPSILON = 0x07c5, /* U+0395 GREEK CAPITAL LETTER EPSILON */ - XK_Greek_ZETA = 0x07c6, /* U+0396 GREEK CAPITAL LETTER ZETA */ - XK_Greek_ETA = 0x07c7, /* U+0397 GREEK CAPITAL LETTER ETA */ - XK_Greek_THETA = 0x07c8, /* U+0398 GREEK CAPITAL LETTER THETA */ - XK_Greek_IOTA = 0x07c9, /* U+0399 GREEK CAPITAL LETTER IOTA */ - XK_Greek_KAPPA = 0x07ca, /* U+039A GREEK CAPITAL LETTER KAPPA */ - XK_Greek_LAMDA = 0x07cb, /* U+039B GREEK CAPITAL LETTER LAMDA */ - XK_Greek_LAMBDA = 0x07cb, /* U+039B GREEK CAPITAL LETTER LAMDA */ - XK_Greek_MU = 0x07cc, /* U+039C GREEK CAPITAL LETTER MU */ - XK_Greek_NU = 0x07cd, /* U+039D GREEK CAPITAL LETTER NU */ - XK_Greek_XI = 0x07ce, /* U+039E GREEK CAPITAL LETTER XI */ - XK_Greek_OMICRON = 0x07cf, /* U+039F GREEK CAPITAL LETTER OMICRON */ - XK_Greek_PI = 0x07d0, /* U+03A0 GREEK CAPITAL LETTER PI */ - XK_Greek_RHO = 0x07d1, /* U+03A1 GREEK CAPITAL LETTER RHO */ - XK_Greek_SIGMA = 0x07d2, /* U+03A3 GREEK CAPITAL LETTER SIGMA */ - XK_Greek_TAU = 0x07d4, /* U+03A4 GREEK CAPITAL LETTER TAU */ - XK_Greek_UPSILON = 0x07d5, /* U+03A5 GREEK CAPITAL LETTER UPSILON */ - XK_Greek_PHI = 0x07d6, /* U+03A6 GREEK CAPITAL LETTER PHI */ - XK_Greek_CHI = 0x07d7, /* U+03A7 GREEK CAPITAL LETTER CHI */ - XK_Greek_PSI = 0x07d8, /* U+03A8 GREEK CAPITAL LETTER PSI */ - XK_Greek_OMEGA = 0x07d9, /* U+03A9 GREEK CAPITAL LETTER OMEGA */ - XK_Greek_alpha = 0x07e1, /* U+03B1 GREEK SMALL LETTER ALPHA */ - XK_Greek_beta = 0x07e2, /* U+03B2 GREEK SMALL LETTER BETA */ - XK_Greek_gamma = 0x07e3, /* U+03B3 GREEK SMALL LETTER GAMMA */ - XK_Greek_delta = 0x07e4, /* U+03B4 GREEK SMALL LETTER DELTA */ - XK_Greek_epsilon = 0x07e5, /* U+03B5 GREEK SMALL LETTER EPSILON */ - XK_Greek_zeta = 0x07e6, /* U+03B6 GREEK SMALL LETTER ZETA */ - XK_Greek_eta = 0x07e7, /* U+03B7 GREEK SMALL LETTER ETA */ - XK_Greek_theta = 0x07e8, /* U+03B8 GREEK SMALL LETTER THETA */ - XK_Greek_iota = 0x07e9, /* U+03B9 GREEK SMALL LETTER IOTA */ - XK_Greek_kappa = 0x07ea, /* U+03BA GREEK SMALL LETTER KAPPA */ - XK_Greek_lamda = 0x07eb, /* U+03BB GREEK SMALL LETTER LAMDA */ - XK_Greek_lambda = 0x07eb, /* U+03BB GREEK SMALL LETTER LAMDA */ - XK_Greek_mu = 0x07ec, /* U+03BC GREEK SMALL LETTER MU */ - XK_Greek_nu = 0x07ed, /* U+03BD GREEK SMALL LETTER NU */ - XK_Greek_xi = 0x07ee, /* U+03BE GREEK SMALL LETTER XI */ - XK_Greek_omicron = 0x07ef, /* U+03BF GREEK SMALL LETTER OMICRON */ - XK_Greek_pi = 0x07f0, /* U+03C0 GREEK SMALL LETTER PI */ - XK_Greek_rho = 0x07f1, /* U+03C1 GREEK SMALL LETTER RHO */ - XK_Greek_sigma = 0x07f2, /* U+03C3 GREEK SMALL LETTER SIGMA */ - XK_Greek_finalsmallsigma = 0x07f3, /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */ - XK_Greek_tau = 0x07f4, /* U+03C4 GREEK SMALL LETTER TAU */ - XK_Greek_upsilon = 0x07f5, /* U+03C5 GREEK SMALL LETTER UPSILON */ - XK_Greek_phi = 0x07f6, /* U+03C6 GREEK SMALL LETTER PHI */ - XK_Greek_chi = 0x07f7, /* U+03C7 GREEK SMALL LETTER CHI */ - XK_Greek_psi = 0x07f8, /* U+03C8 GREEK SMALL LETTER PSI */ - XK_Greek_omega = 0x07f9, /* U+03C9 GREEK SMALL LETTER OMEGA */ - XK_Greek_switch = 0xff7e, /* Alias for mode_switch */ - XK_leftradical = 0x08a1, /* U+23B7 RADICAL SYMBOL BOTTOM */ - XK_topleftradical = 0x08a2, /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/ - XK_horizconnector = 0x08a3, /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/ - XK_topintegral = 0x08a4, /* U+2320 TOP HALF INTEGRAL */ - XK_botintegral = 0x08a5, /* U+2321 BOTTOM HALF INTEGRAL */ - XK_vertconnector = 0x08a6, /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/ - XK_topleftsqbracket = 0x08a7, /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */ - XK_botleftsqbracket = 0x08a8, /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */ - XK_toprightsqbracket = 0x08a9, /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */ - XK_botrightsqbracket = 0x08aa, /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */ - XK_topleftparens = 0x08ab, /* U+239B LEFT PARENTHESIS UPPER HOOK */ - XK_botleftparens = 0x08ac, /* U+239D LEFT PARENTHESIS LOWER HOOK */ - XK_toprightparens = 0x08ad, /* U+239E RIGHT PARENTHESIS UPPER HOOK */ - XK_botrightparens = 0x08ae, /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */ - XK_leftmiddlecurlybrace = 0x08af, /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */ - XK_rightmiddlecurlybrace = 0x08b0, /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */ - XK_topleftsummation = 0x08b1, - XK_botleftsummation = 0x08b2, - XK_topvertsummationconnector = 0x08b3, - XK_botvertsummationconnector = 0x08b4, - XK_toprightsummation = 0x08b5, - XK_botrightsummation = 0x08b6, - XK_rightmiddlesummation = 0x08b7, - XK_lessthanequal = 0x08bc, /* U+2264 LESS-THAN OR EQUAL TO */ - XK_notequal = 0x08bd, /* U+2260 NOT EQUAL TO */ - XK_greaterthanequal = 0x08be, /* U+2265 GREATER-THAN OR EQUAL TO */ - XK_integral = 0x08bf, /* U+222B INTEGRAL */ - XK_therefore = 0x08c0, /* U+2234 THEREFORE */ - XK_variation = 0x08c1, /* U+221D PROPORTIONAL TO */ - XK_infinity = 0x08c2, /* U+221E INFINITY */ - XK_nabla = 0x08c5, /* U+2207 NABLA */ - XK_approximate = 0x08c8, /* U+223C TILDE OPERATOR */ - XK_similarequal = 0x08c9, /* U+2243 ASYMPTOTICALLY EQUAL TO */ - XK_ifonlyif = 0x08cd, /* U+21D4 LEFT RIGHT DOUBLE ARROW */ - XK_implies = 0x08ce, /* U+21D2 RIGHTWARDS DOUBLE ARROW */ - XK_identical = 0x08cf, /* U+2261 IDENTICAL TO */ - XK_radical = 0x08d6, /* U+221A SQUARE ROOT */ - XK_includedin = 0x08da, /* U+2282 SUBSET OF */ - XK_includes = 0x08db, /* U+2283 SUPERSET OF */ - XK_intersection = 0x08dc, /* U+2229 INTERSECTION */ - XK_union = 0x08dd, /* U+222A UNION */ - XK_logicaland = 0x08de, /* U+2227 LOGICAL AND */ - XK_logicalor = 0x08df, /* U+2228 LOGICAL OR */ - XK_partialderivative = 0x08ef, /* U+2202 PARTIAL DIFFERENTIAL */ - XK_function = 0x08f6, /* U+0192 LATIN SMALL LETTER F WITH HOOK */ - XK_leftarrow = 0x08fb, /* U+2190 LEFTWARDS ARROW */ - XK_uparrow = 0x08fc, /* U+2191 UPWARDS ARROW */ - XK_rightarrow = 0x08fd, /* U+2192 RIGHTWARDS ARROW */ - XK_downarrow = 0x08fe, /* U+2193 DOWNWARDS ARROW */ - XK_blank = 0x09df, - XK_soliddiamond = 0x09e0, /* U+25C6 BLACK DIAMOND */ - XK_checkerboard = 0x09e1, /* U+2592 MEDIUM SHADE */ - XK_ht = 0x09e2, /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */ - XK_ff = 0x09e3, /* U+240C SYMBOL FOR FORM FEED */ - XK_cr = 0x09e4, /* U+240D SYMBOL FOR CARRIAGE RETURN */ - XK_lf = 0x09e5, /* U+240A SYMBOL FOR LINE FEED */ - XK_nl = 0x09e8, /* U+2424 SYMBOL FOR NEWLINE */ - XK_vt = 0x09e9, /* U+240B SYMBOL FOR VERTICAL TABULATION */ - XK_lowrightcorner = 0x09ea, /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */ - XK_uprightcorner = 0x09eb, /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */ - XK_upleftcorner = 0x09ec, /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */ - XK_lowleftcorner = 0x09ed, /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */ - XK_crossinglines = 0x09ee, /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ - XK_horizlinescan1 = 0x09ef, /* U+23BA HORIZONTAL SCAN LINE-1 */ - XK_horizlinescan3 = 0x09f0, /* U+23BB HORIZONTAL SCAN LINE-3 */ - XK_horizlinescan5 = 0x09f1, /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */ - XK_horizlinescan7 = 0x09f2, /* U+23BC HORIZONTAL SCAN LINE-7 */ - XK_horizlinescan9 = 0x09f3, /* U+23BD HORIZONTAL SCAN LINE-9 */ - XK_leftt = 0x09f4, /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ - XK_rightt = 0x09f5, /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */ - XK_bott = 0x09f6, /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */ - XK_topt = 0x09f7, /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ - XK_vertbar = 0x09f8, /* U+2502 BOX DRAWINGS LIGHT VERTICAL */ - XK_emspace = 0x0aa1, /* U+2003 EM SPACE */ - XK_enspace = 0x0aa2, /* U+2002 EN SPACE */ - XK_em3space = 0x0aa3, /* U+2004 THREE-PER-EM SPACE */ - XK_em4space = 0x0aa4, /* U+2005 FOUR-PER-EM SPACE */ - XK_digitspace = 0x0aa5, /* U+2007 FIGURE SPACE */ - XK_punctspace = 0x0aa6, /* U+2008 PUNCTUATION SPACE */ - XK_thinspace = 0x0aa7, /* U+2009 THIN SPACE */ - XK_hairspace = 0x0aa8, /* U+200A HAIR SPACE */ - XK_emdash = 0x0aa9, /* U+2014 EM DASH */ - XK_endash = 0x0aaa, /* U+2013 EN DASH */ - XK_signifblank = 0x0aac, /*(U+2423 OPEN BOX)*/ - XK_ellipsis = 0x0aae, /* U+2026 HORIZONTAL ELLIPSIS */ - XK_doubbaselinedot = 0x0aaf, /* U+2025 TWO DOT LEADER */ - XK_onethird = 0x0ab0, /* U+2153 VULGAR FRACTION ONE THIRD */ - XK_twothirds = 0x0ab1, /* U+2154 VULGAR FRACTION TWO THIRDS */ - XK_onefifth = 0x0ab2, /* U+2155 VULGAR FRACTION ONE FIFTH */ - XK_twofifths = 0x0ab3, /* U+2156 VULGAR FRACTION TWO FIFTHS */ - XK_threefifths = 0x0ab4, /* U+2157 VULGAR FRACTION THREE FIFTHS */ - XK_fourfifths = 0x0ab5, /* U+2158 VULGAR FRACTION FOUR FIFTHS */ - XK_onesixth = 0x0ab6, /* U+2159 VULGAR FRACTION ONE SIXTH */ - XK_fivesixths = 0x0ab7, /* U+215A VULGAR FRACTION FIVE SIXTHS */ - XK_careof = 0x0ab8, /* U+2105 CARE OF */ - XK_figdash = 0x0abb, /* U+2012 FIGURE DASH */ - XK_leftanglebracket = 0x0abc, /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/ - XK_decimalpoint = 0x0abd, /*(U+002E FULL STOP)*/ - XK_rightanglebracket = 0x0abe, /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/ - XK_marker = 0x0abf, - XK_oneeighth = 0x0ac3, /* U+215B VULGAR FRACTION ONE EIGHTH */ - XK_threeeighths = 0x0ac4, /* U+215C VULGAR FRACTION THREE EIGHTHS */ - XK_fiveeighths = 0x0ac5, /* U+215D VULGAR FRACTION FIVE EIGHTHS */ - XK_seveneighths = 0x0ac6, /* U+215E VULGAR FRACTION SEVEN EIGHTHS */ - XK_trademark = 0x0ac9, /* U+2122 TRADE MARK SIGN */ - XK_signaturemark = 0x0aca, /*(U+2613 SALTIRE)*/ - XK_trademarkincircle = 0x0acb, - XK_leftopentriangle = 0x0acc, /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/ - XK_rightopentriangle = 0x0acd, /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/ - XK_emopencircle = 0x0ace, /*(U+25CB WHITE CIRCLE)*/ - XK_emopenrectangle = 0x0acf, /*(U+25AF WHITE VERTICAL RECTANGLE)*/ - XK_leftsinglequotemark = 0x0ad0, /* U+2018 LEFT SINGLE QUOTATION MARK */ - XK_rightsinglequotemark = 0x0ad1, /* U+2019 RIGHT SINGLE QUOTATION MARK */ - XK_leftdoublequotemark = 0x0ad2, /* U+201C LEFT DOUBLE QUOTATION MARK */ - XK_rightdoublequotemark = 0x0ad3, /* U+201D RIGHT DOUBLE QUOTATION MARK */ - XK_prescription = 0x0ad4, /* U+211E PRESCRIPTION TAKE */ - XK_minutes = 0x0ad6, /* U+2032 PRIME */ - XK_seconds = 0x0ad7, /* U+2033 DOUBLE PRIME */ - XK_latincross = 0x0ad9, /* U+271D LATIN CROSS */ - XK_hexagram = 0x0ada, - XK_filledrectbullet = 0x0adb, /*(U+25AC BLACK RECTANGLE)*/ - XK_filledlefttribullet = 0x0adc, /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/ - XK_filledrighttribullet = 0x0add, /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/ - XK_emfilledcircle = 0x0ade, /*(U+25CF BLACK CIRCLE)*/ - XK_emfilledrect = 0x0adf, /*(U+25AE BLACK VERTICAL RECTANGLE)*/ - XK_enopencircbullet = 0x0ae0, /*(U+25E6 WHITE BULLET)*/ - XK_enopensquarebullet = 0x0ae1, /*(U+25AB WHITE SMALL SQUARE)*/ - XK_openrectbullet = 0x0ae2, /*(U+25AD WHITE RECTANGLE)*/ - XK_opentribulletup = 0x0ae3, /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/ - XK_opentribulletdown = 0x0ae4, /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/ - XK_openstar = 0x0ae5, /*(U+2606 WHITE STAR)*/ - XK_enfilledcircbullet = 0x0ae6, /*(U+2022 BULLET)*/ - XK_enfilledsqbullet = 0x0ae7, /*(U+25AA BLACK SMALL SQUARE)*/ - XK_filledtribulletup = 0x0ae8, /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/ - XK_filledtribulletdown = 0x0ae9, /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/ - XK_leftpointer = 0x0aea, /*(U+261C WHITE LEFT POINTING INDEX)*/ - XK_rightpointer = 0x0aeb, /*(U+261E WHITE RIGHT POINTING INDEX)*/ - XK_club = 0x0aec, /* U+2663 BLACK CLUB SUIT */ - XK_diamond = 0x0aed, /* U+2666 BLACK DIAMOND SUIT */ - XK_heart = 0x0aee, /* U+2665 BLACK HEART SUIT */ - XK_maltesecross = 0x0af0, /* U+2720 MALTESE CROSS */ - XK_dagger = 0x0af1, /* U+2020 DAGGER */ - XK_doubledagger = 0x0af2, /* U+2021 DOUBLE DAGGER */ - XK_checkmark = 0x0af3, /* U+2713 CHECK MARK */ - XK_ballotcross = 0x0af4, /* U+2717 BALLOT X */ - XK_musicalsharp = 0x0af5, /* U+266F MUSIC SHARP SIGN */ - XK_musicalflat = 0x0af6, /* U+266D MUSIC FLAT SIGN */ - XK_malesymbol = 0x0af7, /* U+2642 MALE SIGN */ - XK_femalesymbol = 0x0af8, /* U+2640 FEMALE SIGN */ - XK_telephone = 0x0af9, /* U+260E BLACK TELEPHONE */ - XK_telephonerecorder = 0x0afa, /* U+2315 TELEPHONE RECORDER */ - XK_phonographcopyright = 0x0afb, /* U+2117 SOUND RECORDING COPYRIGHT */ - XK_caret = 0x0afc, /* U+2038 CARET */ - XK_singlelowquotemark = 0x0afd, /* U+201A SINGLE LOW-9 QUOTATION MARK */ - XK_doublelowquotemark = 0x0afe, /* U+201E DOUBLE LOW-9 QUOTATION MARK */ - XK_cursor = 0x0aff, - XK_leftcaret = 0x0ba3, /*(U+003C LESS-THAN SIGN)*/ - XK_rightcaret = 0x0ba6, /*(U+003E GREATER-THAN SIGN)*/ - XK_downcaret = 0x0ba8, /*(U+2228 LOGICAL OR)*/ - XK_upcaret = 0x0ba9, /*(U+2227 LOGICAL AND)*/ - XK_overbar = 0x0bc0, /*(U+00AF MACRON)*/ - XK_downtack = 0x0bc2, /* U+22A5 UP TACK */ - XK_upshoe = 0x0bc3, /*(U+2229 INTERSECTION)*/ - XK_downstile = 0x0bc4, /* U+230A LEFT FLOOR */ - XK_underbar = 0x0bc6, /*(U+005F LOW LINE)*/ - XK_jot = 0x0bca, /* U+2218 RING OPERATOR */ - XK_quad = 0x0bcc, /* U+2395 APL FUNCTIONAL SYMBOL QUAD */ - XK_uptack = 0x0bce, /* U+22A4 DOWN TACK */ - XK_circle = 0x0bcf, /* U+25CB WHITE CIRCLE */ - XK_upstile = 0x0bd3, /* U+2308 LEFT CEILING */ - XK_downshoe = 0x0bd6, /*(U+222A UNION)*/ - XK_rightshoe = 0x0bd8, /*(U+2283 SUPERSET OF)*/ - XK_leftshoe = 0x0bda, /*(U+2282 SUBSET OF)*/ - XK_lefttack = 0x0bdc, /* U+22A2 RIGHT TACK */ - XK_righttack = 0x0bfc, /* U+22A3 LEFT TACK */ - XK_hebrew_doublelowline = 0x0cdf, /* U+2017 DOUBLE LOW LINE */ - XK_hebrew_aleph = 0x0ce0, /* U+05D0 HEBREW LETTER ALEF */ - XK_hebrew_bet = 0x0ce1, /* U+05D1 HEBREW LETTER BET */ - XK_hebrew_beth = 0x0ce1, /* deprecated */ - XK_hebrew_gimel = 0x0ce2, /* U+05D2 HEBREW LETTER GIMEL */ - XK_hebrew_gimmel = 0x0ce2, /* deprecated */ - XK_hebrew_dalet = 0x0ce3, /* U+05D3 HEBREW LETTER DALET */ - XK_hebrew_daleth = 0x0ce3, /* deprecated */ - XK_hebrew_he = 0x0ce4, /* U+05D4 HEBREW LETTER HE */ - XK_hebrew_waw = 0x0ce5, /* U+05D5 HEBREW LETTER VAV */ - XK_hebrew_zain = 0x0ce6, /* U+05D6 HEBREW LETTER ZAYIN */ - XK_hebrew_zayin = 0x0ce6, /* deprecated */ - XK_hebrew_chet = 0x0ce7, /* U+05D7 HEBREW LETTER HET */ - XK_hebrew_het = 0x0ce7, /* deprecated */ - XK_hebrew_tet = 0x0ce8, /* U+05D8 HEBREW LETTER TET */ - XK_hebrew_teth = 0x0ce8, /* deprecated */ - XK_hebrew_yod = 0x0ce9, /* U+05D9 HEBREW LETTER YOD */ - XK_hebrew_finalkaph = 0x0cea, /* U+05DA HEBREW LETTER FINAL KAF */ - XK_hebrew_kaph = 0x0ceb, /* U+05DB HEBREW LETTER KAF */ - XK_hebrew_lamed = 0x0cec, /* U+05DC HEBREW LETTER LAMED */ - XK_hebrew_finalmem = 0x0ced, /* U+05DD HEBREW LETTER FINAL MEM */ - XK_hebrew_mem = 0x0cee, /* U+05DE HEBREW LETTER MEM */ - XK_hebrew_finalnun = 0x0cef, /* U+05DF HEBREW LETTER FINAL NUN */ - XK_hebrew_nun = 0x0cf0, /* U+05E0 HEBREW LETTER NUN */ - XK_hebrew_samech = 0x0cf1, /* U+05E1 HEBREW LETTER SAMEKH */ - XK_hebrew_samekh = 0x0cf1, /* deprecated */ - XK_hebrew_ayin = 0x0cf2, /* U+05E2 HEBREW LETTER AYIN */ - XK_hebrew_finalpe = 0x0cf3, /* U+05E3 HEBREW LETTER FINAL PE */ - XK_hebrew_pe = 0x0cf4, /* U+05E4 HEBREW LETTER PE */ - XK_hebrew_finalzade = 0x0cf5, /* U+05E5 HEBREW LETTER FINAL TSADI */ - XK_hebrew_finalzadi = 0x0cf5, /* deprecated */ - XK_hebrew_zade = 0x0cf6, /* U+05E6 HEBREW LETTER TSADI */ - XK_hebrew_zadi = 0x0cf6, /* deprecated */ - XK_hebrew_qoph = 0x0cf7, /* U+05E7 HEBREW LETTER QOF */ - XK_hebrew_kuf = 0x0cf7, /* deprecated */ - XK_hebrew_resh = 0x0cf8, /* U+05E8 HEBREW LETTER RESH */ - XK_hebrew_shin = 0x0cf9, /* U+05E9 HEBREW LETTER SHIN */ - XK_hebrew_taw = 0x0cfa, /* U+05EA HEBREW LETTER TAV */ - XK_hebrew_taf = 0x0cfa, /* deprecated */ - XK_Hebrew_switch = 0xff7e, /* Alias for mode_switch */ - XK_Thai_kokai = 0x0da1, /* U+0E01 THAI CHARACTER KO KAI */ - XK_Thai_khokhai = 0x0da2, /* U+0E02 THAI CHARACTER KHO KHAI */ - XK_Thai_khokhuat = 0x0da3, /* U+0E03 THAI CHARACTER KHO KHUAT */ - XK_Thai_khokhwai = 0x0da4, /* U+0E04 THAI CHARACTER KHO KHWAI */ - XK_Thai_khokhon = 0x0da5, /* U+0E05 THAI CHARACTER KHO KHON */ - XK_Thai_khorakhang = 0x0da6, /* U+0E06 THAI CHARACTER KHO RAKHANG */ - XK_Thai_ngongu = 0x0da7, /* U+0E07 THAI CHARACTER NGO NGU */ - XK_Thai_chochan = 0x0da8, /* U+0E08 THAI CHARACTER CHO CHAN */ - XK_Thai_choching = 0x0da9, /* U+0E09 THAI CHARACTER CHO CHING */ - XK_Thai_chochang = 0x0daa, /* U+0E0A THAI CHARACTER CHO CHANG */ - XK_Thai_soso = 0x0dab, /* U+0E0B THAI CHARACTER SO SO */ - XK_Thai_chochoe = 0x0dac, /* U+0E0C THAI CHARACTER CHO CHOE */ - XK_Thai_yoying = 0x0dad, /* U+0E0D THAI CHARACTER YO YING */ - XK_Thai_dochada = 0x0dae, /* U+0E0E THAI CHARACTER DO CHADA */ - XK_Thai_topatak = 0x0daf, /* U+0E0F THAI CHARACTER TO PATAK */ - XK_Thai_thothan = 0x0db0, /* U+0E10 THAI CHARACTER THO THAN */ - XK_Thai_thonangmontho = 0x0db1, /* U+0E11 THAI CHARACTER THO NANGMONTHO */ - XK_Thai_thophuthao = 0x0db2, /* U+0E12 THAI CHARACTER THO PHUTHAO */ - XK_Thai_nonen = 0x0db3, /* U+0E13 THAI CHARACTER NO NEN */ - XK_Thai_dodek = 0x0db4, /* U+0E14 THAI CHARACTER DO DEK */ - XK_Thai_totao = 0x0db5, /* U+0E15 THAI CHARACTER TO TAO */ - XK_Thai_thothung = 0x0db6, /* U+0E16 THAI CHARACTER THO THUNG */ - XK_Thai_thothahan = 0x0db7, /* U+0E17 THAI CHARACTER THO THAHAN */ - XK_Thai_thothong = 0x0db8, /* U+0E18 THAI CHARACTER THO THONG */ - XK_Thai_nonu = 0x0db9, /* U+0E19 THAI CHARACTER NO NU */ - XK_Thai_bobaimai = 0x0dba, /* U+0E1A THAI CHARACTER BO BAIMAI */ - XK_Thai_popla = 0x0dbb, /* U+0E1B THAI CHARACTER PO PLA */ - XK_Thai_phophung = 0x0dbc, /* U+0E1C THAI CHARACTER PHO PHUNG */ - XK_Thai_fofa = 0x0dbd, /* U+0E1D THAI CHARACTER FO FA */ - XK_Thai_phophan = 0x0dbe, /* U+0E1E THAI CHARACTER PHO PHAN */ - XK_Thai_fofan = 0x0dbf, /* U+0E1F THAI CHARACTER FO FAN */ - XK_Thai_phosamphao = 0x0dc0, /* U+0E20 THAI CHARACTER PHO SAMPHAO */ - XK_Thai_moma = 0x0dc1, /* U+0E21 THAI CHARACTER MO MA */ - XK_Thai_yoyak = 0x0dc2, /* U+0E22 THAI CHARACTER YO YAK */ - XK_Thai_rorua = 0x0dc3, /* U+0E23 THAI CHARACTER RO RUA */ - XK_Thai_ru = 0x0dc4, /* U+0E24 THAI CHARACTER RU */ - XK_Thai_loling = 0x0dc5, /* U+0E25 THAI CHARACTER LO LING */ - XK_Thai_lu = 0x0dc6, /* U+0E26 THAI CHARACTER LU */ - XK_Thai_wowaen = 0x0dc7, /* U+0E27 THAI CHARACTER WO WAEN */ - XK_Thai_sosala = 0x0dc8, /* U+0E28 THAI CHARACTER SO SALA */ - XK_Thai_sorusi = 0x0dc9, /* U+0E29 THAI CHARACTER SO RUSI */ - XK_Thai_sosua = 0x0dca, /* U+0E2A THAI CHARACTER SO SUA */ - XK_Thai_hohip = 0x0dcb, /* U+0E2B THAI CHARACTER HO HIP */ - XK_Thai_lochula = 0x0dcc, /* U+0E2C THAI CHARACTER LO CHULA */ - XK_Thai_oang = 0x0dcd, /* U+0E2D THAI CHARACTER O ANG */ - XK_Thai_honokhuk = 0x0dce, /* U+0E2E THAI CHARACTER HO NOKHUK */ - XK_Thai_paiyannoi = 0x0dcf, /* U+0E2F THAI CHARACTER PAIYANNOI */ - XK_Thai_saraa = 0x0dd0, /* U+0E30 THAI CHARACTER SARA A */ - XK_Thai_maihanakat = 0x0dd1, /* U+0E31 THAI CHARACTER MAI HAN-AKAT */ - XK_Thai_saraaa = 0x0dd2, /* U+0E32 THAI CHARACTER SARA AA */ - XK_Thai_saraam = 0x0dd3, /* U+0E33 THAI CHARACTER SARA AM */ - XK_Thai_sarai = 0x0dd4, /* U+0E34 THAI CHARACTER SARA I */ - XK_Thai_saraii = 0x0dd5, /* U+0E35 THAI CHARACTER SARA II */ - XK_Thai_saraue = 0x0dd6, /* U+0E36 THAI CHARACTER SARA UE */ - XK_Thai_sarauee = 0x0dd7, /* U+0E37 THAI CHARACTER SARA UEE */ - XK_Thai_sarau = 0x0dd8, /* U+0E38 THAI CHARACTER SARA U */ - XK_Thai_sarauu = 0x0dd9, /* U+0E39 THAI CHARACTER SARA UU */ - XK_Thai_phinthu = 0x0dda, /* U+0E3A THAI CHARACTER PHINTHU */ - XK_Thai_maihanakat_maitho = 0x0dde, - XK_Thai_baht = 0x0ddf, /* U+0E3F THAI CURRENCY SYMBOL BAHT */ - XK_Thai_sarae = 0x0de0, /* U+0E40 THAI CHARACTER SARA E */ - XK_Thai_saraae = 0x0de1, /* U+0E41 THAI CHARACTER SARA AE */ - XK_Thai_sarao = 0x0de2, /* U+0E42 THAI CHARACTER SARA O */ - XK_Thai_saraaimaimuan = 0x0de3, /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */ - XK_Thai_saraaimaimalai = 0x0de4, /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */ - XK_Thai_lakkhangyao = 0x0de5, /* U+0E45 THAI CHARACTER LAKKHANGYAO */ - XK_Thai_maiyamok = 0x0de6, /* U+0E46 THAI CHARACTER MAIYAMOK */ - XK_Thai_maitaikhu = 0x0de7, /* U+0E47 THAI CHARACTER MAITAIKHU */ - XK_Thai_maiek = 0x0de8, /* U+0E48 THAI CHARACTER MAI EK */ - XK_Thai_maitho = 0x0de9, /* U+0E49 THAI CHARACTER MAI THO */ - XK_Thai_maitri = 0x0dea, /* U+0E4A THAI CHARACTER MAI TRI */ - XK_Thai_maichattawa = 0x0deb, /* U+0E4B THAI CHARACTER MAI CHATTAWA */ - XK_Thai_thanthakhat = 0x0dec, /* U+0E4C THAI CHARACTER THANTHAKHAT */ - XK_Thai_nikhahit = 0x0ded, /* U+0E4D THAI CHARACTER NIKHAHIT */ - XK_Thai_leksun = 0x0df0, /* U+0E50 THAI DIGIT ZERO */ - XK_Thai_leknung = 0x0df1, /* U+0E51 THAI DIGIT ONE */ - XK_Thai_leksong = 0x0df2, /* U+0E52 THAI DIGIT TWO */ - XK_Thai_leksam = 0x0df3, /* U+0E53 THAI DIGIT THREE */ - XK_Thai_leksi = 0x0df4, /* U+0E54 THAI DIGIT FOUR */ - XK_Thai_lekha = 0x0df5, /* U+0E55 THAI DIGIT FIVE */ - XK_Thai_lekhok = 0x0df6, /* U+0E56 THAI DIGIT SIX */ - XK_Thai_lekchet = 0x0df7, /* U+0E57 THAI DIGIT SEVEN */ - XK_Thai_lekpaet = 0x0df8, /* U+0E58 THAI DIGIT EIGHT */ - XK_Thai_lekkao = 0x0df9, /* U+0E59 THAI DIGIT NINE */ - XK_Hangul = 0xff31, /* Hangul start/stop(toggle) */ - XK_Hangul_Start = 0xff32, /* Hangul start */ - XK_Hangul_End = 0xff33, /* Hangul end, English start */ - XK_Hangul_Hanja = 0xff34, /* Start Hangul->Hanja Conversion */ - XK_Hangul_Jamo = 0xff35, /* Hangul Jamo mode */ - XK_Hangul_Romaja = 0xff36, /* Hangul Romaja mode */ - XK_Hangul_Codeinput = 0xff37, /* Hangul code input mode */ - XK_Hangul_Jeonja = 0xff38, /* Jeonja mode */ - XK_Hangul_Banja = 0xff39, /* Banja mode */ - XK_Hangul_PreHanja = 0xff3a, /* Pre Hanja conversion */ - XK_Hangul_PostHanja = 0xff3b, /* Post Hanja conversion */ - XK_Hangul_SingleCandidate = 0xff3c, /* Single candidate */ - XK_Hangul_MultipleCandidate = 0xff3d, /* Multiple candidate */ - XK_Hangul_PreviousCandidate = 0xff3e, /* Previous candidate */ - XK_Hangul_Special = 0xff3f, /* Special symbols */ - XK_Hangul_switch = 0xff7e, /* Alias for mode_switch */ - XK_Hangul_Kiyeog = 0x0ea1, - XK_Hangul_SsangKiyeog = 0x0ea2, - XK_Hangul_KiyeogSios = 0x0ea3, - XK_Hangul_Nieun = 0x0ea4, - XK_Hangul_NieunJieuj = 0x0ea5, - XK_Hangul_NieunHieuh = 0x0ea6, - XK_Hangul_Dikeud = 0x0ea7, - XK_Hangul_SsangDikeud = 0x0ea8, - XK_Hangul_Rieul = 0x0ea9, - XK_Hangul_RieulKiyeog = 0x0eaa, - XK_Hangul_RieulMieum = 0x0eab, - XK_Hangul_RieulPieub = 0x0eac, - XK_Hangul_RieulSios = 0x0ead, - XK_Hangul_RieulTieut = 0x0eae, - XK_Hangul_RieulPhieuf = 0x0eaf, - XK_Hangul_RieulHieuh = 0x0eb0, - XK_Hangul_Mieum = 0x0eb1, - XK_Hangul_Pieub = 0x0eb2, - XK_Hangul_SsangPieub = 0x0eb3, - XK_Hangul_PieubSios = 0x0eb4, - XK_Hangul_Sios = 0x0eb5, - XK_Hangul_SsangSios = 0x0eb6, - XK_Hangul_Ieung = 0x0eb7, - XK_Hangul_Jieuj = 0x0eb8, - XK_Hangul_SsangJieuj = 0x0eb9, - XK_Hangul_Cieuc = 0x0eba, - XK_Hangul_Khieuq = 0x0ebb, - XK_Hangul_Tieut = 0x0ebc, - XK_Hangul_Phieuf = 0x0ebd, - XK_Hangul_Hieuh = 0x0ebe, - XK_Hangul_A = 0x0ebf, - XK_Hangul_AE = 0x0ec0, - XK_Hangul_YA = 0x0ec1, - XK_Hangul_YAE = 0x0ec2, - XK_Hangul_EO = 0x0ec3, - XK_Hangul_E = 0x0ec4, - XK_Hangul_YEO = 0x0ec5, - XK_Hangul_YE = 0x0ec6, - XK_Hangul_O = 0x0ec7, - XK_Hangul_WA = 0x0ec8, - XK_Hangul_WAE = 0x0ec9, - XK_Hangul_OE = 0x0eca, - XK_Hangul_YO = 0x0ecb, - XK_Hangul_U = 0x0ecc, - XK_Hangul_WEO = 0x0ecd, - XK_Hangul_WE = 0x0ece, - XK_Hangul_WI = 0x0ecf, - XK_Hangul_YU = 0x0ed0, - XK_Hangul_EU = 0x0ed1, - XK_Hangul_YI = 0x0ed2, - XK_Hangul_I = 0x0ed3, - XK_Hangul_J_Kiyeog = 0x0ed4, - XK_Hangul_J_SsangKiyeog = 0x0ed5, - XK_Hangul_J_KiyeogSios = 0x0ed6, - XK_Hangul_J_Nieun = 0x0ed7, - XK_Hangul_J_NieunJieuj = 0x0ed8, - XK_Hangul_J_NieunHieuh = 0x0ed9, - XK_Hangul_J_Dikeud = 0x0eda, - XK_Hangul_J_Rieul = 0x0edb, - XK_Hangul_J_RieulKiyeog = 0x0edc, - XK_Hangul_J_RieulMieum = 0x0edd, - XK_Hangul_J_RieulPieub = 0x0ede, - XK_Hangul_J_RieulSios = 0x0edf, - XK_Hangul_J_RieulTieut = 0x0ee0, - XK_Hangul_J_RieulPhieuf = 0x0ee1, - XK_Hangul_J_RieulHieuh = 0x0ee2, - XK_Hangul_J_Mieum = 0x0ee3, - XK_Hangul_J_Pieub = 0x0ee4, - XK_Hangul_J_PieubSios = 0x0ee5, - XK_Hangul_J_Sios = 0x0ee6, - XK_Hangul_J_SsangSios = 0x0ee7, - XK_Hangul_J_Ieung = 0x0ee8, - XK_Hangul_J_Jieuj = 0x0ee9, - XK_Hangul_J_Cieuc = 0x0eea, - XK_Hangul_J_Khieuq = 0x0eeb, - XK_Hangul_J_Tieut = 0x0eec, - XK_Hangul_J_Phieuf = 0x0eed, - XK_Hangul_J_Hieuh = 0x0eee, - XK_Hangul_RieulYeorinHieuh = 0x0eef, - XK_Hangul_SunkyeongeumMieum = 0x0ef0, - XK_Hangul_SunkyeongeumPieub = 0x0ef1, - XK_Hangul_PanSios = 0x0ef2, - XK_Hangul_KkogjiDalrinIeung = 0x0ef3, - XK_Hangul_SunkyeongeumPhieuf = 0x0ef4, - XK_Hangul_YeorinHieuh = 0x0ef5, - XK_Hangul_AraeA = 0x0ef6, - XK_Hangul_AraeAE = 0x0ef7, - XK_Hangul_J_PanSios = 0x0ef8, - XK_Hangul_J_KkogjiDalrinIeung = 0x0ef9, - XK_Hangul_J_YeorinHieuh = 0x0efa, - XK_Korean_Won = 0x0eff, /*(U+20A9 WON SIGN)*/ - XK_Armenian_ligature_ew = 0x1000587, /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */ - XK_Armenian_full_stop = 0x1000589, /* U+0589 ARMENIAN FULL STOP */ - XK_Armenian_verjaket = 0x1000589, /* U+0589 ARMENIAN FULL STOP */ - XK_Armenian_separation_mark = 0x100055d, /* U+055D ARMENIAN COMMA */ - XK_Armenian_but = 0x100055d, /* U+055D ARMENIAN COMMA */ - XK_Armenian_hyphen = 0x100058a, /* U+058A ARMENIAN HYPHEN */ - XK_Armenian_yentamna = 0x100058a, /* U+058A ARMENIAN HYPHEN */ - XK_Armenian_exclam = 0x100055c, /* U+055C ARMENIAN EXCLAMATION MARK */ - XK_Armenian_amanak = 0x100055c, /* U+055C ARMENIAN EXCLAMATION MARK */ - XK_Armenian_accent = 0x100055b, /* U+055B ARMENIAN EMPHASIS MARK */ - XK_Armenian_shesht = 0x100055b, /* U+055B ARMENIAN EMPHASIS MARK */ - XK_Armenian_question = 0x100055e, /* U+055E ARMENIAN QUESTION MARK */ - XK_Armenian_paruyk = 0x100055e, /* U+055E ARMENIAN QUESTION MARK */ - XK_Armenian_AYB = 0x1000531, /* U+0531 ARMENIAN CAPITAL LETTER AYB */ - XK_Armenian_ayb = 0x1000561, /* U+0561 ARMENIAN SMALL LETTER AYB */ - XK_Armenian_BEN = 0x1000532, /* U+0532 ARMENIAN CAPITAL LETTER BEN */ - XK_Armenian_ben = 0x1000562, /* U+0562 ARMENIAN SMALL LETTER BEN */ - XK_Armenian_GIM = 0x1000533, /* U+0533 ARMENIAN CAPITAL LETTER GIM */ - XK_Armenian_gim = 0x1000563, /* U+0563 ARMENIAN SMALL LETTER GIM */ - XK_Armenian_DA = 0x1000534, /* U+0534 ARMENIAN CAPITAL LETTER DA */ - XK_Armenian_da = 0x1000564, /* U+0564 ARMENIAN SMALL LETTER DA */ - XK_Armenian_YECH = 0x1000535, /* U+0535 ARMENIAN CAPITAL LETTER ECH */ - XK_Armenian_yech = 0x1000565, /* U+0565 ARMENIAN SMALL LETTER ECH */ - XK_Armenian_ZA = 0x1000536, /* U+0536 ARMENIAN CAPITAL LETTER ZA */ - XK_Armenian_za = 0x1000566, /* U+0566 ARMENIAN SMALL LETTER ZA */ - XK_Armenian_E = 0x1000537, /* U+0537 ARMENIAN CAPITAL LETTER EH */ - XK_Armenian_e = 0x1000567, /* U+0567 ARMENIAN SMALL LETTER EH */ - XK_Armenian_AT = 0x1000538, /* U+0538 ARMENIAN CAPITAL LETTER ET */ - XK_Armenian_at = 0x1000568, /* U+0568 ARMENIAN SMALL LETTER ET */ - XK_Armenian_TO = 0x1000539, /* U+0539 ARMENIAN CAPITAL LETTER TO */ - XK_Armenian_to = 0x1000569, /* U+0569 ARMENIAN SMALL LETTER TO */ - XK_Armenian_ZHE = 0x100053a, /* U+053A ARMENIAN CAPITAL LETTER ZHE */ - XK_Armenian_zhe = 0x100056a, /* U+056A ARMENIAN SMALL LETTER ZHE */ - XK_Armenian_INI = 0x100053b, /* U+053B ARMENIAN CAPITAL LETTER INI */ - XK_Armenian_ini = 0x100056b, /* U+056B ARMENIAN SMALL LETTER INI */ - XK_Armenian_LYUN = 0x100053c, /* U+053C ARMENIAN CAPITAL LETTER LIWN */ - XK_Armenian_lyun = 0x100056c, /* U+056C ARMENIAN SMALL LETTER LIWN */ - XK_Armenian_KHE = 0x100053d, /* U+053D ARMENIAN CAPITAL LETTER XEH */ - XK_Armenian_khe = 0x100056d, /* U+056D ARMENIAN SMALL LETTER XEH */ - XK_Armenian_TSA = 0x100053e, /* U+053E ARMENIAN CAPITAL LETTER CA */ - XK_Armenian_tsa = 0x100056e, /* U+056E ARMENIAN SMALL LETTER CA */ - XK_Armenian_KEN = 0x100053f, /* U+053F ARMENIAN CAPITAL LETTER KEN */ - XK_Armenian_ken = 0x100056f, /* U+056F ARMENIAN SMALL LETTER KEN */ - XK_Armenian_HO = 0x1000540, /* U+0540 ARMENIAN CAPITAL LETTER HO */ - XK_Armenian_ho = 0x1000570, /* U+0570 ARMENIAN SMALL LETTER HO */ - XK_Armenian_DZA = 0x1000541, /* U+0541 ARMENIAN CAPITAL LETTER JA */ - XK_Armenian_dza = 0x1000571, /* U+0571 ARMENIAN SMALL LETTER JA */ - XK_Armenian_GHAT = 0x1000542, /* U+0542 ARMENIAN CAPITAL LETTER GHAD */ - XK_Armenian_ghat = 0x1000572, /* U+0572 ARMENIAN SMALL LETTER GHAD */ - XK_Armenian_TCHE = 0x1000543, /* U+0543 ARMENIAN CAPITAL LETTER CHEH */ - XK_Armenian_tche = 0x1000573, /* U+0573 ARMENIAN SMALL LETTER CHEH */ - XK_Armenian_MEN = 0x1000544, /* U+0544 ARMENIAN CAPITAL LETTER MEN */ - XK_Armenian_men = 0x1000574, /* U+0574 ARMENIAN SMALL LETTER MEN */ - XK_Armenian_HI = 0x1000545, /* U+0545 ARMENIAN CAPITAL LETTER YI */ - XK_Armenian_hi = 0x1000575, /* U+0575 ARMENIAN SMALL LETTER YI */ - XK_Armenian_NU = 0x1000546, /* U+0546 ARMENIAN CAPITAL LETTER NOW */ - XK_Armenian_nu = 0x1000576, /* U+0576 ARMENIAN SMALL LETTER NOW */ - XK_Armenian_SHA = 0x1000547, /* U+0547 ARMENIAN CAPITAL LETTER SHA */ - XK_Armenian_sha = 0x1000577, /* U+0577 ARMENIAN SMALL LETTER SHA */ - XK_Armenian_VO = 0x1000548, /* U+0548 ARMENIAN CAPITAL LETTER VO */ - XK_Armenian_vo = 0x1000578, /* U+0578 ARMENIAN SMALL LETTER VO */ - XK_Armenian_CHA = 0x1000549, /* U+0549 ARMENIAN CAPITAL LETTER CHA */ - XK_Armenian_cha = 0x1000579, /* U+0579 ARMENIAN SMALL LETTER CHA */ - XK_Armenian_PE = 0x100054a, /* U+054A ARMENIAN CAPITAL LETTER PEH */ - XK_Armenian_pe = 0x100057a, /* U+057A ARMENIAN SMALL LETTER PEH */ - XK_Armenian_JE = 0x100054b, /* U+054B ARMENIAN CAPITAL LETTER JHEH */ - XK_Armenian_je = 0x100057b, /* U+057B ARMENIAN SMALL LETTER JHEH */ - XK_Armenian_RA = 0x100054c, /* U+054C ARMENIAN CAPITAL LETTER RA */ - XK_Armenian_ra = 0x100057c, /* U+057C ARMENIAN SMALL LETTER RA */ - XK_Armenian_SE = 0x100054d, /* U+054D ARMENIAN CAPITAL LETTER SEH */ - XK_Armenian_se = 0x100057d, /* U+057D ARMENIAN SMALL LETTER SEH */ - XK_Armenian_VEV = 0x100054e, /* U+054E ARMENIAN CAPITAL LETTER VEW */ - XK_Armenian_vev = 0x100057e, /* U+057E ARMENIAN SMALL LETTER VEW */ - XK_Armenian_TYUN = 0x100054f, /* U+054F ARMENIAN CAPITAL LETTER TIWN */ - XK_Armenian_tyun = 0x100057f, /* U+057F ARMENIAN SMALL LETTER TIWN */ - XK_Armenian_RE = 0x1000550, /* U+0550 ARMENIAN CAPITAL LETTER REH */ - XK_Armenian_re = 0x1000580, /* U+0580 ARMENIAN SMALL LETTER REH */ - XK_Armenian_TSO = 0x1000551, /* U+0551 ARMENIAN CAPITAL LETTER CO */ - XK_Armenian_tso = 0x1000581, /* U+0581 ARMENIAN SMALL LETTER CO */ - XK_Armenian_VYUN = 0x1000552, /* U+0552 ARMENIAN CAPITAL LETTER YIWN */ - XK_Armenian_vyun = 0x1000582, /* U+0582 ARMENIAN SMALL LETTER YIWN */ - XK_Armenian_PYUR = 0x1000553, /* U+0553 ARMENIAN CAPITAL LETTER PIWR */ - XK_Armenian_pyur = 0x1000583, /* U+0583 ARMENIAN SMALL LETTER PIWR */ - XK_Armenian_KE = 0x1000554, /* U+0554 ARMENIAN CAPITAL LETTER KEH */ - XK_Armenian_ke = 0x1000584, /* U+0584 ARMENIAN SMALL LETTER KEH */ - XK_Armenian_O = 0x1000555, /* U+0555 ARMENIAN CAPITAL LETTER OH */ - XK_Armenian_o = 0x1000585, /* U+0585 ARMENIAN SMALL LETTER OH */ - XK_Armenian_FE = 0x1000556, /* U+0556 ARMENIAN CAPITAL LETTER FEH */ - XK_Armenian_fe = 0x1000586, /* U+0586 ARMENIAN SMALL LETTER FEH */ - XK_Armenian_apostrophe = 0x100055a, /* U+055A ARMENIAN APOSTROPHE */ - XK_Georgian_an = 0x10010d0, /* U+10D0 GEORGIAN LETTER AN */ - XK_Georgian_ban = 0x10010d1, /* U+10D1 GEORGIAN LETTER BAN */ - XK_Georgian_gan = 0x10010d2, /* U+10D2 GEORGIAN LETTER GAN */ - XK_Georgian_don = 0x10010d3, /* U+10D3 GEORGIAN LETTER DON */ - XK_Georgian_en = 0x10010d4, /* U+10D4 GEORGIAN LETTER EN */ - XK_Georgian_vin = 0x10010d5, /* U+10D5 GEORGIAN LETTER VIN */ - XK_Georgian_zen = 0x10010d6, /* U+10D6 GEORGIAN LETTER ZEN */ - XK_Georgian_tan = 0x10010d7, /* U+10D7 GEORGIAN LETTER TAN */ - XK_Georgian_in = 0x10010d8, /* U+10D8 GEORGIAN LETTER IN */ - XK_Georgian_kan = 0x10010d9, /* U+10D9 GEORGIAN LETTER KAN */ - XK_Georgian_las = 0x10010da, /* U+10DA GEORGIAN LETTER LAS */ - XK_Georgian_man = 0x10010db, /* U+10DB GEORGIAN LETTER MAN */ - XK_Georgian_nar = 0x10010dc, /* U+10DC GEORGIAN LETTER NAR */ - XK_Georgian_on = 0x10010dd, /* U+10DD GEORGIAN LETTER ON */ - XK_Georgian_par = 0x10010de, /* U+10DE GEORGIAN LETTER PAR */ - XK_Georgian_zhar = 0x10010df, /* U+10DF GEORGIAN LETTER ZHAR */ - XK_Georgian_rae = 0x10010e0, /* U+10E0 GEORGIAN LETTER RAE */ - XK_Georgian_san = 0x10010e1, /* U+10E1 GEORGIAN LETTER SAN */ - XK_Georgian_tar = 0x10010e2, /* U+10E2 GEORGIAN LETTER TAR */ - XK_Georgian_un = 0x10010e3, /* U+10E3 GEORGIAN LETTER UN */ - XK_Georgian_phar = 0x10010e4, /* U+10E4 GEORGIAN LETTER PHAR */ - XK_Georgian_khar = 0x10010e5, /* U+10E5 GEORGIAN LETTER KHAR */ - XK_Georgian_ghan = 0x10010e6, /* U+10E6 GEORGIAN LETTER GHAN */ - XK_Georgian_qar = 0x10010e7, /* U+10E7 GEORGIAN LETTER QAR */ - XK_Georgian_shin = 0x10010e8, /* U+10E8 GEORGIAN LETTER SHIN */ - XK_Georgian_chin = 0x10010e9, /* U+10E9 GEORGIAN LETTER CHIN */ - XK_Georgian_can = 0x10010ea, /* U+10EA GEORGIAN LETTER CAN */ - XK_Georgian_jil = 0x10010eb, /* U+10EB GEORGIAN LETTER JIL */ - XK_Georgian_cil = 0x10010ec, /* U+10EC GEORGIAN LETTER CIL */ - XK_Georgian_char = 0x10010ed, /* U+10ED GEORGIAN LETTER CHAR */ - XK_Georgian_xan = 0x10010ee, /* U+10EE GEORGIAN LETTER XAN */ - XK_Georgian_jhan = 0x10010ef, /* U+10EF GEORGIAN LETTER JHAN */ - XK_Georgian_hae = 0x10010f0, /* U+10F0 GEORGIAN LETTER HAE */ - XK_Georgian_he = 0x10010f1, /* U+10F1 GEORGIAN LETTER HE */ - XK_Georgian_hie = 0x10010f2, /* U+10F2 GEORGIAN LETTER HIE */ - XK_Georgian_we = 0x10010f3, /* U+10F3 GEORGIAN LETTER WE */ - XK_Georgian_har = 0x10010f4, /* U+10F4 GEORGIAN LETTER HAR */ - XK_Georgian_hoe = 0x10010f5, /* U+10F5 GEORGIAN LETTER HOE */ - XK_Georgian_fi = 0x10010f6, /* U+10F6 GEORGIAN LETTER FI */ - XK_Xabovedot = 0x1001e8a, /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */ - XK_Ibreve = 0x100012c, /* U+012C LATIN CAPITAL LETTER I WITH BREVE */ - XK_Zstroke = 0x10001b5, /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */ - XK_Gcaron = 0x10001e6, /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */ - XK_Ocaron = 0x10001d1, /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */ - XK_Obarred = 0x100019f, /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */ - XK_xabovedot = 0x1001e8b, /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */ - XK_ibreve = 0x100012d, /* U+012D LATIN SMALL LETTER I WITH BREVE */ - XK_zstroke = 0x10001b6, /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */ - XK_gcaron = 0x10001e7, /* U+01E7 LATIN SMALL LETTER G WITH CARON */ - XK_ocaron = 0x10001d2, /* U+01D2 LATIN SMALL LETTER O WITH CARON */ - XK_obarred = 0x1000275, /* U+0275 LATIN SMALL LETTER BARRED O */ - XK_SCHWA = 0x100018f, /* U+018F LATIN CAPITAL LETTER SCHWA */ - XK_schwa = 0x1000259, /* U+0259 LATIN SMALL LETTER SCHWA */ - XK_Lbelowdot = 0x1001e36, /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */ - XK_lbelowdot = 0x1001e37, /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */ - XK_Abelowdot = 0x1001ea0, /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */ - XK_abelowdot = 0x1001ea1, /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */ - XK_Ahook = 0x1001ea2, /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */ - XK_ahook = 0x1001ea3, /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */ - XK_Acircumflexacute = 0x1001ea4, /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */ - XK_acircumflexacute = 0x1001ea5, /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */ - XK_Acircumflexgrave = 0x1001ea6, /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */ - XK_acircumflexgrave = 0x1001ea7, /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */ - XK_Acircumflexhook = 0x1001ea8, /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_acircumflexhook = 0x1001ea9, /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_Acircumflextilde = 0x1001eaa, /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */ - XK_acircumflextilde = 0x1001eab, /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */ - XK_Acircumflexbelowdot = 0x1001eac, /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ - XK_acircumflexbelowdot = 0x1001ead, /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ - XK_Abreveacute = 0x1001eae, /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */ - XK_abreveacute = 0x1001eaf, /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */ - XK_Abrevegrave = 0x1001eb0, /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */ - XK_abrevegrave = 0x1001eb1, /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */ - XK_Abrevehook = 0x1001eb2, /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */ - XK_abrevehook = 0x1001eb3, /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */ - XK_Abrevetilde = 0x1001eb4, /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */ - XK_abrevetilde = 0x1001eb5, /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */ - XK_Abrevebelowdot = 0x1001eb6, /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */ - XK_abrevebelowdot = 0x1001eb7, /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */ - XK_Ebelowdot = 0x1001eb8, /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */ - XK_ebelowdot = 0x1001eb9, /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */ - XK_Ehook = 0x1001eba, /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */ - XK_ehook = 0x1001ebb, /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */ - XK_Etilde = 0x1001ebc, /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */ - XK_etilde = 0x1001ebd, /* U+1EBD LATIN SMALL LETTER E WITH TILDE */ - XK_Ecircumflexacute = 0x1001ebe, /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */ - XK_ecircumflexacute = 0x1001ebf, /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */ - XK_Ecircumflexgrave = 0x1001ec0, /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */ - XK_ecircumflexgrave = 0x1001ec1, /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */ - XK_Ecircumflexhook = 0x1001ec2, /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_ecircumflexhook = 0x1001ec3, /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_Ecircumflextilde = 0x1001ec4, /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */ - XK_ecircumflextilde = 0x1001ec5, /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */ - XK_Ecircumflexbelowdot = 0x1001ec6, /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ - XK_ecircumflexbelowdot = 0x1001ec7, /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ - XK_Ihook = 0x1001ec8, /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */ - XK_ihook = 0x1001ec9, /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */ - XK_Ibelowdot = 0x1001eca, /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */ - XK_ibelowdot = 0x1001ecb, /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */ - XK_Obelowdot = 0x1001ecc, /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */ - XK_obelowdot = 0x1001ecd, /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */ - XK_Ohook = 0x1001ece, /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */ - XK_ohook = 0x1001ecf, /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */ - XK_Ocircumflexacute = 0x1001ed0, /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */ - XK_ocircumflexacute = 0x1001ed1, /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */ - XK_Ocircumflexgrave = 0x1001ed2, /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */ - XK_ocircumflexgrave = 0x1001ed3, /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */ - XK_Ocircumflexhook = 0x1001ed4, /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_ocircumflexhook = 0x1001ed5, /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ - XK_Ocircumflextilde = 0x1001ed6, /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */ - XK_ocircumflextilde = 0x1001ed7, /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */ - XK_Ocircumflexbelowdot = 0x1001ed8, /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ - XK_ocircumflexbelowdot = 0x1001ed9, /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ - XK_Ohornacute = 0x1001eda, /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */ - XK_ohornacute = 0x1001edb, /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */ - XK_Ohorngrave = 0x1001edc, /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */ - XK_ohorngrave = 0x1001edd, /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */ - XK_Ohornhook = 0x1001ede, /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */ - XK_ohornhook = 0x1001edf, /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */ - XK_Ohorntilde = 0x1001ee0, /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */ - XK_ohorntilde = 0x1001ee1, /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */ - XK_Ohornbelowdot = 0x1001ee2, /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */ - XK_ohornbelowdot = 0x1001ee3, /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */ - XK_Ubelowdot = 0x1001ee4, /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */ - XK_ubelowdot = 0x1001ee5, /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */ - XK_Uhook = 0x1001ee6, /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */ - XK_uhook = 0x1001ee7, /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */ - XK_Uhornacute = 0x1001ee8, /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */ - XK_uhornacute = 0x1001ee9, /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */ - XK_Uhorngrave = 0x1001eea, /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */ - XK_uhorngrave = 0x1001eeb, /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */ - XK_Uhornhook = 0x1001eec, /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */ - XK_uhornhook = 0x1001eed, /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */ - XK_Uhorntilde = 0x1001eee, /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */ - XK_uhorntilde = 0x1001eef, /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */ - XK_Uhornbelowdot = 0x1001ef0, /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */ - XK_uhornbelowdot = 0x1001ef1, /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */ - XK_Ybelowdot = 0x1001ef4, /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */ - XK_ybelowdot = 0x1001ef5, /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */ - XK_Yhook = 0x1001ef6, /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */ - XK_yhook = 0x1001ef7, /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */ - XK_Ytilde = 0x1001ef8, /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */ - XK_ytilde = 0x1001ef9, /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */ - XK_Ohorn = 0x10001a0, /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */ - XK_ohorn = 0x10001a1, /* U+01A1 LATIN SMALL LETTER O WITH HORN */ - XK_Uhorn = 0x10001af, /* U+01AF LATIN CAPITAL LETTER U WITH HORN */ - XK_uhorn = 0x10001b0, /* U+01B0 LATIN SMALL LETTER U WITH HORN */ - XK_EcuSign = 0x10020a0, /* U+20A0 EURO-CURRENCY SIGN */ - XK_ColonSign = 0x10020a1, /* U+20A1 COLON SIGN */ - XK_CruzeiroSign = 0x10020a2, /* U+20A2 CRUZEIRO SIGN */ - XK_FFrancSign = 0x10020a3, /* U+20A3 FRENCH FRANC SIGN */ - XK_LiraSign = 0x10020a4, /* U+20A4 LIRA SIGN */ - XK_MillSign = 0x10020a5, /* U+20A5 MILL SIGN */ - XK_NairaSign = 0x10020a6, /* U+20A6 NAIRA SIGN */ - XK_PesetaSign = 0x10020a7, /* U+20A7 PESETA SIGN */ - XK_RupeeSign = 0x10020a8, /* U+20A8 RUPEE SIGN */ - XK_WonSign = 0x10020a9, /* U+20A9 WON SIGN */ - XK_NewSheqelSign = 0x10020aa, /* U+20AA NEW SHEQEL SIGN */ - XK_DongSign = 0x10020ab, /* U+20AB DONG SIGN */ - XK_EuroSign = 0x20ac, /* U+20AC EURO SIGN */ + XK_BackSpace = 0xff08, /* Back space, back char */ + XK_Tab = 0xff09, + XK_Linefeed = 0xff0a, /* Linefeed, LF */ + XK_Clear = 0xff0b, + XK_Return = 0xff0d, /* Return, enter */ + XK_Pause = 0xff13, /* Pause, hold */ + XK_Scroll_Lock = 0xff14, + XK_Sys_Req = 0xff15, + XK_Escape = 0xff1b, + XK_Delete = 0xffff, /* Delete, rubout */ + XK_Multi_key = 0xff20, /* Multi-key character compose */ + XK_Codeinput = 0xff37, + XK_SingleCandidate = 0xff3c, + XK_MultipleCandidate = 0xff3d, + XK_PreviousCandidate = 0xff3e, + XK_Kanji = 0xff21, /* Kanji, Kanji convert */ + XK_Muhenkan = 0xff22, /* Cancel Conversion */ + XK_Henkan_Mode = 0xff23, /* Start/Stop Conversion */ + XK_Henkan = 0xff23, /* Alias for Henkan_Mode */ + XK_Romaji = 0xff24, /* to Romaji */ + XK_Hiragana = 0xff25, /* to Hiragana */ + XK_Katakana = 0xff26, /* to Katakana */ + XK_Hiragana_Katakana = 0xff27, /* Hiragana/Katakana toggle */ + XK_Zenkaku = 0xff28, /* to Zenkaku */ + XK_Hankaku = 0xff29, /* to Hankaku */ + XK_Zenkaku_Hankaku = 0xff2a, /* Zenkaku/Hankaku toggle */ + XK_Touroku = 0xff2b, /* Add to Dictionary */ + XK_Massyo = 0xff2c, /* Delete from Dictionary */ + XK_Kana_Lock = 0xff2d, /* Kana Lock */ + XK_Kana_Shift = 0xff2e, /* Kana Shift */ + XK_Eisu_Shift = 0xff2f, /* Alphanumeric Shift */ + XK_Eisu_toggle = 0xff30, /* Alphanumeric toggle */ + XK_Kanji_Bangou = 0xff37, /* Codeinput */ + XK_Zen_Koho = 0xff3d, /* Multiple/All Candidate(s) */ + XK_Mae_Koho = 0xff3e, /* Previous Candidate */ + XK_Home = 0xff50, + XK_Left = 0xff51, /* Move left, left arrow */ + XK_Up = 0xff52, /* Move up, up arrow */ + XK_Right = 0xff53, /* Move right, right arrow */ + XK_Down = 0xff54, /* Move down, down arrow */ + XK_Prior = 0xff55, /* Prior, previous */ + XK_Page_Up = 0xff55, + XK_Next = 0xff56, /* Next */ + XK_Page_Down = 0xff56, + XK_End = 0xff57, /* EOL */ + XK_Begin = 0xff58, /* BOL */ + XK_Select = 0xff60, /* Select, mark */ + XK_Print = 0xff61, + XK_Execute = 0xff62, /* Execute, run, do */ + XK_Insert = 0xff63, /* Insert, insert here */ + XK_Undo = 0xff65, + XK_Redo = 0xff66, /* Redo, again */ + XK_Menu = 0xff67, + XK_Find = 0xff68, /* Find, search */ + XK_Cancel = 0xff69, /* Cancel, stop, abort, exit */ + XK_Help = 0xff6a, /* Help */ + XK_Break = 0xff6b, + XK_Mode_switch = 0xff7e, /* Character set switch */ + XK_script_switch = 0xff7e, /* Alias for mode_switch */ + XK_Num_Lock = 0xff7f, + XK_KP_Space = 0xff80, /* Space */ + XK_KP_Tab = 0xff89, + XK_KP_Enter = 0xff8d, /* Enter */ + XK_KP_F1 = 0xff91, /* PF1, KP_A, ... */ + XK_KP_F2 = 0xff92, + XK_KP_F3 = 0xff93, + XK_KP_F4 = 0xff94, + XK_KP_Home = 0xff95, + XK_KP_Left = 0xff96, + XK_KP_Up = 0xff97, + XK_KP_Right = 0xff98, + XK_KP_Down = 0xff99, + XK_KP_Prior = 0xff9a, + XK_KP_Page_Up = 0xff9a, + XK_KP_Next = 0xff9b, + XK_KP_Page_Down = 0xff9b, + XK_KP_End = 0xff9c, + XK_KP_Begin = 0xff9d, + XK_KP_Insert = 0xff9e, + XK_KP_Delete = 0xff9f, + XK_KP_Equal = 0xffbd, /* Equals */ + XK_KP_Multiply = 0xffaa, + XK_KP_Add = 0xffab, + XK_KP_Separator = 0xffac, /* Separator, often comma */ + XK_KP_Subtract = 0xffad, + XK_KP_Decimal = 0xffae, + XK_KP_Divide = 0xffaf, + XK_KP_0 = 0xffb0, + XK_KP_1 = 0xffb1, + XK_KP_2 = 0xffb2, + XK_KP_3 = 0xffb3, + XK_KP_4 = 0xffb4, + XK_KP_5 = 0xffb5, + XK_KP_6 = 0xffb6, + XK_KP_7 = 0xffb7, + XK_KP_8 = 0xffb8, + XK_KP_9 = 0xffb9, + XK_F1 = 0xffbe, + XK_F2 = 0xffbf, + XK_F3 = 0xffc0, + XK_F4 = 0xffc1, + XK_F5 = 0xffc2, + XK_F6 = 0xffc3, + XK_F7 = 0xffc4, + XK_F8 = 0xffc5, + XK_F9 = 0xffc6, + XK_F10 = 0xffc7, + XK_F11 = 0xffc8, + XK_L1 = 0xffc8, + XK_F12 = 0xffc9, + XK_L2 = 0xffc9, + XK_F13 = 0xffca, + XK_L3 = 0xffca, + XK_F14 = 0xffcb, + XK_L4 = 0xffcb, + XK_F15 = 0xffcc, + XK_L5 = 0xffcc, + XK_F16 = 0xffcd, + XK_L6 = 0xffcd, + XK_F17 = 0xffce, + XK_L7 = 0xffce, + XK_F18 = 0xffcf, + XK_L8 = 0xffcf, + XK_F19 = 0xffd0, + XK_L9 = 0xffd0, + XK_F20 = 0xffd1, + XK_L10 = 0xffd1, + XK_F21 = 0xffd2, + XK_R1 = 0xffd2, + XK_F22 = 0xffd3, + XK_R2 = 0xffd3, + XK_F23 = 0xffd4, + XK_R3 = 0xffd4, + XK_F24 = 0xffd5, + XK_R4 = 0xffd5, + XK_F25 = 0xffd6, + XK_R5 = 0xffd6, + XK_F26 = 0xffd7, + XK_R6 = 0xffd7, + XK_F27 = 0xffd8, + XK_R7 = 0xffd8, + XK_F28 = 0xffd9, + XK_R8 = 0xffd9, + XK_F29 = 0xffda, + XK_R9 = 0xffda, + XK_F30 = 0xffdb, + XK_R10 = 0xffdb, + XK_F31 = 0xffdc, + XK_R11 = 0xffdc, + XK_F32 = 0xffdd, + XK_R12 = 0xffdd, + XK_F33 = 0xffde, + XK_R13 = 0xffde, + XK_F34 = 0xffdf, + XK_R14 = 0xffdf, + XK_F35 = 0xffe0, + XK_R15 = 0xffe0, + XK_Shift_L = 0xffe1, /* Left shift */ + XK_Shift_R = 0xffe2, /* Right shift */ + XK_Control_L = 0xffe3, /* Left control */ + XK_Control_R = 0xffe4, /* Right control */ + XK_Caps_Lock = 0xffe5, /* Caps lock */ + XK_Shift_Lock = 0xffe6, /* Shift lock */ + XK_Meta_L = 0xffe7, /* Left meta */ + XK_Meta_R = 0xffe8, /* Right meta */ + XK_Alt_L = 0xffe9, /* Left alt */ + XK_Alt_R = 0xffea, /* Right alt */ + XK_Super_L = 0xffeb, /* Left super */ + XK_Super_R = 0xffec, /* Right super */ + XK_Hyper_L = 0xffed, /* Left hyper */ + XK_Hyper_R = 0xffee, /* Right hyper */ + XK_ISO_Lock = 0xfe01, + XK_ISO_Level2_Latch = 0xfe02, + XK_ISO_Level3_Shift = 0xfe03, + XK_ISO_Level3_Latch = 0xfe04, + XK_ISO_Level3_Lock = 0xfe05, + XK_ISO_Group_Shift = 0xff7e, /* Alias for mode_switch */ + XK_ISO_Group_Latch = 0xfe06, + XK_ISO_Group_Lock = 0xfe07, + XK_ISO_Next_Group = 0xfe08, + XK_ISO_Next_Group_Lock = 0xfe09, + XK_ISO_Prev_Group = 0xfe0a, + XK_ISO_Prev_Group_Lock = 0xfe0b, + XK_ISO_First_Group = 0xfe0c, + XK_ISO_First_Group_Lock = 0xfe0d, + XK_ISO_Last_Group = 0xfe0e, + XK_ISO_Last_Group_Lock = 0xfe0f, + XK_ISO_Left_Tab = 0xfe20, + XK_ISO_Move_Line_Up = 0xfe21, + XK_ISO_Move_Line_Down = 0xfe22, + XK_ISO_Partial_Line_Up = 0xfe23, + XK_ISO_Partial_Line_Down = 0xfe24, + XK_ISO_Partial_Space_Left = 0xfe25, + XK_ISO_Partial_Space_Right = 0xfe26, + XK_ISO_Set_Margin_Left = 0xfe27, + XK_ISO_Set_Margin_Right = 0xfe28, + XK_ISO_Release_Margin_Left = 0xfe29, + XK_ISO_Release_Margin_Right = 0xfe2a, + XK_ISO_Release_Both_Margins = 0xfe2b, + XK_ISO_Fast_Cursor_Left = 0xfe2c, + XK_ISO_Fast_Cursor_Right = 0xfe2d, + XK_ISO_Fast_Cursor_Up = 0xfe2e, + XK_ISO_Fast_Cursor_Down = 0xfe2f, + XK_ISO_Continuous_Underline = 0xfe30, + XK_ISO_Discontinuous_Underline = 0xfe31, + XK_ISO_Emphasize = 0xfe32, + XK_ISO_Center_Object = 0xfe33, + XK_ISO_Enter = 0xfe34, + XK_dead_grave = 0xfe50, + XK_dead_acute = 0xfe51, + XK_dead_circumflex = 0xfe52, + XK_dead_tilde = 0xfe53, + XK_dead_macron = 0xfe54, + XK_dead_breve = 0xfe55, + XK_dead_abovedot = 0xfe56, + XK_dead_diaeresis = 0xfe57, + XK_dead_abovering = 0xfe58, + XK_dead_doubleacute = 0xfe59, + XK_dead_caron = 0xfe5a, + XK_dead_cedilla = 0xfe5b, + XK_dead_ogonek = 0xfe5c, + XK_dead_iota = 0xfe5d, + XK_dead_voiced_sound = 0xfe5e, + XK_dead_semivoiced_sound = 0xfe5f, + XK_dead_belowdot = 0xfe60, + XK_dead_hook = 0xfe61, + XK_dead_horn = 0xfe62, + XK_First_Virtual_Screen = 0xfed0, + XK_Prev_Virtual_Screen = 0xfed1, + XK_Next_Virtual_Screen = 0xfed2, + XK_Last_Virtual_Screen = 0xfed4, + XK_Terminate_Server = 0xfed5, + XK_AccessX_Enable = 0xfe70, + XK_AccessX_Feedback_Enable = 0xfe71, + XK_RepeatKeys_Enable = 0xfe72, + XK_SlowKeys_Enable = 0xfe73, + XK_BounceKeys_Enable = 0xfe74, + XK_StickyKeys_Enable = 0xfe75, + XK_MouseKeys_Enable = 0xfe76, + XK_MouseKeys_Accel_Enable = 0xfe77, + XK_Overlay1_Enable = 0xfe78, + XK_Overlay2_Enable = 0xfe79, + XK_AudibleBell_Enable = 0xfe7a, + XK_Pointer_Left = 0xfee0, + XK_Pointer_Right = 0xfee1, + XK_Pointer_Up = 0xfee2, + XK_Pointer_Down = 0xfee3, + XK_Pointer_UpLeft = 0xfee4, + XK_Pointer_UpRight = 0xfee5, + XK_Pointer_DownLeft = 0xfee6, + XK_Pointer_DownRight = 0xfee7, + XK_Pointer_Button_Dflt = 0xfee8, + XK_Pointer_Button1 = 0xfee9, + XK_Pointer_Button2 = 0xfeea, + XK_Pointer_Button3 = 0xfeeb, + XK_Pointer_Button4 = 0xfeec, + XK_Pointer_Button5 = 0xfeed, + XK_Pointer_DblClick_Dflt = 0xfeee, + XK_Pointer_DblClick1 = 0xfeef, + XK_Pointer_DblClick2 = 0xfef0, + XK_Pointer_DblClick3 = 0xfef1, + XK_Pointer_DblClick4 = 0xfef2, + XK_Pointer_DblClick5 = 0xfef3, + XK_Pointer_Drag_Dflt = 0xfef4, + XK_Pointer_Drag1 = 0xfef5, + XK_Pointer_Drag2 = 0xfef6, + XK_Pointer_Drag3 = 0xfef7, + XK_Pointer_Drag4 = 0xfef8, + XK_Pointer_Drag5 = 0xfefd, + XK_Pointer_EnableKeys = 0xfef9, + XK_Pointer_Accelerate = 0xfefa, + XK_Pointer_DfltBtnNext = 0xfefb, + XK_Pointer_DfltBtnPrev = 0xfefc, + XK_3270_Duplicate = 0xfd01, + XK_3270_FieldMark = 0xfd02, + XK_3270_Right2 = 0xfd03, + XK_3270_Left2 = 0xfd04, + XK_3270_BackTab = 0xfd05, + XK_3270_EraseEOF = 0xfd06, + XK_3270_EraseInput = 0xfd07, + XK_3270_Reset = 0xfd08, + XK_3270_Quit = 0xfd09, + XK_3270_PA1 = 0xfd0a, + XK_3270_PA2 = 0xfd0b, + XK_3270_PA3 = 0xfd0c, + XK_3270_Test = 0xfd0d, + XK_3270_Attn = 0xfd0e, + XK_3270_CursorBlink = 0xfd0f, + XK_3270_AltCursor = 0xfd10, + XK_3270_KeyClick = 0xfd11, + XK_3270_Jump = 0xfd12, + XK_3270_Ident = 0xfd13, + XK_3270_Rule = 0xfd14, + XK_3270_Copy = 0xfd15, + XK_3270_Play = 0xfd16, + XK_3270_Setup = 0xfd17, + XK_3270_Record = 0xfd18, + XK_3270_ChangeScreen = 0xfd19, + XK_3270_DeleteWord = 0xfd1a, + XK_3270_ExSelect = 0xfd1b, + XK_3270_CursorSelect = 0xfd1c, + XK_3270_PrintScreen = 0xfd1d, + XK_3270_Enter = 0xfd1e, + XK_space = 0x0020, /* U+0020 SPACE */ + XK_exclam = 0x0021, /* U+0021 EXCLAMATION MARK */ + XK_quotedbl = 0x0022, /* U+0022 QUOTATION MARK */ + XK_numbersign = 0x0023, /* U+0023 NUMBER SIGN */ + XK_dollar = 0x0024, /* U+0024 DOLLAR SIGN */ + XK_percent = 0x0025, /* U+0025 PERCENT SIGN */ + XK_ampersand = 0x0026, /* U+0026 AMPERSAND */ + XK_apostrophe = 0x0027, /* U+0027 APOSTROPHE */ + XK_quoteright = 0x0027, /* deprecated */ + XK_parenleft = 0x0028, /* U+0028 LEFT PARENTHESIS */ + XK_parenright = 0x0029, /* U+0029 RIGHT PARENTHESIS */ + XK_asterisk = 0x002a, /* U+002A ASTERISK */ + XK_plus = 0x002b, /* U+002B PLUS SIGN */ + XK_comma = 0x002c, /* U+002C COMMA */ + XK_minus = 0x002d, /* U+002D HYPHEN-MINUS */ + XK_period = 0x002e, /* U+002E FULL STOP */ + XK_slash = 0x002f, /* U+002F SOLIDUS */ + XK_0 = 0x0030, /* U+0030 DIGIT ZERO */ + XK_1 = 0x0031, /* U+0031 DIGIT ONE */ + XK_2 = 0x0032, /* U+0032 DIGIT TWO */ + XK_3 = 0x0033, /* U+0033 DIGIT THREE */ + XK_4 = 0x0034, /* U+0034 DIGIT FOUR */ + XK_5 = 0x0035, /* U+0035 DIGIT FIVE */ + XK_6 = 0x0036, /* U+0036 DIGIT SIX */ + XK_7 = 0x0037, /* U+0037 DIGIT SEVEN */ + XK_8 = 0x0038, /* U+0038 DIGIT EIGHT */ + XK_9 = 0x0039, /* U+0039 DIGIT NINE */ + XK_colon = 0x003a, /* U+003A COLON */ + XK_semicolon = 0x003b, /* U+003B SEMICOLON */ + XK_less = 0x003c, /* U+003C LESS-THAN SIGN */ + XK_equal = 0x003d, /* U+003D EQUALS SIGN */ + XK_greater = 0x003e, /* U+003E GREATER-THAN SIGN */ + XK_question = 0x003f, /* U+003F QUESTION MARK */ + XK_at = 0x0040, /* U+0040 COMMERCIAL AT */ + XK_A = 0x0041, /* U+0041 LATIN CAPITAL LETTER A */ + XK_B = 0x0042, /* U+0042 LATIN CAPITAL LETTER B */ + XK_C = 0x0043, /* U+0043 LATIN CAPITAL LETTER C */ + XK_D = 0x0044, /* U+0044 LATIN CAPITAL LETTER D */ + XK_E = 0x0045, /* U+0045 LATIN CAPITAL LETTER E */ + XK_F = 0x0046, /* U+0046 LATIN CAPITAL LETTER F */ + XK_G = 0x0047, /* U+0047 LATIN CAPITAL LETTER G */ + XK_H = 0x0048, /* U+0048 LATIN CAPITAL LETTER H */ + XK_I = 0x0049, /* U+0049 LATIN CAPITAL LETTER I */ + XK_J = 0x004a, /* U+004A LATIN CAPITAL LETTER J */ + XK_K = 0x004b, /* U+004B LATIN CAPITAL LETTER K */ + XK_L = 0x004c, /* U+004C LATIN CAPITAL LETTER L */ + XK_M = 0x004d, /* U+004D LATIN CAPITAL LETTER M */ + XK_N = 0x004e, /* U+004E LATIN CAPITAL LETTER N */ + XK_O = 0x004f, /* U+004F LATIN CAPITAL LETTER O */ + XK_P = 0x0050, /* U+0050 LATIN CAPITAL LETTER P */ + XK_Q = 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */ + XK_R = 0x0052, /* U+0052 LATIN CAPITAL LETTER R */ + XK_S = 0x0053, /* U+0053 LATIN CAPITAL LETTER S */ + XK_T = 0x0054, /* U+0054 LATIN CAPITAL LETTER T */ + XK_U = 0x0055, /* U+0055 LATIN CAPITAL LETTER U */ + XK_V = 0x0056, /* U+0056 LATIN CAPITAL LETTER V */ + XK_W = 0x0057, /* U+0057 LATIN CAPITAL LETTER W */ + XK_X = 0x0058, /* U+0058 LATIN CAPITAL LETTER X */ + XK_Y = 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */ + XK_Z = 0x005a, /* U+005A LATIN CAPITAL LETTER Z */ + XK_bracketleft = 0x005b, /* U+005B LEFT SQUARE BRACKET */ + XK_backslash = 0x005c, /* U+005C REVERSE SOLIDUS */ + XK_bracketright = 0x005d, /* U+005D RIGHT SQUARE BRACKET */ + XK_asciicircum = 0x005e, /* U+005E CIRCUMFLEX ACCENT */ + XK_underscore = 0x005f, /* U+005F LOW LINE */ + XK_grave = 0x0060, /* U+0060 GRAVE ACCENT */ + XK_quoteleft = 0x0060, /* deprecated */ + XK_a = 0x0061, /* U+0061 LATIN SMALL LETTER A */ + XK_b = 0x0062, /* U+0062 LATIN SMALL LETTER B */ + XK_c = 0x0063, /* U+0063 LATIN SMALL LETTER C */ + XK_d = 0x0064, /* U+0064 LATIN SMALL LETTER D */ + XK_e = 0x0065, /* U+0065 LATIN SMALL LETTER E */ + XK_f = 0x0066, /* U+0066 LATIN SMALL LETTER F */ + XK_g = 0x0067, /* U+0067 LATIN SMALL LETTER G */ + XK_h = 0x0068, /* U+0068 LATIN SMALL LETTER H */ + XK_i = 0x0069, /* U+0069 LATIN SMALL LETTER I */ + XK_j = 0x006a, /* U+006A LATIN SMALL LETTER J */ + XK_k = 0x006b, /* U+006B LATIN SMALL LETTER K */ + XK_l = 0x006c, /* U+006C LATIN SMALL LETTER L */ + XK_m = 0x006d, /* U+006D LATIN SMALL LETTER M */ + XK_n = 0x006e, /* U+006E LATIN SMALL LETTER N */ + XK_o = 0x006f, /* U+006F LATIN SMALL LETTER O */ + XK_p = 0x0070, /* U+0070 LATIN SMALL LETTER P */ + XK_q = 0x0071, /* U+0071 LATIN SMALL LETTER Q */ + XK_r = 0x0072, /* U+0072 LATIN SMALL LETTER R */ + XK_s = 0x0073, /* U+0073 LATIN SMALL LETTER S */ + XK_t = 0x0074, /* U+0074 LATIN SMALL LETTER T */ + XK_u = 0x0075, /* U+0075 LATIN SMALL LETTER U */ + XK_v = 0x0076, /* U+0076 LATIN SMALL LETTER V */ + XK_w = 0x0077, /* U+0077 LATIN SMALL LETTER W */ + XK_x = 0x0078, /* U+0078 LATIN SMALL LETTER X */ + XK_y = 0x0079, /* U+0079 LATIN SMALL LETTER Y */ + XK_z = 0x007a, /* U+007A LATIN SMALL LETTER Z */ + XK_braceleft = 0x007b, /* U+007B LEFT CURLY BRACKET */ + XK_bar = 0x007c, /* U+007C VERTICAL LINE */ + XK_braceright = 0x007d, /* U+007D RIGHT CURLY BRACKET */ + XK_asciitilde = 0x007e, /* U+007E TILDE */ + XK_nobreakspace = 0x00a0, /* U+00A0 NO-BREAK SPACE */ + XK_exclamdown = 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */ + XK_cent = 0x00a2, /* U+00A2 CENT SIGN */ + XK_sterling = 0x00a3, /* U+00A3 POUND SIGN */ + XK_currency = 0x00a4, /* U+00A4 CURRENCY SIGN */ + XK_yen = 0x00a5, /* U+00A5 YEN SIGN */ + XK_brokenbar = 0x00a6, /* U+00A6 BROKEN BAR */ + XK_section = 0x00a7, /* U+00A7 SECTION SIGN */ + XK_diaeresis = 0x00a8, /* U+00A8 DIAERESIS */ + XK_copyright = 0x00a9, /* U+00A9 COPYRIGHT SIGN */ + XK_ordfeminine = 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */ + XK_guillemotleft = 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ + XK_notsign = 0x00ac, /* U+00AC NOT SIGN */ + XK_hyphen = 0x00ad, /* U+00AD SOFT HYPHEN */ + XK_registered = 0x00ae, /* U+00AE REGISTERED SIGN */ + XK_macron = 0x00af, /* U+00AF MACRON */ + XK_degree = 0x00b0, /* U+00B0 DEGREE SIGN */ + XK_plusminus = 0x00b1, /* U+00B1 PLUS-MINUS SIGN */ + XK_twosuperior = 0x00b2, /* U+00B2 SUPERSCRIPT TWO */ + XK_threesuperior = 0x00b3, /* U+00B3 SUPERSCRIPT THREE */ + XK_acute = 0x00b4, /* U+00B4 ACUTE ACCENT */ + XK_mu = 0x00b5, /* U+00B5 MICRO SIGN */ + XK_paragraph = 0x00b6, /* U+00B6 PILCROW SIGN */ + XK_periodcentered = 0x00b7, /* U+00B7 MIDDLE DOT */ + XK_cedilla = 0x00b8, /* U+00B8 CEDILLA */ + XK_onesuperior = 0x00b9, /* U+00B9 SUPERSCRIPT ONE */ + XK_masculine = 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */ + XK_guillemotright = 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ + XK_onequarter = 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */ + XK_onehalf = 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */ + XK_threequarters = 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */ + XK_questiondown = 0x00bf, /* U+00BF INVERTED QUESTION MARK */ + XK_Agrave = 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ + XK_Aacute = 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ + XK_Acircumflex = 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ + XK_Atilde = 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ + XK_Adiaeresis = 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ + XK_Aring = 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ + XK_AE = 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */ + XK_Ccedilla = 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ + XK_Egrave = 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ + XK_Eacute = 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ + XK_Ecircumflex = 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ + XK_Ediaeresis = 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ + XK_Igrave = 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ + XK_Iacute = 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ + XK_Icircumflex = 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ + XK_Idiaeresis = 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ + XK_ETH = 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */ + XK_Eth = 0x00d0, /* deprecated */ + XK_Ntilde = 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ + XK_Ograve = 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ + XK_Oacute = 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ + XK_Ocircumflex = 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ + XK_Otilde = 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ + XK_Odiaeresis = 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ + XK_multiply = 0x00d7, /* U+00D7 MULTIPLICATION SIGN */ + XK_Oslash = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ + XK_Ooblique = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ + XK_Ugrave = 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ + XK_Uacute = 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ + XK_Ucircumflex = 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ + XK_Udiaeresis = 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ + XK_Yacute = 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ + XK_THORN = 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */ + XK_Thorn = 0x00de, /* deprecated */ + XK_ssharp = 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */ + XK_agrave = 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ + XK_aacute = 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ + XK_acircumflex = 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ + XK_atilde = 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ + XK_adiaeresis = 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ + XK_aring = 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ + XK_ae = 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */ + XK_ccedilla = 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ + XK_egrave = 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ + XK_eacute = 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ + XK_ecircumflex = 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ + XK_ediaeresis = 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ + XK_igrave = 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ + XK_iacute = 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ + XK_icircumflex = 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ + XK_idiaeresis = 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ + XK_eth = 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */ + XK_ntilde = 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ + XK_ograve = 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ + XK_oacute = 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ + XK_ocircumflex = 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ + XK_otilde = 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ + XK_odiaeresis = 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ + XK_division = 0x00f7, /* U+00F7 DIVISION SIGN */ + XK_oslash = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ + XK_ooblique = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ + XK_ugrave = 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ + XK_uacute = 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ + XK_ucircumflex = 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ + XK_udiaeresis = 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ + XK_yacute = 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ + XK_thorn = 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */ + XK_ydiaeresis = 0x00ff, /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ + XK_Aogonek = 0x01a1, /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */ + XK_breve = 0x01a2, /* U+02D8 BREVE */ + XK_Lstroke = 0x01a3, /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */ + XK_Lcaron = 0x01a5, /* U+013D LATIN CAPITAL LETTER L WITH CARON */ + XK_Sacute = 0x01a6, /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */ + XK_Scaron = 0x01a9, /* U+0160 LATIN CAPITAL LETTER S WITH CARON */ + XK_Scedilla = 0x01aa, /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */ + XK_Tcaron = 0x01ab, /* U+0164 LATIN CAPITAL LETTER T WITH CARON */ + XK_Zacute = 0x01ac, /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */ + XK_Zcaron = 0x01ae, /* U+017D LATIN CAPITAL LETTER Z WITH CARON */ + XK_Zabovedot = 0x01af, /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */ + XK_aogonek = 0x01b1, /* U+0105 LATIN SMALL LETTER A WITH OGONEK */ + XK_ogonek = 0x01b2, /* U+02DB OGONEK */ + XK_lstroke = 0x01b3, /* U+0142 LATIN SMALL LETTER L WITH STROKE */ + XK_lcaron = 0x01b5, /* U+013E LATIN SMALL LETTER L WITH CARON */ + XK_sacute = 0x01b6, /* U+015B LATIN SMALL LETTER S WITH ACUTE */ + XK_caron = 0x01b7, /* U+02C7 CARON */ + XK_scaron = 0x01b9, /* U+0161 LATIN SMALL LETTER S WITH CARON */ + XK_scedilla = 0x01ba, /* U+015F LATIN SMALL LETTER S WITH CEDILLA */ + XK_tcaron = 0x01bb, /* U+0165 LATIN SMALL LETTER T WITH CARON */ + XK_zacute = 0x01bc, /* U+017A LATIN SMALL LETTER Z WITH ACUTE */ + XK_doubleacute = 0x01bd, /* U+02DD DOUBLE ACUTE ACCENT */ + XK_zcaron = 0x01be, /* U+017E LATIN SMALL LETTER Z WITH CARON */ + XK_zabovedot = 0x01bf, /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */ + XK_Racute = 0x01c0, /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */ + XK_Abreve = 0x01c3, /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */ + XK_Lacute = 0x01c5, /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */ + XK_Cacute = 0x01c6, /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */ + XK_Ccaron = 0x01c8, /* U+010C LATIN CAPITAL LETTER C WITH CARON */ + XK_Eogonek = 0x01ca, /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */ + XK_Ecaron = 0x01cc, /* U+011A LATIN CAPITAL LETTER E WITH CARON */ + XK_Dcaron = 0x01cf, /* U+010E LATIN CAPITAL LETTER D WITH CARON */ + XK_Dstroke = 0x01d0, /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */ + XK_Nacute = 0x01d1, /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */ + XK_Ncaron = 0x01d2, /* U+0147 LATIN CAPITAL LETTER N WITH CARON */ + XK_Odoubleacute = 0x01d5, /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ + XK_Rcaron = 0x01d8, /* U+0158 LATIN CAPITAL LETTER R WITH CARON */ + XK_Uring = 0x01d9, /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */ + XK_Udoubleacute = 0x01db, /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ + XK_Tcedilla = 0x01de, /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */ + XK_racute = 0x01e0, /* U+0155 LATIN SMALL LETTER R WITH ACUTE */ + XK_abreve = 0x01e3, /* U+0103 LATIN SMALL LETTER A WITH BREVE */ + XK_lacute = 0x01e5, /* U+013A LATIN SMALL LETTER L WITH ACUTE */ + XK_cacute = 0x01e6, /* U+0107 LATIN SMALL LETTER C WITH ACUTE */ + XK_ccaron = 0x01e8, /* U+010D LATIN SMALL LETTER C WITH CARON */ + XK_eogonek = 0x01ea, /* U+0119 LATIN SMALL LETTER E WITH OGONEK */ + XK_ecaron = 0x01ec, /* U+011B LATIN SMALL LETTER E WITH CARON */ + XK_dcaron = 0x01ef, /* U+010F LATIN SMALL LETTER D WITH CARON */ + XK_dstroke = 0x01f0, /* U+0111 LATIN SMALL LETTER D WITH STROKE */ + XK_nacute = 0x01f1, /* U+0144 LATIN SMALL LETTER N WITH ACUTE */ + XK_ncaron = 0x01f2, /* U+0148 LATIN SMALL LETTER N WITH CARON */ + XK_odoubleacute = 0x01f5, /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */ + XK_udoubleacute = 0x01fb, /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */ + XK_rcaron = 0x01f8, /* U+0159 LATIN SMALL LETTER R WITH CARON */ + XK_uring = 0x01f9, /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */ + XK_tcedilla = 0x01fe, /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */ + XK_abovedot = 0x01ff, /* U+02D9 DOT ABOVE */ + XK_Hstroke = 0x02a1, /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */ + XK_Hcircumflex = 0x02a6, /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ + XK_Iabovedot = 0x02a9, /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ + XK_Gbreve = 0x02ab, /* U+011E LATIN CAPITAL LETTER G WITH BREVE */ + XK_Jcircumflex = 0x02ac, /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ + XK_hstroke = 0x02b1, /* U+0127 LATIN SMALL LETTER H WITH STROKE */ + XK_hcircumflex = 0x02b6, /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */ + XK_idotless = 0x02b9, /* U+0131 LATIN SMALL LETTER DOTLESS I */ + XK_gbreve = 0x02bb, /* U+011F LATIN SMALL LETTER G WITH BREVE */ + XK_jcircumflex = 0x02bc, /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */ + XK_Cabovedot = 0x02c5, /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */ + XK_Ccircumflex = 0x02c6, /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ + XK_Gabovedot = 0x02d5, /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */ + XK_Gcircumflex = 0x02d8, /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ + XK_Ubreve = 0x02dd, /* U+016C LATIN CAPITAL LETTER U WITH BREVE */ + XK_Scircumflex = 0x02de, /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ + XK_cabovedot = 0x02e5, /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */ + XK_ccircumflex = 0x02e6, /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */ + XK_gabovedot = 0x02f5, /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */ + XK_gcircumflex = 0x02f8, /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */ + XK_ubreve = 0x02fd, /* U+016D LATIN SMALL LETTER U WITH BREVE */ + XK_scircumflex = 0x02fe, /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */ + XK_kra = 0x03a2, /* U+0138 LATIN SMALL LETTER KRA */ + XK_kappa = 0x03a2, /* deprecated */ + XK_Rcedilla = 0x03a3, /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */ + XK_Itilde = 0x03a5, /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */ + XK_Lcedilla = 0x03a6, /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */ + XK_Emacron = 0x03aa, /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */ + XK_Gcedilla = 0x03ab, /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */ + XK_Tslash = 0x03ac, /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */ + XK_rcedilla = 0x03b3, /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */ + XK_itilde = 0x03b5, /* U+0129 LATIN SMALL LETTER I WITH TILDE */ + XK_lcedilla = 0x03b6, /* U+013C LATIN SMALL LETTER L WITH CEDILLA */ + XK_emacron = 0x03ba, /* U+0113 LATIN SMALL LETTER E WITH MACRON */ + XK_gcedilla = 0x03bb, /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */ + XK_tslash = 0x03bc, /* U+0167 LATIN SMALL LETTER T WITH STROKE */ + XK_ENG = 0x03bd, /* U+014A LATIN CAPITAL LETTER ENG */ + XK_eng = 0x03bf, /* U+014B LATIN SMALL LETTER ENG */ + XK_Amacron = 0x03c0, /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */ + XK_Iogonek = 0x03c7, /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */ + XK_Eabovedot = 0x03cc, /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */ + XK_Imacron = 0x03cf, /* U+012A LATIN CAPITAL LETTER I WITH MACRON */ + XK_Ncedilla = 0x03d1, /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */ + XK_Omacron = 0x03d2, /* U+014C LATIN CAPITAL LETTER O WITH MACRON */ + XK_Kcedilla = 0x03d3, /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */ + XK_Uogonek = 0x03d9, /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */ + XK_Utilde = 0x03dd, /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */ + XK_Umacron = 0x03de, /* U+016A LATIN CAPITAL LETTER U WITH MACRON */ + XK_amacron = 0x03e0, /* U+0101 LATIN SMALL LETTER A WITH MACRON */ + XK_iogonek = 0x03e7, /* U+012F LATIN SMALL LETTER I WITH OGONEK */ + XK_eabovedot = 0x03ec, /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */ + XK_imacron = 0x03ef, /* U+012B LATIN SMALL LETTER I WITH MACRON */ + XK_ncedilla = 0x03f1, /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */ + XK_omacron = 0x03f2, /* U+014D LATIN SMALL LETTER O WITH MACRON */ + XK_kcedilla = 0x03f3, /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */ + XK_uogonek = 0x03f9, /* U+0173 LATIN SMALL LETTER U WITH OGONEK */ + XK_utilde = 0x03fd, /* U+0169 LATIN SMALL LETTER U WITH TILDE */ + XK_umacron = 0x03fe, /* U+016B LATIN SMALL LETTER U WITH MACRON */ + XK_Babovedot = 0x1001e02, /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */ + XK_babovedot = 0x1001e03, /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */ + XK_Dabovedot = 0x1001e0a, /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */ + XK_Wgrave = 0x1001e80, /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */ + XK_Wacute = 0x1001e82, /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */ + XK_dabovedot = 0x1001e0b, /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */ + XK_Ygrave = 0x1001ef2, /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */ + XK_Fabovedot = 0x1001e1e, /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */ + XK_fabovedot = 0x1001e1f, /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */ + XK_Mabovedot = 0x1001e40, /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */ + XK_mabovedot = 0x1001e41, /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */ + XK_Pabovedot = 0x1001e56, /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */ + XK_wgrave = 0x1001e81, /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */ + XK_pabovedot = 0x1001e57, /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */ + XK_wacute = 0x1001e83, /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */ + XK_Sabovedot = 0x1001e60, /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */ + XK_ygrave = 0x1001ef3, /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */ + XK_Wdiaeresis = 0x1001e84, /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */ + XK_wdiaeresis = 0x1001e85, /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */ + XK_sabovedot = 0x1001e61, /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */ + XK_Wcircumflex = 0x1000174, /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ + XK_Tabovedot = 0x1001e6a, /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */ + XK_Ycircumflex = 0x1000176, /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ + XK_wcircumflex = 0x1000175, /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */ + XK_tabovedot = 0x1001e6b, /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */ + XK_ycircumflex = 0x1000177, /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */ + XK_OE = 0x13bc, /* U+0152 LATIN CAPITAL LIGATURE OE */ + XK_oe = 0x13bd, /* U+0153 LATIN SMALL LIGATURE OE */ + XK_Ydiaeresis = 0x13be, /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */ + XK_overline = 0x047e, /* U+203E OVERLINE */ + XK_kana_fullstop = 0x04a1, /* U+3002 IDEOGRAPHIC FULL STOP */ + XK_kana_openingbracket = 0x04a2, /* U+300C LEFT CORNER BRACKET */ + XK_kana_closingbracket = 0x04a3, /* U+300D RIGHT CORNER BRACKET */ + XK_kana_comma = 0x04a4, /* U+3001 IDEOGRAPHIC COMMA */ + XK_kana_conjunctive = 0x04a5, /* U+30FB KATAKANA MIDDLE DOT */ + XK_kana_middledot = 0x04a5, /* deprecated */ + XK_kana_WO = 0x04a6, /* U+30F2 KATAKANA LETTER WO */ + XK_kana_a = 0x04a7, /* U+30A1 KATAKANA LETTER SMALL A */ + XK_kana_i = 0x04a8, /* U+30A3 KATAKANA LETTER SMALL I */ + XK_kana_u = 0x04a9, /* U+30A5 KATAKANA LETTER SMALL U */ + XK_kana_e = 0x04aa, /* U+30A7 KATAKANA LETTER SMALL E */ + XK_kana_o = 0x04ab, /* U+30A9 KATAKANA LETTER SMALL O */ + XK_kana_ya = 0x04ac, /* U+30E3 KATAKANA LETTER SMALL YA */ + XK_kana_yu = 0x04ad, /* U+30E5 KATAKANA LETTER SMALL YU */ + XK_kana_yo = 0x04ae, /* U+30E7 KATAKANA LETTER SMALL YO */ + XK_kana_tsu = 0x04af, /* U+30C3 KATAKANA LETTER SMALL TU */ + XK_kana_tu = 0x04af, /* deprecated */ + XK_prolongedsound = 0x04b0, /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */ + XK_kana_A = 0x04b1, /* U+30A2 KATAKANA LETTER A */ + XK_kana_I = 0x04b2, /* U+30A4 KATAKANA LETTER I */ + XK_kana_U = 0x04b3, /* U+30A6 KATAKANA LETTER U */ + XK_kana_E = 0x04b4, /* U+30A8 KATAKANA LETTER E */ + XK_kana_O = 0x04b5, /* U+30AA KATAKANA LETTER O */ + XK_kana_KA = 0x04b6, /* U+30AB KATAKANA LETTER KA */ + XK_kana_KI = 0x04b7, /* U+30AD KATAKANA LETTER KI */ + XK_kana_KU = 0x04b8, /* U+30AF KATAKANA LETTER KU */ + XK_kana_KE = 0x04b9, /* U+30B1 KATAKANA LETTER KE */ + XK_kana_KO = 0x04ba, /* U+30B3 KATAKANA LETTER KO */ + XK_kana_SA = 0x04bb, /* U+30B5 KATAKANA LETTER SA */ + XK_kana_SHI = 0x04bc, /* U+30B7 KATAKANA LETTER SI */ + XK_kana_SU = 0x04bd, /* U+30B9 KATAKANA LETTER SU */ + XK_kana_SE = 0x04be, /* U+30BB KATAKANA LETTER SE */ + XK_kana_SO = 0x04bf, /* U+30BD KATAKANA LETTER SO */ + XK_kana_TA = 0x04c0, /* U+30BF KATAKANA LETTER TA */ + XK_kana_CHI = 0x04c1, /* U+30C1 KATAKANA LETTER TI */ + XK_kana_TI = 0x04c1, /* deprecated */ + XK_kana_TSU = 0x04c2, /* U+30C4 KATAKANA LETTER TU */ + XK_kana_TU = 0x04c2, /* deprecated */ + XK_kana_TE = 0x04c3, /* U+30C6 KATAKANA LETTER TE */ + XK_kana_TO = 0x04c4, /* U+30C8 KATAKANA LETTER TO */ + XK_kana_NA = 0x04c5, /* U+30CA KATAKANA LETTER NA */ + XK_kana_NI = 0x04c6, /* U+30CB KATAKANA LETTER NI */ + XK_kana_NU = 0x04c7, /* U+30CC KATAKANA LETTER NU */ + XK_kana_NE = 0x04c8, /* U+30CD KATAKANA LETTER NE */ + XK_kana_NO = 0x04c9, /* U+30CE KATAKANA LETTER NO */ + XK_kana_HA = 0x04ca, /* U+30CF KATAKANA LETTER HA */ + XK_kana_HI = 0x04cb, /* U+30D2 KATAKANA LETTER HI */ + XK_kana_FU = 0x04cc, /* U+30D5 KATAKANA LETTER HU */ + XK_kana_HU = 0x04cc, /* deprecated */ + XK_kana_HE = 0x04cd, /* U+30D8 KATAKANA LETTER HE */ + XK_kana_HO = 0x04ce, /* U+30DB KATAKANA LETTER HO */ + XK_kana_MA = 0x04cf, /* U+30DE KATAKANA LETTER MA */ + XK_kana_MI = 0x04d0, /* U+30DF KATAKANA LETTER MI */ + XK_kana_MU = 0x04d1, /* U+30E0 KATAKANA LETTER MU */ + XK_kana_ME = 0x04d2, /* U+30E1 KATAKANA LETTER ME */ + XK_kana_MO = 0x04d3, /* U+30E2 KATAKANA LETTER MO */ + XK_kana_YA = 0x04d4, /* U+30E4 KATAKANA LETTER YA */ + XK_kana_YU = 0x04d5, /* U+30E6 KATAKANA LETTER YU */ + XK_kana_YO = 0x04d6, /* U+30E8 KATAKANA LETTER YO */ + XK_kana_RA = 0x04d7, /* U+30E9 KATAKANA LETTER RA */ + XK_kana_RI = 0x04d8, /* U+30EA KATAKANA LETTER RI */ + XK_kana_RU = 0x04d9, /* U+30EB KATAKANA LETTER RU */ + XK_kana_RE = 0x04da, /* U+30EC KATAKANA LETTER RE */ + XK_kana_RO = 0x04db, /* U+30ED KATAKANA LETTER RO */ + XK_kana_WA = 0x04dc, /* U+30EF KATAKANA LETTER WA */ + XK_kana_N = 0x04dd, /* U+30F3 KATAKANA LETTER N */ + XK_voicedsound = 0x04de, /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */ + XK_semivoicedsound = 0x04df, /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ + XK_kana_switch = 0xff7e, /* Alias for mode_switch */ + XK_Farsi_0 = 0x10006f0, /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */ + XK_Farsi_1 = 0x10006f1, /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */ + XK_Farsi_2 = 0x10006f2, /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */ + XK_Farsi_3 = 0x10006f3, /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */ + XK_Farsi_4 = 0x10006f4, /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */ + XK_Farsi_5 = 0x10006f5, /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */ + XK_Farsi_6 = 0x10006f6, /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */ + XK_Farsi_7 = 0x10006f7, /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */ + XK_Farsi_8 = 0x10006f8, /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */ + XK_Farsi_9 = 0x10006f9, /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */ + XK_Arabic_percent = 0x100066a, /* U+066A ARABIC PERCENT SIGN */ + XK_Arabic_superscript_alef = 0x1000670, /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */ + XK_Arabic_tteh = 0x1000679, /* U+0679 ARABIC LETTER TTEH */ + XK_Arabic_peh = 0x100067e, /* U+067E ARABIC LETTER PEH */ + XK_Arabic_tcheh = 0x1000686, /* U+0686 ARABIC LETTER TCHEH */ + XK_Arabic_ddal = 0x1000688, /* U+0688 ARABIC LETTER DDAL */ + XK_Arabic_rreh = 0x1000691, /* U+0691 ARABIC LETTER RREH */ + XK_Arabic_comma = 0x05ac, /* U+060C ARABIC COMMA */ + XK_Arabic_fullstop = 0x10006d4, /* U+06D4 ARABIC FULL STOP */ + XK_Arabic_0 = 0x1000660, /* U+0660 ARABIC-INDIC DIGIT ZERO */ + XK_Arabic_1 = 0x1000661, /* U+0661 ARABIC-INDIC DIGIT ONE */ + XK_Arabic_2 = 0x1000662, /* U+0662 ARABIC-INDIC DIGIT TWO */ + XK_Arabic_3 = 0x1000663, /* U+0663 ARABIC-INDIC DIGIT THREE */ + XK_Arabic_4 = 0x1000664, /* U+0664 ARABIC-INDIC DIGIT FOUR */ + XK_Arabic_5 = 0x1000665, /* U+0665 ARABIC-INDIC DIGIT FIVE */ + XK_Arabic_6 = 0x1000666, /* U+0666 ARABIC-INDIC DIGIT SIX */ + XK_Arabic_7 = 0x1000667, /* U+0667 ARABIC-INDIC DIGIT SEVEN */ + XK_Arabic_8 = 0x1000668, /* U+0668 ARABIC-INDIC DIGIT EIGHT */ + XK_Arabic_9 = 0x1000669, /* U+0669 ARABIC-INDIC DIGIT NINE */ + XK_Arabic_semicolon = 0x05bb, /* U+061B ARABIC SEMICOLON */ + XK_Arabic_question_mark = 0x05bf, /* U+061F ARABIC QUESTION MARK */ + XK_Arabic_hamza = 0x05c1, /* U+0621 ARABIC LETTER HAMZA */ + XK_Arabic_maddaonalef = 0x05c2, /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */ + XK_Arabic_hamzaonalef = 0x05c3, /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */ + XK_Arabic_hamzaonwaw = 0x05c4, /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */ + XK_Arabic_hamzaunderalef = 0x05c5, /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */ + XK_Arabic_hamzaonyeh = 0x05c6, /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */ + XK_Arabic_alef = 0x05c7, /* U+0627 ARABIC LETTER ALEF */ + XK_Arabic_beh = 0x05c8, /* U+0628 ARABIC LETTER BEH */ + XK_Arabic_tehmarbuta = 0x05c9, /* U+0629 ARABIC LETTER TEH MARBUTA */ + XK_Arabic_teh = 0x05ca, /* U+062A ARABIC LETTER TEH */ + XK_Arabic_theh = 0x05cb, /* U+062B ARABIC LETTER THEH */ + XK_Arabic_jeem = 0x05cc, /* U+062C ARABIC LETTER JEEM */ + XK_Arabic_hah = 0x05cd, /* U+062D ARABIC LETTER HAH */ + XK_Arabic_khah = 0x05ce, /* U+062E ARABIC LETTER KHAH */ + XK_Arabic_dal = 0x05cf, /* U+062F ARABIC LETTER DAL */ + XK_Arabic_thal = 0x05d0, /* U+0630 ARABIC LETTER THAL */ + XK_Arabic_ra = 0x05d1, /* U+0631 ARABIC LETTER REH */ + XK_Arabic_zain = 0x05d2, /* U+0632 ARABIC LETTER ZAIN */ + XK_Arabic_seen = 0x05d3, /* U+0633 ARABIC LETTER SEEN */ + XK_Arabic_sheen = 0x05d4, /* U+0634 ARABIC LETTER SHEEN */ + XK_Arabic_sad = 0x05d5, /* U+0635 ARABIC LETTER SAD */ + XK_Arabic_dad = 0x05d6, /* U+0636 ARABIC LETTER DAD */ + XK_Arabic_tah = 0x05d7, /* U+0637 ARABIC LETTER TAH */ + XK_Arabic_zah = 0x05d8, /* U+0638 ARABIC LETTER ZAH */ + XK_Arabic_ain = 0x05d9, /* U+0639 ARABIC LETTER AIN */ + XK_Arabic_ghain = 0x05da, /* U+063A ARABIC LETTER GHAIN */ + XK_Arabic_tatweel = 0x05e0, /* U+0640 ARABIC TATWEEL */ + XK_Arabic_feh = 0x05e1, /* U+0641 ARABIC LETTER FEH */ + XK_Arabic_qaf = 0x05e2, /* U+0642 ARABIC LETTER QAF */ + XK_Arabic_kaf = 0x05e3, /* U+0643 ARABIC LETTER KAF */ + XK_Arabic_lam = 0x05e4, /* U+0644 ARABIC LETTER LAM */ + XK_Arabic_meem = 0x05e5, /* U+0645 ARABIC LETTER MEEM */ + XK_Arabic_noon = 0x05e6, /* U+0646 ARABIC LETTER NOON */ + XK_Arabic_ha = 0x05e7, /* U+0647 ARABIC LETTER HEH */ + XK_Arabic_heh = 0x05e7, /* deprecated */ + XK_Arabic_waw = 0x05e8, /* U+0648 ARABIC LETTER WAW */ + XK_Arabic_alefmaksura = 0x05e9, /* U+0649 ARABIC LETTER ALEF MAKSURA */ + XK_Arabic_yeh = 0x05ea, /* U+064A ARABIC LETTER YEH */ + XK_Arabic_fathatan = 0x05eb, /* U+064B ARABIC FATHATAN */ + XK_Arabic_dammatan = 0x05ec, /* U+064C ARABIC DAMMATAN */ + XK_Arabic_kasratan = 0x05ed, /* U+064D ARABIC KASRATAN */ + XK_Arabic_fatha = 0x05ee, /* U+064E ARABIC FATHA */ + XK_Arabic_damma = 0x05ef, /* U+064F ARABIC DAMMA */ + XK_Arabic_kasra = 0x05f0, /* U+0650 ARABIC KASRA */ + XK_Arabic_shadda = 0x05f1, /* U+0651 ARABIC SHADDA */ + XK_Arabic_sukun = 0x05f2, /* U+0652 ARABIC SUKUN */ + XK_Arabic_madda_above = 0x1000653, /* U+0653 ARABIC MADDAH ABOVE */ + XK_Arabic_hamza_above = 0x1000654, /* U+0654 ARABIC HAMZA ABOVE */ + XK_Arabic_hamza_below = 0x1000655, /* U+0655 ARABIC HAMZA BELOW */ + XK_Arabic_jeh = 0x1000698, /* U+0698 ARABIC LETTER JEH */ + XK_Arabic_veh = 0x10006a4, /* U+06A4 ARABIC LETTER VEH */ + XK_Arabic_keheh = 0x10006a9, /* U+06A9 ARABIC LETTER KEHEH */ + XK_Arabic_gaf = 0x10006af, /* U+06AF ARABIC LETTER GAF */ + XK_Arabic_noon_ghunna = 0x10006ba, /* U+06BA ARABIC LETTER NOON GHUNNA */ + XK_Arabic_heh_doachashmee = 0x10006be, /* U+06BE ARABIC LETTER HEH DOACHASHMEE */ + XK_Farsi_yeh = 0x10006cc, /* U+06CC ARABIC LETTER FARSI YEH */ + XK_Arabic_farsi_yeh = 0x10006cc, /* U+06CC ARABIC LETTER FARSI YEH */ + XK_Arabic_yeh_baree = 0x10006d2, /* U+06D2 ARABIC LETTER YEH BARREE */ + XK_Arabic_heh_goal = 0x10006c1, /* U+06C1 ARABIC LETTER HEH GOAL */ + XK_Arabic_switch = 0xff7e, /* Alias for mode_switch */ + XK_Cyrillic_GHE_bar = 0x1000492, /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */ + XK_Cyrillic_ghe_bar = 0x1000493, /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */ + XK_Cyrillic_ZHE_descender = 0x1000496, /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ + XK_Cyrillic_zhe_descender = 0x1000497, /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ + XK_Cyrillic_KA_descender = 0x100049a, /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ + XK_Cyrillic_ka_descender = 0x100049b, /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */ + XK_Cyrillic_KA_vertstroke = 0x100049c, /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */ + XK_Cyrillic_ka_vertstroke = 0x100049d, /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */ + XK_Cyrillic_EN_descender = 0x10004a2, /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ + XK_Cyrillic_en_descender = 0x10004a3, /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */ + XK_Cyrillic_U_straight = 0x10004ae, /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */ + XK_Cyrillic_u_straight = 0x10004af, /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */ + XK_Cyrillic_U_straight_bar = 0x10004b0, /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ + XK_Cyrillic_u_straight_bar = 0x10004b1, /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ + XK_Cyrillic_HA_descender = 0x10004b2, /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ + XK_Cyrillic_ha_descender = 0x10004b3, /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */ + XK_Cyrillic_CHE_descender = 0x10004b6, /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ + XK_Cyrillic_che_descender = 0x10004b7, /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */ + XK_Cyrillic_CHE_vertstroke = 0x10004b8, /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */ + XK_Cyrillic_che_vertstroke = 0x10004b9, /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */ + XK_Cyrillic_SHHA = 0x10004ba, /* U+04BA CYRILLIC CAPITAL LETTER SHHA */ + XK_Cyrillic_shha = 0x10004bb, /* U+04BB CYRILLIC SMALL LETTER SHHA */ + XK_Cyrillic_SCHWA = 0x10004d8, /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */ + XK_Cyrillic_schwa = 0x10004d9, /* U+04D9 CYRILLIC SMALL LETTER SCHWA */ + XK_Cyrillic_I_macron = 0x10004e2, /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */ + XK_Cyrillic_i_macron = 0x10004e3, /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */ + XK_Cyrillic_O_bar = 0x10004e8, /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */ + XK_Cyrillic_o_bar = 0x10004e9, /* U+04E9 CYRILLIC SMALL LETTER BARRED O */ + XK_Cyrillic_U_macron = 0x10004ee, /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */ + XK_Cyrillic_u_macron = 0x10004ef, /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */ + XK_Serbian_dje = 0x06a1, /* U+0452 CYRILLIC SMALL LETTER DJE */ + XK_Macedonia_gje = 0x06a2, /* U+0453 CYRILLIC SMALL LETTER GJE */ + XK_Cyrillic_io = 0x06a3, /* U+0451 CYRILLIC SMALL LETTER IO */ + XK_Ukrainian_ie = 0x06a4, /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */ + XK_Ukranian_je = 0x06a4, /* deprecated */ + XK_Macedonia_dse = 0x06a5, /* U+0455 CYRILLIC SMALL LETTER DZE */ + XK_Ukrainian_i = 0x06a6, /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ + XK_Ukranian_i = 0x06a6, /* deprecated */ + XK_Ukrainian_yi = 0x06a7, /* U+0457 CYRILLIC SMALL LETTER YI */ + XK_Ukranian_yi = 0x06a7, /* deprecated */ + XK_Cyrillic_je = 0x06a8, /* U+0458 CYRILLIC SMALL LETTER JE */ + XK_Serbian_je = 0x06a8, /* deprecated */ + XK_Cyrillic_lje = 0x06a9, /* U+0459 CYRILLIC SMALL LETTER LJE */ + XK_Serbian_lje = 0x06a9, /* deprecated */ + XK_Cyrillic_nje = 0x06aa, /* U+045A CYRILLIC SMALL LETTER NJE */ + XK_Serbian_nje = 0x06aa, /* deprecated */ + XK_Serbian_tshe = 0x06ab, /* U+045B CYRILLIC SMALL LETTER TSHE */ + XK_Macedonia_kje = 0x06ac, /* U+045C CYRILLIC SMALL LETTER KJE */ + XK_Ukrainian_ghe_with_upturn = 0x06ad, /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */ + XK_Byelorussian_shortu = 0x06ae, /* U+045E CYRILLIC SMALL LETTER SHORT U */ + XK_Cyrillic_dzhe = 0x06af, /* U+045F CYRILLIC SMALL LETTER DZHE */ + XK_Serbian_dze = 0x06af, /* deprecated */ + XK_numerosign = 0x06b0, /* U+2116 NUMERO SIGN */ + XK_Serbian_DJE = 0x06b1, /* U+0402 CYRILLIC CAPITAL LETTER DJE */ + XK_Macedonia_GJE = 0x06b2, /* U+0403 CYRILLIC CAPITAL LETTER GJE */ + XK_Cyrillic_IO = 0x06b3, /* U+0401 CYRILLIC CAPITAL LETTER IO */ + XK_Ukrainian_IE = 0x06b4, /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */ + XK_Ukranian_JE = 0x06b4, /* deprecated */ + XK_Macedonia_DSE = 0x06b5, /* U+0405 CYRILLIC CAPITAL LETTER DZE */ + XK_Ukrainian_I = 0x06b6, /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ + XK_Ukranian_I = 0x06b6, /* deprecated */ + XK_Ukrainian_YI = 0x06b7, /* U+0407 CYRILLIC CAPITAL LETTER YI */ + XK_Ukranian_YI = 0x06b7, /* deprecated */ + XK_Cyrillic_JE = 0x06b8, /* U+0408 CYRILLIC CAPITAL LETTER JE */ + XK_Serbian_JE = 0x06b8, /* deprecated */ + XK_Cyrillic_LJE = 0x06b9, /* U+0409 CYRILLIC CAPITAL LETTER LJE */ + XK_Serbian_LJE = 0x06b9, /* deprecated */ + XK_Cyrillic_NJE = 0x06ba, /* U+040A CYRILLIC CAPITAL LETTER NJE */ + XK_Serbian_NJE = 0x06ba, /* deprecated */ + XK_Serbian_TSHE = 0x06bb, /* U+040B CYRILLIC CAPITAL LETTER TSHE */ + XK_Macedonia_KJE = 0x06bc, /* U+040C CYRILLIC CAPITAL LETTER KJE */ + XK_Ukrainian_GHE_WITH_UPTURN = 0x06bd, /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ + XK_Byelorussian_SHORTU = 0x06be, /* U+040E CYRILLIC CAPITAL LETTER SHORT U */ + XK_Cyrillic_DZHE = 0x06bf, /* U+040F CYRILLIC CAPITAL LETTER DZHE */ + XK_Serbian_DZE = 0x06bf, /* deprecated */ + XK_Cyrillic_yu = 0x06c0, /* U+044E CYRILLIC SMALL LETTER YU */ + XK_Cyrillic_a = 0x06c1, /* U+0430 CYRILLIC SMALL LETTER A */ + XK_Cyrillic_be = 0x06c2, /* U+0431 CYRILLIC SMALL LETTER BE */ + XK_Cyrillic_tse = 0x06c3, /* U+0446 CYRILLIC SMALL LETTER TSE */ + XK_Cyrillic_de = 0x06c4, /* U+0434 CYRILLIC SMALL LETTER DE */ + XK_Cyrillic_ie = 0x06c5, /* U+0435 CYRILLIC SMALL LETTER IE */ + XK_Cyrillic_ef = 0x06c6, /* U+0444 CYRILLIC SMALL LETTER EF */ + XK_Cyrillic_ghe = 0x06c7, /* U+0433 CYRILLIC SMALL LETTER GHE */ + XK_Cyrillic_ha = 0x06c8, /* U+0445 CYRILLIC SMALL LETTER HA */ + XK_Cyrillic_i = 0x06c9, /* U+0438 CYRILLIC SMALL LETTER I */ + XK_Cyrillic_shorti = 0x06ca, /* U+0439 CYRILLIC SMALL LETTER SHORT I */ + XK_Cyrillic_ka = 0x06cb, /* U+043A CYRILLIC SMALL LETTER KA */ + XK_Cyrillic_el = 0x06cc, /* U+043B CYRILLIC SMALL LETTER EL */ + XK_Cyrillic_em = 0x06cd, /* U+043C CYRILLIC SMALL LETTER EM */ + XK_Cyrillic_en = 0x06ce, /* U+043D CYRILLIC SMALL LETTER EN */ + XK_Cyrillic_o = 0x06cf, /* U+043E CYRILLIC SMALL LETTER O */ + XK_Cyrillic_pe = 0x06d0, /* U+043F CYRILLIC SMALL LETTER PE */ + XK_Cyrillic_ya = 0x06d1, /* U+044F CYRILLIC SMALL LETTER YA */ + XK_Cyrillic_er = 0x06d2, /* U+0440 CYRILLIC SMALL LETTER ER */ + XK_Cyrillic_es = 0x06d3, /* U+0441 CYRILLIC SMALL LETTER ES */ + XK_Cyrillic_te = 0x06d4, /* U+0442 CYRILLIC SMALL LETTER TE */ + XK_Cyrillic_u = 0x06d5, /* U+0443 CYRILLIC SMALL LETTER U */ + XK_Cyrillic_zhe = 0x06d6, /* U+0436 CYRILLIC SMALL LETTER ZHE */ + XK_Cyrillic_ve = 0x06d7, /* U+0432 CYRILLIC SMALL LETTER VE */ + XK_Cyrillic_softsign = 0x06d8, /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */ + XK_Cyrillic_yeru = 0x06d9, /* U+044B CYRILLIC SMALL LETTER YERU */ + XK_Cyrillic_ze = 0x06da, /* U+0437 CYRILLIC SMALL LETTER ZE */ + XK_Cyrillic_sha = 0x06db, /* U+0448 CYRILLIC SMALL LETTER SHA */ + XK_Cyrillic_e = 0x06dc, /* U+044D CYRILLIC SMALL LETTER E */ + XK_Cyrillic_shcha = 0x06dd, /* U+0449 CYRILLIC SMALL LETTER SHCHA */ + XK_Cyrillic_che = 0x06de, /* U+0447 CYRILLIC SMALL LETTER CHE */ + XK_Cyrillic_hardsign = 0x06df, /* U+044A CYRILLIC SMALL LETTER HARD SIGN */ + XK_Cyrillic_YU = 0x06e0, /* U+042E CYRILLIC CAPITAL LETTER YU */ + XK_Cyrillic_A = 0x06e1, /* U+0410 CYRILLIC CAPITAL LETTER A */ + XK_Cyrillic_BE = 0x06e2, /* U+0411 CYRILLIC CAPITAL LETTER BE */ + XK_Cyrillic_TSE = 0x06e3, /* U+0426 CYRILLIC CAPITAL LETTER TSE */ + XK_Cyrillic_DE = 0x06e4, /* U+0414 CYRILLIC CAPITAL LETTER DE */ + XK_Cyrillic_IE = 0x06e5, /* U+0415 CYRILLIC CAPITAL LETTER IE */ + XK_Cyrillic_EF = 0x06e6, /* U+0424 CYRILLIC CAPITAL LETTER EF */ + XK_Cyrillic_GHE = 0x06e7, /* U+0413 CYRILLIC CAPITAL LETTER GHE */ + XK_Cyrillic_HA = 0x06e8, /* U+0425 CYRILLIC CAPITAL LETTER HA */ + XK_Cyrillic_I = 0x06e9, /* U+0418 CYRILLIC CAPITAL LETTER I */ + XK_Cyrillic_SHORTI = 0x06ea, /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */ + XK_Cyrillic_KA = 0x06eb, /* U+041A CYRILLIC CAPITAL LETTER KA */ + XK_Cyrillic_EL = 0x06ec, /* U+041B CYRILLIC CAPITAL LETTER EL */ + XK_Cyrillic_EM = 0x06ed, /* U+041C CYRILLIC CAPITAL LETTER EM */ + XK_Cyrillic_EN = 0x06ee, /* U+041D CYRILLIC CAPITAL LETTER EN */ + XK_Cyrillic_O = 0x06ef, /* U+041E CYRILLIC CAPITAL LETTER O */ + XK_Cyrillic_PE = 0x06f0, /* U+041F CYRILLIC CAPITAL LETTER PE */ + XK_Cyrillic_YA = 0x06f1, /* U+042F CYRILLIC CAPITAL LETTER YA */ + XK_Cyrillic_ER = 0x06f2, /* U+0420 CYRILLIC CAPITAL LETTER ER */ + XK_Cyrillic_ES = 0x06f3, /* U+0421 CYRILLIC CAPITAL LETTER ES */ + XK_Cyrillic_TE = 0x06f4, /* U+0422 CYRILLIC CAPITAL LETTER TE */ + XK_Cyrillic_U = 0x06f5, /* U+0423 CYRILLIC CAPITAL LETTER U */ + XK_Cyrillic_ZHE = 0x06f6, /* U+0416 CYRILLIC CAPITAL LETTER ZHE */ + XK_Cyrillic_VE = 0x06f7, /* U+0412 CYRILLIC CAPITAL LETTER VE */ + XK_Cyrillic_SOFTSIGN = 0x06f8, /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */ + XK_Cyrillic_YERU = 0x06f9, /* U+042B CYRILLIC CAPITAL LETTER YERU */ + XK_Cyrillic_ZE = 0x06fa, /* U+0417 CYRILLIC CAPITAL LETTER ZE */ + XK_Cyrillic_SHA = 0x06fb, /* U+0428 CYRILLIC CAPITAL LETTER SHA */ + XK_Cyrillic_E = 0x06fc, /* U+042D CYRILLIC CAPITAL LETTER E */ + XK_Cyrillic_SHCHA = 0x06fd, /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */ + XK_Cyrillic_CHE = 0x06fe, /* U+0427 CYRILLIC CAPITAL LETTER CHE */ + XK_Cyrillic_HARDSIGN = 0x06ff, /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */ + XK_Greek_ALPHAaccent = 0x07a1, /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */ + XK_Greek_EPSILONaccent = 0x07a2, /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */ + XK_Greek_ETAaccent = 0x07a3, /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */ + XK_Greek_IOTAaccent = 0x07a4, /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */ + XK_Greek_IOTAdieresis = 0x07a5, /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ + XK_Greek_IOTAdiaeresis = 0x07a5, /* old typo */ + XK_Greek_OMICRONaccent = 0x07a7, /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */ + XK_Greek_UPSILONaccent = 0x07a8, /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */ + XK_Greek_UPSILONdieresis = 0x07a9, /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ + XK_Greek_OMEGAaccent = 0x07ab, /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */ + XK_Greek_accentdieresis = 0x07ae, /* U+0385 GREEK DIALYTIKA TONOS */ + XK_Greek_horizbar = 0x07af, /* U+2015 HORIZONTAL BAR */ + XK_Greek_alphaaccent = 0x07b1, /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */ + XK_Greek_epsilonaccent = 0x07b2, /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */ + XK_Greek_etaaccent = 0x07b3, /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */ + XK_Greek_iotaaccent = 0x07b4, /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */ + XK_Greek_iotadieresis = 0x07b5, /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */ + XK_Greek_iotaaccentdieresis = 0x07b6, /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ + XK_Greek_omicronaccent = 0x07b7, /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */ + XK_Greek_upsilonaccent = 0x07b8, /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */ + XK_Greek_upsilondieresis = 0x07b9, /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ + XK_Greek_upsilonaccentdieresis = 0x07ba, /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ + XK_Greek_omegaaccent = 0x07bb, /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */ + XK_Greek_ALPHA = 0x07c1, /* U+0391 GREEK CAPITAL LETTER ALPHA */ + XK_Greek_BETA = 0x07c2, /* U+0392 GREEK CAPITAL LETTER BETA */ + XK_Greek_GAMMA = 0x07c3, /* U+0393 GREEK CAPITAL LETTER GAMMA */ + XK_Greek_DELTA = 0x07c4, /* U+0394 GREEK CAPITAL LETTER DELTA */ + XK_Greek_EPSILON = 0x07c5, /* U+0395 GREEK CAPITAL LETTER EPSILON */ + XK_Greek_ZETA = 0x07c6, /* U+0396 GREEK CAPITAL LETTER ZETA */ + XK_Greek_ETA = 0x07c7, /* U+0397 GREEK CAPITAL LETTER ETA */ + XK_Greek_THETA = 0x07c8, /* U+0398 GREEK CAPITAL LETTER THETA */ + XK_Greek_IOTA = 0x07c9, /* U+0399 GREEK CAPITAL LETTER IOTA */ + XK_Greek_KAPPA = 0x07ca, /* U+039A GREEK CAPITAL LETTER KAPPA */ + XK_Greek_LAMDA = 0x07cb, /* U+039B GREEK CAPITAL LETTER LAMDA */ + XK_Greek_LAMBDA = 0x07cb, /* U+039B GREEK CAPITAL LETTER LAMDA */ + XK_Greek_MU = 0x07cc, /* U+039C GREEK CAPITAL LETTER MU */ + XK_Greek_NU = 0x07cd, /* U+039D GREEK CAPITAL LETTER NU */ + XK_Greek_XI = 0x07ce, /* U+039E GREEK CAPITAL LETTER XI */ + XK_Greek_OMICRON = 0x07cf, /* U+039F GREEK CAPITAL LETTER OMICRON */ + XK_Greek_PI = 0x07d0, /* U+03A0 GREEK CAPITAL LETTER PI */ + XK_Greek_RHO = 0x07d1, /* U+03A1 GREEK CAPITAL LETTER RHO */ + XK_Greek_SIGMA = 0x07d2, /* U+03A3 GREEK CAPITAL LETTER SIGMA */ + XK_Greek_TAU = 0x07d4, /* U+03A4 GREEK CAPITAL LETTER TAU */ + XK_Greek_UPSILON = 0x07d5, /* U+03A5 GREEK CAPITAL LETTER UPSILON */ + XK_Greek_PHI = 0x07d6, /* U+03A6 GREEK CAPITAL LETTER PHI */ + XK_Greek_CHI = 0x07d7, /* U+03A7 GREEK CAPITAL LETTER CHI */ + XK_Greek_PSI = 0x07d8, /* U+03A8 GREEK CAPITAL LETTER PSI */ + XK_Greek_OMEGA = 0x07d9, /* U+03A9 GREEK CAPITAL LETTER OMEGA */ + XK_Greek_alpha = 0x07e1, /* U+03B1 GREEK SMALL LETTER ALPHA */ + XK_Greek_beta = 0x07e2, /* U+03B2 GREEK SMALL LETTER BETA */ + XK_Greek_gamma = 0x07e3, /* U+03B3 GREEK SMALL LETTER GAMMA */ + XK_Greek_delta = 0x07e4, /* U+03B4 GREEK SMALL LETTER DELTA */ + XK_Greek_epsilon = 0x07e5, /* U+03B5 GREEK SMALL LETTER EPSILON */ + XK_Greek_zeta = 0x07e6, /* U+03B6 GREEK SMALL LETTER ZETA */ + XK_Greek_eta = 0x07e7, /* U+03B7 GREEK SMALL LETTER ETA */ + XK_Greek_theta = 0x07e8, /* U+03B8 GREEK SMALL LETTER THETA */ + XK_Greek_iota = 0x07e9, /* U+03B9 GREEK SMALL LETTER IOTA */ + XK_Greek_kappa = 0x07ea, /* U+03BA GREEK SMALL LETTER KAPPA */ + XK_Greek_lamda = 0x07eb, /* U+03BB GREEK SMALL LETTER LAMDA */ + XK_Greek_lambda = 0x07eb, /* U+03BB GREEK SMALL LETTER LAMDA */ + XK_Greek_mu = 0x07ec, /* U+03BC GREEK SMALL LETTER MU */ + XK_Greek_nu = 0x07ed, /* U+03BD GREEK SMALL LETTER NU */ + XK_Greek_xi = 0x07ee, /* U+03BE GREEK SMALL LETTER XI */ + XK_Greek_omicron = 0x07ef, /* U+03BF GREEK SMALL LETTER OMICRON */ + XK_Greek_pi = 0x07f0, /* U+03C0 GREEK SMALL LETTER PI */ + XK_Greek_rho = 0x07f1, /* U+03C1 GREEK SMALL LETTER RHO */ + XK_Greek_sigma = 0x07f2, /* U+03C3 GREEK SMALL LETTER SIGMA */ + XK_Greek_finalsmallsigma = 0x07f3, /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */ + XK_Greek_tau = 0x07f4, /* U+03C4 GREEK SMALL LETTER TAU */ + XK_Greek_upsilon = 0x07f5, /* U+03C5 GREEK SMALL LETTER UPSILON */ + XK_Greek_phi = 0x07f6, /* U+03C6 GREEK SMALL LETTER PHI */ + XK_Greek_chi = 0x07f7, /* U+03C7 GREEK SMALL LETTER CHI */ + XK_Greek_psi = 0x07f8, /* U+03C8 GREEK SMALL LETTER PSI */ + XK_Greek_omega = 0x07f9, /* U+03C9 GREEK SMALL LETTER OMEGA */ + XK_Greek_switch = 0xff7e, /* Alias for mode_switch */ + XK_leftradical = 0x08a1, /* U+23B7 RADICAL SYMBOL BOTTOM */ + XK_topleftradical = 0x08a2, /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/ + XK_horizconnector = 0x08a3, /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/ + XK_topintegral = 0x08a4, /* U+2320 TOP HALF INTEGRAL */ + XK_botintegral = 0x08a5, /* U+2321 BOTTOM HALF INTEGRAL */ + XK_vertconnector = 0x08a6, /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/ + XK_topleftsqbracket = 0x08a7, /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */ + XK_botleftsqbracket = 0x08a8, /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */ + XK_toprightsqbracket = 0x08a9, /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */ + XK_botrightsqbracket = 0x08aa, /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */ + XK_topleftparens = 0x08ab, /* U+239B LEFT PARENTHESIS UPPER HOOK */ + XK_botleftparens = 0x08ac, /* U+239D LEFT PARENTHESIS LOWER HOOK */ + XK_toprightparens = 0x08ad, /* U+239E RIGHT PARENTHESIS UPPER HOOK */ + XK_botrightparens = 0x08ae, /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */ + XK_leftmiddlecurlybrace = 0x08af, /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */ + XK_rightmiddlecurlybrace = 0x08b0, /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */ + XK_topleftsummation = 0x08b1, + XK_botleftsummation = 0x08b2, + XK_topvertsummationconnector = 0x08b3, + XK_botvertsummationconnector = 0x08b4, + XK_toprightsummation = 0x08b5, + XK_botrightsummation = 0x08b6, + XK_rightmiddlesummation = 0x08b7, + XK_lessthanequal = 0x08bc, /* U+2264 LESS-THAN OR EQUAL TO */ + XK_notequal = 0x08bd, /* U+2260 NOT EQUAL TO */ + XK_greaterthanequal = 0x08be, /* U+2265 GREATER-THAN OR EQUAL TO */ + XK_integral = 0x08bf, /* U+222B INTEGRAL */ + XK_therefore = 0x08c0, /* U+2234 THEREFORE */ + XK_variation = 0x08c1, /* U+221D PROPORTIONAL TO */ + XK_infinity = 0x08c2, /* U+221E INFINITY */ + XK_nabla = 0x08c5, /* U+2207 NABLA */ + XK_approximate = 0x08c8, /* U+223C TILDE OPERATOR */ + XK_similarequal = 0x08c9, /* U+2243 ASYMPTOTICALLY EQUAL TO */ + XK_ifonlyif = 0x08cd, /* U+21D4 LEFT RIGHT DOUBLE ARROW */ + XK_implies = 0x08ce, /* U+21D2 RIGHTWARDS DOUBLE ARROW */ + XK_identical = 0x08cf, /* U+2261 IDENTICAL TO */ + XK_radical = 0x08d6, /* U+221A SQUARE ROOT */ + XK_includedin = 0x08da, /* U+2282 SUBSET OF */ + XK_includes = 0x08db, /* U+2283 SUPERSET OF */ + XK_intersection = 0x08dc, /* U+2229 INTERSECTION */ + XK_union = 0x08dd, /* U+222A UNION */ + XK_logicaland = 0x08de, /* U+2227 LOGICAL AND */ + XK_logicalor = 0x08df, /* U+2228 LOGICAL OR */ + XK_partialderivative = 0x08ef, /* U+2202 PARTIAL DIFFERENTIAL */ + XK_function = 0x08f6, /* U+0192 LATIN SMALL LETTER F WITH HOOK */ + XK_leftarrow = 0x08fb, /* U+2190 LEFTWARDS ARROW */ + XK_uparrow = 0x08fc, /* U+2191 UPWARDS ARROW */ + XK_rightarrow = 0x08fd, /* U+2192 RIGHTWARDS ARROW */ + XK_downarrow = 0x08fe, /* U+2193 DOWNWARDS ARROW */ + XK_blank = 0x09df, + XK_soliddiamond = 0x09e0, /* U+25C6 BLACK DIAMOND */ + XK_checkerboard = 0x09e1, /* U+2592 MEDIUM SHADE */ + XK_ht = 0x09e2, /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */ + XK_ff = 0x09e3, /* U+240C SYMBOL FOR FORM FEED */ + XK_cr = 0x09e4, /* U+240D SYMBOL FOR CARRIAGE RETURN */ + XK_lf = 0x09e5, /* U+240A SYMBOL FOR LINE FEED */ + XK_nl = 0x09e8, /* U+2424 SYMBOL FOR NEWLINE */ + XK_vt = 0x09e9, /* U+240B SYMBOL FOR VERTICAL TABULATION */ + XK_lowrightcorner = 0x09ea, /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */ + XK_uprightcorner = 0x09eb, /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */ + XK_upleftcorner = 0x09ec, /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */ + XK_lowleftcorner = 0x09ed, /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */ + XK_crossinglines = 0x09ee, /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ + XK_horizlinescan1 = 0x09ef, /* U+23BA HORIZONTAL SCAN LINE-1 */ + XK_horizlinescan3 = 0x09f0, /* U+23BB HORIZONTAL SCAN LINE-3 */ + XK_horizlinescan5 = 0x09f1, /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */ + XK_horizlinescan7 = 0x09f2, /* U+23BC HORIZONTAL SCAN LINE-7 */ + XK_horizlinescan9 = 0x09f3, /* U+23BD HORIZONTAL SCAN LINE-9 */ + XK_leftt = 0x09f4, /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ + XK_rightt = 0x09f5, /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */ + XK_bott = 0x09f6, /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */ + XK_topt = 0x09f7, /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ + XK_vertbar = 0x09f8, /* U+2502 BOX DRAWINGS LIGHT VERTICAL */ + XK_emspace = 0x0aa1, /* U+2003 EM SPACE */ + XK_enspace = 0x0aa2, /* U+2002 EN SPACE */ + XK_em3space = 0x0aa3, /* U+2004 THREE-PER-EM SPACE */ + XK_em4space = 0x0aa4, /* U+2005 FOUR-PER-EM SPACE */ + XK_digitspace = 0x0aa5, /* U+2007 FIGURE SPACE */ + XK_punctspace = 0x0aa6, /* U+2008 PUNCTUATION SPACE */ + XK_thinspace = 0x0aa7, /* U+2009 THIN SPACE */ + XK_hairspace = 0x0aa8, /* U+200A HAIR SPACE */ + XK_emdash = 0x0aa9, /* U+2014 EM DASH */ + XK_endash = 0x0aaa, /* U+2013 EN DASH */ + XK_signifblank = 0x0aac, /*(U+2423 OPEN BOX)*/ + XK_ellipsis = 0x0aae, /* U+2026 HORIZONTAL ELLIPSIS */ + XK_doubbaselinedot = 0x0aaf, /* U+2025 TWO DOT LEADER */ + XK_onethird = 0x0ab0, /* U+2153 VULGAR FRACTION ONE THIRD */ + XK_twothirds = 0x0ab1, /* U+2154 VULGAR FRACTION TWO THIRDS */ + XK_onefifth = 0x0ab2, /* U+2155 VULGAR FRACTION ONE FIFTH */ + XK_twofifths = 0x0ab3, /* U+2156 VULGAR FRACTION TWO FIFTHS */ + XK_threefifths = 0x0ab4, /* U+2157 VULGAR FRACTION THREE FIFTHS */ + XK_fourfifths = 0x0ab5, /* U+2158 VULGAR FRACTION FOUR FIFTHS */ + XK_onesixth = 0x0ab6, /* U+2159 VULGAR FRACTION ONE SIXTH */ + XK_fivesixths = 0x0ab7, /* U+215A VULGAR FRACTION FIVE SIXTHS */ + XK_careof = 0x0ab8, /* U+2105 CARE OF */ + XK_figdash = 0x0abb, /* U+2012 FIGURE DASH */ + XK_leftanglebracket = 0x0abc, /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/ + XK_decimalpoint = 0x0abd, /*(U+002E FULL STOP)*/ + XK_rightanglebracket = 0x0abe, /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/ + XK_marker = 0x0abf, + XK_oneeighth = 0x0ac3, /* U+215B VULGAR FRACTION ONE EIGHTH */ + XK_threeeighths = 0x0ac4, /* U+215C VULGAR FRACTION THREE EIGHTHS */ + XK_fiveeighths = 0x0ac5, /* U+215D VULGAR FRACTION FIVE EIGHTHS */ + XK_seveneighths = 0x0ac6, /* U+215E VULGAR FRACTION SEVEN EIGHTHS */ + XK_trademark = 0x0ac9, /* U+2122 TRADE MARK SIGN */ + XK_signaturemark = 0x0aca, /*(U+2613 SALTIRE)*/ + XK_trademarkincircle = 0x0acb, + XK_leftopentriangle = 0x0acc, /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/ + XK_rightopentriangle = 0x0acd, /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/ + XK_emopencircle = 0x0ace, /*(U+25CB WHITE CIRCLE)*/ + XK_emopenrectangle = 0x0acf, /*(U+25AF WHITE VERTICAL RECTANGLE)*/ + XK_leftsinglequotemark = 0x0ad0, /* U+2018 LEFT SINGLE QUOTATION MARK */ + XK_rightsinglequotemark = 0x0ad1, /* U+2019 RIGHT SINGLE QUOTATION MARK */ + XK_leftdoublequotemark = 0x0ad2, /* U+201C LEFT DOUBLE QUOTATION MARK */ + XK_rightdoublequotemark = 0x0ad3, /* U+201D RIGHT DOUBLE QUOTATION MARK */ + XK_prescription = 0x0ad4, /* U+211E PRESCRIPTION TAKE */ + XK_minutes = 0x0ad6, /* U+2032 PRIME */ + XK_seconds = 0x0ad7, /* U+2033 DOUBLE PRIME */ + XK_latincross = 0x0ad9, /* U+271D LATIN CROSS */ + XK_hexagram = 0x0ada, + XK_filledrectbullet = 0x0adb, /*(U+25AC BLACK RECTANGLE)*/ + XK_filledlefttribullet = 0x0adc, /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/ + XK_filledrighttribullet = 0x0add, /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/ + XK_emfilledcircle = 0x0ade, /*(U+25CF BLACK CIRCLE)*/ + XK_emfilledrect = 0x0adf, /*(U+25AE BLACK VERTICAL RECTANGLE)*/ + XK_enopencircbullet = 0x0ae0, /*(U+25E6 WHITE BULLET)*/ + XK_enopensquarebullet = 0x0ae1, /*(U+25AB WHITE SMALL SQUARE)*/ + XK_openrectbullet = 0x0ae2, /*(U+25AD WHITE RECTANGLE)*/ + XK_opentribulletup = 0x0ae3, /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/ + XK_opentribulletdown = 0x0ae4, /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/ + XK_openstar = 0x0ae5, /*(U+2606 WHITE STAR)*/ + XK_enfilledcircbullet = 0x0ae6, /*(U+2022 BULLET)*/ + XK_enfilledsqbullet = 0x0ae7, /*(U+25AA BLACK SMALL SQUARE)*/ + XK_filledtribulletup = 0x0ae8, /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/ + XK_filledtribulletdown = 0x0ae9, /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/ + XK_leftpointer = 0x0aea, /*(U+261C WHITE LEFT POINTING INDEX)*/ + XK_rightpointer = 0x0aeb, /*(U+261E WHITE RIGHT POINTING INDEX)*/ + XK_club = 0x0aec, /* U+2663 BLACK CLUB SUIT */ + XK_diamond = 0x0aed, /* U+2666 BLACK DIAMOND SUIT */ + XK_heart = 0x0aee, /* U+2665 BLACK HEART SUIT */ + XK_maltesecross = 0x0af0, /* U+2720 MALTESE CROSS */ + XK_dagger = 0x0af1, /* U+2020 DAGGER */ + XK_doubledagger = 0x0af2, /* U+2021 DOUBLE DAGGER */ + XK_checkmark = 0x0af3, /* U+2713 CHECK MARK */ + XK_ballotcross = 0x0af4, /* U+2717 BALLOT X */ + XK_musicalsharp = 0x0af5, /* U+266F MUSIC SHARP SIGN */ + XK_musicalflat = 0x0af6, /* U+266D MUSIC FLAT SIGN */ + XK_malesymbol = 0x0af7, /* U+2642 MALE SIGN */ + XK_femalesymbol = 0x0af8, /* U+2640 FEMALE SIGN */ + XK_telephone = 0x0af9, /* U+260E BLACK TELEPHONE */ + XK_telephonerecorder = 0x0afa, /* U+2315 TELEPHONE RECORDER */ + XK_phonographcopyright = 0x0afb, /* U+2117 SOUND RECORDING COPYRIGHT */ + XK_caret = 0x0afc, /* U+2038 CARET */ + XK_singlelowquotemark = 0x0afd, /* U+201A SINGLE LOW-9 QUOTATION MARK */ + XK_doublelowquotemark = 0x0afe, /* U+201E DOUBLE LOW-9 QUOTATION MARK */ + XK_cursor = 0x0aff, + XK_leftcaret = 0x0ba3, /*(U+003C LESS-THAN SIGN)*/ + XK_rightcaret = 0x0ba6, /*(U+003E GREATER-THAN SIGN)*/ + XK_downcaret = 0x0ba8, /*(U+2228 LOGICAL OR)*/ + XK_upcaret = 0x0ba9, /*(U+2227 LOGICAL AND)*/ + XK_overbar = 0x0bc0, /*(U+00AF MACRON)*/ + XK_downtack = 0x0bc2, /* U+22A5 UP TACK */ + XK_upshoe = 0x0bc3, /*(U+2229 INTERSECTION)*/ + XK_downstile = 0x0bc4, /* U+230A LEFT FLOOR */ + XK_underbar = 0x0bc6, /*(U+005F LOW LINE)*/ + XK_jot = 0x0bca, /* U+2218 RING OPERATOR */ + XK_quad = 0x0bcc, /* U+2395 APL FUNCTIONAL SYMBOL QUAD */ + XK_uptack = 0x0bce, /* U+22A4 DOWN TACK */ + XK_circle = 0x0bcf, /* U+25CB WHITE CIRCLE */ + XK_upstile = 0x0bd3, /* U+2308 LEFT CEILING */ + XK_downshoe = 0x0bd6, /*(U+222A UNION)*/ + XK_rightshoe = 0x0bd8, /*(U+2283 SUPERSET OF)*/ + XK_leftshoe = 0x0bda, /*(U+2282 SUBSET OF)*/ + XK_lefttack = 0x0bdc, /* U+22A2 RIGHT TACK */ + XK_righttack = 0x0bfc, /* U+22A3 LEFT TACK */ + XK_hebrew_doublelowline = 0x0cdf, /* U+2017 DOUBLE LOW LINE */ + XK_hebrew_aleph = 0x0ce0, /* U+05D0 HEBREW LETTER ALEF */ + XK_hebrew_bet = 0x0ce1, /* U+05D1 HEBREW LETTER BET */ + XK_hebrew_beth = 0x0ce1, /* deprecated */ + XK_hebrew_gimel = 0x0ce2, /* U+05D2 HEBREW LETTER GIMEL */ + XK_hebrew_gimmel = 0x0ce2, /* deprecated */ + XK_hebrew_dalet = 0x0ce3, /* U+05D3 HEBREW LETTER DALET */ + XK_hebrew_daleth = 0x0ce3, /* deprecated */ + XK_hebrew_he = 0x0ce4, /* U+05D4 HEBREW LETTER HE */ + XK_hebrew_waw = 0x0ce5, /* U+05D5 HEBREW LETTER VAV */ + XK_hebrew_zain = 0x0ce6, /* U+05D6 HEBREW LETTER ZAYIN */ + XK_hebrew_zayin = 0x0ce6, /* deprecated */ + XK_hebrew_chet = 0x0ce7, /* U+05D7 HEBREW LETTER HET */ + XK_hebrew_het = 0x0ce7, /* deprecated */ + XK_hebrew_tet = 0x0ce8, /* U+05D8 HEBREW LETTER TET */ + XK_hebrew_teth = 0x0ce8, /* deprecated */ + XK_hebrew_yod = 0x0ce9, /* U+05D9 HEBREW LETTER YOD */ + XK_hebrew_finalkaph = 0x0cea, /* U+05DA HEBREW LETTER FINAL KAF */ + XK_hebrew_kaph = 0x0ceb, /* U+05DB HEBREW LETTER KAF */ + XK_hebrew_lamed = 0x0cec, /* U+05DC HEBREW LETTER LAMED */ + XK_hebrew_finalmem = 0x0ced, /* U+05DD HEBREW LETTER FINAL MEM */ + XK_hebrew_mem = 0x0cee, /* U+05DE HEBREW LETTER MEM */ + XK_hebrew_finalnun = 0x0cef, /* U+05DF HEBREW LETTER FINAL NUN */ + XK_hebrew_nun = 0x0cf0, /* U+05E0 HEBREW LETTER NUN */ + XK_hebrew_samech = 0x0cf1, /* U+05E1 HEBREW LETTER SAMEKH */ + XK_hebrew_samekh = 0x0cf1, /* deprecated */ + XK_hebrew_ayin = 0x0cf2, /* U+05E2 HEBREW LETTER AYIN */ + XK_hebrew_finalpe = 0x0cf3, /* U+05E3 HEBREW LETTER FINAL PE */ + XK_hebrew_pe = 0x0cf4, /* U+05E4 HEBREW LETTER PE */ + XK_hebrew_finalzade = 0x0cf5, /* U+05E5 HEBREW LETTER FINAL TSADI */ + XK_hebrew_finalzadi = 0x0cf5, /* deprecated */ + XK_hebrew_zade = 0x0cf6, /* U+05E6 HEBREW LETTER TSADI */ + XK_hebrew_zadi = 0x0cf6, /* deprecated */ + XK_hebrew_qoph = 0x0cf7, /* U+05E7 HEBREW LETTER QOF */ + XK_hebrew_kuf = 0x0cf7, /* deprecated */ + XK_hebrew_resh = 0x0cf8, /* U+05E8 HEBREW LETTER RESH */ + XK_hebrew_shin = 0x0cf9, /* U+05E9 HEBREW LETTER SHIN */ + XK_hebrew_taw = 0x0cfa, /* U+05EA HEBREW LETTER TAV */ + XK_hebrew_taf = 0x0cfa, /* deprecated */ + XK_Hebrew_switch = 0xff7e, /* Alias for mode_switch */ + XK_Thai_kokai = 0x0da1, /* U+0E01 THAI CHARACTER KO KAI */ + XK_Thai_khokhai = 0x0da2, /* U+0E02 THAI CHARACTER KHO KHAI */ + XK_Thai_khokhuat = 0x0da3, /* U+0E03 THAI CHARACTER KHO KHUAT */ + XK_Thai_khokhwai = 0x0da4, /* U+0E04 THAI CHARACTER KHO KHWAI */ + XK_Thai_khokhon = 0x0da5, /* U+0E05 THAI CHARACTER KHO KHON */ + XK_Thai_khorakhang = 0x0da6, /* U+0E06 THAI CHARACTER KHO RAKHANG */ + XK_Thai_ngongu = 0x0da7, /* U+0E07 THAI CHARACTER NGO NGU */ + XK_Thai_chochan = 0x0da8, /* U+0E08 THAI CHARACTER CHO CHAN */ + XK_Thai_choching = 0x0da9, /* U+0E09 THAI CHARACTER CHO CHING */ + XK_Thai_chochang = 0x0daa, /* U+0E0A THAI CHARACTER CHO CHANG */ + XK_Thai_soso = 0x0dab, /* U+0E0B THAI CHARACTER SO SO */ + XK_Thai_chochoe = 0x0dac, /* U+0E0C THAI CHARACTER CHO CHOE */ + XK_Thai_yoying = 0x0dad, /* U+0E0D THAI CHARACTER YO YING */ + XK_Thai_dochada = 0x0dae, /* U+0E0E THAI CHARACTER DO CHADA */ + XK_Thai_topatak = 0x0daf, /* U+0E0F THAI CHARACTER TO PATAK */ + XK_Thai_thothan = 0x0db0, /* U+0E10 THAI CHARACTER THO THAN */ + XK_Thai_thonangmontho = 0x0db1, /* U+0E11 THAI CHARACTER THO NANGMONTHO */ + XK_Thai_thophuthao = 0x0db2, /* U+0E12 THAI CHARACTER THO PHUTHAO */ + XK_Thai_nonen = 0x0db3, /* U+0E13 THAI CHARACTER NO NEN */ + XK_Thai_dodek = 0x0db4, /* U+0E14 THAI CHARACTER DO DEK */ + XK_Thai_totao = 0x0db5, /* U+0E15 THAI CHARACTER TO TAO */ + XK_Thai_thothung = 0x0db6, /* U+0E16 THAI CHARACTER THO THUNG */ + XK_Thai_thothahan = 0x0db7, /* U+0E17 THAI CHARACTER THO THAHAN */ + XK_Thai_thothong = 0x0db8, /* U+0E18 THAI CHARACTER THO THONG */ + XK_Thai_nonu = 0x0db9, /* U+0E19 THAI CHARACTER NO NU */ + XK_Thai_bobaimai = 0x0dba, /* U+0E1A THAI CHARACTER BO BAIMAI */ + XK_Thai_popla = 0x0dbb, /* U+0E1B THAI CHARACTER PO PLA */ + XK_Thai_phophung = 0x0dbc, /* U+0E1C THAI CHARACTER PHO PHUNG */ + XK_Thai_fofa = 0x0dbd, /* U+0E1D THAI CHARACTER FO FA */ + XK_Thai_phophan = 0x0dbe, /* U+0E1E THAI CHARACTER PHO PHAN */ + XK_Thai_fofan = 0x0dbf, /* U+0E1F THAI CHARACTER FO FAN */ + XK_Thai_phosamphao = 0x0dc0, /* U+0E20 THAI CHARACTER PHO SAMPHAO */ + XK_Thai_moma = 0x0dc1, /* U+0E21 THAI CHARACTER MO MA */ + XK_Thai_yoyak = 0x0dc2, /* U+0E22 THAI CHARACTER YO YAK */ + XK_Thai_rorua = 0x0dc3, /* U+0E23 THAI CHARACTER RO RUA */ + XK_Thai_ru = 0x0dc4, /* U+0E24 THAI CHARACTER RU */ + XK_Thai_loling = 0x0dc5, /* U+0E25 THAI CHARACTER LO LING */ + XK_Thai_lu = 0x0dc6, /* U+0E26 THAI CHARACTER LU */ + XK_Thai_wowaen = 0x0dc7, /* U+0E27 THAI CHARACTER WO WAEN */ + XK_Thai_sosala = 0x0dc8, /* U+0E28 THAI CHARACTER SO SALA */ + XK_Thai_sorusi = 0x0dc9, /* U+0E29 THAI CHARACTER SO RUSI */ + XK_Thai_sosua = 0x0dca, /* U+0E2A THAI CHARACTER SO SUA */ + XK_Thai_hohip = 0x0dcb, /* U+0E2B THAI CHARACTER HO HIP */ + XK_Thai_lochula = 0x0dcc, /* U+0E2C THAI CHARACTER LO CHULA */ + XK_Thai_oang = 0x0dcd, /* U+0E2D THAI CHARACTER O ANG */ + XK_Thai_honokhuk = 0x0dce, /* U+0E2E THAI CHARACTER HO NOKHUK */ + XK_Thai_paiyannoi = 0x0dcf, /* U+0E2F THAI CHARACTER PAIYANNOI */ + XK_Thai_saraa = 0x0dd0, /* U+0E30 THAI CHARACTER SARA A */ + XK_Thai_maihanakat = 0x0dd1, /* U+0E31 THAI CHARACTER MAI HAN-AKAT */ + XK_Thai_saraaa = 0x0dd2, /* U+0E32 THAI CHARACTER SARA AA */ + XK_Thai_saraam = 0x0dd3, /* U+0E33 THAI CHARACTER SARA AM */ + XK_Thai_sarai = 0x0dd4, /* U+0E34 THAI CHARACTER SARA I */ + XK_Thai_saraii = 0x0dd5, /* U+0E35 THAI CHARACTER SARA II */ + XK_Thai_saraue = 0x0dd6, /* U+0E36 THAI CHARACTER SARA UE */ + XK_Thai_sarauee = 0x0dd7, /* U+0E37 THAI CHARACTER SARA UEE */ + XK_Thai_sarau = 0x0dd8, /* U+0E38 THAI CHARACTER SARA U */ + XK_Thai_sarauu = 0x0dd9, /* U+0E39 THAI CHARACTER SARA UU */ + XK_Thai_phinthu = 0x0dda, /* U+0E3A THAI CHARACTER PHINTHU */ + XK_Thai_maihanakat_maitho = 0x0dde, + XK_Thai_baht = 0x0ddf, /* U+0E3F THAI CURRENCY SYMBOL BAHT */ + XK_Thai_sarae = 0x0de0, /* U+0E40 THAI CHARACTER SARA E */ + XK_Thai_saraae = 0x0de1, /* U+0E41 THAI CHARACTER SARA AE */ + XK_Thai_sarao = 0x0de2, /* U+0E42 THAI CHARACTER SARA O */ + XK_Thai_saraaimaimuan = 0x0de3, /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */ + XK_Thai_saraaimaimalai = 0x0de4, /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */ + XK_Thai_lakkhangyao = 0x0de5, /* U+0E45 THAI CHARACTER LAKKHANGYAO */ + XK_Thai_maiyamok = 0x0de6, /* U+0E46 THAI CHARACTER MAIYAMOK */ + XK_Thai_maitaikhu = 0x0de7, /* U+0E47 THAI CHARACTER MAITAIKHU */ + XK_Thai_maiek = 0x0de8, /* U+0E48 THAI CHARACTER MAI EK */ + XK_Thai_maitho = 0x0de9, /* U+0E49 THAI CHARACTER MAI THO */ + XK_Thai_maitri = 0x0dea, /* U+0E4A THAI CHARACTER MAI TRI */ + XK_Thai_maichattawa = 0x0deb, /* U+0E4B THAI CHARACTER MAI CHATTAWA */ + XK_Thai_thanthakhat = 0x0dec, /* U+0E4C THAI CHARACTER THANTHAKHAT */ + XK_Thai_nikhahit = 0x0ded, /* U+0E4D THAI CHARACTER NIKHAHIT */ + XK_Thai_leksun = 0x0df0, /* U+0E50 THAI DIGIT ZERO */ + XK_Thai_leknung = 0x0df1, /* U+0E51 THAI DIGIT ONE */ + XK_Thai_leksong = 0x0df2, /* U+0E52 THAI DIGIT TWO */ + XK_Thai_leksam = 0x0df3, /* U+0E53 THAI DIGIT THREE */ + XK_Thai_leksi = 0x0df4, /* U+0E54 THAI DIGIT FOUR */ + XK_Thai_lekha = 0x0df5, /* U+0E55 THAI DIGIT FIVE */ + XK_Thai_lekhok = 0x0df6, /* U+0E56 THAI DIGIT SIX */ + XK_Thai_lekchet = 0x0df7, /* U+0E57 THAI DIGIT SEVEN */ + XK_Thai_lekpaet = 0x0df8, /* U+0E58 THAI DIGIT EIGHT */ + XK_Thai_lekkao = 0x0df9, /* U+0E59 THAI DIGIT NINE */ + XK_Hangul = 0xff31, /* Hangul start/stop(toggle) */ + XK_Hangul_Start = 0xff32, /* Hangul start */ + XK_Hangul_End = 0xff33, /* Hangul end, English start */ + XK_Hangul_Hanja = 0xff34, /* Start Hangul->Hanja Conversion */ + XK_Hangul_Jamo = 0xff35, /* Hangul Jamo mode */ + XK_Hangul_Romaja = 0xff36, /* Hangul Romaja mode */ + XK_Hangul_Codeinput = 0xff37, /* Hangul code input mode */ + XK_Hangul_Jeonja = 0xff38, /* Jeonja mode */ + XK_Hangul_Banja = 0xff39, /* Banja mode */ + XK_Hangul_PreHanja = 0xff3a, /* Pre Hanja conversion */ + XK_Hangul_PostHanja = 0xff3b, /* Post Hanja conversion */ + XK_Hangul_SingleCandidate = 0xff3c, /* Single candidate */ + XK_Hangul_MultipleCandidate = 0xff3d, /* Multiple candidate */ + XK_Hangul_PreviousCandidate = 0xff3e, /* Previous candidate */ + XK_Hangul_Special = 0xff3f, /* Special symbols */ + XK_Hangul_switch = 0xff7e, /* Alias for mode_switch */ + XK_Hangul_Kiyeog = 0x0ea1, + XK_Hangul_SsangKiyeog = 0x0ea2, + XK_Hangul_KiyeogSios = 0x0ea3, + XK_Hangul_Nieun = 0x0ea4, + XK_Hangul_NieunJieuj = 0x0ea5, + XK_Hangul_NieunHieuh = 0x0ea6, + XK_Hangul_Dikeud = 0x0ea7, + XK_Hangul_SsangDikeud = 0x0ea8, + XK_Hangul_Rieul = 0x0ea9, + XK_Hangul_RieulKiyeog = 0x0eaa, + XK_Hangul_RieulMieum = 0x0eab, + XK_Hangul_RieulPieub = 0x0eac, + XK_Hangul_RieulSios = 0x0ead, + XK_Hangul_RieulTieut = 0x0eae, + XK_Hangul_RieulPhieuf = 0x0eaf, + XK_Hangul_RieulHieuh = 0x0eb0, + XK_Hangul_Mieum = 0x0eb1, + XK_Hangul_Pieub = 0x0eb2, + XK_Hangul_SsangPieub = 0x0eb3, + XK_Hangul_PieubSios = 0x0eb4, + XK_Hangul_Sios = 0x0eb5, + XK_Hangul_SsangSios = 0x0eb6, + XK_Hangul_Ieung = 0x0eb7, + XK_Hangul_Jieuj = 0x0eb8, + XK_Hangul_SsangJieuj = 0x0eb9, + XK_Hangul_Cieuc = 0x0eba, + XK_Hangul_Khieuq = 0x0ebb, + XK_Hangul_Tieut = 0x0ebc, + XK_Hangul_Phieuf = 0x0ebd, + XK_Hangul_Hieuh = 0x0ebe, + XK_Hangul_A = 0x0ebf, + XK_Hangul_AE = 0x0ec0, + XK_Hangul_YA = 0x0ec1, + XK_Hangul_YAE = 0x0ec2, + XK_Hangul_EO = 0x0ec3, + XK_Hangul_E = 0x0ec4, + XK_Hangul_YEO = 0x0ec5, + XK_Hangul_YE = 0x0ec6, + XK_Hangul_O = 0x0ec7, + XK_Hangul_WA = 0x0ec8, + XK_Hangul_WAE = 0x0ec9, + XK_Hangul_OE = 0x0eca, + XK_Hangul_YO = 0x0ecb, + XK_Hangul_U = 0x0ecc, + XK_Hangul_WEO = 0x0ecd, + XK_Hangul_WE = 0x0ece, + XK_Hangul_WI = 0x0ecf, + XK_Hangul_YU = 0x0ed0, + XK_Hangul_EU = 0x0ed1, + XK_Hangul_YI = 0x0ed2, + XK_Hangul_I = 0x0ed3, + XK_Hangul_J_Kiyeog = 0x0ed4, + XK_Hangul_J_SsangKiyeog = 0x0ed5, + XK_Hangul_J_KiyeogSios = 0x0ed6, + XK_Hangul_J_Nieun = 0x0ed7, + XK_Hangul_J_NieunJieuj = 0x0ed8, + XK_Hangul_J_NieunHieuh = 0x0ed9, + XK_Hangul_J_Dikeud = 0x0eda, + XK_Hangul_J_Rieul = 0x0edb, + XK_Hangul_J_RieulKiyeog = 0x0edc, + XK_Hangul_J_RieulMieum = 0x0edd, + XK_Hangul_J_RieulPieub = 0x0ede, + XK_Hangul_J_RieulSios = 0x0edf, + XK_Hangul_J_RieulTieut = 0x0ee0, + XK_Hangul_J_RieulPhieuf = 0x0ee1, + XK_Hangul_J_RieulHieuh = 0x0ee2, + XK_Hangul_J_Mieum = 0x0ee3, + XK_Hangul_J_Pieub = 0x0ee4, + XK_Hangul_J_PieubSios = 0x0ee5, + XK_Hangul_J_Sios = 0x0ee6, + XK_Hangul_J_SsangSios = 0x0ee7, + XK_Hangul_J_Ieung = 0x0ee8, + XK_Hangul_J_Jieuj = 0x0ee9, + XK_Hangul_J_Cieuc = 0x0eea, + XK_Hangul_J_Khieuq = 0x0eeb, + XK_Hangul_J_Tieut = 0x0eec, + XK_Hangul_J_Phieuf = 0x0eed, + XK_Hangul_J_Hieuh = 0x0eee, + XK_Hangul_RieulYeorinHieuh = 0x0eef, + XK_Hangul_SunkyeongeumMieum = 0x0ef0, + XK_Hangul_SunkyeongeumPieub = 0x0ef1, + XK_Hangul_PanSios = 0x0ef2, + XK_Hangul_KkogjiDalrinIeung = 0x0ef3, + XK_Hangul_SunkyeongeumPhieuf = 0x0ef4, + XK_Hangul_YeorinHieuh = 0x0ef5, + XK_Hangul_AraeA = 0x0ef6, + XK_Hangul_AraeAE = 0x0ef7, + XK_Hangul_J_PanSios = 0x0ef8, + XK_Hangul_J_KkogjiDalrinIeung = 0x0ef9, + XK_Hangul_J_YeorinHieuh = 0x0efa, + XK_Korean_Won = 0x0eff, /*(U+20A9 WON SIGN)*/ + XK_Armenian_ligature_ew = 0x1000587, /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */ + XK_Armenian_full_stop = 0x1000589, /* U+0589 ARMENIAN FULL STOP */ + XK_Armenian_verjaket = 0x1000589, /* U+0589 ARMENIAN FULL STOP */ + XK_Armenian_separation_mark = 0x100055d, /* U+055D ARMENIAN COMMA */ + XK_Armenian_but = 0x100055d, /* U+055D ARMENIAN COMMA */ + XK_Armenian_hyphen = 0x100058a, /* U+058A ARMENIAN HYPHEN */ + XK_Armenian_yentamna = 0x100058a, /* U+058A ARMENIAN HYPHEN */ + XK_Armenian_exclam = 0x100055c, /* U+055C ARMENIAN EXCLAMATION MARK */ + XK_Armenian_amanak = 0x100055c, /* U+055C ARMENIAN EXCLAMATION MARK */ + XK_Armenian_accent = 0x100055b, /* U+055B ARMENIAN EMPHASIS MARK */ + XK_Armenian_shesht = 0x100055b, /* U+055B ARMENIAN EMPHASIS MARK */ + XK_Armenian_question = 0x100055e, /* U+055E ARMENIAN QUESTION MARK */ + XK_Armenian_paruyk = 0x100055e, /* U+055E ARMENIAN QUESTION MARK */ + XK_Armenian_AYB = 0x1000531, /* U+0531 ARMENIAN CAPITAL LETTER AYB */ + XK_Armenian_ayb = 0x1000561, /* U+0561 ARMENIAN SMALL LETTER AYB */ + XK_Armenian_BEN = 0x1000532, /* U+0532 ARMENIAN CAPITAL LETTER BEN */ + XK_Armenian_ben = 0x1000562, /* U+0562 ARMENIAN SMALL LETTER BEN */ + XK_Armenian_GIM = 0x1000533, /* U+0533 ARMENIAN CAPITAL LETTER GIM */ + XK_Armenian_gim = 0x1000563, /* U+0563 ARMENIAN SMALL LETTER GIM */ + XK_Armenian_DA = 0x1000534, /* U+0534 ARMENIAN CAPITAL LETTER DA */ + XK_Armenian_da = 0x1000564, /* U+0564 ARMENIAN SMALL LETTER DA */ + XK_Armenian_YECH = 0x1000535, /* U+0535 ARMENIAN CAPITAL LETTER ECH */ + XK_Armenian_yech = 0x1000565, /* U+0565 ARMENIAN SMALL LETTER ECH */ + XK_Armenian_ZA = 0x1000536, /* U+0536 ARMENIAN CAPITAL LETTER ZA */ + XK_Armenian_za = 0x1000566, /* U+0566 ARMENIAN SMALL LETTER ZA */ + XK_Armenian_E = 0x1000537, /* U+0537 ARMENIAN CAPITAL LETTER EH */ + XK_Armenian_e = 0x1000567, /* U+0567 ARMENIAN SMALL LETTER EH */ + XK_Armenian_AT = 0x1000538, /* U+0538 ARMENIAN CAPITAL LETTER ET */ + XK_Armenian_at = 0x1000568, /* U+0568 ARMENIAN SMALL LETTER ET */ + XK_Armenian_TO = 0x1000539, /* U+0539 ARMENIAN CAPITAL LETTER TO */ + XK_Armenian_to = 0x1000569, /* U+0569 ARMENIAN SMALL LETTER TO */ + XK_Armenian_ZHE = 0x100053a, /* U+053A ARMENIAN CAPITAL LETTER ZHE */ + XK_Armenian_zhe = 0x100056a, /* U+056A ARMENIAN SMALL LETTER ZHE */ + XK_Armenian_INI = 0x100053b, /* U+053B ARMENIAN CAPITAL LETTER INI */ + XK_Armenian_ini = 0x100056b, /* U+056B ARMENIAN SMALL LETTER INI */ + XK_Armenian_LYUN = 0x100053c, /* U+053C ARMENIAN CAPITAL LETTER LIWN */ + XK_Armenian_lyun = 0x100056c, /* U+056C ARMENIAN SMALL LETTER LIWN */ + XK_Armenian_KHE = 0x100053d, /* U+053D ARMENIAN CAPITAL LETTER XEH */ + XK_Armenian_khe = 0x100056d, /* U+056D ARMENIAN SMALL LETTER XEH */ + XK_Armenian_TSA = 0x100053e, /* U+053E ARMENIAN CAPITAL LETTER CA */ + XK_Armenian_tsa = 0x100056e, /* U+056E ARMENIAN SMALL LETTER CA */ + XK_Armenian_KEN = 0x100053f, /* U+053F ARMENIAN CAPITAL LETTER KEN */ + XK_Armenian_ken = 0x100056f, /* U+056F ARMENIAN SMALL LETTER KEN */ + XK_Armenian_HO = 0x1000540, /* U+0540 ARMENIAN CAPITAL LETTER HO */ + XK_Armenian_ho = 0x1000570, /* U+0570 ARMENIAN SMALL LETTER HO */ + XK_Armenian_DZA = 0x1000541, /* U+0541 ARMENIAN CAPITAL LETTER JA */ + XK_Armenian_dza = 0x1000571, /* U+0571 ARMENIAN SMALL LETTER JA */ + XK_Armenian_GHAT = 0x1000542, /* U+0542 ARMENIAN CAPITAL LETTER GHAD */ + XK_Armenian_ghat = 0x1000572, /* U+0572 ARMENIAN SMALL LETTER GHAD */ + XK_Armenian_TCHE = 0x1000543, /* U+0543 ARMENIAN CAPITAL LETTER CHEH */ + XK_Armenian_tche = 0x1000573, /* U+0573 ARMENIAN SMALL LETTER CHEH */ + XK_Armenian_MEN = 0x1000544, /* U+0544 ARMENIAN CAPITAL LETTER MEN */ + XK_Armenian_men = 0x1000574, /* U+0574 ARMENIAN SMALL LETTER MEN */ + XK_Armenian_HI = 0x1000545, /* U+0545 ARMENIAN CAPITAL LETTER YI */ + XK_Armenian_hi = 0x1000575, /* U+0575 ARMENIAN SMALL LETTER YI */ + XK_Armenian_NU = 0x1000546, /* U+0546 ARMENIAN CAPITAL LETTER NOW */ + XK_Armenian_nu = 0x1000576, /* U+0576 ARMENIAN SMALL LETTER NOW */ + XK_Armenian_SHA = 0x1000547, /* U+0547 ARMENIAN CAPITAL LETTER SHA */ + XK_Armenian_sha = 0x1000577, /* U+0577 ARMENIAN SMALL LETTER SHA */ + XK_Armenian_VO = 0x1000548, /* U+0548 ARMENIAN CAPITAL LETTER VO */ + XK_Armenian_vo = 0x1000578, /* U+0578 ARMENIAN SMALL LETTER VO */ + XK_Armenian_CHA = 0x1000549, /* U+0549 ARMENIAN CAPITAL LETTER CHA */ + XK_Armenian_cha = 0x1000579, /* U+0579 ARMENIAN SMALL LETTER CHA */ + XK_Armenian_PE = 0x100054a, /* U+054A ARMENIAN CAPITAL LETTER PEH */ + XK_Armenian_pe = 0x100057a, /* U+057A ARMENIAN SMALL LETTER PEH */ + XK_Armenian_JE = 0x100054b, /* U+054B ARMENIAN CAPITAL LETTER JHEH */ + XK_Armenian_je = 0x100057b, /* U+057B ARMENIAN SMALL LETTER JHEH */ + XK_Armenian_RA = 0x100054c, /* U+054C ARMENIAN CAPITAL LETTER RA */ + XK_Armenian_ra = 0x100057c, /* U+057C ARMENIAN SMALL LETTER RA */ + XK_Armenian_SE = 0x100054d, /* U+054D ARMENIAN CAPITAL LETTER SEH */ + XK_Armenian_se = 0x100057d, /* U+057D ARMENIAN SMALL LETTER SEH */ + XK_Armenian_VEV = 0x100054e, /* U+054E ARMENIAN CAPITAL LETTER VEW */ + XK_Armenian_vev = 0x100057e, /* U+057E ARMENIAN SMALL LETTER VEW */ + XK_Armenian_TYUN = 0x100054f, /* U+054F ARMENIAN CAPITAL LETTER TIWN */ + XK_Armenian_tyun = 0x100057f, /* U+057F ARMENIAN SMALL LETTER TIWN */ + XK_Armenian_RE = 0x1000550, /* U+0550 ARMENIAN CAPITAL LETTER REH */ + XK_Armenian_re = 0x1000580, /* U+0580 ARMENIAN SMALL LETTER REH */ + XK_Armenian_TSO = 0x1000551, /* U+0551 ARMENIAN CAPITAL LETTER CO */ + XK_Armenian_tso = 0x1000581, /* U+0581 ARMENIAN SMALL LETTER CO */ + XK_Armenian_VYUN = 0x1000552, /* U+0552 ARMENIAN CAPITAL LETTER YIWN */ + XK_Armenian_vyun = 0x1000582, /* U+0582 ARMENIAN SMALL LETTER YIWN */ + XK_Armenian_PYUR = 0x1000553, /* U+0553 ARMENIAN CAPITAL LETTER PIWR */ + XK_Armenian_pyur = 0x1000583, /* U+0583 ARMENIAN SMALL LETTER PIWR */ + XK_Armenian_KE = 0x1000554, /* U+0554 ARMENIAN CAPITAL LETTER KEH */ + XK_Armenian_ke = 0x1000584, /* U+0584 ARMENIAN SMALL LETTER KEH */ + XK_Armenian_O = 0x1000555, /* U+0555 ARMENIAN CAPITAL LETTER OH */ + XK_Armenian_o = 0x1000585, /* U+0585 ARMENIAN SMALL LETTER OH */ + XK_Armenian_FE = 0x1000556, /* U+0556 ARMENIAN CAPITAL LETTER FEH */ + XK_Armenian_fe = 0x1000586, /* U+0586 ARMENIAN SMALL LETTER FEH */ + XK_Armenian_apostrophe = 0x100055a, /* U+055A ARMENIAN APOSTROPHE */ + XK_Georgian_an = 0x10010d0, /* U+10D0 GEORGIAN LETTER AN */ + XK_Georgian_ban = 0x10010d1, /* U+10D1 GEORGIAN LETTER BAN */ + XK_Georgian_gan = 0x10010d2, /* U+10D2 GEORGIAN LETTER GAN */ + XK_Georgian_don = 0x10010d3, /* U+10D3 GEORGIAN LETTER DON */ + XK_Georgian_en = 0x10010d4, /* U+10D4 GEORGIAN LETTER EN */ + XK_Georgian_vin = 0x10010d5, /* U+10D5 GEORGIAN LETTER VIN */ + XK_Georgian_zen = 0x10010d6, /* U+10D6 GEORGIAN LETTER ZEN */ + XK_Georgian_tan = 0x10010d7, /* U+10D7 GEORGIAN LETTER TAN */ + XK_Georgian_in = 0x10010d8, /* U+10D8 GEORGIAN LETTER IN */ + XK_Georgian_kan = 0x10010d9, /* U+10D9 GEORGIAN LETTER KAN */ + XK_Georgian_las = 0x10010da, /* U+10DA GEORGIAN LETTER LAS */ + XK_Georgian_man = 0x10010db, /* U+10DB GEORGIAN LETTER MAN */ + XK_Georgian_nar = 0x10010dc, /* U+10DC GEORGIAN LETTER NAR */ + XK_Georgian_on = 0x10010dd, /* U+10DD GEORGIAN LETTER ON */ + XK_Georgian_par = 0x10010de, /* U+10DE GEORGIAN LETTER PAR */ + XK_Georgian_zhar = 0x10010df, /* U+10DF GEORGIAN LETTER ZHAR */ + XK_Georgian_rae = 0x10010e0, /* U+10E0 GEORGIAN LETTER RAE */ + XK_Georgian_san = 0x10010e1, /* U+10E1 GEORGIAN LETTER SAN */ + XK_Georgian_tar = 0x10010e2, /* U+10E2 GEORGIAN LETTER TAR */ + XK_Georgian_un = 0x10010e3, /* U+10E3 GEORGIAN LETTER UN */ + XK_Georgian_phar = 0x10010e4, /* U+10E4 GEORGIAN LETTER PHAR */ + XK_Georgian_khar = 0x10010e5, /* U+10E5 GEORGIAN LETTER KHAR */ + XK_Georgian_ghan = 0x10010e6, /* U+10E6 GEORGIAN LETTER GHAN */ + XK_Georgian_qar = 0x10010e7, /* U+10E7 GEORGIAN LETTER QAR */ + XK_Georgian_shin = 0x10010e8, /* U+10E8 GEORGIAN LETTER SHIN */ + XK_Georgian_chin = 0x10010e9, /* U+10E9 GEORGIAN LETTER CHIN */ + XK_Georgian_can = 0x10010ea, /* U+10EA GEORGIAN LETTER CAN */ + XK_Georgian_jil = 0x10010eb, /* U+10EB GEORGIAN LETTER JIL */ + XK_Georgian_cil = 0x10010ec, /* U+10EC GEORGIAN LETTER CIL */ + XK_Georgian_char = 0x10010ed, /* U+10ED GEORGIAN LETTER CHAR */ + XK_Georgian_xan = 0x10010ee, /* U+10EE GEORGIAN LETTER XAN */ + XK_Georgian_jhan = 0x10010ef, /* U+10EF GEORGIAN LETTER JHAN */ + XK_Georgian_hae = 0x10010f0, /* U+10F0 GEORGIAN LETTER HAE */ + XK_Georgian_he = 0x10010f1, /* U+10F1 GEORGIAN LETTER HE */ + XK_Georgian_hie = 0x10010f2, /* U+10F2 GEORGIAN LETTER HIE */ + XK_Georgian_we = 0x10010f3, /* U+10F3 GEORGIAN LETTER WE */ + XK_Georgian_har = 0x10010f4, /* U+10F4 GEORGIAN LETTER HAR */ + XK_Georgian_hoe = 0x10010f5, /* U+10F5 GEORGIAN LETTER HOE */ + XK_Georgian_fi = 0x10010f6, /* U+10F6 GEORGIAN LETTER FI */ + XK_Xabovedot = 0x1001e8a, /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */ + XK_Ibreve = 0x100012c, /* U+012C LATIN CAPITAL LETTER I WITH BREVE */ + XK_Zstroke = 0x10001b5, /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */ + XK_Gcaron = 0x10001e6, /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */ + XK_Ocaron = 0x10001d1, /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */ + XK_Obarred = 0x100019f, /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */ + XK_xabovedot = 0x1001e8b, /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */ + XK_ibreve = 0x100012d, /* U+012D LATIN SMALL LETTER I WITH BREVE */ + XK_zstroke = 0x10001b6, /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */ + XK_gcaron = 0x10001e7, /* U+01E7 LATIN SMALL LETTER G WITH CARON */ + XK_ocaron = 0x10001d2, /* U+01D2 LATIN SMALL LETTER O WITH CARON */ + XK_obarred = 0x1000275, /* U+0275 LATIN SMALL LETTER BARRED O */ + XK_SCHWA = 0x100018f, /* U+018F LATIN CAPITAL LETTER SCHWA */ + XK_schwa = 0x1000259, /* U+0259 LATIN SMALL LETTER SCHWA */ + XK_Lbelowdot = 0x1001e36, /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */ + XK_lbelowdot = 0x1001e37, /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */ + XK_Abelowdot = 0x1001ea0, /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */ + XK_abelowdot = 0x1001ea1, /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */ + XK_Ahook = 0x1001ea2, /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */ + XK_ahook = 0x1001ea3, /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */ + XK_Acircumflexacute = 0x1001ea4, /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */ + XK_acircumflexacute = 0x1001ea5, /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */ + XK_Acircumflexgrave = 0x1001ea6, /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */ + XK_acircumflexgrave = 0x1001ea7, /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */ + XK_Acircumflexhook = 0x1001ea8, /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_acircumflexhook = 0x1001ea9, /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_Acircumflextilde = 0x1001eaa, /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */ + XK_acircumflextilde = 0x1001eab, /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */ + XK_Acircumflexbelowdot = 0x1001eac, /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ + XK_acircumflexbelowdot = 0x1001ead, /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ + XK_Abreveacute = 0x1001eae, /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */ + XK_abreveacute = 0x1001eaf, /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */ + XK_Abrevegrave = 0x1001eb0, /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */ + XK_abrevegrave = 0x1001eb1, /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */ + XK_Abrevehook = 0x1001eb2, /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */ + XK_abrevehook = 0x1001eb3, /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */ + XK_Abrevetilde = 0x1001eb4, /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */ + XK_abrevetilde = 0x1001eb5, /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */ + XK_Abrevebelowdot = 0x1001eb6, /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */ + XK_abrevebelowdot = 0x1001eb7, /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */ + XK_Ebelowdot = 0x1001eb8, /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */ + XK_ebelowdot = 0x1001eb9, /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */ + XK_Ehook = 0x1001eba, /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */ + XK_ehook = 0x1001ebb, /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */ + XK_Etilde = 0x1001ebc, /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */ + XK_etilde = 0x1001ebd, /* U+1EBD LATIN SMALL LETTER E WITH TILDE */ + XK_Ecircumflexacute = 0x1001ebe, /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */ + XK_ecircumflexacute = 0x1001ebf, /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */ + XK_Ecircumflexgrave = 0x1001ec0, /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */ + XK_ecircumflexgrave = 0x1001ec1, /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */ + XK_Ecircumflexhook = 0x1001ec2, /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_ecircumflexhook = 0x1001ec3, /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_Ecircumflextilde = 0x1001ec4, /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */ + XK_ecircumflextilde = 0x1001ec5, /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */ + XK_Ecircumflexbelowdot = 0x1001ec6, /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ + XK_ecircumflexbelowdot = 0x1001ec7, /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ + XK_Ihook = 0x1001ec8, /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */ + XK_ihook = 0x1001ec9, /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */ + XK_Ibelowdot = 0x1001eca, /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */ + XK_ibelowdot = 0x1001ecb, /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */ + XK_Obelowdot = 0x1001ecc, /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */ + XK_obelowdot = 0x1001ecd, /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */ + XK_Ohook = 0x1001ece, /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */ + XK_ohook = 0x1001ecf, /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */ + XK_Ocircumflexacute = 0x1001ed0, /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */ + XK_ocircumflexacute = 0x1001ed1, /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */ + XK_Ocircumflexgrave = 0x1001ed2, /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */ + XK_ocircumflexgrave = 0x1001ed3, /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */ + XK_Ocircumflexhook = 0x1001ed4, /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_ocircumflexhook = 0x1001ed5, /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ + XK_Ocircumflextilde = 0x1001ed6, /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */ + XK_ocircumflextilde = 0x1001ed7, /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */ + XK_Ocircumflexbelowdot = 0x1001ed8, /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ + XK_ocircumflexbelowdot = 0x1001ed9, /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ + XK_Ohornacute = 0x1001eda, /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */ + XK_ohornacute = 0x1001edb, /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */ + XK_Ohorngrave = 0x1001edc, /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */ + XK_ohorngrave = 0x1001edd, /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */ + XK_Ohornhook = 0x1001ede, /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */ + XK_ohornhook = 0x1001edf, /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */ + XK_Ohorntilde = 0x1001ee0, /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */ + XK_ohorntilde = 0x1001ee1, /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */ + XK_Ohornbelowdot = 0x1001ee2, /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */ + XK_ohornbelowdot = 0x1001ee3, /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */ + XK_Ubelowdot = 0x1001ee4, /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */ + XK_ubelowdot = 0x1001ee5, /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */ + XK_Uhook = 0x1001ee6, /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */ + XK_uhook = 0x1001ee7, /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */ + XK_Uhornacute = 0x1001ee8, /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */ + XK_uhornacute = 0x1001ee9, /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */ + XK_Uhorngrave = 0x1001eea, /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */ + XK_uhorngrave = 0x1001eeb, /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */ + XK_Uhornhook = 0x1001eec, /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */ + XK_uhornhook = 0x1001eed, /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */ + XK_Uhorntilde = 0x1001eee, /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */ + XK_uhorntilde = 0x1001eef, /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */ + XK_Uhornbelowdot = 0x1001ef0, /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */ + XK_uhornbelowdot = 0x1001ef1, /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */ + XK_Ybelowdot = 0x1001ef4, /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */ + XK_ybelowdot = 0x1001ef5, /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */ + XK_Yhook = 0x1001ef6, /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */ + XK_yhook = 0x1001ef7, /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */ + XK_Ytilde = 0x1001ef8, /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */ + XK_ytilde = 0x1001ef9, /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */ + XK_Ohorn = 0x10001a0, /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */ + XK_ohorn = 0x10001a1, /* U+01A1 LATIN SMALL LETTER O WITH HORN */ + XK_Uhorn = 0x10001af, /* U+01AF LATIN CAPITAL LETTER U WITH HORN */ + XK_uhorn = 0x10001b0, /* U+01B0 LATIN SMALL LETTER U WITH HORN */ + XK_EcuSign = 0x10020a0, /* U+20A0 EURO-CURRENCY SIGN */ + XK_ColonSign = 0x10020a1, /* U+20A1 COLON SIGN */ + XK_CruzeiroSign = 0x10020a2, /* U+20A2 CRUZEIRO SIGN */ + XK_FFrancSign = 0x10020a3, /* U+20A3 FRENCH FRANC SIGN */ + XK_LiraSign = 0x10020a4, /* U+20A4 LIRA SIGN */ + XK_MillSign = 0x10020a5, /* U+20A5 MILL SIGN */ + XK_NairaSign = 0x10020a6, /* U+20A6 NAIRA SIGN */ + XK_PesetaSign = 0x10020a7, /* U+20A7 PESETA SIGN */ + XK_RupeeSign = 0x10020a8, /* U+20A8 RUPEE SIGN */ + XK_WonSign = 0x10020a9, /* U+20A9 WON SIGN */ + XK_NewSheqelSign = 0x10020aa, /* U+20AA NEW SHEQEL SIGN */ + XK_DongSign = 0x10020ab, /* U+20AB DONG SIGN */ + XK_EuroSign = 0x20ac, /* U+20AC EURO SIGN */ } diff --git a/vendor/x11/xlib/xlib_types.odin b/vendor/x11/xlib/xlib_types.odin index b5de824e9..5344d9aae 100644 --- a/vendor/x11/xlib/xlib_types.odin +++ b/vendor/x11/xlib/xlib_types.odin @@ -47,9 +47,9 @@ XExtCodes :: struct { } XPixmapFormatValues :: struct { - depth: i32, - bits_per_pixel: i32, - scanline_pad: i32, + depth: i32, + bits_per_pixel: i32, + scanline_pad: i32, } XGCValues :: struct { @@ -130,47 +130,47 @@ ScreenFormat :: struct { } XSetWindowAttributes :: struct { - background_pixmap: Pixmap, - background_pixel: uint, - border_pixmap: Pixmap, - border_pixel: uint, - bit_gravity: Gravity, - win_gravity: Gravity, - backing_store: BackingStore, - backing_planes: uint, - backing_pixel: uint, - save_under: b32, - event_mask: EventMask, - do_not_propagate_mask: EventMask, - override_redirect: b32, - colormap: Colormap, - cursor: Cursor, + background_pixmap: Pixmap, + background_pixel: uint, + border_pixmap: Pixmap, + border_pixel: uint, + bit_gravity: Gravity, + win_gravity: Gravity, + backing_store: BackingStore, + backing_planes: uint, + backing_pixel: uint, + save_under: b32, + event_mask: EventMask, + do_not_propagate_mask: EventMask, + override_redirect: b32, + colormap: Colormap, + cursor: Cursor, } XWindowAttributes :: struct { - x: i32, - y: i32, - width: i32, - height: i32, - border_width: i32, - depth: i32, - visual: ^Visual, - root: Window, - class: WindowClass, - bit_gravity: Gravity, - win_gravity: Gravity, - backing_store: BackingStore, - backing_planes: uint, - backing_pixel: uint, - save_under: b32, - colormap: Colormap, - map_installed: b32, - map_state: WindowMapState, - all_event_masks: EventMask, - your_event_mask: EventMask, - do_not_propagate_mask: EventMask, - override_redirect: b32, - screen: ^Screen, + x: i32, + y: i32, + width: i32, + height: i32, + border_width: i32, + depth: i32, + visual: ^Visual, + root: Window, + class: WindowClass, + bit_gravity: Gravity, + win_gravity: Gravity, + backing_store: BackingStore, + backing_planes: uint, + backing_pixel: uint, + save_under: b32, + colormap: Colormap, + map_installed: b32, + map_state: WindowMapState, + all_event_masks: EventMask, + your_event_mask: EventMask, + do_not_propagate_mask: EventMask, + override_redirect: b32, + screen: ^Screen, } XHostAddress :: struct { @@ -187,50 +187,50 @@ XServerInterpretedAddress :: struct { } XImage :: struct { - width: i32, - height: i32, - xoffset: i32, - format: ImageFormat, - data: rawptr, - byte_order: i32, - bitmap_unit: i32, - bitmap_bit_order: ByteOrder, - bitmap_pad: i32, - depth: i32, - bytes_per_line: i32, - bits_per_pixel: i32, - red_mask: uint, - green_mask: uint, - blue_mask: uint, - obdata: rawptr, - f: struct { - create_image: proc "c" ( - display: ^Display, - visual: ^Visual, - depth: u32, - format: i32, - offset: i32, - data: rawptr, - width: u32, - height: u32, - pad: i32, - stride: i32) -> ^XImage, - destroy_image: proc "c" (image: ^XImage) -> i32, - get_pixel: proc "c" (image: ^XImage) -> uint, - put_pixel: proc "c" (image: ^XImage, x: i32, y: i32, pixel: uint) -> i32, - sub_image: proc "c" (image: ^XImage, x: i32, y: i32, w: u32, h: u32) -> ^XImage, - add_pixel: proc "c" (image: ^XImage, val: int) -> i32, + width: i32, + height: i32, + xoffset: i32, + format: ImageFormat, + data: rawptr, + byte_order: i32, + bitmap_unit: i32, + bitmap_bit_order: ByteOrder, + bitmap_pad: i32, + depth: i32, + bytes_per_line: i32, + bits_per_pixel: i32, + red_mask: uint, + green_mask: uint, + blue_mask: uint, + obdata: rawptr, + f: struct { + create_image: proc "c" ( + display: ^Display, + visual: ^Visual, + depth: u32, + format: i32, + offset: i32, + data: rawptr, + width: u32, + height: u32, + pad: i32, + stride: i32) -> ^XImage, + destroy_image: proc "c" (image: ^XImage) -> i32, + get_pixel: proc "c" (image: ^XImage) -> uint, + put_pixel: proc "c" (image: ^XImage, x: i32, y: i32, pixel: uint) -> i32, + sub_image: proc "c" (image: ^XImage, x: i32, y: i32, w: u32, h: u32) -> ^XImage, + add_pixel: proc "c" (image: ^XImage, val: int) -> i32, }, } XWindowChanges :: struct { - x: i32, - y: i32, - width: i32, - height: i32, - border_width: i32, - sibling: Window, - stack_mode: WindowStacking, + x: i32, + y: i32, + width: i32, + height: i32, + border_width: i32, + sibling: Window, + stack_mode: WindowStacking, } XColor :: struct { @@ -243,42 +243,42 @@ XColor :: struct { } XSegment :: struct { - x1: i16, - y1: i16, - x2: i16, - y2: i16, + x1: i16, + y1: i16, + x2: i16, + y2: i16, } XPoint :: struct { - x: i16, - y: i16, + x: i16, + y: i16, } XRectangle :: struct { - x: i16, - y: i16, - width: u16, - height: u16, + x: i16, + y: i16, + width: u16, + height: u16, } XArc :: struct { - x: i16, - y: i16, - width: u16, - height: u16, - angle1: i16, - angle2: i16, + x: i16, + y: i16, + width: u16, + height: u16, + angle1: i16, + angle2: i16, } XKeyboardControl :: struct { - key_click_percent: i32, - bell_percent: i32, - bell_pitch: i32, - bell_duration: i32, - led: i32, - led_mode: KeyboardLedMode, - key: i32, - auto_repeat_mode: KeyboardAutoRepeatMode, + key_click_percent: i32, + bell_percent: i32, + bell_pitch: i32, + bell_duration: i32, + led: i32, + led_mode: KeyboardLedMode, + key: i32, + auto_repeat_mode: KeyboardAutoRepeatMode, } XKeyboardState :: struct { @@ -700,23 +700,23 @@ XAnyEvent :: struct { } XGenericEvent :: struct { - type: EventType, - serial: uint, - send_event: b32, - display: ^Display, - extension: i32, - evtype: i32, + type: EventType, + serial: uint, + send_event: b32, + display: ^Display, + extension: i32, + evtype: i32, } XGenericEventCookie :: struct { - type: EventType, - serial: uint, - send_event: b32, - display: ^Display, - extension: i32, - evtype: i32, - cookie: u32, - data: rawptr, + type: EventType, + serial: uint, + send_event: b32, + display: ^Display, + extension: i32, + evtype: i32, + cookie: u32, + data: rawptr, } XEvent :: struct #raw_union { @@ -758,55 +758,55 @@ XEvent :: struct #raw_union { } XCharStruct :: struct { - lbearing: i16, - rbearing: i16, - width: i16, - ascent: i16, - descent: i16, - attributes: u16, + lbearing: i16, + rbearing: i16, + width: i16, + ascent: i16, + descent: i16, + attributes: u16, } XFontProp :: struct { - name: Atom, - card32: uint, + name: Atom, + card32: uint, } XFontStruct :: struct { - ext_data: ^XExtData, - fid: Font, - direction: u32, - min_char_or_byte2: u32, - max_char_or_byte2: u32, - min_byte1: u32, - max_byte1: u32, - all_chars_exist: i32, - default_char: u32, - n_properties: i32, - properties: ^XFontProp, - min_bounds: XCharStruct, - max_bounds: XCharStruct, - per_char: ^XCharStruct, - ascent: i32, - descent: i32, + ext_data: ^XExtData, + fid: Font, + direction: u32, + min_char_or_byte2: u32, + max_char_or_byte2: u32, + min_byte1: u32, + max_byte1: u32, + all_chars_exist: i32, + default_char: u32, + n_properties: i32, + properties: ^XFontProp, + min_bounds: XCharStruct, + max_bounds: XCharStruct, + per_char: ^XCharStruct, + ascent: i32, + descent: i32, } XTextItem :: struct { - chars: [^]u8, - nchars: i32, - delta: i32, - font: Font, + chars: [^]u8, + nchars: i32, + delta: i32, + font: Font, } XChar2b :: struct { - byte1: u8, - byte2: u8, + byte1: u8, + byte2: u8, } XTextItem16 :: struct { - chars: ^XChar2b, - nchars: i32, - delta: i32, - font: Font, + chars: ^XChar2b, + nchars: i32, + delta: i32, + font: Font, } XEDataObject :: struct #raw_union { @@ -819,8 +819,8 @@ XEDataObject :: struct #raw_union { } XFontSetExtents :: struct { - max_ink_extent: XRectangle, - max_logical_extent: XRectangle, + max_ink_extent: XRectangle, + max_logical_extent: XRectangle, } XOM :: distinct rawptr @@ -828,41 +828,41 @@ XOC :: distinct rawptr XFontSet :: XOC XmbTextItem :: struct { - chars: [^]u8, - nchars: i32, - delta: i32, - font_set: XFontSet, + chars: [^]u8, + nchars: i32, + delta: i32, + font_set: XFontSet, } XwcTextItem :: struct { - chars: [^]rune, - nchars: i32, - delta: i32, - font_set: XFontSet, + chars: [^]rune, + nchars: i32, + delta: i32, + font_set: XFontSet, } XOMCharSetList :: struct { - charset_count: i32, - charset_list: [^]cstring, + charset_count: i32, + charset_list: [^]cstring, } XOrientation :: enum i32 { - XOMOrientation_LTR_TTB = 0, - XOMOrientation_RTL_TTB = 1, - XOMOrientation_TTB_LTR = 2, - XOMOrientation_TTB_RTL = 3, - XOMOrientation_Context = 4, + XOMOrientation_LTR_TTB = 0, + XOMOrientation_RTL_TTB = 1, + XOMOrientation_TTB_LTR = 2, + XOMOrientation_TTB_RTL = 3, + XOMOrientation_Context = 4, } XOMOrientation :: struct { - num_orientation: i32, - orientation: [^]XOrientation, + num_orientation: i32, + orientation: [^]XOrientation, } XOMFontInfo :: struct { - num_font: i32, - font_struct_list: [^]^XFontStruct, - font_name_list: [^]cstring, + num_font: i32, + font_struct_list: [^]^XFontStruct, + font_name_list: [^]cstring, } XIM :: distinct rawptr @@ -875,38 +875,38 @@ XIDProc :: #type proc "c" (xim: XIM, client_data: rawptr, call_data: rawptr) XIMStyle :: uint XIMStyles :: struct { - count_styles: u16, - supported_styles: [^]XIMStyle, + count_styles: u16, + supported_styles: [^]XIMStyle, } XVaNestedList :: distinct rawptr XIMCallback :: struct { - client_data: rawptr, - callback: XIMProc, + client_data: rawptr, + callback: XIMProc, } XICCallback :: struct { - client_data: rawptr, - callback: XICProc, + client_data: rawptr, + callback: XICProc, } XIMFeedback :: uint XIMText :: struct { - length: u16, - feedback: ^XIMFeedback, - encoding_is_wchar: b32, - string: struct #raw_union { + length: u16, + feedback: ^XIMFeedback, + encoding_is_wchar: b32, + string: struct #raw_union { multi_byte: [^]u8, wide_char: [^]rune, - }, + }, } XIMPreeditState :: uint XIMPreeditStateNotifyCallbackStruct :: struct { - state: XIMPreeditState, + state: XIMPreeditState, } XIMResetState :: uint @@ -914,13 +914,13 @@ XIMResetState :: uint XIMStringConversionFeedback :: uint XIMStringConversionText :: struct { - length: u16, - feedback: ^XIMStringConversionFeedback, - encoding_is_wchar: b32, - string: struct #raw_union { + length: u16, + feedback: ^XIMStringConversionFeedback, + encoding_is_wchar: b32, + string: struct #raw_union { mbs: [^]u8, wcs: [^]rune, - }, + }, } XIMStringConversionPosition :: u16 @@ -928,76 +928,76 @@ XIMStringConversionType :: u16 XIMStringConversionOperation :: u16 XIMCaretDirection :: enum i32 { - XIMForwardChar = 0, - XIMBackwardChar = 1, - XIMForwardWord = 2, - XIMBackwardWord = 3, - XIMCaretUp = 4, - XIMCaretDown = 5, - XIMNextLine = 6, - XIMPreviousLine = 7, - XIMLineStart = 8, - XIMLineEnd = 9, - XIMAbsolutePosition = 10, - XIMDontChang = 11, + XIMForwardChar = 0, + XIMBackwardChar = 1, + XIMForwardWord = 2, + XIMBackwardWord = 3, + XIMCaretUp = 4, + XIMCaretDown = 5, + XIMNextLine = 6, + XIMPreviousLine = 7, + XIMLineStart = 8, + XIMLineEnd = 9, + XIMAbsolutePosition = 10, + XIMDontChang = 11, } XIMStringConversionCallbackStruct :: struct { - position: XIMStringConversionPosition, - direction: XIMCaretDirection, - operation: XIMStringConversionOperation, - factor: u16, - text: ^XIMStringConversionText, + position: XIMStringConversionPosition, + direction: XIMCaretDirection, + operation: XIMStringConversionOperation, + factor: u16, + text: ^XIMStringConversionText, } XIMPreeditDrawCallbackStruct :: struct { - caret: i32, - chg_first: i32, - chg_length: i32, - text: ^XIMText, + caret: i32, + chg_first: i32, + chg_length: i32, + text: ^XIMText, } XIMCaretStyle :: enum i32 { - XIMIsInvisible, - XIMIsPrimary, - XIMIsSecondary, + XIMIsInvisible, + XIMIsPrimary, + XIMIsSecondary, } XIMPreeditCaretCallbackStruct :: struct { - position: i32, - direction: XIMCaretDirection, - style: XIMCaretStyle, + position: i32, + direction: XIMCaretDirection, + style: XIMCaretStyle, } XIMStatusDataType :: enum { - XIMTextType, - XIMBitmapType, + XIMTextType, + XIMBitmapType, } XIMStatusDrawCallbackStruct :: struct { - type: XIMStatusDataType, - data: struct #raw_union { + type: XIMStatusDataType, + data: struct #raw_union { text: ^XIMText, bitmap: Pixmap, - }, + }, } XIMHotKeyTrigger :: struct { - keysym: KeySym, - modifier: i32, - modifier_mask: i32, + keysym: KeySym, + modifier: i32, + modifier_mask: i32, } XIMHotKeyTriggers :: struct { - num_hot_key: i32, - key: [^]XIMHotKeyTrigger, + num_hot_key: i32, + key: [^]XIMHotKeyTrigger, } XIMHotKeyState :: uint XIMValuesList :: struct { - count_values: u16, - supported_values: [^]cstring, + count_values: u16, + supported_values: [^]cstring, } XConnectionWatchProc :: #type proc "c" ( @@ -1775,62 +1775,62 @@ XcmsColorFormat :: uint XcmsFloat :: f64 XcmsRGB :: struct { - red: u16, - green: u16, - blue: u16, + red: u16, + green: u16, + blue: u16, } XcmsRGBi :: struct { - red: XcmsFloat, - green: XcmsFloat, - blue: XcmsFloat, + red: XcmsFloat, + green: XcmsFloat, + blue: XcmsFloat, } XcmsCIEXYZ :: struct { - X: XcmsFloat, - Y: XcmsFloat, - Z: XcmsFloat, + X: XcmsFloat, + Y: XcmsFloat, + Z: XcmsFloat, } XcmsCIEuvY :: struct { - u_prime: XcmsFloat, - v_prime: XcmsFloat, - Y: XcmsFloat, + u_prime: XcmsFloat, + v_prime: XcmsFloat, + Y: XcmsFloat, } XcmsCIExyY :: struct { - x: XcmsFloat, - y: XcmsFloat, - Y: XcmsFloat, + x: XcmsFloat, + y: XcmsFloat, + Y: XcmsFloat, } XcmsCIELab :: struct { - L_star: XcmsFloat, - a_star: XcmsFloat, - b_star: XcmsFloat, + L_star: XcmsFloat, + a_star: XcmsFloat, + b_star: XcmsFloat, } XcmsCIELuv :: struct { - L_star: XcmsFloat, - u_star: XcmsFloat, - v_star: XcmsFloat, + L_star: XcmsFloat, + u_star: XcmsFloat, + v_star: XcmsFloat, } XcmsTekHVC :: struct { - H: XcmsFloat, - V: XcmsFloat, - C: XcmsFloat, + H: XcmsFloat, + V: XcmsFloat, + C: XcmsFloat, } XcmsPad :: struct { - _: XcmsFloat, - _: XcmsFloat, - _: XcmsFloat, - _: XcmsFloat, + _: XcmsFloat, + _: XcmsFloat, + _: XcmsFloat, + _: XcmsFloat, } XcmsColor :: struct { - spec: struct #raw_union { + spec: struct #raw_union { RGB: XcmsRGB, RGBi: XcmsRGBi, CIEXYZ: XcmsCIEXYZ, @@ -1840,17 +1840,17 @@ XcmsColor :: struct { CIELuv: XcmsCIELuv, TekHVC: XcmsTekHVC, _: XcmsPad, - }, - pixel: uint, - format: XcmsColorFormat, + }, + pixel: uint, + format: XcmsColorFormat, } XcmsPerScrnInfo :: struct { - screenWhitePt: XcmsColor, - functionSet: rawptr, - screenData: rawptr, - state: u8, - _: [3]u8, + screenWhitePt: XcmsColor, + functionSet: rawptr, + screenData: rawptr, + state: u8, + _: [3]u8, } XcmsCCC :: distinct rawptr @@ -1872,15 +1872,15 @@ XcmsWhiteAdjustProc :: #type proc "c" ( compression: [^]b32) -> Status XcmsCCCRec :: struct { - dpy: ^Display, - screenNumber: i32, - visual: ^Visual, - clientWhitePt: XcmsColor, - gamutCompProc: XcmsCompressionProc, - gamutCompClientData: rawptr, - whitePtAdjProc: XcmsWhiteAdjustProc, - whitePtAdjClientData: rawptr, - pPerScrnInfo: ^XcmsPerScrnInfo, + dpy: ^Display, + screenNumber: i32, + visual: ^Visual, + clientWhitePt: XcmsColor, + gamutCompProc: XcmsCompressionProc, + gamutCompClientData: rawptr, + whitePtAdjProc: XcmsWhiteAdjustProc, + whitePtAdjClientData: rawptr, + pPerScrnInfo: ^XcmsPerScrnInfo, } XcmsScreenInitProc :: #type proc "c" ( @@ -1909,18 +1909,18 @@ XcmsFuncListPtr :: [^]XcmsConversionProc XcmsParseStringProc :: #type proc "c" (color_string: cstring, color: ^XcmsColor) -> i32 XcmsColorSpace :: struct { - prefix: cstring, - id: XcmsColorFormat, - parseString: XcmsParseStringProc, - to_CIEXYZ: XcmsFuncListPtr, - from_CIEXYZ: XcmsFuncListPtr, - inverse_flag: i32, + prefix: cstring, + id: XcmsColorFormat, + parseString: XcmsParseStringProc, + to_CIEXYZ: XcmsFuncListPtr, + from_CIEXYZ: XcmsFuncListPtr, + inverse_flag: i32, } XcmsFunctionSet :: struct { - DDColorSpaces: [^]^XcmsColorSpace, - screenInitProc: XcmsScreenInitProc, - screenFreeProc: XcmsScreenFreeProc, + DDColorSpaces: [^]^XcmsColorSpace, + screenInitProc: XcmsScreenInitProc, + screenFreeProc: XcmsScreenFreeProc, } @@ -1958,18 +1958,18 @@ XWMHints :: struct { } XTextProperty :: struct { - value: [^]u8, - encoding: Atom, - format: int, - nitems: uint, + value: [^]u8, + encoding: Atom, + format: int, + nitems: uint, } XICCEncodingStyle :: enum i32 { - XStringStyle, - XCompoundTextStyle, - XTextStyle, - XStdICCTextStyle, - XUTF8StringStyle, + XStringStyle, + XCompoundTextStyle, + XTextStyle, + XStdICCTextStyle, + XUTF8StringStyle, } XIconSize :: struct { @@ -1987,8 +1987,8 @@ XClassHint :: struct { } XComposeStatus :: struct { - compose_ptr: rawptr, - chars_matched: i32, + compose_ptr: rawptr, + chars_matched: i32, } Region :: distinct rawptr @@ -2041,8 +2041,8 @@ XrmClassList :: XrmQuarkList XrmRepresentation :: XrmQuark XrmValue :: struct { - size: u32, - addr: rawptr, + size: u32, + addr: rawptr, } XrmValuePtr :: [^]XrmValue @@ -2052,21 +2052,21 @@ XrmSearchList :: [^]XrmHashTable XrmDatabase :: distinct rawptr XrmOptionKind :: enum { - XrmoptionNoArg, - XrmoptionIsArg, - XrmoptionStickyArg, - XrmoptionSepArg, - XrmoptionResArg, - XrmoptionSkipArg, - XrmoptionSkipLine, - XrmoptionSkipNArgs, + XrmoptionNoArg, + XrmoptionIsArg, + XrmoptionStickyArg, + XrmoptionSepArg, + XrmoptionResArg, + XrmoptionSkipArg, + XrmoptionSkipLine, + XrmoptionSkipNArgs, } XrmOptionDescRec :: struct { - option: cstring, - specifier: cstring, - argKind: XrmOptionKind, - value: rawptr, + option: cstring, + specifier: cstring, + argKind: XrmOptionKind, + value: rawptr, } XrmOptionDescList :: [^]XrmOptionDescRec |